diff --git a/.gitignore b/.gitignore index c29b684..67e8252 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ replay_pid* /.idea/ /.gradle/ /.idea/ +/src/main/UbiService/logs/ diff --git a/build.gradle b/build.gradle index e2045e3..3812ee2 100644 --- a/build.gradle +++ b/build.gradle @@ -136,6 +136,11 @@ dependencies { // 파라미터 바인딩된 SQL 쿼리 로깅을 위한 datasource-proxy implementation 'net.ttddyy:datasource-proxy:1.10.1' + // ===== UBI 리포트 서버 의존성 ===== + // UbiServer.jar - UBI 리포트 서버 라이브러리 (컴파일 시에만 필요, WAR에는 WEB-INF/lib에서 자동 포함됨) + providedCompile files('src/main/webapp/WEB-INF/lib/UbiServer.jar') + implementation 'xerces:xercesImpl:2.12.2' + // ===== 개발 도구 의존성 ===== // Lombok - 반복 코드 생성 도구 (Getter, Setter, Builder 등 자동 생성) compileOnly 'org.projectlombok:lombok' diff --git a/src/main/UbiService/bin/nssm.exe b/src/main/UbiService/bin/nssm.exe new file mode 100644 index 0000000..8faee45 Binary files /dev/null and b/src/main/UbiService/bin/nssm.exe differ diff --git a/src/main/UbiService/bin/nssm64.exe b/src/main/UbiService/bin/nssm64.exe new file mode 100644 index 0000000..6ccfe3c Binary files /dev/null and b/src/main/UbiService/bin/nssm64.exe differ diff --git a/src/main/UbiService/bin/restart.sh b/src/main/UbiService/bin/restart.sh new file mode 100644 index 0000000..f43a4bc --- /dev/null +++ b/src/main/UbiService/bin/restart.sh @@ -0,0 +1,26 @@ +JAVA_DIR=/usr/local/jdk1.6.0 +UBISERVICE_DIR=/webapp/myapp/UbiService +PROPERTY_DIR=$UBISERVICE_DIR +FONT_DIR=$UBISERVICE_DIR/fonts/ +CLASSPATH=$UBISERVICE_DIR/lib/UbiServer.jar +XMS=1024M +XMX=2048M + +GREP_STR=$UBISERVICE_DIR/lib/UbiServer.jar + +#For SunOS +#if [ `/usr/ucb/ps -auxwww | grep $GREP_STR | grep -v grep | awk '{print $2}'` ];then +# kill -9 `/usr/ucb/ps -auxwww | grep $GREP_STR | grep -v grep | awk '{print $2}'` + +if [ `ps -ef | grep $GREP_STR | grep -v grep | awk '{print $2}'` ];then + kill -9 `ps -ef | grep $GREP_STR | grep -v grep | awk '{print $2}'` + echo "" + echo ">>> UbiService has shutdown." + $JAVA_DIR/bin/java -Xms$XMS -Xmx$XMX -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Dsun.java2d.fontpath=$FONT_DIR -classpath $CLASSPATH:. com.ubireport.service.UbiService4 $PROPERTY_DIR & + echo ">>> UbiService has started." + echo "" +else + echo "" + echo ">>> UbiService is not running." + echo "" +fi diff --git a/src/main/UbiService/bin/shutdown.sh b/src/main/UbiService/bin/shutdown.sh new file mode 100644 index 0000000..3fcb771 --- /dev/null +++ b/src/main/UbiService/bin/shutdown.sh @@ -0,0 +1,18 @@ +UBISERVICE_DIR=/webapp/myapp/UbiService + +GREP_STR=$UBISERVICE_DIR/lib/UbiServer.jar + +#For SunOS +#if [ `/usr/ucb/ps -auxwww | grep $GREP_STR | grep -v grep | awk '{print $2}'` ];then +# kill -9 `/usr/ucb/ps -auxwww | grep $GREP_STR | grep -v grep | awk '{print $2}'` + +if [ `ps -ef | grep $GREP_STR | grep -v grep | awk '{print $2}'` ];then + kill -9 `ps -ef | grep $GREP_STR | grep -v grep | awk '{print $2}'` + echo "" + echo ">>> UbiService has shutdown." + echo "" +else + echo "" + echo ">>> UbiService is not running." + echo "" +fi diff --git a/src/main/UbiService/bin/startup.sh b/src/main/UbiService/bin/startup.sh new file mode 100644 index 0000000..90ed14a --- /dev/null +++ b/src/main/UbiService/bin/startup.sh @@ -0,0 +1,31 @@ +JAVA_DIR=/usr/local/jdk1.6.0 +UBISERVICE_DIR=/webapp/myapp/UbiService +PROPERTY_DIR=$UBISERVICE_DIR +FONT_DIR=$UBISERVICE_DIR/fonts/ +CLASSPATH=$UBISERVICE_DIR/lib/UbiServer.jar + +#For Redbc +#CLASSPATH=$UBISERVICE_DIR/lib/UbiServer.jar:$UBISERVICE_DIR/lib/EzIssuerJava.jar + +#For Voiceye +#CLASSPATH=$UBISERVICE_DIR/lib/UbiServer.jar:$UBISERVICE_DIR/lib/VERVMakerJNI.jar +#CLASSPATH=$UBISERVICE_DIR/lib/UbiServer.jar:$UBISERVICE_DIR/lib/VERVMakerJNI64.jar + +XMS=1024M +XMX=2048M + +GREP_STR=$UBISERVICE_DIR/lib/UbiServer.jar + +#For SunOS +#if [ `/usr/ucb/ps -auxwww | grep $GREP_STR | grep -v grep | awk '{print $2}'` ];then + +if [ `ps -ef | grep $GREP_STR | grep -v grep | awk '{print $2}'` ];then + echo "" + echo ">>> UbiService is running." + echo "" +else + $JAVA_DIR/bin/java -Xms$XMS -Xmx$XMX -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Dsun.java2d.fontpath=$FONT_DIR -classpath $CLASSPATH:. com.ubireport.service.UbiService4 $PROPERTY_DIR & + echo "" + echo ">>> UbiService has started." + echo "" +fi diff --git a/src/main/UbiService/bin/svcregist.bat b/src/main/UbiService/bin/svcregist.bat new file mode 100644 index 0000000..b9b1cf5 --- /dev/null +++ b/src/main/UbiService/bin/svcregist.bat @@ -0,0 +1,68 @@ +echo off + +set INPUT=%1 +set UBISERVICE_DIR=C:\webapps\myapp\UbiService +set BATPATH=%UBISERVICE_DIR%\bin\ubiservice.bat +set NSSM=%UBISERVICE_DIR%\bin\nssm64.exe + +if "%INPUT%" == "" ( + + echo ---------------------------------------- + echo ex : svcregist.bat [install] [uninstall] + echo ---------------------------------------- + echo. +) else ( + + if "%INPUT%" == "install" ( + + echo ---------------------------------------- + echo UbiService Registration Job + echo ---------------------------------------- + echo. + + echo [UbiService Regist] + %NSSM% install UbiService %BATPATH% + echo. + + echo [UbiService Set Description] + %NSSM% set UbiService Description "UbiService for UbiReport4.0" + echo. + + echo [UbiService Start] + %NSSM% start UbiService + echo. + echo ---------------------------------------- + echo Install Completed + echo ---------------------------------------- + echo. + ) else ( + + if "%INPUT%" == "uninstall" ( + + echo ---------------------------------------- + echo UbiService UnRegistration Job + echo ---------------------------------------- + echo. + + echo [UbiService Stop] + %NSSM% stop UbiService + echo. + + echo [UbiService Unregist] + %NSSM% remove UbiService confirm + echo. + + echo ---------------------------------------- + echo Uninstall Completed + echo ---------------------------------------- + echo. + ) else ( + + echo ---------------------------------------- + echo ex : svcregist.bat [install] [uninstall] + echo ---------------------------------------- + echo. + ) + ) +) + diff --git a/src/main/UbiService/bin/ubiservice.bat b/src/main/UbiService/bin/ubiservice.bat new file mode 100644 index 0000000..80c7651 --- /dev/null +++ b/src/main/UbiService/bin/ubiservice.bat @@ -0,0 +1,34 @@ +echo off +echo ---------------------------------------- +echo UbiService.bat +echo ---------------------------------------- +echo. +set JAVA_DIR=D:\DEV\.jdks\jdk1.8.0_271 +set UBISERVICE_DIR=D:\workspace\git\IBMS_NEW\src\main\UbiService +set PROPERTY_DIR=%UBISERVICE_DIR% +set FONT_DIR=%UBISERVICE_DIR%\fonts\ +set XMS=512M +set XMX=1024M +set CLASSPATH=%UBISERVICE_DIR%\lib\UbiServer.jar + +REM For Redbc +REM set CLASSPATH=%UBISERVICE_DIR%\lib\UbiServer.jar;%UBISERVICE_DIR%\lib\EzIssuerJava.jar + +REM For Voiceye +REM set CLASSPATH=%UBISERVICE_DIR%\lib\UbiServer.jar;%UBISERVICE_DIR%\lib\VERVMakerJNI.jar +REM set CLASSPATH=%UBISERVICE_DIR%\lib\UbiServer.jar;%UBISERVICE_DIR%\lib\VERVMakerJNI64.jar + + +echo. +echo [Directory Information] +echo - Java : %JAVA_DIR% +echo - UbiService : %UBISERVICE_DIR% +echo. + +echo [Java Information] +%JAVA_DIR%\bin\java -version +echo. + +echo [UbiService Start] +%JAVA_DIR%\bin\java -Xms%XMS% -Xmx%XMX% -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Dsun.java2d.fontpath=%FONT_DIR% -classpath %CLASSPATH%;. com.ubireport.service.UbiService4 %PROPERTY_DIR% + diff --git a/src/main/UbiService/fonts/NGULIM.TTF b/src/main/UbiService/fonts/NGULIM.TTF new file mode 100644 index 0000000..28ec0d2 Binary files /dev/null and b/src/main/UbiService/fonts/NGULIM.TTF differ diff --git a/src/main/UbiService/fonts/batang.ttc b/src/main/UbiService/fonts/batang.ttc new file mode 100644 index 0000000..a496b2b Binary files /dev/null and b/src/main/UbiService/fonts/batang.ttc differ diff --git a/src/main/UbiService/fonts/gulim.ttc b/src/main/UbiService/fonts/gulim.ttc new file mode 100644 index 0000000..060ddf2 Binary files /dev/null and b/src/main/UbiService/fonts/gulim.ttc differ diff --git a/src/main/UbiService/fonts/malgun.ttf b/src/main/UbiService/fonts/malgun.ttf new file mode 100644 index 0000000..fdf3b5a Binary files /dev/null and b/src/main/UbiService/fonts/malgun.ttf differ diff --git a/src/main/UbiService/fonts/malgunbd.ttf b/src/main/UbiService/fonts/malgunbd.ttf new file mode 100644 index 0000000..7469fd8 Binary files /dev/null and b/src/main/UbiService/fonts/malgunbd.ttf differ diff --git a/src/main/UbiService/fonts/malgunsl.ttf b/src/main/UbiService/fonts/malgunsl.ttf new file mode 100644 index 0000000..bbf41ca Binary files /dev/null and b/src/main/UbiService/fonts/malgunsl.ttf differ diff --git a/src/main/UbiService/results/UBIHTML/11D31E7A22273D3EC62327D175292613/bugwa/1618464077996/urf/bugwa.xml b/src/main/UbiService/results/UBIHTML/11D31E7A22273D3EC62327D175292613/bugwa/1618464077996/urf/bugwa.xml new file mode 100644 index 0000000..acb4137 --- /dev/null +++ b/src/main/UbiService/results/UBIHTML/11D31E7A22273D3EC62327D175292613/bugwa/1618464077996/urf/bugwa.xml @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + + + + +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 + + +0_0 +1_0 +2_0 +3_0 +4_0 +5_0 +0_0 +1_0 +2_0 +0_0 +1_0 +0_0 +1_0 +2_0 +IMAGE3EMBEDDED_0 +IMAGE4EMBEDDED_1 + + + + + + + + +붙임 1. 고지서 1부. + 2. 이행강제금 부과내역 1부. 끝. + + + + + +

Check DataSource

+
+ + + + + + + + + + + + + + + + + + + +
WAS 유형 + + DataSource +
+ +
+
Driver + + URL + +
User + + Password + +
+ + + + +
+ +
+<% + if( type.equals("lookup") || type.equals("nonlookup") || type.equals("direct") ) { + + try { + + if( type.equals("lookup") ) { //lookup type (Tomcat, resin, Jrun ...) + + Context ctx = new InitialContext(); + Context env = (Context)ctx.lookup("java:comp/env"); + DataSource ds = (DataSource)env.lookup(dsNm); + conn = ds.getConnection(); + } + else if( type.equals("nonlookup") ) { //nonlookup type (Jeus, WebLogic, WebSphere ...) + + Context ctx = new InitialContext(); + DataSource ds = (DataSource)ctx.lookup(dsNm); + conn = ds.getConnection(); + } + else { //direct + + Class.forName(driver); + conn = DriverManager.getConnection(url, user, password); + } + + if( conn == null ) msg = "Connection Fail!!!"; + else msg = "Connection Success!!!"; + } + catch(Exception e) { + + msg = e.getMessage(); + } + finally { +%> + + + + + + + +
Result(<%= type %>)
<%= msg %>
+ +<% + if( conn != null ) { +%> +
+ + + + + + + +
SQL
+ +
+ + + + +
+ +
+ +<% + if( sql != null && !sql.equals("") ) { +%> + +<% + try { + + ps = conn.prepareStatement(sql); + rs = ps.executeQuery(); + + ResultSetMetaData rsmd = rs.getMetaData(); + int cnt = rsmd.getColumnCount(); + + out.println(""); + for(int i = 0; i <= cnt; i++) { + + if( i == 0 ) out.println(""); + else out.println(""); + } + + int row_cnt = 0; + while( rs.next() ) { + + out.println(""); + for(int i = 0; i <= cnt; i++) { + + if( i == 0 ) out.println(""); + else out.println(""); + } + out.println(""); + } + + if( row_cnt == 0 ) { + + out.println(""); + } + } + catch(Exception ee) { + + out.println(""); + out.println(""); + } +%> + +
No" + rsmd.getColumnLabel(i) + "
" + ++row_cnt + "" + rs.getString(i) + "
조회 내역이 없습니다.
Error Message
" + ee.getMessage() + "
+ +<% + } + if( rs != null ) try{ rs.close(); rs = null; } catch (Exception ex) {} + if( ps != null ) try{ ps.close(); ps = null; } catch (Exception ex) {} + if( conn != null ) try { conn.close(); conn = null; } catch(Exception e) {} + } + } + } +%> +
+ + + diff --git a/src/main/webapp/ubi4/check/fontinfo.jsp b/src/main/webapp/ubi4/check/fontinfo.jsp new file mode 100644 index 0000000..a2d0aa7 --- /dev/null +++ b/src/main/webapp/ubi4/check/fontinfo.jsp @@ -0,0 +1,24 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ page import="java.awt.*" %> + + + + + +Font 정보 + + +<% + //System.setProperty("sun.java2d.fontpath", "font_location_path"); + // System.setProperty("java.awt.headless", "true"); + String[] fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); + for (int i=0; i"); + } +%> + + diff --git a/src/main/webapp/ubi4/check/hostname.jsp b/src/main/webapp/ubi4/check/hostname.jsp new file mode 100644 index 0000000..8f8f46b --- /dev/null +++ b/src/main/webapp/ubi4/check/hostname.jsp @@ -0,0 +1,19 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ page import="java.net.*" %> + + + + + +Hostname 확인 + + + +

Hostname Check

+ + Hostname : [<%= InetAddress.getLocalHost().getHostName() %>]
+ AppPath : [<%= getServletContext().getRealPath("/") %>] + + diff --git a/src/main/webapp/ubi4/check/jarcheck.jsp b/src/main/webapp/ubi4/check/jarcheck.jsp new file mode 100644 index 0000000..5fbee91 --- /dev/null +++ b/src/main/webapp/ubi4/check/jarcheck.jsp @@ -0,0 +1,100 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ page import="java.util.jar.*, java.io.File" %> +<% + + String appPath = ""; + try { appPath = request.getRealPath("/"); } catch(Exception e) {} + if( appPath == null || appPath.equals("") ) + try { appPath = this.getClass().getResource("/").getPath(); } catch(Exception e) {} + + boolean checkFlag = false; + String jar = request.getParameter("jar"); + String version = ""; + + if( jar == null || jar.equalsIgnoreCase("null") || jar.equals("") ) { + + checkFlag = false; + jar = appPath + "WEB-INF" + File.separator + "lib" + File.separator + "UbiServer.jar"; + } + else { + + try { + + JarFile fJar = new JarFile(jar); + Manifest manifest = fJar.getManifest(); + Attributes attrs = manifest.getMainAttributes(); + version = attrs.getValue("version"); + } + catch(Exception e) { + + version = e.getMessage(); + } + finally { + checkFlag = true; + } + } + + +%> + + + + +Jar 버전 확인 + + + + + +

Jar Version Check

+
+ + + + + + + + + +<% + if( checkFlag ) { +%> + + + +<% + } +%> +
App Home<%= appPath %>
Jar File + +
<%= version %>
+ + + + + +
+ +
+
+ + diff --git a/src/main/webapp/ubi4/check/javaenv.jsp b/src/main/webapp/ubi4/check/javaenv.jsp new file mode 100644 index 0000000..7f2516d --- /dev/null +++ b/src/main/webapp/ubi4/check/javaenv.jsp @@ -0,0 +1,26 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> + + + + +Java Environment 확인 + + +<% + java.util.Enumeration e = System.getProperties().propertyNames(); + while(e.hasMoreElements()) { + + String key = (String)e.nextElement(); + if( key.indexOf("class.path") != -1 || key.indexOf("loader") != -1 ) out.print("
  • " + key + " : " + System.getProperty(key) + "
  • "); + else out.print("
  • " + key + " : " + System.getProperty(key) + "
    "); + } +%> + + \ No newline at end of file diff --git a/src/main/webapp/ubi4/check/urlcheck.jsp b/src/main/webapp/ubi4/check/urlcheck.jsp new file mode 100644 index 0000000..72acb03 --- /dev/null +++ b/src/main/webapp/ubi4/check/urlcheck.jsp @@ -0,0 +1,134 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ page import="java.net.*, java.io.*" %> + +<% + String NL = System.getProperty("line.separator"); + + String sReqType = request.getParameter("req_type"); + String sUrl = request.getParameter("url"); + + if( sReqType == null || sReqType.equalsIgnoreCase("null") ) { + + sReqType = "GET"; + } + if( sUrl == null || sUrl.equalsIgnoreCase("null") ) { + + sUrl = ""; + } + + StringBuffer contents = new StringBuffer(); + + if( !sUrl.equals("") ) { + + try { + + URL url = new URL(sUrl); + contents.append(">> URL(" + sUrl + ") Connecting...").append(NL); + HttpURLConnection uc = (HttpURLConnection)url.openConnection(); + + uc.setDoOutput(true); + uc.setDoInput(true); + uc.setUseCaches(false); + uc.setRequestMethod(sReqType); + + StringBuffer sb = new StringBuffer(); + + InputStream is = uc.getInputStream(); + contents.append(">> Reading Contents...").append(NL); + + BufferedReader in = new BufferedReader(new InputStreamReader(is)); + + int buffSize = 1024 * 8; + char[] buff; + int insize = 0; + while ((insize = in.read(buff = new char[buffSize], 0, buffSize)) != -1) { + + sb.append((new String(buff, 0, insize))); + } + String receivestr = sb.toString().trim(); + + contents.append(">> Contents").append(NL); + contents.append("------------------------------------------").append(NL); + contents.append(sb.toString().trim()).append(NL); + contents.append("------------------------------------------").append(NL); + contents.append(">> End").append(NL); + } + catch(FileNotFoundException fnfe){ + + contents.append(">> FileNotFoundException").append(NL); + contents.append("------------------------------------------").append(NL); + contents.append(fnfe.getMessage()).append(NL); + contents.append("------------------------------------------").append(NL); + contents.append(">> End").append(NL); + fnfe.printStackTrace(); + } + catch(Exception e){ + + contents.append(">> Exception").append(NL); + contents.append("------------------------------------------").append(NL); + contents.append(e.getMessage()).append(NL); + contents.append("------------------------------------------").append(NL); + contents.append(">> End").append(NL); + e.printStackTrace(); + } + } + +%> + + + + +URL 확인 + + + + +

    Check URL

    +
    + + + + + + + + + +
    REQ TYPE + +
    URL + +
    + + + + +
    + +
    +
    + + Result
    + + + \ No newline at end of file diff --git a/src/main/webapp/ubi4/js/images/button.jpg b/src/main/webapp/ubi4/js/images/button.jpg new file mode 100644 index 0000000..74f4095 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/button.jpg differ diff --git a/src/main/webapp/ubi4/js/images/downloading.gif b/src/main/webapp/ubi4/js/images/downloading.gif new file mode 100644 index 0000000..c2a31ee Binary files /dev/null and b/src/main/webapp/ubi4/js/images/downloading.gif differ diff --git a/src/main/webapp/ubi4/js/images/login.png b/src/main/webapp/ubi4/js/images/login.png new file mode 100644 index 0000000..90b4668 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/login.png differ diff --git a/src/main/webapp/ubi4/js/images/onbutton.jpg b/src/main/webapp/ubi4/js/images/onbutton.jpg new file mode 100644 index 0000000..3bdf0a6 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/onbutton.jpg differ diff --git a/src/main/webapp/ubi4/js/images/page_loading.gif b/src/main/webapp/ubi4/js/images/page_loading.gif new file mode 100644 index 0000000..715db96 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/page_loading.gif differ diff --git a/src/main/webapp/ubi4/js/images/page_waiting.gif b/src/main/webapp/ubi4/js/images/page_waiting.gif new file mode 100644 index 0000000..9c87444 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/page_waiting.gif differ diff --git a/src/main/webapp/ubi4/js/images/printGuide_kr.html b/src/main/webapp/ubi4/js/images/printGuide_kr.html new file mode 100644 index 0000000..51744b2 --- /dev/null +++ b/src/main/webapp/ubi4/js/images/printGuide_kr.html @@ -0,0 +1,44 @@ + + + +HTML Print Guide + + + +

    IE에서 가로 양식 출력 절차

    +
    +
    1. 인쇄 범위 설정 후 확인 클릭
    +
    + +
    +
    2. 마우스 우측 - 팝업 메뉴에서 인쇄 미리 보기 클릭
    +
    + +
    +
    3. 미리 보기 결과 확인
    +
    + +
    +
    4. 가로로 용지 설정 변경
    +
    + +
    +
    5. 인쇄
    +
    + +
    +
    + + diff --git a/src/main/webapp/ubi4/js/images/printGuide_us.html b/src/main/webapp/ubi4/js/images/printGuide_us.html new file mode 100644 index 0000000..4c53d00 --- /dev/null +++ b/src/main/webapp/ubi4/js/images/printGuide_us.html @@ -0,0 +1,45 @@ + + + +HTML Print Guide + + + +

    Procedure for printing the landscape form in IE

    +
    +
    1. Click OK after setting the print range
    +
    + +
    +
    2. Right click - click Print Preview in the pop-up menu
    +
    + +
    +
    3. Check the print preview results
    +
    + +
    +
    4. Change landscape paper settings
    +
    + +
    +
    5. Print
    +
    + +
    +
    + + diff --git a/src/main/webapp/ubi4/js/images/progress_bg_gray.png b/src/main/webapp/ubi4/js/images/progress_bg_gray.png new file mode 100644 index 0000000..1c7ebf4 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/progress_bg_gray.png differ diff --git a/src/main/webapp/ubi4/js/images/progress_center.png b/src/main/webapp/ubi4/js/images/progress_center.png new file mode 100644 index 0000000..46f0120 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/progress_center.png differ diff --git a/src/main/webapp/ubi4/js/images/progress_left.png b/src/main/webapp/ubi4/js/images/progress_left.png new file mode 100644 index 0000000..f3a3cc1 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/progress_left.png differ diff --git a/src/main/webapp/ubi4/js/images/progress_right.png b/src/main/webapp/ubi4/js/images/progress_right.png new file mode 100644 index 0000000..47b09f1 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/progress_right.png differ diff --git a/src/main/webapp/ubi4/js/images/sub_tab_on.jpg b/src/main/webapp/ubi4/js/images/sub_tab_on.jpg new file mode 100644 index 0000000..0460fc9 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/sub_tab_on.jpg differ diff --git a/src/main/webapp/ubi4/js/images/sub_tab_out.jpg b/src/main/webapp/ubi4/js/images/sub_tab_out.jpg new file mode 100644 index 0000000..bd5c26c Binary files /dev/null and b/src/main/webapp/ubi4/js/images/sub_tab_out.jpg differ diff --git a/src/main/webapp/ubi4/js/images/tableft.gif b/src/main/webapp/ubi4/js/images/tableft.gif new file mode 100644 index 0000000..8b04c02 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/tableft.gif differ diff --git a/src/main/webapp/ubi4/js/images/tabright.gif b/src/main/webapp/ubi4/js/images/tabright.gif new file mode 100644 index 0000000..ec83a0e Binary files /dev/null and b/src/main/webapp/ubi4/js/images/tabright.gif differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/btnarrow.gif b/src/main/webapp/ubi4/js/images/toolbar/btnarrow.gif new file mode 100644 index 0000000..69d1d34 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/btnarrow.gif differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/btnarrow_dis.gif b/src/main/webapp/ubi4/js/images/toolbar/btnarrow_dis.gif new file mode 100644 index 0000000..0aef49c Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/btnarrow_dis.gif differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/cell.png b/src/main/webapp/ubi4/js/images/toolbar/cell.png new file mode 100644 index 0000000..8838b79 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/cell.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/cell_black.png b/src/main/webapp/ubi4/js/images/toolbar/cell_black.png new file mode 100644 index 0000000..6d037a2 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/cell_black.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/cell_d.png b/src/main/webapp/ubi4/js/images/toolbar/cell_d.png new file mode 100644 index 0000000..ffdae60 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/cell_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/cell_o.png b/src/main/webapp/ubi4/js/images/toolbar/cell_o.png new file mode 100644 index 0000000..f487e44 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/cell_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/default_form.png b/src/main/webapp/ubi4/js/images/toolbar/default_form.png new file mode 100644 index 0000000..4d62f35 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/default_form.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/default_form_d.png b/src/main/webapp/ubi4/js/images/toolbar/default_form_d.png new file mode 100644 index 0000000..ef922df Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/default_form_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/default_form_o.png b/src/main/webapp/ubi4/js/images/toolbar/default_form_o.png new file mode 100644 index 0000000..8112415 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/default_form_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/first.png b/src/main/webapp/ubi4/js/images/toolbar/first.png new file mode 100644 index 0000000..f71bc94 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/first.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/first_d.png b/src/main/webapp/ubi4/js/images/toolbar/first_d.png new file mode 100644 index 0000000..d1b75bb Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/first_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/first_o.png b/src/main/webapp/ubi4/js/images/toolbar/first_o.png new file mode 100644 index 0000000..f2a1f20 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/first_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/html.png b/src/main/webapp/ubi4/js/images/toolbar/html.png new file mode 100644 index 0000000..adec598 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/html.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/html_d.png b/src/main/webapp/ubi4/js/images/toolbar/html_d.png new file mode 100644 index 0000000..f9f1e25 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/html_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/html_o.png b/src/main/webapp/ubi4/js/images/toolbar/html_o.png new file mode 100644 index 0000000..445b4f7 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/html_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/hwp.png b/src/main/webapp/ubi4/js/images/toolbar/hwp.png new file mode 100644 index 0000000..f90ce11 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/hwp.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/hwp_black.png b/src/main/webapp/ubi4/js/images/toolbar/hwp_black.png new file mode 100644 index 0000000..c2df0cc Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/hwp_black.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/hwp_d.png b/src/main/webapp/ubi4/js/images/toolbar/hwp_d.png new file mode 100644 index 0000000..b4cfdee Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/hwp_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/hwp_o.png b/src/main/webapp/ubi4/js/images/toolbar/hwp_o.png new file mode 100644 index 0000000..8cd6c77 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/hwp_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/image.png b/src/main/webapp/ubi4/js/images/toolbar/image.png new file mode 100644 index 0000000..8b0ed4e Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/image.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/image_d.png b/src/main/webapp/ubi4/js/images/toolbar/image_d.png new file mode 100644 index 0000000..40fa929 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/image_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/image_o.png b/src/main/webapp/ubi4/js/images/toolbar/image_o.png new file mode 100644 index 0000000..c8cb492 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/image_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/info.png b/src/main/webapp/ubi4/js/images/toolbar/info.png new file mode 100644 index 0000000..3220738 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/info.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/info_d.png b/src/main/webapp/ubi4/js/images/toolbar/info_d.png new file mode 100644 index 0000000..22b1f4b Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/info_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/info_o.png b/src/main/webapp/ubi4/js/images/toolbar/info_o.png new file mode 100644 index 0000000..3263633 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/info_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/last.png b/src/main/webapp/ubi4/js/images/toolbar/last.png new file mode 100644 index 0000000..8ff7359 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/last.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/last_d.png b/src/main/webapp/ubi4/js/images/toolbar/last_d.png new file mode 100644 index 0000000..65df555 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/last_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/last_o.png b/src/main/webapp/ubi4/js/images/toolbar/last_o.png new file mode 100644 index 0000000..de41bbe Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/last_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/left_arrow.gif b/src/main/webapp/ubi4/js/images/toolbar/left_arrow.gif new file mode 100644 index 0000000..e0f5e14 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/left_arrow.gif differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/next.png b/src/main/webapp/ubi4/js/images/toolbar/next.png new file mode 100644 index 0000000..eb72e3a Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/next.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/next_d.png b/src/main/webapp/ubi4/js/images/toolbar/next_d.png new file mode 100644 index 0000000..d02a730 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/next_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/next_o.png b/src/main/webapp/ubi4/js/images/toolbar/next_o.png new file mode 100644 index 0000000..308861c Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/next_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/pdf.png b/src/main/webapp/ubi4/js/images/toolbar/pdf.png new file mode 100644 index 0000000..c2c7543 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/pdf.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/pdf_black.png b/src/main/webapp/ubi4/js/images/toolbar/pdf_black.png new file mode 100644 index 0000000..9851c97 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/pdf_black.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/pdf_d.png b/src/main/webapp/ubi4/js/images/toolbar/pdf_d.png new file mode 100644 index 0000000..b2f076f Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/pdf_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/pdf_o.png b/src/main/webapp/ubi4/js/images/toolbar/pdf_o.png new file mode 100644 index 0000000..be47c24 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/pdf_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/plugin.png b/src/main/webapp/ubi4/js/images/toolbar/plugin.png new file mode 100644 index 0000000..f454523 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/plugin.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/plugin_d.png b/src/main/webapp/ubi4/js/images/toolbar/plugin_d.png new file mode 100644 index 0000000..30f28ee Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/plugin_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/plugin_o.png b/src/main/webapp/ubi4/js/images/toolbar/plugin_o.png new file mode 100644 index 0000000..cb387e7 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/plugin_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/ppt.png b/src/main/webapp/ubi4/js/images/toolbar/ppt.png new file mode 100644 index 0000000..31d7221 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/ppt.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/ppt_black.png b/src/main/webapp/ubi4/js/images/toolbar/ppt_black.png new file mode 100644 index 0000000..25e99d8 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/ppt_black.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/ppt_d.png b/src/main/webapp/ubi4/js/images/toolbar/ppt_d.png new file mode 100644 index 0000000..6637f2b Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/ppt_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/ppt_o.png b/src/main/webapp/ubi4/js/images/toolbar/ppt_o.png new file mode 100644 index 0000000..ec183cb Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/ppt_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/previous.png b/src/main/webapp/ubi4/js/images/toolbar/previous.png new file mode 100644 index 0000000..986ccf2 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/previous.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/previous_d.png b/src/main/webapp/ubi4/js/images/toolbar/previous_d.png new file mode 100644 index 0000000..d451239 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/previous_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/previous_o.png b/src/main/webapp/ubi4/js/images/toolbar/previous_o.png new file mode 100644 index 0000000..5ef9585 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/previous_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/print.png b/src/main/webapp/ubi4/js/images/toolbar/print.png new file mode 100644 index 0000000..99bfece Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/print.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/print_d.png b/src/main/webapp/ubi4/js/images/toolbar/print_d.png new file mode 100644 index 0000000..adb550f Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/print_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/print_form.png b/src/main/webapp/ubi4/js/images/toolbar/print_form.png new file mode 100644 index 0000000..cae3067 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/print_form.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/print_form_d.png b/src/main/webapp/ubi4/js/images/toolbar/print_form_d.png new file mode 100644 index 0000000..72c6f47 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/print_form_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/print_form_o.png b/src/main/webapp/ubi4/js/images/toolbar/print_form_o.png new file mode 100644 index 0000000..2a6233f Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/print_form_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/print_o.png b/src/main/webapp/ubi4/js/images/toolbar/print_o.png new file mode 100644 index 0000000..925bd0a Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/print_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/printset.png b/src/main/webapp/ubi4/js/images/toolbar/printset.png new file mode 100644 index 0000000..cf171a9 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/printset.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/printset_d.png b/src/main/webapp/ubi4/js/images/toolbar/printset_d.png new file mode 100644 index 0000000..f2b968e Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/printset_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/printset_o.png b/src/main/webapp/ubi4/js/images/toolbar/printset_o.png new file mode 100644 index 0000000..e67f854 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/printset_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/refresh.png b/src/main/webapp/ubi4/js/images/toolbar/refresh.png new file mode 100644 index 0000000..f5e9709 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/refresh.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/refresh_d.png b/src/main/webapp/ubi4/js/images/toolbar/refresh_d.png new file mode 100644 index 0000000..3d6cac0 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/refresh_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/refresh_o.png b/src/main/webapp/ubi4/js/images/toolbar/refresh_o.png new file mode 100644 index 0000000..d9e90c5 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/refresh_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/right_arrow.gif b/src/main/webapp/ubi4/js/images/toolbar/right_arrow.gif new file mode 100644 index 0000000..949433c Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/right_arrow.gif differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/rtf.png b/src/main/webapp/ubi4/js/images/toolbar/rtf.png new file mode 100644 index 0000000..7a9dbb4 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/rtf.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/rtf_black.png b/src/main/webapp/ubi4/js/images/toolbar/rtf_black.png new file mode 100644 index 0000000..2e180f8 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/rtf_black.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/rtf_d.png b/src/main/webapp/ubi4/js/images/toolbar/rtf_d.png new file mode 100644 index 0000000..1c75108 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/rtf_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/rtf_o.png b/src/main/webapp/ubi4/js/images/toolbar/rtf_o.png new file mode 100644 index 0000000..5fd9b2e Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/rtf_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/save.png b/src/main/webapp/ubi4/js/images/toolbar/save.png new file mode 100644 index 0000000..2237096 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/save.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/save_d.png b/src/main/webapp/ubi4/js/images/toolbar/save_d.png new file mode 100644 index 0000000..df3b3c5 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/save_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/save_o.png b/src/main/webapp/ubi4/js/images/toolbar/save_o.png new file mode 100644 index 0000000..c86500c Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/save_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/select_arr.gif b/src/main/webapp/ubi4/js/images/toolbar/select_arr.gif new file mode 100644 index 0000000..c96c2ac Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/select_arr.gif differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/txt_2.png b/src/main/webapp/ubi4/js/images/toolbar/txt_2.png new file mode 100644 index 0000000..440a2ea Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/txt_2.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/txt_2_black.png b/src/main/webapp/ubi4/js/images/toolbar/txt_2_black.png new file mode 100644 index 0000000..86c9378 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/txt_2_black.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/txt_2_d.png b/src/main/webapp/ubi4/js/images/toolbar/txt_2_d.png new file mode 100644 index 0000000..919cd31 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/txt_2_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/txt_2_press.png b/src/main/webapp/ubi4/js/images/toolbar/txt_2_press.png new file mode 100644 index 0000000..cef60cc Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/txt_2_press.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/ubi_viewer.png b/src/main/webapp/ubi4/js/images/toolbar/ubi_viewer.png new file mode 100644 index 0000000..252f5a2 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/ubi_viewer.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/ubi_viewer_d.png b/src/main/webapp/ubi4/js/images/toolbar/ubi_viewer_d.png new file mode 100644 index 0000000..e54f15a Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/ubi_viewer_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/ubi_viewer_o.png b/src/main/webapp/ubi4/js/images/toolbar/ubi_viewer_o.png new file mode 100644 index 0000000..7d11ab2 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/ubi_viewer_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/xls.png b/src/main/webapp/ubi4/js/images/toolbar/xls.png new file mode 100644 index 0000000..7e53cfb Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/xls.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/xls_black.png b/src/main/webapp/ubi4/js/images/toolbar/xls_black.png new file mode 100644 index 0000000..3a2a2e3 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/xls_black.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/xls_d.png b/src/main/webapp/ubi4/js/images/toolbar/xls_d.png new file mode 100644 index 0000000..00393a0 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/xls_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/xls_o.png b/src/main/webapp/ubi4/js/images/toolbar/xls_o.png new file mode 100644 index 0000000..64b5810 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/xls_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/zoomin.png b/src/main/webapp/ubi4/js/images/toolbar/zoomin.png new file mode 100644 index 0000000..4474fef Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/zoomin.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/zoomin_d.png b/src/main/webapp/ubi4/js/images/toolbar/zoomin_d.png new file mode 100644 index 0000000..8b0d220 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/zoomin_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/zoomin_o.png b/src/main/webapp/ubi4/js/images/toolbar/zoomin_o.png new file mode 100644 index 0000000..ff01134 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/zoomin_o.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/zoomout.png b/src/main/webapp/ubi4/js/images/toolbar/zoomout.png new file mode 100644 index 0000000..515b173 Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/zoomout.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/zoomout_d.png b/src/main/webapp/ubi4/js/images/toolbar/zoomout_d.png new file mode 100644 index 0000000..cb9a21c Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/zoomout_d.png differ diff --git a/src/main/webapp/ubi4/js/images/toolbar/zoomout_o.png b/src/main/webapp/ubi4/js/images/toolbar/zoomout_o.png new file mode 100644 index 0000000..2ea94cd Binary files /dev/null and b/src/main/webapp/ubi4/js/images/toolbar/zoomout_o.png differ diff --git a/src/main/webapp/ubi4/js/msg.js b/src/main/webapp/ubi4/js/msg.js new file mode 100644 index 0000000..0194afe --- /dev/null +++ b/src/main/webapp/ubi4/js/msg.js @@ -0,0 +1,407 @@ +var _ubi_msg = { + +//================================================================================ +//Korean Message +//================================================================================ +'korean':{ + + "Menu_SAVE": "저장", + "Menu_PRINT": "인쇄", + "Menu_PRINTSET": "인쇄설정", + "Menu_PDF": "pdf파일", + "Menu_EXCEL": "xls파일", + "Menu_RTF": "rtf파일", + "Menu_HWP": "hwp파일", + "Menu_HML": "hml파일", + "Menu_PPTX": "pptx파일", + "Menu_DOCX": "docx파일", + "Menu_EXCEL_TYPE1": "인쇄모양", + "Menu_EXCEL_TYPE2": "기본모양", + "Menu_PRINT_PDF": "pdf인쇄", + "Menu_PRINT_HTML": "기본인쇄", + + "StreamingMsg": "현재 스트리밍 리포트를 생성 중입니다.", + "StreamingMsg2": "페이지 생성 중...", + "StreamingMsg3": "페이지 중 ", + "CompleteMsg": "스트리밍 리포트 생성이 완료되었습니다.", + "CreateErrMsg": "리포트가 생성되지 않았습니다.", + "TotalpageErrMsg": "전체 페이지 정보를 가져오는 중 오류가 발생하였습니다.", + "UnknownErrMsg": "알 수 없는 오류가 발생하였습니다.", + "ErrMsg": "오류가 발생하였습니다.", + + "ExportMsg" : "파일을 생성 중입니다.", + "ExportMsg2" : "전용 뷰어 모드에서 지원하지 않는 저장 타입입니다.", + "StatusWaitMsg" : "잠시만 기다려 주세요.", + + "PrintDlgTitle": "인쇄 범위를 설정합니다.", + "PrintDlgRange": "페이지 범위", + "PrintDlgAll": "모두", + "PrintDlgCurrent": "현재 페이지", + "PrintDlgFromTo": "페이지 지정", + "PrintDlgFrom": "부터", + "PrintDlgTo": "까지", + "PrintDlgMent": "※ 인쇄량이 많아서 부분인쇄만 가능합니다.", + "PrintDlgMaxMent" : "최대 페이지 수 : ", + "PrintDlgHMent": "Internet Explorer에서 가로 양식은 인쇄 미리 보기", + "PrintDlgHMent2": "옵션에서 용지 방향을 변경하여 인쇄하세요.", + "PrintDlgLink": "자세히 보기", + + "PrintDlgHTMLRangeErr": "HTML인쇄 허용 페이지 범위를 벗어났습니다.", + "PrintDlgRangeErr": "페이지 범위를 벗어났습니다.", + "PrintDlgEnter": "\n다시 입력하여 주십시오.", + + "Button_OK": "확인", + "Button_Cancel": "취소", + + "PdfCheckMsg9": "Adobe Reader의 버전이 설치되어있지 않거나, 9 버전 이하의 오래된 버전만 설치되어 있습니다.", + "PdfCheckMsg6": "Adobe Reader의 버전이 설치되어있지 않거나, 6 버전 이하의 오래된 버전만 설치되어 있습니다.", + "PdfGuideMsg": "어도비 홈페이지에서 최신 Adobe Reader를 설치하시기 바랍니다.", + + "PdfDownloadMsg" : "현재 사용 중인 ^browser^ 브라우저는 PDF 파일이 다운로드됩니다.
    인쇄를 원하는 경우 저장 버튼을 이용하여 파일 저장 후 인쇄할 수 있습니다.", + "PdfInstallMsg1" : "현재 브라우저에서 Adobe Reader를 찾을 수 없습니다.", + "PdfInstallMsg2" : "현재 설치된 Adobe Reader의 버전이 낮거나 정상적으로 설치되지 않았습니다.", + "PdfInstallMsg3" : "정상적인 인쇄를 위해서는 Adobe Reader 10 버전 이상을 설치해야 합니다.
    브라우저 종료 후 아래 사이트를 통해서 설치하기 바랍니다.

    https://get.adobe.com/kr/reader

    설치 없이 인쇄하기를 원한다면 저장 버튼을 이용하여 파일 저장 후 인쇄할 수 있습니다.", + "SaveFileMsg1" : "  ※ 별도의 설치 없이 파일을 PC로 다운로드 합니다.", + "SaveFileMsg2" : "  ※ 페이지 수가 많은 경우 일반 저장보다 빠르게 저장이 가능합니다.
      프로그램 설치가 필요하며 해당 프로그램이 설치되어 있지 않은 경우
      설치 작업이 진행됩니다.", + "SaveDialogTitle" : "파일 저장", + "SaveDialogType" : "저장 방식", + "SaveDialogFileType" : "파일 유형", + "SaveDialogDefault" : "일반 저장", + "SaveDialogUbiViewer" : "전용 뷰어 저장", + "PrintPDFTitle" : "PDF 인쇄 안내", + "PrintHTMLTitle" : "HTML 인쇄 안내", + "PrintHTMLMsg_Edge" : "인쇄하기 전 ‘머리글 및 바닥글’에서 ‘끔’을 선택하고 인쇄 버튼을 누르면 됩니다.", + "PrintHTMLMsg_FF" : "인쇄하기 전 브라우저 설정이 필요합니다.
    브라우저의 [파일] 메뉴 > 페이지 설정 > 여백 및 머리글/바닥글에서 머리글, 바닥글을 ‘공백’으로 설정한 후 인쇄하기 바랍니다.", + "PrintHTMLMsg_Chrome" : "인쇄하기 전 ‘설정 더보기’에서 ‘머리글과 바닥글’ 옵션을 해제한 후 인쇄 버튼을 누르면 됩니다.", + "PrintHTMLMsg_Opera" : "인쇄하기 전 ‘추가 옵션’에서 ‘머리글과 바닥글’ 옵션을 해제한 후 인쇄 버튼을 누르면 됩니다.", + "PrintHTMLMsg_IE" : "인쇄하기 전 브라우저 설정이 필요합니다.
    브라우저의 [파일] 메뉴 > 페이지 설정 > 머리글/바닥글을 ‘비어 있음’으로 설정한 후 인쇄하기 바랍니다.", + "PrintHTMLMsg_IEObj" : "인쇄하기 전 '페이지 설정(Alt + U)'에서
    머리글 및 바닥글 ‘비어 있음’을 선택 후 인쇄하기 바랍니다.", + + "ExportOption" : "저장 옵션", + "ExportFormat" : "포맷", + "TiffOption" : "Tiff 압축 방식", + "TiffPageOption" : "페이지별 Tiff 이미지 생성", + "ZipFileMsg" : "※ 이미지는 압축 파일(*.zip)로 다운로드됩니다.", + +'END_OF_LINE':'============================================================'}, + + +//================================================================================ +//English Message +//================================================================================ +'english':{ + "Menu_SAVE": "Save", + "Menu_PRINT": "Print", + + "StreamingMsg": "Generating streaming report.", + "StreamingMsg2": " page is generating...", + "CompleteMsg": "Streaming report generation is complete.", + "CreateErrMsg": "The report was not generated.", + "TotalpageErrMsg": "Total page request error.", + "UnknownErrMsg": "An unknown error occurred.", + "UnknownErrMsg": "An unknown error occurred.", + "ErrMsg": "An error occurred.", + + "ExportMsg" : "Creating file.", + "ExportMsg2" : "This export type is not supported in a UbiViewer.", + "StatusWaitMsg" : "Please wait.", + + "PrintDlgTitle": "Input the page to print", + "PrintDlgRange": "Page range", + "PrintDlgAll": "all pages", + "PrintDlgCurrent": "current page", + "PrintDlgFromTo": "pages to print", + "PrintDlgFrom": "~", + "PrintDlgTo": ".", + "PrintDlgMent": "※ You can print only a part page.", + "PrintDlgMaxMent" : "Maximum pages : ", + "PrintDlgHMent": "Horizontal from in Internet Explorer print preview", + "PrintDlgHMent2": "Print by changing the orientation of the paper in the options.", + "PrintDlgLink": "Read More", + + "PrintDlgHTMLRangeErr": "Out of HTML print range.", + "PrintDlgRangeErr": "Out of page range.", + "PrintDlgEnter": "\nPlease enter again.", + + "Button_OK": "Ok", + "Button_Cancel": "Cancel", + + "PdfCheckMsg9": "Adobe Reader not installed or it is a lower version.", + "PdfCheckMsg6": "Adobe Reader not installed or it is a lower version.", + "PdfGuideMsg": "You can download from Adobe website.", + + "PdfDownloadMsg" : "Your current browser(^browser^) will download the PDF file.
    If you want to print, save the file using the Save button, and then print.", + "PdfInstallMsg1" : "Could not find Adobe Reader in the current browser.", + "PdfInstallMsg2" : "The version of Adobe Reader currently installed is low or not installed correctly.", + "PdfInstallMsg3" : "You must install Adobe Reader version 10 or later to print.
    Please close the browser and install via the website below.
    https://get.adobe.com/kr/reader
    If you want to print without installation, save the file using the Save button and then print.", + "SaveFileMsg1" : "  ※ Download the file to your PC without installation.", + "SaveFileMsg2" : "  ※ Save files using the UbiViewer module.
      If the UbiViewer module is not installed, the installation will proceed.", + "SaveDialogTitle" : "Save file", + "SaveDialogType" : "Save Types", + "SaveDialogFileType" : "File Types", + "SaveDialogDefault" : "Default", + "SaveDialogUbiViewer" : "Using UbiViewer", + "PrintPDFTitle" : "PDF Print Guide", + "PrintHTMLTitle" : "HTML Print Guide", + "PrintHTMLMsg_Edge" : "Set 'Headers & Footers' to 'Off' before printing.", + "PrintHTMLMsg_FF" : "You need browser settings before printing.
    Go to [File] menu > Page setup > Margins & Header/Footer tab. And set 'Headers & Footers' to '-blank-'.", + "PrintHTMLMsg_Chrome" : "Please click 'More settings' and uncheck the 'Headers and footers' option before printing and press the Print button.", + "PrintHTMLMsg_Opera" : "Please click 'More options' and uncheck the 'Headers and footers' option before printing and press the Print button.", + "PrintHTMLMsg_IE" : "You need browser settings before printing.
    Go to [File] menu > 'Page setup'. And set 'Headers/Footers' to 'Empty'.", + "PrintHTMLMsg_IEObj" : "Click the 'Page setup' button before printing. And set 'Headers and footers' to 'Empty'.", + + "ExportOption" : "export options", + "ExportFormat" : "Format", + "TiffOption" : "TIFF Compression type", + "TiffPageOption" : "Create Tiff Image by page", + "ZipFileMsg" : "※ The image is downloaded to a zip file.", + +'END_OF_LINE':'============================================================'}, + + +//================================================================================ +//Spanish Message +//================================================================================ +'spanish':{ + + "Menu_SAVE": "Salvar", + "Menu_PRINT": "Impresion", + + "StreamingMsg": "informe de streaming se esta generando ...", + "StreamingMsg2": "pagina esta generando...", + "CompleteMsg": "La generacion de informes de streaming esta completa.", + "CreateErrMsg": "El informe no fue generado.", + "TotalpageErrMsg": "Total page request error.", + "UnknownErrMsg": "Un error desconocido ocurrio.", + "ErrMsg": "Ha ocurrido un error.", + + "ExportMsg" : "Creando archivo.", + "ExportMsg2" : "Este tipo de exportacion no es compatible con UbiViewer.", + "StatusWaitMsg" : "Por favor espera.", + + "PrintDlgTitle": "Ingrese la pagina para imprimir", + "PrintDlgRange": "Rango de paginas", + "PrintDlgAll": "todas las paginas", + "PrintDlgCurrent": "pagina actual", + "PrintDlgFromTo": "paginas para imprimir", + "PrintDlgFrom": "~", + "PrintDlgTo": ".", + "PrintDlgMent": "※ Puedes imprimir solo parte de la pagina.", + "PrintDlgMaxMent" : "Paginas maximas : ", + "PrintDlgHMent": "Vista preliminar de impresion horizontal desde Internet Explorer", + "PrintDlgHMent2": "Imprime cambiando la orientacion del papel en las opciones.", + "PrintDlgLink": "Lee mas", + + "PrintDlgHTMLRangeErr": "Fuera del rango de impresion HTML.", + "PrintDlgRangeErr": "Fuera de rango de pagina.", + "PrintDlgEnter": "\nPor favor ingrese nuevamente.", + + "Button_OK": "De acuerdo", + "Button_Cancel": "Cancelar", + + "PdfCheckMsg9": "Adobe Reader no esta instalado o es una version inferior.", + "PdfCheckMsg6": "Adobe Reader no esta instalado o es una version inferior.", + "PdfGuideMsg": "Puede descargar desde el sitio web de Adobe.", + + "PdfDownloadMsg" : "Su navegador actual (^ browser ^) descargara el archivo PDF .
    Si desea imprimir, guarde el archivo con el boton Guardar y luego imprima.", + "PdfInstallMsg1" : " No se pudo encontrar Adobe Reader en el navegador actual. ", + "PdfInstallMsg2" : " La version de Adobe Reader actualmente instalada es baja o no esta instalada correctamente. ", + "PdfInstallMsg3" : "Debe instalar Adobe Reader version 10 o posterior para imprimir.
    Cierre el navegador e instalelo a traves del siguiente sitio web.https://get.adobe.com/kr/reader
    Si quieres imprimir sin instalar Guardar boton y luego imprimir.", + "SaveFileMsg1" : "  ※ Descarga el archivo a tu PC sin necesidad de instalacion.", + "SaveFileMsg2" : " ※ Guarde los archivos utilizando el modulo UbiViewer.
      Si el modulo UbiViewer no esta instalado, la instalacion continuara.", + "SaveDialogTitle" : "Guardar el archivo", + "SaveDialogType" : "tipos de guardar", + "SaveDialogFileType" : "Tipos de archivo", + "SaveDialogDefault" : "Almacenamiento general", + "SaveDialogUbiViewer" : "Usando UbiViewer", + "PrintPDFTitle" : "Guia de impresion en PDF", + "PrintHTMLTitle" : "Guia de impresion en HTML", + "PrintHTMLMsg_Edge" : "Configure 'Encabezados y pies de pagina' en 'Desactivado' antes de imprimir.", + "PrintHTMLMsg_FF" : "Necesita la configuracion del navegador antes de imprimir.
    El menu [Archivo] del navegador > Configuracion de pagina > Margenes y pestana Encabezado / Pie de pagina. Y establezca 'Encabezados y pies de pagina' en '-blank-'.", + "PrintHTMLMsg_Chrome" : "Haga clic en 'Mas configuraciones' y desmarque la opcion 'Encabezados y pies de pagina' antes de imprimir y presione el boton Imprimir.", + "PrintHTMLMsg_Opera" : "Haga clic en 'Mas opciones' y desmarque la opcion 'Encabezados y pies de pagina' antes de imprimir y presione el boton Imprimir.", + "PrintHTMLMsg_IE" : "Necesita la configuracion del navegador antes de imprimir.
    El menu [Archivo] del navegador > Configuracion de pagina > Margenes y pestana Encabezado / Pie de pagina. Y establezca 'Encabezados y pies de pagina' en '-blank-'.", + "PrintHTMLMsg_IEObj" : "Haga clic en el boton 'Configurar pagina(Alt + U)' antes de imprimir. Y establezca 'Encabezados y pies de pagina' en 'Vaciar'.", + + "ExportOption" : "Guardar opciones", + "ExportFormat" : "Formato", + "TiffOption" : "Tipo de compresion TIFF", + "TiffPageOption" : "Crear Tiff imagen por pagina", + "ZipFileMsg" : "※ La imagen se descarga en un archivo zip.", + +'END_OF_LINE':'============================================================'}, + + + +//================================================================================ +//Arabic Message +//================================================================================ +'arabic':{ + "StreamingMsg": "Generating streaming report.", + "StreamingMsg2": " page is generating...", + "CompleteMsg": "Streaming report generation is complete.", + "CreateErrMsg": "The report was not generated.", + "TotalpageErrMsg": "Total page request error.", + "UnknownErrMsg": "An unknown error occurred.", + "UnknownErrMsg": "An unknown error occurred.", + "ErrMsg": "An error occurred.", + + "ExportMsg" : "Creating file.", + "ExportMsg2" : "This export type is not supported in a UbiViewer.", + "StatusWaitMsg" : "Please wait.", + + "PrintDlgTitle": "????? ???? ???????", + "PrintDlgRange": "???? ??????", + "PrintDlgAll": "????", + "PrintDlgCurrent": "?????? ???????", + "PrintDlgFromTo": "????? ???????", + "PrintDlgFrom": "~", + "PrintDlgTo": ".", + "PrintDlgMent": "※ You can print only a part page.", + "PrintDlgMaxMent" : "Maximum pages : ", + "PrintDlgHMent": "Horizontal from in Internet Explorer print preview", + "PrintDlgHMent2": "Print by changing the orientation of the paper in the options", + "PrintDlgLink": "Read More", + + "PrintDlgHTMLRangeErr": "Out of HTML print range.", + "PrintDlgRangeErr": "Out of page range.", + "PrintDlgEnter": "\nPlease enter again.", + + "Button_OK": "Ok", + "Button_Cancel": "Cancel", + + "PdfCheckMsg9": "Adobe Reader not installed or it is a lower version.", + "PdfCheckMsg6": "Adobe Reader not installed or it is a lower version.", + "PdfGuideMsg": "You can download from Adobe website.", + + "PdfDownloadMsg" : "Your current browser(^browser^) will download the PDF file.
    If you want to print, save the file using the Save button, and then print.", + "PdfInstallMsg1" : "Could not find Adobe Reader in the current browser.", + "PdfInstallMsg2" : "The version of Adobe Reader currently installed is low or not installed correctly.", + "PdfInstallMsg3" : "You must install Adobe Reader version 10 or later to print.
    Please close the browser and install via the website below.
    https://get.adobe.com/kr/reader
    If you want to print without installation, save the file using the Save button and then print.", + "SaveFileMsg1" : "  ※ Download the file to your PC without installation.", + "SaveFileMsg2" : "  ※ Save files using the UbiViewer module.
      If the UbiViewer module is not installed, the installation will proceed.", + + "SaveDialogTitle" : "Save file", + "SaveDialogType" : "Save Types", + "SaveDialogFileType" : "File Types", + "SaveDialogDefault" : "Default", + "SaveDialogUbiViewer" : "Using UbiViewer", + "PrintPDFTitle" : "PDF Print Guide", + "PrintHTMLTitle" : "HTML Print Guide", + "PrintHTMLMsg_Edge" : "Set 'Headers & Footers' to 'Off' before printing.", + "PrintHTMLMsg_FF" : "You need browser settings before printing.
    Go to [File] menu > Page setup > Margins & Header/Footer tab. And set 'Headers & Footers' to '-blank-'.", + "PrintHTMLMsg_Chrome" : "Please click 'More settings' and uncheck the 'Headers and footers' option before printing and press the Print button.", + "PrintHTMLMsg_Opera" : "Please click 'More options' and uncheck the 'Headers and footers' option before printing and press the Print button.", + "PrintHTMLMsg_IE" : "You need browser settings before printing.
    Go to [File] menu > 'Page setup'. And set 'Headers/Footers' to 'Empty'.", + "PrintHTMLMsg_IEObj" : "Click the 'Page setup' button before printing. And set 'Headers and footers' to 'Empty'.", + + "ExportOption" : "export options", + "ExportFormat" : "Format", + "TiffOption" : "TIFF Compression type", + "TiffPageOption" : "Create Tiff Image by page", + "ZipFileMsg" : "※ The image is downloaded to a zip file.", + +'END_OF_LINE':'============================================================'}, + + +'END_OF_MESSAGE':''}; + + + +/** + * 웹소켓/전용 뷰어 관련 메시지 + */ +var _ubinonax_msg = { + + 'korean' : { + "BTN_OK" : "확인", + "BTN_Cancel" : "취소", + "BTN_Download" : "다운로드", + + "HelpSafari" : "ㆍSafari 브라우저에서는 설치 후에 브라우저를 닫았다가 다시 접속하시기 바랍니다.
    ", + "HelpFireFox" : "ㆍFireFox 브라우저에서 실행 권한을 요구하는 경우 반드시 [허가]→[허가하고 기억] 버튼을 차례대로 눌러주십시오.
    ㆍ설치가 안된다면 플러그인 차단 여부를 확인해 주십시오.
    ", + "HelpChrome" : "ㆍChrome 브라우저에서 실행 권한이 필요하다고 요구하는 경우 반드시 [이 사이트에서 항상 실행] 버튼을 눌러주십시오.
    ㆍ설치가 안된다면 플러그인 차단 여부를 확인해 주십시오.
    ", + "HelpOpera" : "ㆍOpera 브라우저입니다. 다운로드 받은 파일을 직접 실행하여 주십시오.
    ", + "HelpIE" : "ㆍIE 브라우저에서 파일 다운로드가 차단된 경우 [다운로드] 로 실행하여 주십시오.
    ", + + "Update_Title" : "프로그램 업데이트 안내 ", + "Install_Title" : "프로그램 설치 안내 ", + "Guide_Title" : "프로그램 안내", + + "Update_Subject" : "UbiViewer 인쇄를 위해 프로그램 업데이트가 필요합니다.", + "Install_Subject" : "UbiViewer 인쇄를 위해 프로그램 설치가 필요합니다.", + "Update_Contents" : "ㆍ 파일 다운로드 클릭
    ㆍ 저장 후 파일 실행 및 설치(브라우저 자동 종료)
    ㆍ 브라우저 재시작 후 인쇄/저장

    ※ 설치 안내 메시지가 계속 나오는 경우 설치 파일에서 마우스 우 클릭 후
       관리자 권한으로 실행
    ", + "Install_Contents" : "ㆍ 파일 다운로드 클릭
    ㆍ 저장 후 파일 실행 및 설치
    ㆍ 브라우저 새로고침(F5) 후 인쇄/저장

    ※ 설치 안내 메시지가 계속 나오는 경우 설치 파일에서 마우스 우 클릭 후
       관리자 권한으로 실행
    ", + + "64_Subject" : "64비트 브라우저 미지원 안내", + "64_Contents" : "ㆍ 이 브라우저는 64비트 브라우저 입니다.
    ㆍ 32비트 브라우저를 사용하여 주십시오.

    ", + "Plugin_Subject" : "플러그인 미지원 브라우저", + "Plugin_Contents" : "ㆍ 해당 브라우저는 플러그인을 지원하지 않습니다.
    ㆍ 다른 브라우저를 사용하시기 바랍니다.
    ㆍ 미지원 브라우저 : Edge, Chrome 45버전 이상, Opera 33버전 이상.", + "WS_Subject" : "웹소켓 미지원 브라우저", + "WS_Contents" : "ㆍ 해당 브라우저는 웹소켓 방식의 뷰어를 지원하지 않습니다.
    ㆍ 다른 브라우져를 사용 하시기 바랍니다.

    ", + + "Print_Stanby_Title" : "인쇄 준비 중", + "Print_Stanby_Subject" : "
    사용자 PC환경 및 페이지양에 따라 5초~1분 정도 소요됩니다.

    잠시만 기다려 주세요.

    ", + "Print_Complete_Title" : "인쇄 완료", + "Print_Complete_Subject" : "
    인쇄가 완료 되었습니다.

    확인을 클릭하여 창을 닫아주세요.
    ", + "Print_Cancel_Title" : "인쇄 취소", + "Print_Cancel_Subject" : "
    인쇄가 취소 되었습니다.

    확인을 클릭하여 창을 닫아주세요.
    ", + "Print_Fail_Title" : "인쇄 오류", + "Print_Fail_Subject" : "
    인쇄 정보를 받아오는 도중에 오류가 발생하였습니다.

    확인을 클릭하여 창을 닫은 후 재조회(refresh) 후 다시 시도해 주세요.
    ", + + "Export_Standby_Title" : "파일 저장 준비 중", + "Export_Standby_Subject" : "
    사용자 PC 환경에 따라 5초 ~ 1분 정도 소요됩니다.

    잠시만 기다려 주세요.

    ", + "Export_Complete_Title" : "파일 저장 완료", + "Export_Complete_Subject" : "
    파일 저장이 완료 되었습니다.

    확인을 클릭하여 창을 닫아주세요.
    ", + "Export_Cancel_Title" : "파일 저장 취소", + "Export_Cancel_Subject" : "
    파일 저장이 취소 되었습니다.

    확인을 클릭하여 창을 닫아주세요.
    ", + "Export_Fail_Title" : "파일 저장 오류", + "Export_Fail_Subject" : "
    파일 저장 정보를 받아오는 도중에 오류가 발생하였습니다.

    확인을 클릭하여 창을 닫은 후 재조회(refresh) 후 다시 시도해 주세요.
    " + }, + + 'english' : { + "BTN_OK" : "OK", + "BTN_Cancel" : "Cancel", + "BTN_Download" : "Download", + + "HelpSafari" : "ㆍIn the Safari browser, please close and re-openyour browser after installation.
    ", + "HelpFireFox" : "ㆍIf you require permission to execute in the FireFox browser, be sure to click the [Permission] → [Permit and Remember] button.
    ㆍIf installation does not work, check if plug-in is blocked.
    ", + "HelpChrome" : "ㆍIf you require permission to run in your Chrome browser, be sure to click the [Always run on this site] button.
    ㆍIf installation does not work, check if plug-in is blocked.
    ", + "HelpOpera" : "ㆍOpera browser. Please run the downloaded file directly.
    ", + "HelpIE" : "ㆍIf the file download is blocked in IE browser, please run [Download].
    ", + + "Update_Title" : "Program Update Guide", + "Install_Title" : "Program Installation Guide", + "Guide_Title" : "Program Guide", + + "Update_Subject" : "Program updates are required for the UbiViewer printing.", + "Install_Subject" : "You need to install the program for Ubiviewer printing.", + "Update_Contents" : "ㆍ Click File Download
    ㆍ Run files and install after Save (Automatic browser shutdown)
    ㆍ Print / Save after Browser restart

    ※ If the installation guide message continues to appear, right-click on the installation file, and then click [Run as administrator].", + "Install_Contents" : "ㆍ Click File Download
    ㆍ Run files and install after Save
    ㆍ Print / Save after browser refresh (F5)

    ※ If the installation guide message continues to appear, right-click on the installation file, and then click [Run as administrator].", + + "64_Subject" : "64-bit browser not supported", + "64_Contents" : "ㆍ This browser is a 64-bit browser.
    ㆍ Please use a 32-bit browser.

    ", + "Plugin_Subject" : "Plug-in unsupported browser", + "Plugin_Contents" : "ㆍ This browser does not support plugins.
    ㆍ Please use a different browser.
    ㆍ Not supported Browsers : Edge, Chrome 45+, Opera 33+.", + "WS_Subject" : "Websocket unsupported browser", + "WS_Contents" : "ㆍ This browser does not support viewer of Websocket.
    ㆍ Please use a different browser.

    ", + + "Print_Stanby_Title" : "Preparing to print", + "Print_Stanby_Subject" : "
    It takes 5 seconds ~ 1 minute depending on the PC environment and page size.

    Please wait a moment.

    ", + "Print_Complete_Title" : "Printing Complete", + "Print_Complete_Subject" : "
    Printing has been completed.

    Click OK to close the window.
    ", + "Print_Cancel_Title" : "Cancel printing", + "Print_Cancel_Subject" : "
    Printing has been canceled.

    Click OK to close the window.
    ", + "Print_Fail_Title" : "Printing Error", + "Print_Fail_Subject" : "
    An error occurred while getting print information.

    Click OK to close the window, then refresh your browser and try again.
    ", + + "Export_Standby_Title" : "Preparing to save file", + "Export_Standby_Subject" : "
    It takes 5 seconds ~ 1 minute for your PC environment.

    Please wait a moment.

    ", + "Export_Complete_Title" : "File Save Completed", + "Export_Complete_Subject" : "
    File save has been completed.

    Click OK to close the window.
    ", + "Export_Cancel_Title" : "Cancel file save", + "Export_Cancel_Subject" : "
    File save has been canceled.

    Click OK to close the window.
    ", + "Export_Fail_Title" : "File Save Error", + "Export_Fail_Subject" : "
    An error occurred while getting save information.

    Click OK to close the window, then refresh your browser and try again.
    " + } +}; \ No newline at end of file diff --git a/src/main/webapp/ubi4/js/ubiexcanvas.js b/src/main/webapp/ubi4/js/ubiexcanvas.js new file mode 100644 index 0000000..c5bdcb8 --- /dev/null +++ b/src/main/webapp/ubi4/js/ubiexcanvas.js @@ -0,0 +1 @@ +if (typeof nexacro == 'undefined' || (typeof nexacro.Browser != 'undefined' && nexacro.Browser != 'Runtime') || (typeof nexacro._Browser != 'undefined' && nexacro._Browser != 'Runtime')){if (!document.createElement('canvas').getContext) {(function() { var m=Math; var mr=m.round; var ms=m.sin; var mc=m.cos; var abs=m.abs; var sqrt=m.sqrt; var Z=10; var Z2=Z / 2; var IE_VERSION=+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1]; function getContext() { return this.context_ || (this.context_=new CanvasRenderingContext2D_(this)); } var slice=Array.prototype.slice; function bind(f, obj, var_args) { var a=slice.call(arguments, 2); return function() { return f.apply(obj, a.concat(slice.call(arguments))); }; } function encodeHtmlAttribute(s) { return String(s).replace(/&/g, '&').replace(/"/g, '"'); } function addNamespace(doc, prefix, urn) { if (!doc.namespaces[prefix]) { doc.namespaces.add(prefix, urn, '#default#VML'); } } function addNamespacesAndStylesheet(doc) { addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml'); addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office'); if (!doc.styleSheets['ex_canvas_']) { var ss=doc.createStyleSheet(); ss.owningElement.id='ex_canvas_'; ss.cssText='canvas{display:inline-block;overflow:hidden;' + 'text-align:left;width:300px;height:150px}'; } } addNamespacesAndStylesheet(document); var G_vmlCanvasManager_={ init: function(opt_doc) { var doc=opt_doc || document; doc.createElement('canvas'); doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); }, init_: function(doc) { var els=doc.getElementsByTagName('canvas'); for (var i=0; i < els.length; i++) { this.initElement(els[i]); } }, initElement: function(el) { if (!el.getContext) { el.getContext=getContext; addNamespacesAndStylesheet(el.ownerDocument); el.innerHTML=''; el.attachEvent('onpropertychange', onPropertyChange); el.attachEvent('onresize', onResize); var attrs=el.attributes; if (attrs.width && attrs.width.specified) { el.style.width=attrs.width.nodeValue + 'px'; } else { el.width=el.clientWidth; } if (attrs.height && attrs.height.specified) { el.style.height=attrs.height.nodeValue + 'px'; } else { el.height=el.clientHeight; } } return el; } }; function onPropertyChange(e) { var el=e.srcElement; switch (e.propertyName) { case 'width': el.getContext().clearRect(); el.style.width=el.attributes.width.nodeValue + 'px'; el.firstChild.style.width=el.clientWidth + 'px'; break; case 'height': el.getContext().clearRect(); el.style.height=el.attributes.height.nodeValue + 'px'; el.firstChild.style.height=el.clientHeight + 'px'; break; } } function onResize(e) { var el=e.srcElement; if (el.firstChild) { el.firstChild.style.width=el.clientWidth + 'px'; el.firstChild.style.height=el.clientHeight + 'px'; } } G_vmlCanvasManager_.init(); var decToHex=[]; for (var i=0; i < 16; i++) { for (var j=0; j < 16; j++) { decToHex[i * 16 + j]=i.toString(16) + j.toString(16); } } function createMatrixIdentity() { return [ [1, 0, 0], [0, 1, 0], [0, 0, 1] ]; } function matrixMultiply(m1, m2) { var result=createMatrixIdentity(); for (var x=0; x < 3; x++) { for (var y=0; y < 3; y++) { var sum=0; for (var z=0; z < 3; z++) { sum += m1[x][z] * m2[z][y]; } result[x][y]=sum; } } return result; } function copyState(o1, o2) { o2.fillStyle=o1.fillStyle; o2.lineCap=o1.lineCap; o2.lineJoin=o1.lineJoin; o2.lineWidth=o1.lineWidth; o2.miterLimit=o1.miterLimit; o2.shadowBlur=o1.shadowBlur; o2.shadowColor=o1.shadowColor; o2.shadowOffsetX=o1.shadowOffsetX; o2.shadowOffsetY=o1.shadowOffsetY; o2.strokeStyle=o1.strokeStyle; o2.globalAlpha=o1.globalAlpha; o2.font=o1.font; o2.textAlign=o1.textAlign; o2.textBaseline=o1.textBaseline; o2.arcScaleX_=o1.arcScaleX_; o2.arcScaleY_=o1.arcScaleY_; o2.lineScale_=o1.lineScale_; } var colorData={ aliceblue: '#F0F8FF', antiquewhite: '#FAEBD7', aquamarine: '#7FFFD4', azure: '#F0FFFF', beige: '#F5F5DC', bisque: '#FFE4C4', black: '#000000', blanchedalmond: '#FFEBCD', blueviolet: '#8A2BE2', brown: '#A52A2A', burlywood: '#DEB887', cadetblue: '#5F9EA0', chartreuse: '#7FFF00', chocolate: '#D2691E', coral: '#FF7F50', cornflowerblue: '#6495ED', cornsilk: '#FFF8DC', crimson: '#DC143C', cyan: '#00FFFF', darkblue: '#00008B', darkcyan: '#008B8B', darkgoldenrod: '#B8860B', darkgray: '#A9A9A9', darkgreen: '#006400', darkgrey: '#A9A9A9', darkkhaki: '#BDB76B', darkmagenta: '#8B008B', darkolivegreen: '#556B2F', darkorange: '#FF8C00', darkorchid: '#9932CC', darkred: '#8B0000', darksalmon: '#E9967A', darkseagreen: '#8FBC8F', darkslateblue: '#483D8B', darkslategray: '#2F4F4F', darkslategrey: '#2F4F4F', darkturquoise: '#00CED1', darkviolet: '#9400D3', deeppink: '#FF1493', deepskyblue: '#00BFFF', dimgray: '#696969', dimgrey: '#696969', dodgerblue: '#1E90FF', firebrick: '#B22222', floralwhite: '#FFFAF0', forestgreen: '#228B22', gainsboro: '#DCDCDC', ghostwhite: '#F8F8FF', gold: '#FFD700', goldenrod: '#DAA520', grey: '#808080', greenyellow: '#ADFF2F', honeydew: '#F0FFF0', hotpink: '#FF69B4', indianred: '#CD5C5C', indigo: '#4B0082', ivory: '#FFFFF0', khaki: '#F0E68C', lavender: '#E6E6FA', lavenderblush: '#FFF0F5', lawngreen: '#7CFC00', lemonchiffon: '#FFFACD', lightblue: '#ADD8E6', lightcoral: '#F08080', lightcyan: '#E0FFFF', lightgoldenrodyellow: '#FAFAD2', lightgreen: '#90EE90', lightgrey: '#D3D3D3', lightpink: '#FFB6C1', lightsalmon: '#FFA07A', lightseagreen: '#20B2AA', lightskyblue: '#87CEFA', lightslategray: '#778899', lightslategrey: '#778899', lightsteelblue: '#B0C4DE', lightyellow: '#FFFFE0', limegreen: '#32CD32', linen: '#FAF0E6', magenta: '#FF00FF', mediumaquamarine: '#66CDAA', mediumblue: '#0000CD', mediumorchid: '#BA55D3', mediumpurple: '#9370DB', mediumseagreen: '#3CB371', mediumslateblue: '#7B68EE', mediumspringgreen: '#00FA9A', mediumturquoise: '#48D1CC', mediumvioletred: '#C71585', midnightblue: '#191970', mintcream: '#F5FFFA', mistyrose: '#FFE4E1', moccasin: '#FFE4B5', navajowhite: '#FFDEAD', oldlace: '#FDF5E6', olivedrab: '#6B8E23', orange: '#FFA500', orangered: '#FF4500', orchid: '#DA70D6', palegoldenrod: '#EEE8AA', palegreen: '#98FB98', paleturquoise: '#AFEEEE', palevioletred: '#DB7093', papayawhip: '#FFEFD5', peachpuff: '#FFDAB9', peru: '#CD853F', pink: '#FFC0CB', plum: '#DDA0DD', powderblue: '#B0E0E6', rosybrown: '#BC8F8F', royalblue: '#4169E1', saddlebrown: '#8B4513', salmon: '#FA8072', sandybrown: '#F4A460', seagreen: '#2E8B57', seashell: '#FFF5EE', sienna: '#A0522D', skyblue: '#87CEEB', slateblue: '#6A5ACD', slategray: '#708090', slategrey: '#708090', snow: '#FFFAFA', springgreen: '#00FF7F', steelblue: '#4682B4', tan: '#D2B48C', thistle: '#D8BFD8', tomato: '#FF6347', turquoise: '#40E0D0', violet: '#EE82EE', wheat: '#F5DEB3', whitesmoke: '#F5F5F5', yellowgreen: '#9ACD32' }; function getRgbHslContent(styleString) { var start=styleString.indexOf('(', 3); var end=styleString.indexOf(')', start + 1); var parts=styleString.substring(start + 1, end).split(','); if (parts.length != 4 || styleString.charAt(3) != 'a') { parts[3]=1; } return parts; } function percent(s) { return parseFloat(s) / 100; } function clamp(v, min, max) { return Math.min(max, Math.max(min, v)); } function hslToRgb(parts){ var r, g, b, h, s, l; h=parseFloat(parts[0]) / 360 % 360; if (h < 0) h++; s=clamp(percent(parts[1]), 0, 1); l=clamp(percent(parts[2]), 0, 1); if (s == 0) { r=g=b=l; } else { var q=l < 0.5 ? l * (1 + s) : l + s - l * s; var p=2 * l - q; r=hueToRgb(p, q, h + 1 / 3); g=hueToRgb(p, q, h); b=hueToRgb(p, q, h - 1 / 3); } return '#' + decToHex[Math.floor(r * 255)] + decToHex[Math.floor(g * 255)] + decToHex[Math.floor(b * 255)]; } function hueToRgb(m1, m2, h) { if (h < 0) h++; if (h > 1) h--; if (6 * h < 1) return m1 + (m2 - m1) * 6 * h; else if (2 * h < 1) return m2; else if (3 * h < 2) return m1 + (m2 - m1) * (2 / 3 - h) * 6; else return m1; } var processStyleCache={}; function processStyle(styleString) { if (styleString in processStyleCache) { return processStyleCache[styleString]; } var str, alpha=1; styleString=String(styleString); if (styleString.charAt(0) == '#') { str=styleString; } else if (/^rgb/.test(styleString)) { var parts=getRgbHslContent(styleString); var str='#', n; for (var i=0; i < 3; i++) { if (parts[i].indexOf('%') != -1) { n=Math.floor(percent(parts[i]) * 255); } else { n=+parts[i]; } str += decToHex[clamp(n, 0, 255)]; } alpha=+parts[3]; } else if (/^hsl/.test(styleString)) { var parts=getRgbHslContent(styleString); str=hslToRgb(parts); alpha=parts[3]; } else { str=colorData[styleString] || styleString; } return processStyleCache[styleString]={color: str, alpha: alpha}; } var DEFAULT_STYLE={ style: 'normal', variant: 'normal', weight: 'normal', size: 10, family: 'sans-serif' }; var fontStyleCache={}; function processFontStyle(styleString) { if (fontStyleCache[styleString]) { return fontStyleCache[styleString]; } var el=document.createElement('div'); var style=el.style; try { style.font=styleString; } catch (ex) { } return fontStyleCache[styleString]={ style: style.fontStyle || DEFAULT_STYLE.style, variant: style.fontVariant || DEFAULT_STYLE.variant, weight: style.fontWeight || DEFAULT_STYLE.weight, size: style.fontSize || DEFAULT_STYLE.size, family: style.fontFamily || DEFAULT_STYLE.family }; } function getComputedStyle(style, element) { var computedStyle={}; for (var p in style) { computedStyle[p]=style[p]; } var canvasFontSize=parseFloat(element.currentStyle.fontSize), fontSize=parseFloat(style.size); if (typeof style.size == 'number') { computedStyle.size=style.size; } else if (style.size.indexOf('px') != -1) { computedStyle.size=fontSize; } else if (style.size.indexOf('em') != -1) { computedStyle.size=canvasFontSize * fontSize; } else if(style.size.indexOf('%') != -1) { computedStyle.size=(canvasFontSize / 100) * fontSize; } else if (style.size.indexOf('pt') != -1) { computedStyle.size=fontSize / .75; } else { computedStyle.size=canvasFontSize; } computedStyle.size *= 0.981; return computedStyle; } function buildStyle(style) { return style.style + ' ' + style.variant + ' ' + style.weight + ' ' + style.size + 'px ' + style.family; } var lineCapMap={ 'butt': 'flat', 'round': 'round' }; function processLineCap(lineCap) { return lineCapMap[lineCap] || 'square'; } function CanvasRenderingContext2D_(canvasElement) { this.m_=createMatrixIdentity(); this.mStack_=[]; this.aStack_=[]; this.currentPath_=[]; this.strokeStyle='#000'; this.fillStyle='#000'; this.lineWidth=1; this.lineJoin='miter'; this.lineCap='butt'; this.miterLimit=Z * 1; this.globalAlpha=1; this.font='10px sans-serif'; this.textAlign='left'; this.textBaseline='alphabetic'; this.canvas=canvasElement; var cssText='width:' + canvasElement.clientWidth + 'px;height:' + canvasElement.clientHeight + 'px;overflow:hidden;position:absolute'; var el=canvasElement.ownerDocument.createElement('div'); el.style.cssText=cssText; canvasElement.appendChild(el); var overlayEl=el.cloneNode(false); overlayEl.style.backgroundColor='red'; overlayEl.style.filter='alpha(opacity=0)'; canvasElement.appendChild(overlayEl); this.element_=el; this.arcScaleX_=1; this.arcScaleY_=1; this.lineScale_=1; } var contextPrototype=CanvasRenderingContext2D_.prototype; contextPrototype.clearRect=function() { if (this.textMeasureEl_) { this.textMeasureEl_.removeNode(true); this.textMeasureEl_=null; } this.element_.innerHTML=''; }; contextPrototype.beginPath=function() { this.currentPath_=[]; }; contextPrototype.moveTo=function(aX, aY) { var p=getCoords(this, aX, aY); this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); this.currentX_=p.x; this.currentY_=p.y; }; contextPrototype.lineTo=function(aX, aY) { var p=getCoords(this, aX, aY); this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); this.currentX_=p.x; this.currentY_=p.y; }; contextPrototype.bezierCurveTo=function(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) { var p=getCoords(this, aX, aY); var cp1=getCoords(this, aCP1x, aCP1y); var cp2=getCoords(this, aCP2x, aCP2y); bezierCurveTo(this, cp1, cp2, p); }; function bezierCurveTo(self, cp1, cp2, p) { self.currentPath_.push({ type: 'bezierCurveTo', cp1x: cp1.x, cp1y: cp1.y, cp2x: cp2.x, cp2y: cp2.y, x: p.x, y: p.y }); self.currentX_=p.x; self.currentY_=p.y; } contextPrototype.quadraticCurveTo=function(aCPx, aCPy, aX, aY) { var cp=getCoords(this, aCPx, aCPy); var p=getCoords(this, aX, aY); var cp1={ x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) }; var cp2={ x: cp1.x + (p.x - this.currentX_) / 3.0, y: cp1.y + (p.y - this.currentY_) / 3.0 }; bezierCurveTo(this, cp1, cp2, p); }; contextPrototype.arc=function(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) { aRadius *= Z; var arcType=aClockwise ? 'at' : 'wa'; var xStart=aX + mc(aStartAngle) * aRadius - Z2; var yStart=aY + ms(aStartAngle) * aRadius - Z2; var xEnd=aX + mc(aEndAngle) * aRadius - Z2; var yEnd=aY + ms(aEndAngle) * aRadius - Z2; if (xStart == xEnd && !aClockwise) { xStart += 0.125; } var p=getCoords(this, aX, aY); var pStart=getCoords(this, xStart, yStart); var pEnd=getCoords(this, xEnd, yEnd); this.currentPath_.push({type: arcType, x: p.x, y: p.y, radius: aRadius, xStart: pStart.x, yStart: pStart.y, xEnd: pEnd.x, yEnd: pEnd.y}); }; contextPrototype.rect=function(aX, aY, aWidth, aHeight) { this.moveTo(aX, aY); this.lineTo(aX + aWidth, aY); this.lineTo(aX + aWidth, aY + aHeight); this.lineTo(aX, aY + aHeight); this.closePath(); }; contextPrototype.strokeRect=function(aX, aY, aWidth, aHeight) { var oldPath=this.currentPath_; this.beginPath(); this.moveTo(aX, aY); this.lineTo(aX + aWidth, aY); this.lineTo(aX + aWidth, aY + aHeight); this.lineTo(aX, aY + aHeight); this.closePath(); this.stroke(); this.currentPath_=oldPath; }; contextPrototype.fillRect=function(aX, aY, aWidth, aHeight) { var oldPath=this.currentPath_; this.beginPath(); this.moveTo(aX, aY); this.lineTo(aX + aWidth, aY); this.lineTo(aX + aWidth, aY + aHeight); this.lineTo(aX, aY + aHeight); this.closePath(); this.fill(); this.currentPath_=oldPath; }; contextPrototype.createLinearGradient=function(aX0, aY0, aX1, aY1) { var gradient=new CanvasGradient_('gradient'); gradient.x0_=aX0; gradient.y0_=aY0; gradient.x1_=aX1; gradient.y1_=aY1; return gradient; }; contextPrototype.createRadialGradient=function(aX0, aY0, aR0, aX1, aY1, aR1) { var gradient=new CanvasGradient_('gradientradial'); gradient.x0_=aX0; gradient.y0_=aY0; gradient.r0_=aR0; gradient.x1_=aX1; gradient.y1_=aY1; gradient.r1_=aR1; return gradient; }; contextPrototype.drawImage=function(image, var_args) { var dx, dy, dw, dh, sx, sy, sw, sh; var oldRuntimeWidth=image.runtimeStyle.width; var oldRuntimeHeight=image.runtimeStyle.height; image.runtimeStyle.width='auto'; image.runtimeStyle.height='auto'; var w=image.width; var h=image.height; image.runtimeStyle.width=oldRuntimeWidth; image.runtimeStyle.height=oldRuntimeHeight; if (arguments.length == 3) { dx=arguments[1]; dy=arguments[2]; sx=sy=0; sw=dw=w; sh=dh=h; } else if (arguments.length == 5) { dx=arguments[1]; dy=arguments[2]; dw=arguments[3]; dh=arguments[4]; sx=sy=0; sw=w; sh=h; } else if (arguments.length == 9) { sx=arguments[1]; sy=arguments[2]; sw=arguments[3]; sh=arguments[4]; dx=arguments[5]; dy=arguments[6]; dw=arguments[7]; dh=arguments[8]; } else { throw Error('Invalid number of arguments'); } var d=getCoords(this, dx, dy); var w2=sw / 2; var h2=sh / 2; var vmlStr=[]; var W=10; var H=10; vmlStr.push(' ' , '', ''); this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join('')); }; contextPrototype.stroke=function(aFill) { var lineStr=[]; var lineOpen=false; var W=10; var H=10; lineStr.push(''); if (!aFill) { appendStroke(this, lineStr); } else { appendFill(this, lineStr, min, max); } lineStr.push(''); this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); }; function appendStroke(ctx, lineStr) { var a=processStyle(ctx.strokeStyle); var color=a.color; var opacity=a.alpha * ctx.globalAlpha; var lineWidth=ctx.lineScale_ * ctx.lineWidth; if (lineWidth < 1) { opacity *= lineWidth; } lineStr.push( '' ); } function appendFill(ctx, lineStr, min, max) { var fillStyle=ctx.fillStyle; var arcScaleX=ctx.arcScaleX_; var arcScaleY=ctx.arcScaleY_; var width=max.x - min.x; var height=max.y - min.y; if (fillStyle instanceof CanvasGradient_) { var angle=0; var focus={x: 0, y: 0}; var shift=0; var expansion=1; if (fillStyle.type_ == 'gradient') { var x0=fillStyle.x0_ / arcScaleX; var y0=fillStyle.y0_ / arcScaleY; var x1=fillStyle.x1_ / arcScaleX; var y1=fillStyle.y1_ / arcScaleY; var p0=getCoords(ctx, x0, y0); var p1=getCoords(ctx, x1, y1); var dx=p1.x - p0.x; var dy=p1.y - p0.y; angle=Math.atan2(dx, dy) * 180 / Math.PI; if (angle < 0) { angle += 360; } if (angle < 1e-6) { angle=0; } } else { var p0=getCoords(ctx, fillStyle.x0_, fillStyle.y0_); focus={ x: (p0.x - min.x) / width, y: (p0.y - min.y) / height }; width /= arcScaleX * Z; height /= arcScaleY * Z; var dimension=m.max(width, height); shift=2 * fillStyle.r0_ / dimension; expansion=2 * fillStyle.r1_ / dimension - shift; } var stops=fillStyle.colors_; stops.sort(function(cs1, cs2) { return cs1.offset - cs2.offset; }); var length=stops.length; var color1=stops[0].color; var color2=stops[length - 1].color; var opacity1=stops[0].alpha * ctx.globalAlpha; var opacity2=stops[length - 1].alpha * ctx.globalAlpha; var colors=[]; for (var i=0; i < length; i++) { var stop=stops[i]; colors.push(stop.offset * expansion + shift + ' ' + stop.color); } lineStr.push(''); } else if (fillStyle instanceof CanvasPattern_) { if (width && height) { var deltaLeft=-min.x; var deltaTop=-min.y; lineStr.push(''); } } else { var a=processStyle(ctx.fillStyle); var color=a.color; var opacity=a.alpha * ctx.globalAlpha; lineStr.push(''); } } contextPrototype.fill=function() { this.stroke(true); }; contextPrototype.closePath=function() { this.currentPath_.push({type: 'close'}); }; function getCoords(ctx, aX, aY) { var m=ctx.m_; return { x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 }; }; contextPrototype.save=function() { var o={}; copyState(this, o); this.aStack_.push(o); this.mStack_.push(this.m_); this.m_=matrixMultiply(createMatrixIdentity(), this.m_); }; contextPrototype.restore=function() { if (this.aStack_.length) { copyState(this.aStack_.pop(), this); this.m_=this.mStack_.pop(); } }; function matrixIsFinite(m) { return isFinite(m[0][0]) && isFinite(m[0][1]) && isFinite(m[1][0]) && isFinite(m[1][1]) && isFinite(m[2][0]) && isFinite(m[2][1]); } function setM(ctx, m, updateLineScale) { if (!matrixIsFinite(m)) { return; } ctx.m_=m; if (updateLineScale) { var det=m[0][0] * m[1][1] - m[0][1] * m[1][0]; ctx.lineScale_=sqrt(abs(det)); } } contextPrototype.translate=function(aX, aY) { var m1=[ [1, 0, 0], [0, 1, 0], [aX, aY, 1] ]; setM(this, matrixMultiply(m1, this.m_), false); }; contextPrototype.rotate=function(aRot) { var c=mc(aRot); var s=ms(aRot); var m1=[ [c, s, 0], [-s, c, 0], [0, 0, 1] ]; setM(this, matrixMultiply(m1, this.m_), false); }; contextPrototype.scale=function(aX, aY) { this.arcScaleX_ *= aX; this.arcScaleY_ *= aY; var m1=[ [aX, 0, 0], [0, aY, 0], [0, 0, 1] ]; setM(this, matrixMultiply(m1, this.m_), true); }; contextPrototype.transform=function(m11, m12, m21, m22, dx, dy) { var m1=[ [m11, m12, 0], [m21, m22, 0], [dx, dy, 1] ]; setM(this, matrixMultiply(m1, this.m_), true); }; contextPrototype.setTransform=function(m11, m12, m21, m22, dx, dy) { var m=[ [m11, m12, 0], [m21, m22, 0], [dx, dy, 1] ]; setM(this, m, true); }; contextPrototype.drawText_=function(text, x, y, maxWidth, stroke) { var m=this.m_, delta=1000, left=0, right=delta, offset={x: 0, y: 0}, lineStr=[]; var fontStyle=getComputedStyle(processFontStyle(this.font), this.element_); var fontStyleString=buildStyle(fontStyle); var elementStyle=this.element_.currentStyle; var textAlign=this.textAlign.toLowerCase(); switch (textAlign) { case 'left': case 'center': case 'right': break; case 'end': textAlign=elementStyle.direction == 'ltr' ? 'right' : 'left'; break; case 'start': textAlign=elementStyle.direction == 'rtl' ? 'right' : 'left'; break; default: textAlign='left'; } switch (this.textBaseline) { case 'hanging': case 'top': offset.y=fontStyle.size / 1.75; break; case 'middle': break; default: case null: case 'alphabetic': case 'ideographic': case 'bottom': offset.y=-fontStyle.size / 2.25; break; } switch(textAlign) { case 'right': left=delta; right=0.05; break; case 'center': left=right=delta / 2; break; } var d=getCoords(this, x + offset.x, y + offset.y); lineStr.push(''); if (stroke) { appendStroke(this, lineStr); } else { appendFill(this, lineStr, {x: -left, y: 0}, {x: right, y: fontStyle.size}); } var skewM=m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' + m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0'; var skewOffset=mr(d.x / Z) + ',' + mr(d.y / Z); lineStr.push('', '', ''); this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); }; contextPrototype.fillText=function(text, x, y, maxWidth) { this.drawText_(text, x, y, maxWidth, false); }; contextPrototype.strokeText=function(text, x, y, maxWidth) { this.drawText_(text, x, y, maxWidth, true); }; contextPrototype.measureText=function(text) { if (!this.textMeasureEl_) { var s=''; this.element_.insertAdjacentHTML('beforeEnd', s); this.textMeasureEl_=this.element_.lastChild; } var doc=this.element_.ownerDocument; this.textMeasureEl_.innerHTML=''; this.textMeasureEl_.style.font=this.font; this.textMeasureEl_.appendChild(doc.createTextNode(text)); return {width: this.textMeasureEl_.offsetWidth}; }; contextPrototype.clip=function() { }; contextPrototype.arcTo=function() { }; contextPrototype.createPattern=function(image, repetition) { return new CanvasPattern_(image, repetition); }; function CanvasGradient_(aType) { this.type_=aType; this.x0_=0; this.y0_=0; this.r0_=0; this.x1_=0; this.y1_=0; this.r1_=0; this.colors_=[]; } CanvasGradient_.prototype.addColorStop=function(aOffset, aColor) { aColor=processStyle(aColor); this.colors_.push({offset: aOffset, color: aColor.color, alpha: aColor.alpha}); }; function CanvasPattern_(image, repetition) { assertImageIsValid(image); switch (repetition) { case 'repeat': case null: case '': this.repetition_='repeat'; break; case 'repeat-x': case 'repeat-y': case 'no-repeat': this.repetition_=repetition; break; default: throwException('SYNTAX_ERR'); } this.src_=image.src; this.width_=image.width; this.height_=image.height; } function throwException(s) { throw new DOMException_(s); } function assertImageIsValid(img) { if (!img || img.nodeType != 1 || img.tagName != 'IMG') { throwException('TYPE_MISMATCH_ERR'); } if (img.readyState != 'complete') { throwException('INVALID_STATE_ERR'); } } function DOMException_(s) { this.code=this[s]; this.message=s +': DOM Exception ' + this.code; } var p=DOMException_.prototype=new Error; p.INDEX_SIZE_ERR=1; p.DOMSTRING_SIZE_ERR=2; p.HIERARCHY_REQUEST_ERR=3; p.WRONG_DOCUMENT_ERR=4; p.INVALID_CHARACTER_ERR=5; p.NO_DATA_ALLOWED_ERR=6; p.NO_MODIFICATION_ALLOWED_ERR=7; p.NOT_FOUND_ERR=8; p.NOT_SUPPORTED_ERR=9; p.INUSE_ATTRIBUTE_ERR=10; p.INVALID_STATE_ERR=11; p.SYNTAX_ERR=12; p.INVALID_MODIFICATION_ERR=13; p.NAMESPACE_ERR=14; p.INVALID_ACCESS_ERR=15; p.VALIDATION_ERR=16; p.TYPE_MISMATCH_ERR=17; G_vmlCanvasManager=G_vmlCanvasManager_; CanvasRenderingContext2D=CanvasRenderingContext2D_; CanvasGradient=CanvasGradient_; CanvasPattern=CanvasPattern_; DOMException=DOMException_;})();} } \ No newline at end of file diff --git a/src/main/webapp/ubi4/js/ubihtml.js b/src/main/webapp/ubi4/js/ubihtml.js new file mode 100644 index 0000000..ae614bb --- /dev/null +++ b/src/main/webapp/ubi4/js/ubihtml.js @@ -0,0 +1 @@ +var __ubi_isregist=true;try {if (typeof nexacro == 'undefined' || (typeof nexacro.Browser != 'undefined' && nexacro.Browser != 'Runtime') || (typeof nexacro._Browser != 'undefined' && nexacro._Browser != 'Runtime')) {__ubi_isregist=true;} else { __ubi_isregist=false; }} catch (e) {__ubi_isregist=true;}if (__ubi_isregist) {function _ubi_ajax(options) { options={ type: options.type || "POST", url: options.url || "", timeout: options.timeout || 60000, onComplete: options.onComplete || function(){}, onError: options.onError || function(){}, onSuccess: options.onSuccess || function(){}, onStatus: options.onStatus || null, reqdata: options.reqdata || "", datatype: options.datatype || "", exportseq: "" }; if(typeof XMLHttpRequest == "undefined"){ XMLHttpRequest=function() { return new ActiveXObject( navigator.userAgent.indexOf("MSIE 5") >= 0 ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP" ); }; } var xml=new XMLHttpRequest(); if(options.type == "POST") { xml.open(options.type, options.url, true); } else if(options.type == "GET") { xml.open(options.type, options.url+((options.reqdata != "")?"?"+serialize(options.reqdata):""), true); } var timeoutLength=options.timeout; var requestDone=false; setTimeout(function() { requestDone=true; }, timeoutLength); var statuslength=0; var reqtype=""; try { reqtype=options.reqdata['reqtype']; } catch(e) {} xml.onreadystatechange=function() { if (!xml) return; try { if (xml.responseText && options.onStatus) { var status=xml.responseText.substring(statuslength); statuslength=xml.responseText.length; options.onStatus(status); if( (reqtype == "93") ) { if (status.indexOf("ER0") == 0) { options.onError(status.substring(status.indexOf("ER0"), status.length)); options.onComplete(); xml=null; return; } } else { if (status.indexOf("ER0") == 0) { options.onError(status); options.onComplete(); xml=null; return; } } } } catch(e) { } if( xml.readyState == 4 && !requestDone) { if( (reqtype == "93") && xml.responseText.indexOf("ER0") == 0 ) { options.onError(xml.responseText.substring(xml.responseText.indexOf("ER0"))); } else { if( xml.responseText.indexOf("ER0") != 0 && xml != null && httpSuccess(xml) ) { var xmldata=httpData(xml, options.datatype); if (xmldata != null) { options.exportseq=xml.getResponseHeader("exportseq"); options.onSuccess(xmldata); } else { options.onError(xml.responseText); } } else { options.onError(xml.responseText); } } options.onComplete(); xml=null; } }; if(options.type == "POST") { xml.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xml.send(serialize(options.reqdata)); } else { xml.send(); } function httpSuccess(r) { try{ return (!r.status && location.protocol == "file:") || (r.status >= 200 && r.status < 300) || r.satus == 304 || navigator.userAgent.indexOf("Safari") >= 0 && typeof r.status == "undefined;"; }catch(e){} return false; } function httpData(r, type) { var ct=r.getResponseHeader("content-type"); var data=!type && ct && ct.indexOf("xml") >= 0; data=type == "xml" || data ? r.responseXML : r.responseText; if(type == "script") eval.call(window, data); return data; } function serialize(a) { var s=[]; if(a.constructor == Array) { for(var i=0; i= 2) { xml.setRequestHeader(hcolarr[0], hcolarr[1]); } } } } } } return s.join("&"); } }var _UBI_REPORT_VERSION_NO="4.0";var _UBI_REPORT_BUILD_NO="Build 4.0.2004.1701";var Base=function() { };Base.extend=function(_instance, _static) { var extend=Base.prototype.extend; Base._prototyping=true; var proto=new this; extend.call(proto, _instance); delete Base._prototyping; var constructor=proto.constructor; var klass=proto.constructor=function() { if (!Base._prototyping) { if (this._constructing || this.constructor == klass) { this._constructing=true; constructor.apply(this, arguments); delete this._constructing; } else if (arguments[0] != null) { return (arguments[0].extend || extend).call(arguments[0], proto); } } }; klass.ancestor=this; klass.extend=this.extend; klass.forEach=this.forEach; klass.implement=this.implement; klass.prototype=proto; klass.toString=this.toString; klass.valueOf=function(type) { return (type == "object") ? klass : constructor.valueOf(); }; extend.call(klass, _static); if (typeof klass.init == "function") klass.init(); return klass;};Base.prototype={ extend: function(source, value) { if (arguments.length > 1) { var ancestor=this[source]; if (ancestor && (typeof value == "function") && (!ancestor.valueOf || ancestor.valueOf() != value.valueOf()) && /\bbase\b/.test(value)) { var method=value.valueOf(); value=function() { var previous=this.base || Base.prototype.base; this.base=ancestor; var returnValue=method.apply(this, arguments); this.base=previous; return returnValue; }; value.valueOf=function(type) { return (type == "object") ? value : method; }; value.toString=Base.toString; } this[source]=value; } else if (source) { var extend=Base.prototype.extend; if (!Base._prototyping && typeof this != "function") { extend=this.extend || extend; } var proto={toSource: null}; var hidden=["constructor", "toString", "valueOf"]; var i=Base._prototyping ? 0 : 1; while (key=hidden[i++]) { if (source[key] != proto[key]) { extend.call(this, key, source[key]); } } for (var key in source) { if (!proto[key]) extend.call(this, key, source[key]); } } return this; }, base: function() { }};Base=Base.extend({ constructor: function() { this.extend(arguments[0]); }}, { ancestor: Object, version: "1.1", forEach: function(object, block, context) { for (var key in object) { if (this.prototype[key] === undefined) { block.call(context, object[key], key, object); } } }, implement: function() { for (var i=0; i < arguments.length; i++) { if (typeof arguments[i] == "function") { arguments[i](this.prototype); } else { this.prototype.extend(arguments[i]); } } return this; }, toString: function() { return String(this.valueOf()); }});function getAttributeStringValue(attributes, name, defvalue){ if (defvalue == undefined) defvalue=""; var item=attributes.getNamedItem(name); if(item == null) { return defvalue; } return item.nodeValue;}function getAttributeIntValue(attributes, name, defvalue){ if (defvalue == undefined) defvalue=0; var item=attributes.getNamedItem(name); if(item == null) { return defvalue; } return parseInt(item.nodeValue);}function getAttributeColorValue(attributes, name, defvalue){ var item=attributes.getNamedItem(name); if(item == null) { if (defvalue == undefined) return "000000"; else return defvalue; } return item.nodeValue;}function getAttributeBooleanValue(attributes, name, defvalue){ if (defvalue == undefined) defvalue=false; var item=attributes.getNamedItem(name); if(item == null) { return defvalue; } return (item.nodeValue=="1"||item.nodeValue=="true")?true:false;}function nvl(value) { if (value == null) return ""; return value;}function getNodeValue(node) { try { if (node == null) return ""; return (node.nodeValue==null?"":node.nodeValue); } catch (e) { } return "";}function makeArray() { var arr=[]; for(var i=0; i= 0) { rvalue=this.GetValue(index); } return rvalue; }, SetAt: function(key, newValue){ var index=this.FindIndex(key); if (index < 0) { this.keys.push(key); this.datum.push(newValue); } else { this.SetValue(index, newValue); } }, GetAt: function(index) { return this.GetKey(index); }, GetCount: function(){ return this.keys.length; }, FindIndex: function(key){ var index=-1; for(var i=0; i 0) { var styleobj=null; var orgvalue=this.value; var styles=this.styleinfo.styles; var preindex=0; var startidx=0; var endidx=0; if (this.underlined) { value.push(""); } for (var i=0; i', '>'); value.push(subvalue); } value.push(""); if (styleobj.superscript) { value.push(""); } if (styleobj.subscript) { value.push(""); } if (styleobj.strike != this.strike && styleobj.strike) { value.push(""); } subvalue=orgvalue.substring(startidx, endidx); subvalue=subvalue.replace('<', '<').replace('>', '>'); value.push(subvalue); if (styleobj.strike != this.strike && styleobj.strike) { value.push(""); } if (styleobj.superscript) { value.push(""); } if (styleobj.subscript) { value.push(""); } preindex=endidx; value.push(""); } if (preindex < orgvalue.length) { subvalue=orgvalue.substring(preindex, orgvalue.length); subvalue=subvalue.replace('<', '<').replace('>', '>'); value.push(subvalue); } if (this.underlined) { value.push(""); } } return value.join(""); }},{ CLASSNAME: "UbiTextItem", NODETEXT: "Text", ATTRFONTID: "fontid", ATTRHALIGN: "halign", ATTRVALIGN: "valign", ATTRUNDERLINED: "underlined", ATTRUNDERLINECOLOR: "underlinecolor", ATTRSTRIKE: "strike", ATTRSTRIKECOLOR: "strikecolor", ATTRSUPERSCRIPT: "superscript", ATTRSUBSCRIPT: "subscript", ATTRTEXTDIRECTION: "textdirection", ATTRTEXTDIRECTION2: "textdirection2", ATTRBORDERID: "border", ATTRMARGINLEFT: "marginleft", ATTRMARGINRIGHT: "marginright", ATTRMARGINTOP: "margintop", ATTRMARGINBOTTOM: "marginbottom", ATTRLINESPACE: "linespace", ATTRLINEHEIGHT: "lineheight", ATTRISSPACEVALUE: "isspc", ATTRHTMLCODEPROC: "htmlcodeproc", ATTRISWORDWRAP: "iswordwrap", ATTRISCHECKBOX: "ischeckbox", ATTRCHECKFLAG: "checkflag", ATTRTEXTHIGHLIGHT: "highlight", ATTRINDENT: "indent", NODEEFORM: "EForm", NODEITEMVALUE: "ItemValue", CreateInstance: function(node, doc){ var data=UbiTextItem.getData(node); var item=new UbiTextItem(); UbiItem.SetMemberFromNode(item, node); item.value=data.value; item.fontid=data.fontid; item.halign=data.halign; item.valign=data.valign; item.underlined=data.underlined; item.underlinecolor=data.underlinecolor; item.strike=data.strike; item.strikecolor=data.strikecolor; item.superscript=data.superscript; item.subscript=data.subscript; item.textdirection=data.textdirection; item.textdirection2=data.textdirection2; item.borderid=data.borderid; item.leftMargin=data.leftMargin; item.rightMargin=data.rightMargin; item.topMargin=data.topMargin; item.bottomMargin=data.bottomMargin; item.lineSpace=data.lineSpace; item.lineHeight=data.lineHeight; item.htmlcodeproc=data.htmlcodeproc; item.iswordwrap=data.iswordwrap; item.ischeckbox=data.ischeckbox; item.checkflag=data.checkflag; item.highlight=data.highlight; item.indent=data.indent; if (data.isspacevalue == true) { item.value=item.value.substring(1, item.value.length); } if (data.styleinfonode != null) { item.value=data.itemvalue; if (data.isspacevalue == true) { item.value=item.value.substring(1, item.value.length); } item.styleinfo=UbiTextStyleInfo.CreateInstance(data.styleinfonode, doc); } if (data.eformnode != null) { item.value=''; item.eformitem=UbiEformItem.CreateInstance(data.eformnode, doc); item.eformitem.value=item.value; item.eformitem.page=doc.currpagenum; doc.eformNodes.push(data.eformnode); doc.eformItems.push(item); } return item; }, getData: function(node) { var textnode=node.getElementsByTagName(UbiTextItem.NODETEXT)[0]; var textattributes=textnode.attributes; return { value: (textnode.childNodes[0]==null)?"":getNodeValue(textnode.childNodes[0]), fontid: getAttributeStringValue(textattributes, UbiTextItem.ATTRFONTID), halign: getAttributeIntValue(textattributes, UbiTextItem.ATTRHALIGN, 0), valign: getAttributeIntValue(textattributes, UbiTextItem.ATTRVALIGN, 1), underlined: getAttributeBooleanValue(textattributes, UbiTextItem.ATTRUNDERLINED, false), underlinecolor: getAttributeStringValue(textattributes, UbiTextItem.ATTRUNDERLINECOLOR, null), strike: getAttributeBooleanValue(textattributes, UbiTextItem.ATTRSTRIKE, false), strikecolor: getAttributeStringValue(textattributes, UbiTextItem.ATTRSTRIKECOLOR, null), superscript: getAttributeBooleanValue(textattributes, UbiTextItem.ATTRSUPERSCRIPT, false), subscript: getAttributeBooleanValue(textattributes, UbiTextItem.ATTRSUBSCRIPT, false), textdirection: getAttributeBooleanValue(textattributes, UbiTextItem.ATTRTEXTDIRECTION, true), textdirection2: getAttributeIntValue(textattributes, UbiTextItem.ATTRTEXTDIRECTION2, 0), borderid: getAttributeStringValue(textattributes, UbiTextItem.ATTRBORDERID), leftMargin: getAttributeIntValue(textattributes, UbiTextItem.ATTRMARGINLEFT), rightMargin: getAttributeIntValue(textattributes, UbiTextItem.ATTRMARGINRIGHT), topMargin: getAttributeIntValue(textattributes, UbiTextItem.ATTRMARGINTOP), bottomMargin: getAttributeIntValue(textattributes, UbiTextItem.ATTRMARGINBOTTOM), lineSpace: getAttributeIntValue(textattributes, UbiTextItem.ATTRLINESPACE), lineHeight: getAttributeIntValue(textattributes, UbiTextItem.ATTRLINEHEIGHT), styleinfonode: node.getElementsByTagName(UbiTextStyleInfo.NODETEXTSTYLE)[0], isspacevalue: getAttributeBooleanValue(textattributes, UbiTextItem.ATTRISSPACEVALUE), htmlcodeproc: getAttributeIntValue(textattributes, UbiTextItem.ATTRHTMLCODEPROC), iswordwrap: getAttributeBooleanValue(textattributes, UbiTextItem.ATTRISWORDWRAP), ischeckbox: getAttributeBooleanValue(textattributes, UbiTextItem.ATTRISCHECKBOX, false), checkflag: getAttributeBooleanValue(textattributes, UbiTextItem.ATTRCHECKFLAG, false), highlight: (textattributes.getNamedItem(UbiTextItem.ATTRTEXTHIGHLIGHT)==null)?null:getAttributeColorValue(textattributes, UbiTextItem.ATTRTEXTHIGHLIGHT, null), indent: getAttributeIntValue(textattributes, UbiTextItem.ATTRINDENT, 0), itemvalue: (textnode.getElementsByTagName(UbiTextItem.NODEITEMVALUE)[0]==null)?"":getNodeValue(textnode.getElementsByTagName(UbiTextItem.NODEITEMVALUE)[0].childNodes[0]), eformnode: node.getElementsByTagName(UbiTextItem.NODEEFORM)[0] }; }});var UbiShapeItem=UbiItem.extend({ lineid: "", constructor: function(classname) { this.base(classname); }},{ CLASSNAME: "UbiShapeItem", NODESHAPE: "Shape", ATTRLINEID: "lineid", SetMemberFromNode: function(item, node){ var data=UbiShapeItem.getData(node); item.lineid=data.lineid; }, getData: function(node) { var attributes=node.attributes; return { lineid: getAttributeStringValue(attributes, UbiShapeItem.ATTRLINEID) }; }});var UbiCircleItem=UbiShapeItem.extend({ constructor: function() { this.base(UbiCircleItem.CLASSNAME); }},{ CLASSNAME: "UbiCircleItem", CreateInstance: function(node, doc){ var item=new UbiCircleItem(); item.doc=doc; UbiItem.SetMemberFromNode(item, node); var shapenode=node.getElementsByTagName(UbiShapeItem.NODESHAPE)[0]; UbiShapeItem.SetMemberFromNode(item, shapenode); return item; }, getData: function(node) { }});var UbiLineItem=UbiShapeItem.extend({ linedir: 0, constructor: function() { this.base(UbiLineItem.CLASSNAME); }},{ CLASSNAME: "UbiLineItem", ATTRLINEDIR: "linedir", CreateInstance: function(node, doc){ var item=new UbiLineItem(); item.doc=doc; UbiItem.SetMemberFromNode(item, node); var shapenode=node.getElementsByTagName(UbiShapeItem.NODESHAPE)[0]; var data=UbiLineItem.getData(shapenode); UbiShapeItem.SetMemberFromNode(item, shapenode); item.linedir=data.linedir; return item; }, getData: function(node) { var attributes=node.attributes; return { linedir: getAttributeIntValue(attributes, UbiLineItem.ATTRLINEDIR) }; }});var UbiRectangleItem=UbiShapeItem.extend({ edgetype: 0, edgewidth: 0, constructor: function() { this.base(UbiRectangleItem.CLASSNAME); }},{ CLASSNAME: "UbiRectangleItem", ATTREDGETYPE: "edgetype", ATTREDGEWIDTH: "edgewidth", CreateInstance: function(node, doc){ var item=new UbiRectangleItem(); item.doc=doc; UbiItem.SetMemberFromNode(item, node); var shapenode=node.getElementsByTagName(UbiShapeItem.NODESHAPE)[0]; var data=UbiRectangleItem.getData(shapenode); UbiShapeItem.SetMemberFromNode(item, shapenode); item.edgetype=data.edgetype; item.edgewidth=data.edgewidth; return item; }, getData: function(node) { var attributes=node.attributes; return { edgetype: getAttributeIntValue(attributes, UbiRectangleItem.ATTREDGETYPE), edgewidth: getAttributeIntValue(attributes, UbiRectangleItem.ATTREDGEWIDTH) }; }});var UbiImageItem=UbiItem.extend({ imageid: "", halign: 0, valign: 0, borderid: "", constructor: function() { this.base(UbiImageItem.CLASSNAME); }, getVAlign: function() { var str; if(this.valign == 0) { str="top"; }else if(this.valign == 1) { str="middle"; }else if(this.valign == 2) { str="bottom"; } return str; }, getHAlign: function() { var str; if(this.halign == 0) { str="left"; }else if(this.halign == 1) { str="center"; }else if(this.halign == 2) { str="right"; } return str; }},{ CLASSNAME: "UbiImageItem", NODEIMAGE: "Image", ATTRIMAGEID: "imageid", ATTRHALIGN: "halign", ATTRVALIGN: "valign", ATTRBORDERID: "borderid", CreateInstance: function(node, doc){ var item=new UbiImageItem(); item.doc=doc; UbiItem.SetMemberFromNode(item, node); var imagenode=node.getElementsByTagName(UbiImageItem.NODEIMAGE)[0]; var data=UbiImageItem.getData(imagenode); item.imageid=data.imageid; item.halign=data.halign; item.valign=data.valign; item.borderid=data.borderid; return item; }, getData: function(node) { var attributes=node.attributes; return { imageid: getAttributeStringValue(attributes, UbiImageItem.ATTRIMAGEID), halign: getAttributeIntValue(attributes, UbiImageItem.ATTRHALIGN), valign: getAttributeIntValue(attributes, UbiImageItem.ATTRVALIGN), borderid: getAttributeStringValue(attributes, UbiImageItem.ATTRBORDERID) }; }});var UbiBarcodeItem=UbiItem.extend({ code: "", borderid: "", loadtype: 0, loadsrc: "", constructor: function() { this.base(UbiBarcodeItem.CLASSNAME);}},{ CLASSNAME: "UbiBarcodeItem", NODEBARCODE: "Barcode", ATTRBORDERID: "borderid", ATTRLOADTYPE: "loadtype", ATTRLOADSRC: "loadsrc", CreateInstance: function(node, doc){ var item=new UbiBarcodeItem(); UbiItem.SetMemberFromNode(item, node); var barcodenode=node.getElementsByTagName(UbiBarcodeItem.NODEBARCODE)[0]; var data=UbiBarcodeItem.getData(barcodenode); item.code=data.code; item.borderid=data.borderid; item.loadtype=data.loadtype; item.loadsrc=data.loadsrc; return item; }, getData: function(node) { var attributes=node.attributes; return { code: getNodeValue(node.childNodes[0]), borderid: getAttributeStringValue(attributes, UbiBarcodeItem.ATTRBORDERID), loadtype: getAttributeIntValue(attributes, UbiBarcodeItem.ATTRLOADTYPE), loadsrc: getAttributeStringValue(attributes, UbiBarcodeItem.ATTRLOADSRC) }; }});var UbiBarcodeItem=UbiItem.extend({ code: "", borderid: "", loadtype: 0, loadsrc: "", constructor: function() { this.base(UbiBarcodeItem.CLASSNAME);}},{ CLASSNAME: "UbiBarcodeItem", NODEBARCODE: "Barcode", ATTRBORDERID: "borderid", ATTRLOADTYPE: "loadtype", ATTRLOADSRC: "loadsrc", CreateInstance: function(node, doc){ var item=new UbiBarcodeItem(); UbiItem.SetMemberFromNode(item, node); var barcodenode=node.getElementsByTagName(UbiBarcodeItem.NODEBARCODE)[0]; var data=UbiBarcodeItem.getData(barcodenode); item.code=data.code; item.borderid=data.borderid; item.loadtype=data.loadtype; item.loadsrc=data.loadsrc; return item; }, getData: function(node) { var attributes=node.attributes; return { code: getNodeValue(node.childNodes[0]), borderid: getAttributeStringValue(attributes, UbiBarcodeItem.ATTRBORDERID), loadtype: getAttributeIntValue(attributes, UbiBarcodeItem.ATTRLOADTYPE), loadsrc: getAttributeStringValue(attributes, UbiBarcodeItem.ATTRLOADSRC) }; }});var UbiChartComponent=UbiObject.extend({ id: "", x: 0, y: 0, width: 0, height: 0, linked: false, linkfilename: "", linkargs: "", linkstyle: "", loadtype: 0, loadsrc: "", constructor: function() { this.base(UbiChartComponent.CLASSNAME); }},{ CLASSNAME: "UbiChartComponent", NODECHARTCOMPONENT: "Chartcomponent", ATTRID: "id", ATTRX: "x", ATTRY: "y", ATTRWIDTH: "width", ATTRHEIGHT: "height", ATTRLINKED: "linked", ATTRLINKFILENAME: "linkfilename", ATTRLINKSTYLE: "linkstyle", NODELINKARG: "Linkarg", ATTRNAME: "name", ATTRLOADTYPE: "loadtype", ATTRLOADSRC: "loadsrc", CreateInstance: function(node, doc){ var data=UbiChartComponent.getData(node); var charcomponent=new UbiChartComponent(); charcomponent.id=data.id; charcomponent.x=data.x; charcomponent.y=data.y; charcomponent.width=data.width; charcomponent.height=data.height; charcomponent.linked=data.linked; charcomponent.linkfilename=data.linkfilename; charcomponent.loadtype=data.loadtype; charcomponent.loadsrc=data.loadsrc; return charcomponent; }, getData: function(node) { var attributes=node.attributes; return { id: getAttributeStringValue(attributes, UbiChartComponent.ATTRID), x: getAttributeIntValue(attributes, UbiChartComponent.ATTRX), y: getAttributeIntValue(attributes, UbiChartComponent.ATTRY), width: getAttributeIntValue(attributes, UbiChartComponent.ATTRWIDTH), height: getAttributeIntValue(attributes, UbiChartComponent.ATTRHEIGHT), linked: getAttributeBooleanValue(attributes, UbiChartComponent.ATTRLINKED), linkfilename: getAttributeStringValue(attributes, UbiChartComponent.ATTRLINKFILENAME), linkstyle: getAttributeStringValue(attributes, UbiChartComponent.ATTRLINKSTYLE), loadtype: getAttributeIntValue(attributes, UbiChartComponent.ATTRLOADTYPE), loadsrc: getAttributeStringValue(attributes, UbiChartComponent.ATTRLOADSRC) }; }});var UbiPage=UbiObject.extend({ constructor: function(doc) { this.base(UbiPage.CLASSNAME); this.doc=doc; this.items=new UbiList(); this.chartcomponents=new UbiList(); this.contents=""; this.iscustom=false; this.width=0; this.height=0; this.left=0; this.top=0; this.right=0; this.bottom=0; this.bgcolor=""; }},{ CLASSNAME: "UbiPage", NODEPAGE: "Page", ATTRPAGENUM: "pagenum", ATTRPAGEWIDTH: "width", ATTRPAGEHEIGHT: "height", ATTRPAGEMARGINTOP: "y", ATTRPAGEMARGINLEFT: "x", ATTRBACKGROUNDCOLOR: "bgcolor", NODEFONTID: "Fontid", NODELINEID: "Lineid", NODECOLORID: "Colorid", NODEBORDERID: "Borderid", NODEOBJECTID: "Objectid", CreateInstance: function(node, doc){ var data=UbiPage.getData(node); var page=new UbiPage(doc); var itemlist=data.itemlist; for(var i=0; i this.doc.pages.GetSize() || pagenum <= 0 ) { alert( pagenum + "번째 페이지는 존재하지 않습니다."); return; } var page=this.doc.pages.GetAt(pagenum - 1); var urlstr=this.keyurl + "?jrffile=" + this.jrffile + "&key=" + this.key + "&resid=" + this.resid + "&exportseq=" + this.exportseq; var isPrint=isprint; var textitems=null; var drawcanvaslist=this.canvaslist; var cssid=divid.id; var cssStr=this.GetReportStyle(this.doc, cssid, ds); DrawPage(divid, this.doc, page, urlstr, ds, this.vid); function DrawPage(divid, doc, page, keyurl, ds, vid) { if (page.iscustom) { divid.innerHTML=page.contents; return; } var styleNode=document.createElement("style"); styleNode.setAttribute("type", "text/css"); if (__ubi_isIE && __ubi_ieVersion < 11) { styleNode.styleSheet.cssText=cssStr; } else { try{ styleNode.innerHTML=cssStr; }catch(e){ styleNode.innerText=cssStr; } } divid.appendChild(styleNode); _ubi_cindex=0; _ubi_iindex=0; textitems=new Array(); var items=page.items; for( var i=0; i < items.GetSize(); i++ ) { var item=items.GetAt(i); if (item) { if( item.GetClassname() == UbiTextItem.CLASSNAME ) DrawTextItem(divid, doc, item, ds, cssid, pagenum, i); else if( item.GetClassname() == UbiLineItem.CLASSNAME ) DrawLineItem(divid, doc, item, ds); else if( item.GetClassname() == UbiRectangleItem.CLASSNAME ) DrawRectangleItem(divid, doc, item, ds); else if( item.GetClassname() == UbiCircleItem.CLASSNAME ) DrawCircleItem(divid, doc, item, ds); else if( item.GetClassname() == UbiBarcodeItem.CLASSNAME ) DrawBarcodeItem(divid, doc, item, keyurl, ds); else if( item.GetClassname() == UbiImageItem.CLASSNAME ) DrawImageItem(divid, doc, item, keyurl, ds, cssid); } } var charts=page.chartcomponents; for( var i=0; i < charts.GetSize(); i++ ) { var chart=charts.GetAt(i); DrawChartComponent(divid, doc, chart, keyurl, ds); } if (doc.isWA) { textitems.sort(sortNumber); var nodes=divid.childNodes; var tabindex=12; var width=parseInt(doc.docprop.width); tabindex=(1000)*pagenum; var textObj=null; for( var i=0; i < nodes.length; i++ ) { if( nodes[i].nodeName == "DIV" ) { var x=parseInt(nodes[i].style.left); var y=parseInt(nodes[i].style.top); var key=x + y * width; var index=findIndex(key); if( index >= 0 ) { textObj=document.getElementById(nodes[i].id +"_td"); if (textObj) { var textDivid=nodes[i].id; textObj.setAttribute("onfocus", "_ubi_wafoucus('"+ textDivid +"')"); textObj.setAttribute("onblur", "_ubi_wablur('"+ textDivid +"')"); textObj.tabIndex=tabindex + index; } } } } } function findIndex(value) { for( var i=0; i < textitems.length; i++ ) { if( value == textitems[i] ) return i; } return -1; } function sortNumber(a, b) { return a-b; } }; function DrawTextItem(divid, doc, item, ds, vid, page, seq) { if( item.width == 0 || item.height == 0 ) return; if ( item.ispreview == false ) return; var div=document.createElement("div"); div.id=vid + "_"+ item.id +"_"+page +"_"+seq; div.className="textitem "+ vid + "font_"+ item.fontid +" "+ vid + "color_f_"+ item.foregroundid + ( item.transparent ?"": " "+ vid + "color_b_"+item.backgroundid); item.divid=div.id; var x=Math.round(item.x * ds); var y=Math.round(item.y * ds); var width=Math.round((item.x+item.width) * ds) - x; var height=Math.round((item.y+item.height) * ds)- y; var leftMargin=Math.round(item.leftMargin * ds); var rightMargin=Math.round(item.rightMargin * ds); var topMargin=Math.round(item.topMargin * ds); var bottomMargin=Math.round(item.bottomMargin * ds); textitems.push(parseInt(x)+(parseInt(y)*parseInt(doc.docprop.width))); var divWidth=(width + 1) - (getBorderWidth("left", doc, item) + getBorderWidth("right", doc, item)); var divHeight=(height + 1) - (getBorderWidth("top", doc, item) + getBorderWidth("bottom", doc, item)); var indent=Math.round(item.indent * ds); if (item.indent < 0) { divWidth -= indent; x += indent; } div.style.left=x + "px"; div.style.top=y + "px"; div.style.width=divWidth + "px"; div.style.height=divHeight + "px"; var borderwidth=0; borderwidth=getBorderWidth("top", doc, item); if (borderwidth > 0) div.style.borderTop=borderwidth + "px " + getBorderStyle("top", doc, item) + " #" + getBorderColor("top", doc, item); borderwidth=getBorderWidth("right", doc, item); if (borderwidth > 0) div.style.borderRight=borderwidth + "px " + getBorderStyle("right", doc, item) + " #" + getBorderColor("right", doc, item); borderwidth=getBorderWidth("bottom", doc, item); if (borderwidth > 0) div.style.borderBottom=getBorderWidth("bottom", doc, item) + "px " + getBorderStyle("bottom", doc, item) + " #" + getBorderColor("bottom", doc, item); borderwidth=getBorderWidth("left", doc, item); if (borderwidth > 0) div.style.borderLeft=getBorderWidth("left", doc, item) + "px " + getBorderStyle("left", doc, item) + " #" + getBorderColor("left", doc, item); var ddwidth=getBorderWidth("dd", doc, item); var duwidth=getBorderWidth("du", doc, item); var diagonalArray=[]; if (ddwidth > 0 || duwidth > 0) { diagonalArray.push('
    '); diagonalArray.push(''); } if (ddwidth > 0) { diagonalArray.push(''); } if (duwidth > 0) { diagonalArray.push(''); } if (ddwidth > 0 || duwidth > 0) { diagonalArray.push('
    '); div.innerHTML=diagonalArray.join(""); } if(div.style.font.indexOf("bold") != -1 ) { div.style.letterSpacing= "-1"; } var table=document.createElement("table"); var tbody=document.createElement("tbody"); var tr=document.createElement("tr"); var td=document.createElement("td"); if (item.ischeckbox) { var checkboxWidth=parseInt(10*ds); var tdCheck=document.createElement("td"); tdCheck.style.width=checkboxWidth + "px"; tdCheck.innerHTML=""; tr.appendChild(tdCheck); } var tableHeight=0; var tableWidth=0; if (item.textdirection2 == 2 || item.textdirection2 == 4) { tableWidth=(divHeight - (topMargin + bottomMargin)); tableHeight=(divWidth - (leftMargin + rightMargin)); } else { tableWidth=(divWidth - (leftMargin + rightMargin)); tableHeight=(divHeight - (topMargin + bottomMargin)); } table.style.width=tableWidth + "px"; table.style.height=tableHeight + "px"; var tclassname=vid + "font_"+ item.fontid +" "+ vid + "color_f_"+ item.foregroundid; if (item.textdirection2 == 1) { tclassname += " UbiAjaxViewervertical"; } else if (item.textdirection2 == 2) { tclassname += " UbiAjaxViewerrotate_90"; var halfwidth=(divWidth - (leftMargin + rightMargin)-2) / 2; table.style.msTransformOrigin=halfwidth + "px " + halfwidth + "px"; table.style.WebkitTransformOrigin=halfwidth + "px " + halfwidth + "px"; table.style.MozTransformOrigin=halfwidth + "px " + halfwidth + "px"; } else if (item.textdirection2 == 3) { tclassname += " UbiAjaxViewerrotate_180"; } else if (item.textdirection2 == 4) { tclassname += " UbiAjaxViewerrotate_270"; var halfheight=(divHeight - (topMargin + bottomMargin)) / 2; table.style.msTransformOrigin=halfheight + "px " + halfheight + "px"; table.style.WebkitTransformOrigin=halfheight + "px " + halfheight + "px"; table.style.MozTransformOrigin=halfheight + "px " + halfheight + "px"; } table.className=tclassname; table.style.borderSpacing="0px"; var marginTop=0; if ( (leftMargin + rightMargin + topMargin + bottomMargin) > 0) { table.style.marginLeft=(1+leftMargin) +"px"; table.style.marginRight=rightMargin +"px"; marginTop=(1+topMargin); table.style.marginTop=(1+topMargin) +"px"; table.style.marginBottom=bottomMargin +"px"; } if (item.lineSpace > 0) { var gap=Math.floor(item.lineSpace*ds/2); table.style.marginTop=(marginTop - gap + 1)+ "px"; table.style.height=(tableHeight + Math.round(item.lineSpace*ds)) + "px"; } if (doc.docprop.language == "Arabic") tr.dir="rtl"; td.className=vid + "font_"+ item.fontid +" "+ vid + "color_f_"+ item.foregroundid; td.id=div.id +"_td"; if (item.iswordwrap == true) { td.style.wordBreak="keep-all"; } if (item.textdirection2 == 2) { if (item.halign == 0) td.style.verticalAlign="bottom"; else if (item.halign == 2) td.style.verticalAlign="top"; if (item.valign == 0) td.style.textAlign="left"; else if (item.valign == 2) td.style.textAlign="right"; } else if (item.textdirection2 == 3) { if (item.halign == 0) td.style.textAlign="right"; else if (item.halign == 2) td.style.textAlign="left"; if (item.valign == 0) td.style.verticalAlign="bottom"; else if (item.valign == 2) td.style.verticalAlign="top"; } else if (item.textdirection2 == 4) { if (item.halign == 0) td.style.verticalAlign="top"; else if (item.halign == 2) td.style.verticalAlign="bottom"; if (item.valign == 0) td.style.textAlign="right"; else if (item.valign == 2) td.style.textAlign="left"; } else if (item.textdirection2 == 1) { if (item.valign == 0) td.style.textAlign="left"; else if (item.valign == 2) td.style.textAlign="right"; } else { if (item.halign != 1) { td.style.textAlign=item.getHAlign(); if (td.style.textAlign == "justify") { td.style.whiteSpace="pre-line"; } } if (item.valign != 1) td.style.verticalAlign=item.getVAlign(); } if (item.ischeckbox) { td.style.width="*"; } else { td.style.width=table.style.width; } td.style.height=table.style.height; var lineHeight=(getFontSize(doc, item, ds) + Math.round(item.lineSpace*ds)); if (item.lineHeight > 0) { var height=Math.round((item.lineHeight + item.lineSpace)*ds); if (lineHeight < height) { lineHeight=height; } } td.style.lineHeight=lineHeight + "px"; if (indent != 0) { if (indent < 0) { td.style.paddingLeft=(-indent) + "px"; td.style.textIndent=indent +"px"; } else { td.style.textIndent=indent + "px"; } } var underIE8StyleStart=[]; var underIE8StyleEnd=[]; if (__ubi_isIE && __ubi_ieVersion < 8) { if (item.superscript) { underIE8StyleStart.push(""); } if (item.subscript) { underIE8StyleStart.push(""); } var changedColor=false; var addSpan=false; var addSpanCount=0; if (item.highlight != null) { addSpan=true; addSpanCount++; underIE8StyleStart.push(""); } if (item.strike) { addSpanCount++; underIE8StyleStart.push(""); } if (addSpanCount > 0) { underIE8StyleStart.push(""); for (var i=0; i"); } underIE8StyleEnd.push(""); } if (item.subscript) { underIE8StyleStart.push(""); } if (item.superscript) { underIE8StyleStart.push(""); } } if (item.linked) { var alink=document.createElement("a"); if (__ubi_viewers[vid] && __ubi_viewers[vid].events.linkButtonDown) { alink.style.textDecoration='underline'; alink.style.color='#0000cc'; alink.onmouseover=function() { this.style.cursor="pointer";}; alink.onmouseout=function() { this.style.cursor="default";}; alink.onclick=function() {__ubi_viewers[vid]._linkButtonDown(item.linkfilename, item.linkargs); }; } else { if (item.linkstyle == "SCRIPT") { alink.href="javascript:"+item.linkfilename; } else if (item.linkstyle == "REPORT"){ alink.href="javascript:refreshFrame('"+ divid.parentNode.parentNode.parentNode.id +"','"+ item.linkfilename +"','"+ item.linkargs +"')"; } else if (item.linkstyle == "WEBPAGE"){ var url=item.linkfilename; if (item.linkfilename.indexOf(":/"+"/") == -1 && item.linkfilename.indexOf("mailto:") == -1) { url="http:/"+"/"+ item.linkfilename; } alink.href="javascript:window.open(\""+ url + item.linkargs +"\"); void 0;"; } } var textnode=document.createTextNode(item.value); alink.appendChild(textnode); if (item.value.indexOf("^totalpage^") >= 0) { doc.totalpageNodes.push(textnode); doc.totalpageItems.push(item); } td.appendChild(alink); } else { if (item.styleinfo != null && item.styleinfo.styles != null && item.styleinfo.styles.GetSize() > 0) { if (__ubi_isIE && __ubi_ieVersion < 8) { td.innerHTML="
    "+ item.getStyleValue(ds) +"
    "; } else { td.innerHTML=item.getStyleValue(ds); } } else { if (__ubi_isIE && __ubi_ieVersion < 8) { td.innerHTML="
    "+ underIE8StyleStart.join('') + item.value + underIE8StyleEnd.join('') + "
    "; } else { if(item.htmlcodeproc=='1'){ td.innerHTML=item.value; }else{ var changedColor=false; var addSpan=false; var spanobj=null; var lastobj=null; if (item.highlight != null) { addSpan=true; spanobj=document.createElement("span"); spanobj.style.backgroundColor="#" + item.highlight; lastobj=spanobj; } if( item.underlined ) { if (addSpan) { spanobj.style.textDecoration="underline"; } else { addSpan=true; spanobj=document.createElement("span"); spanobj.style.textDecoration="underline"; lastobj=spanobj; } if (item.underlinecolor && item.underlinecolor != '') { changedColor=true; spanobj.style.color="#"+ item.underlinecolor; } } if (item.strike) { var strikespanobj=null; if (item.underlined) { strikespanobj=document.createElement("span"); spanobj.appendChild(strikespanobj); lastobj=strikespanobj; } else { if (addSpan) { strikespanobj=spanobj; } else { strikespanobj=document.createElement("span"); spanobj=strikespanobj; lastobj=strikespanobj; } } strikespanobj.style.textDecoration="line-through"; if (item.strikecolor && item.strikecolor != '') { changedColor=true; strikespanobj.style.color="#"+ item.strikecolor; } } if (changedColor) { var textspanobj=document.createElement("span"); textspanobj.style.color="#"+ getForegroundColor(doc,item); lastobj.appendChild(textspanobj); lastobj=textspanobj; } if (item.superscript) { var supobj=document.createElement("sup"); if (lastobj) { lastobj.appendChild(supobj); } lastobj=supobj; } if (item.subscript) { var subobj=document.createElement("sub"); if (lastobj) { lastobj.appendChild(subobj); } lastobj=subobj; } var textnode=document.createTextNode(item.value); if (lastobj) { lastobj.appendChild(textnode); if (spanobj) { td.appendChild(spanobj); } else { td.appendChild(lastobj); } } else { td.appendChild(textnode); } if (item.value.indexOf("^totalpage^") >= 0) { doc.totalpageNodes.push(textnode); doc.totalpageItems.push(item); } } } } } tr.appendChild(td); tbody.appendChild(tr); table.appendChild(tbody); div.appendChild(table); divid.appendChild(div); }; function DrawLineItem(divid, doc, item, ds) { if ( item.ispreview == false ) return; var x=Math.round(item.x * ds); var y=Math.round(item.y * ds); var width=Math.round((item.x+item.width) * ds) - x; var height=Math.round((item.y+item.height) * ds)- y; if( width == 0 || height == 0 ) { var div=document.createElement("div"); div.id=item.id; divid.appendChild(div); div.style.position="absolute"; div.style.top=y + "px"; div.style.left=x + "px"; div.style.width=((width == 0)?getLineThickness(doc, item):(width + 1)) + "px"; div.style.height=((height == 0)?getLineThickness(doc, item):(height + 1)) + "px"; if( __ubi_isIE && __ubi_ieVersion == 6 ) { div.style.lineHeight='0px'; div.style.fontSize='0px'; } if( (__ubi_isIE && __ubi_ieVersion == 6) && parseInt(div.style.height) == 1 ) { div.style.border="0px"; div.style.borderTop="1px solid #" + getLineColor(doc, item); } else { div.style.backgroundColor="#" + getLineColor(doc, item); } } else { var canvas=document.createElement("canvas"); canvas.id=item.id + (_ubi_cindex++)+ "cv"; divid.appendChild(canvas); if( !canvas.getContext ) G_vmlCanvasManager.initElement(canvas); canvas.style.position="absolute"; canvas.style.left=x + "px"; canvas.style.top=y + "px"; canvas.width=width + 1; canvas.height=height + 1; var ctx=canvas.getContext("2d"); ctx.save(); ctx.lineWidth=getLineThickness(doc, item); ctx.strokeStyle="#" + getLineColor(doc, item); ctx.beginPath(); if( item.linedir == 1 ) { ctx.moveTo(0, canvas.height); ctx.lineTo(canvas.width, 0); } else { ctx.moveTo(0, 0); ctx.lineTo(canvas.width, canvas.height); } ctx.closePath(); ctx.stroke(); ctx.restore(); } }; function DrawRectangleItem(divid, doc, item, ds) { if( item.width == 0 && item.height == 0 ) return; if ( item.ispreview == false ) return; var x=Math.round(item.x * ds); var y=Math.round(item.y * ds); var width=Math.round((item.x+item.width) * ds) - x; var height=Math.round((item.y+item.height) * ds)- y; var canvas=document.createElement("canvas"); canvas.id=item.id + (_ubi_cindex++)+ "cv"; divid.appendChild(canvas); if( !canvas.getContext ) G_vmlCanvasManager.initElement(canvas); canvas.style.position="absolute"; canvas.style.left=x + "px"; canvas.style.top=y + "px"; canvas.width=width + 1; canvas.height=height + 1; if (isPrint) { var canvasobj=new UbiCanvasObject(); if( item.edgetype == 1 ) { canvasobj.type="ROUNDRECT"; canvasobj.radius=item.edgewidth; } else { canvasobj.type="RECT"; } canvasobj.canvasid=canvas.id; canvasobj.linewidth=getLineThickness(doc, item); canvasobj.strokestyle="#" + getLineColor(doc, item); if( !item.transparent ) { canvasobj.fillstyle="#" + getBackgroundColor(doc, item); } drawcanvaslist[drawcanvaslist.length]=canvasobj; } else { var ctx=canvas.getContext("2d"); ctx.save(); ctx.lineWidth=getLineThickness(doc, item); ctx.strokeStyle="#" + getLineColor(doc, item); ctx.beginPath(); if( item.edgetype == 1 ) { roundedRect(ctx, ctx.lineWidth / 2, ctx.lineWidth / 2, canvas.width - ctx.lineWidth, canvas.height - ctx.lineWidth, item.edgewidth); } else { ctx.rect(ctx.lineWidth / 2, ctx.lineWidth / 2, canvas.width - ctx.lineWidth, canvas.height - ctx.lineWidth); } ctx.closePath(); if( !item.transparent ) { ctx.fillStyle="#" + getBackgroundColor(doc, item); ctx.fill(); } ctx.stroke(); ctx.restore(); } }; function roundedRect(ctx, x, y, width, height, radius){ ctx.beginPath(); ctx.moveTo(x,y+radius); ctx.lineTo(x,y+height-radius); ctx.quadraticCurveTo(x,y+height,x+radius,y+height); ctx.lineTo(x+width-radius,y+height); ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius); ctx.lineTo(x+width,y+radius); ctx.quadraticCurveTo(x+width,y,x+width-radius,y); ctx.lineTo(x+radius,y); ctx.quadraticCurveTo(x,y,x,y+radius); }; function DrawCircleItem(divid, doc, item, ds) { if( item.width == 0 && item.height == 0 ) return; if ( item.ispreview == false ) return; var x=Math.round(item.x * ds); var y=Math.round(item.y * ds); var width=Math.round((item.x+item.width) * ds) - x; var height=Math.round((item.y+item.height) * ds)- y; var canvas=document.createElement("canvas"); canvas.id=item.id + (_ubi_cindex++)+ "cv"; divid.appendChild(canvas); if( !canvas.getContext ) G_vmlCanvasManager.initElement(canvas); canvas.style.position="absolute"; canvas.style.left=x + "px"; canvas.style.top=y + "px"; canvas.width=width + 1; canvas.height=height + 1; if (isPrint) { var canvasobj=new UbiCanvasObject(); canvasobj.type="CIRCLE"; canvasobj.canvasid=canvas.id; canvasobj.linewidth=getLineThickness(doc, item); canvasobj.strokestyle="#" + getLineColor(doc, item); if( !item.transparent ) { canvasobj.fillstyle="#" + getBackgroundColor(doc, item); } drawcanvaslist[drawcanvaslist.length]=canvasobj; } else { var ctx=canvas.getContext("2d"); ctx.save(); ctx.lineWidth=getLineThickness(doc, item); ctx.strokeStyle="#" + getLineColor(doc, item); var KAPPA=4 * ((Math.sqrt(2) - 1) / 3); var cx=canvas.width / 2; var cy=canvas.height / 2; var rx=cx * KAPPA; var ry=cy * KAPPA; ctx.beginPath(); ctx.moveTo(cx, ctx.lineWidth); ctx.bezierCurveTo(cx + rx, ctx.lineWidth, canvas.width - ctx.lineWidth, cy - ry, canvas.width - ctx.lineWidth, cy); ctx.bezierCurveTo(canvas.width - ctx.lineWidth, cy + ry, cx + rx, canvas.height - ctx.lineWidth, cx, canvas.height - ctx.lineWidth); ctx.bezierCurveTo(cx - rx, canvas.height - ctx.lineWidth, ctx.lineWidth, cy + ry, ctx.lineWidth, cy); ctx.bezierCurveTo(ctx.lineWidth, cy - ry, cx - rx, ctx.lineWidth, cx, ctx.lineWidth); ctx.closePath(); if( !item.transparent ) { ctx.fillStyle="#" + getBackgroundColor(doc, item); ctx.fill(); } ctx.stroke(); ctx.restore(); } }; function DrawImageItem(divid, doc, item, keyurl, ds, vid) { if( item.width == 0 || item.height == 0 ) return; if ( item.ispreview == false ) return; if (item.imageid.indexOf("voiceye") != -1) return; var imageDiv=getImageDiv(doc, item, ds); var alink=null; if (item.linked) { var alink=document.createElement("a"); if (__ubi_viewers[vid] && __ubi_viewers[vid].events.linkButtonDown) { alink.onmouseover=function() { this.style.cursor="pointer";}; alink.onmouseout=function() { this.style.cursor="default";}; alink.onclick=function() {__ubi_viewers[vid]._linkButtonDown(item.linkfilename, item.linkargs); }; } else { if (item.linkstyle == "SCRIPT") { alink.href="javascript:"+item.linkfilename; } else if (item.linkstyle == "REPORT"){ alink.href="javascript:refreshFrame('"+ divid.parentNode.parentNode.parentNode.id +"','"+ item.linkfilename +"','"+ item.linkargs +"')"; } else if (item.linkstyle == "WEBPAGE"){ var url=item.linkfilename; if (item.linkfilename.indexOf(":/"+"/") == -1 && item.linkfilename.indexOf("mailto:") == -1) { url="http:/"+"/"+ item.linkfilename; } alink.href="javascript:window.open(\""+ url + item.linkargs +"\"); void 0;"; } } alink.appendChild(imageDiv); divid.appendChild(alink); } else { divid.appendChild(imageDiv); } var imageobj=doc.objects.Lookup(item.imageid); if( imageobj.loadtype == 1 && imageobj.loadsrc != "" ) { if( __ubi_isMobile ) { var image=getImage2(doc, item, keyurl, imageobj, ds); imageDiv.appendChild(image); } else { var canvas=getCanvas(doc, item, ds); imageDiv.appendChild(canvas); var canvasobj=null; drawCanvas2(doc, canvas, item, keyurl, imageobj, ds); } } else if ((imageobj.loadtype == 2 || imageobj.loadtype == 3) && imageobj.loadsrc != "" ) { getImageType2(imageDiv, doc, item, keyurl, imageobj, ds); } var borderDiv=getBorderDiv(doc, item, ds); if (item.linked) { alink.appendChild(borderDiv); } else { divid.appendChild(borderDiv); } }; function DrawBarcodeItem(divid, doc, item, keyurl, ds) { if( item.width == 0 || item.height == 0 ) return; if ( item.ispreview == false ) return; var imageDiv=getImageDiv(doc, item, ds); divid.appendChild(imageDiv); if( item.loadtype == 1 && item.loadsrc != "" ) { if( __ubi_isMobile ) { var image=getImage(doc, item, keyurl, ds); imageDiv.appendChild(image); } else { var canvas=getCanvas(doc, item); imageDiv.appendChild(canvas); drawCanvas(doc, canvas, item, keyurl, ds); } } var borderDiv=getBorderDiv(doc, item, ds); divid.appendChild(borderDiv); }; function DrawChartComponent(divid, doc, chart, keyurl, ds) { if( chart.width == 0 || chart.height == 0 ) return; var imageDiv=getImageDiv(doc, chart, ds); divid.appendChild(imageDiv); if( (chart.loadtype == 1 || chart.loadtype == 2) && chart.loadsrc != "" ) { if( __ubi_isMobile ) { var image=getImage(doc, chart, keyurl, ds); imageDiv.appendChild(image); } else { var image=getChartImage(doc, chart, keyurl, ds); imageDiv.innerHTML=image; } } }; function getBorderColor(tp, doc, item) { if( tp == "top") return doc.colors.Lookup(doc.lines.Lookup(doc.borders.Lookup(item.borderid).top).colorid).color; else if( tp == "right" ) return doc.colors.Lookup(doc.lines.Lookup(doc.borders.Lookup(item.borderid).right).colorid).color; else if( tp == "bottom" ) return doc.colors.Lookup(doc.lines.Lookup(doc.borders.Lookup(item.borderid).bottom).colorid).color; else if( tp == "left" ) return doc.colors.Lookup(doc.lines.Lookup(doc.borders.Lookup(item.borderid).left).colorid).color; else if( tp == "dd" ) return doc.colors.Lookup(doc.lines.Lookup(doc.borders.Lookup(item.borderid).diagonaldown).colorid).color; else if( tp == "du" ) return doc.colors.Lookup(doc.lines.Lookup(doc.borders.Lookup(item.borderid).diagonalup).colorid).color; }; function getBorderStyle(tp, doc, item) { if( tp == "top") return doc.lines.Lookup(doc.borders.Lookup(item.borderid).top).getStyle(); else if( tp == "right" ) return doc.lines.Lookup(doc.borders.Lookup(item.borderid).right).getStyle(); else if( tp == "bottom" ) return doc.lines.Lookup(doc.borders.Lookup(item.borderid).bottom).getStyle(); else if( tp == "left" ) return doc.lines.Lookup(doc.borders.Lookup(item.borderid).left).getStyle(); else if( tp == "dd" ) return doc.lines.Lookup(doc.borders.Lookup(item.borderid).diagonaldown).getStyle(); else if( tp == "du" ) return doc.lines.Lookup(doc.borders.Lookup(item.borderid).diagonalup).getStyle(); }; function getBorderWidth(tp, doc, item) { var width; var style=getBorderStyle(tp, doc, item); if( tp == "top") width=doc.lines.Lookup(doc.borders.Lookup(item.borderid).top).getWidth(); else if( tp == "right" ) width=doc.lines.Lookup(doc.borders.Lookup(item.borderid).right).getWidth(); else if( tp == "bottom" ) width=doc.lines.Lookup(doc.borders.Lookup(item.borderid).bottom).getWidth(); else if( tp == "left" ) width=doc.lines.Lookup(doc.borders.Lookup(item.borderid).left).getWidth(); else if( tp == "dd" ) width=doc.lines.Lookup(doc.borders.Lookup(item.borderid).diagonaldown).getWidth(); else if( tp == "du" ) width=doc.lines.Lookup(doc.borders.Lookup(item.borderid).diagonalup).getWidth(); if( style == "none" ) width=0; else { if( width % 2 == 1 ) width=parseInt(width / 2) + 1; else width=parseInt(width / 2); } return width; }; function getLineThickness(doc, item) { var width=doc.lines.Lookup(item.lineid).thickness; if( width != 0 ) { if( width % 2 == 1 ) width=parseInt(width / 2) + 1; else width=parseInt(width / 2); } return width; }; function getLineColor(doc, item) { return doc.colors.Lookup(doc.lines.Lookup(item.lineid).colorid).color; }; function getBackgroundColor(doc, item) { return doc.colors.Lookup(item.backgroundid).color; }; function getFont(doc, item, ds) { if( typeof ds == "undefined" ) ds=1.0; return doc.fonts.Lookup(item.fontid).getFont(ds); }; function getFontSize(doc, item, ds) { if( typeof ds == "undefined" ) ds=1.0; return doc.fonts.Lookup(item.fontid).getFontSize(ds); }; function getForegroundColor(doc, item) { return doc.colors.Lookup(item.foregroundid).color; }; function getImageDiv(doc, item, ds) { var x=Math.round(item.x * ds); var y=Math.round(item.y * ds); var width=Math.round((item.x+item.width) * ds) - x; var height=Math.round((item.y+item.height) * ds)- y; var div=document.createElement("div"); div.id=item.id; div.style.overflow="hidden"; div.style.position="absolute"; div.style.left=x + "px"; div.style.top=y + "px"; div.style.width=(width + 1) + "px"; div.style.height=(height + 1) + "px"; return div; }; function getBorderDiv(doc, item, ds) { var x=Math.round(item.x * ds); var y=Math.round(item.y * ds); var width=Math.round((item.x+item.width) * ds) - x; var height=Math.round((item.y+item.height) * ds)- y; var div=document.createElement("div"); div.style.backgroundColor="transparent"; div.style.position="absolute"; div.style.left=x + "px"; div.style.top=y + "px"; div.style.width=(width + 1) - (getBorderWidth("left", doc, item) + getBorderWidth("right", doc, item)) + "px"; div.style.height=(height + 1) - (getBorderWidth("top", doc, item) + getBorderWidth("bottom", doc, item)) + "px"; div.style.borderTop=getBorderWidth("top", doc, item) + "px " + getBorderStyle("top", doc, item) + " #" + getBorderColor("top", doc, item); div.style.borderRight=getBorderWidth("right", doc, item) + "px " + getBorderStyle("right", doc, item) + " #" + getBorderColor("right", doc, item); div.style.borderBottom=getBorderWidth("bottom", doc, item) + "px " + getBorderStyle("bottom", doc, item) + " #" + getBorderColor("bottom", doc, item); div.style.borderLeft=getBorderWidth("left", doc, item) + "px " + getBorderStyle("left", doc, item) + " #" + getBorderColor("left", doc, item); return div; }; function getCanvas(doc, item, ctx) { var canvas=document.createElement("canvas"); canvas.id=item.id + (_ubi_cindex++)+ "cv"; return canvas; }; function getImage(doc, item, keyurl, ds) { var x=Math.round(item.x * ds); var y=Math.round(item.y * ds); var width=Math.round((item.x+item.width) * ds) - x; var height=Math.round((item.y+item.height) * ds)- y; var image=document.createElement("img"); image.id=item.id + (_ubi_iindex++)+ "img"; image.src=keyurl + "&cHJvY2lk=GATEWAY&reqtype=3&serviceid="+doc.serviceid+"&imageid=" + item.loadsrc; image.style.position="absolute"; image.style.left=0 + "px"; image.style.top=0 + "px"; image.style.width=(width + 1) + "px"; image.style.height=(height + 1) + "px"; return image; }; function getImage2(doc, item, keyurl, imageobj, ds) { var x=Math.round(item.x * ds); var y=Math.round(item.y * ds); var width=Math.round((item.x+item.width) * ds) - x; var height=Math.round((item.y+item.height) * ds)- y; var image=document.createElement("img"); image.id=item.id + (_ubi_iindex++)+ "img"; image.src=keyurl + "&cHJvY2lk=GATEWAY&reqtype=3&serviceid="+doc.serviceid+"&imageid=" + imageobj.loadsrc; if( imageobj.fixedrate || imageobj.originalsize ) { var imgleft=0; var imgtop=0; var imgwidth=(Math.round(imageobj.width*ds) / 3) + 1; var imgheight=(Math.round(imageobj.height*ds) / 3) + 1; if( imgwidth < (width + 1) && item.halign != 0 ) { if( item.halign == 1 ) imgleft=((width + 1) - imgwidth) / 2; else if( item.halign == 2 ) imgleft=((width + 1) - imgwidth); } if( imgheight < (height + 1) && item.valign != 0 ) { if( item.valign == 1 ) imgtop=((height + 1) - imgheight) / 2; else if( item.valign == 2 ) imgtop=((height + 1) - imgheight); } image.style.position="absolute"; image.style.left=imgleft + "px"; image.style.top=imgtop + "px"; image.style.width=imgwidth + "px"; image.style.height=imgheight + "px"; } else { image.style.position="absolute"; image.style.left=0 + "px"; image.style.top=0 + "px"; image.style.width=(width + 1) + "px"; image.style.height=(height + 1) + "px"; } return image; }; function getImageType2(imageDiv, doc, item, keyurl, imageobj, ds) { var x=Math.round(item.x * ds); var y=Math.round(item.y * ds); var width=Math.round((item.x+item.width) * ds) - x; var height=Math.round((item.y+item.height) * ds)- y; _ubi_imgcount++; newImg=new Image(); newImg.onload=function(){ var imgWidth=Math.floor(this.width*ds*0.75); var imgHeight=Math.floor(this.height*ds*0.75); var innerhtml=""; var imgsrc=""; if (imageobj.loadtype == 3) { imgsrc=imageobj.loadsrc; if (imgsrc.length > 11 && imgsrc.substr(0,11) != 'data:image/') { var srcarray=[]; srcarray.push('data:image/png;base64,'); srcarray.push(imgsrc); imgsrc=srcarray.join(''); } } else { imgsrc=imageobj.loadsrc; } if (item.valign != 0) { innerhtml += "
    "; } if (item.halign != 1) { imageDiv.style.textAlign=item.getHAlign(); } if (imageobj.originalsize) { innerhtml += "
    "; } else { innerhtml += " 0) { innerhtml += " opacity:" + ((100-imageobj.brightness*2)/100) +"; " +" alpha(opacity:"+(100-imageobj.brightness*2)+");"; } innerhtml += "\">"; } if (item.valign != 0) { innerhtml += "
    "; } imageDiv.innerHTML=innerhtml; _ubi_imgcount--; }; newImg.onerror=function(){ _ubi_imgcount--; }; if (imageobj.loadtype == 3) { newImg.onload(); } else { newImg.src=imageobj.loadsrc; } }; function getChartImage(doc, chart, keyurl, ds) { var x=Math.round(chart.x * ds); var y=Math.round(chart.y * ds); var width=Math.round((chart.x+chart.width) * ds) - x; var height=Math.round((chart.y+chart.height) * ds)- y; var innerhtml=""; var imgurl=keyurl + "&cHJvY2lk=GATEWAY&reqtype=3&serviceid="+doc.serviceid+"&imageid=" + chart.loadsrc; innerhtml += ""; return innerhtml; }; function drawCanvas(doc, canvas, item, keyurl, ds) { var x=Math.round(item.x * ds); var y=Math.round(item.y * ds); var width=Math.round((item.x+item.width) * ds) - x; var height=Math.round((item.y+item.height) * ds)- y; if( !canvas.getContext ) G_vmlCanvasManager.initElement(canvas); var ctx=canvas.getContext("2d"); canvas.style.position="absolute"; canvas.style.left=0 + "px"; canvas.style.top=0 + "px"; canvas.width=width + 1; canvas.height=height + 1; var image=new Image(); image.id=item.id + (_ubi_iindex++)+ "img"; image.onload=function() { if (isPrint == false) { ctx.drawImage(image, 0, 0, canvas.width, canvas.height); } }; image.src=keyurl + "&cHJvY2lk=GATEWAY&reqtype=3&serviceid="+doc.serviceid+"&imageid=" + item.loadsrc; if (isPrint) { var canvasobj=new UbiCanvasObject(); canvasobj.type="IMAGE"; canvasobj.canvasid=canvas.id; canvasobj.imageid=image.id; canvasobj.x=0; canvasobj.y=0; canvasobj.width=width + 1; canvasobj.height=height + 1; canvasobj.src=image.src; drawcanvaslist[drawcanvaslist.length]=canvasobj; } }; function drawCanvas2(doc, canvas, item, keyurl, imageobj, ds) { var x=Math.round(item.x * ds); var y=Math.round(item.y * ds); var width=Math.round((item.x+item.width) * ds) - x; var height=Math.round((item.y+item.height) * ds)- y; if( !canvas.getContext ) G_vmlCanvasManager.initElement(canvas); var ctx=canvas.getContext("2d"); canvas.style.position="absolute"; canvas.style.left=0 + "px"; canvas.style.top=0 + "px"; canvas.width=width + 1; canvas.height=height + 1; var imgleft=0; var imgtop=0; var imgwidth=canvas.width; var imgheight=canvas.height; if( imageobj.fixedrate || imageobj.originalsize ) { imgwidth=(Math.round(imageobj.width * ds) / 3) + 1; imgheight=(Math.round(imageobj.height * ds) / 3) + 1; if( imgwidth < canvas.width && item.halign != 0 ) { if( item.halign == 1 ) imgleft=(canvas.width - imgwidth) / 2; else if( item.halign == 2 ) imgleft=(canvas.width - imgwidth); } if( imgheight < canvas.height && item.valign != 0 ) { if( item.valign == 1 ) imgtop=(canvas.height - imgheight) / 2; else if( item.valign == 2 ) imgtop=(canvas.height - imgheight); } } var image=new Image(); image.id=item.id + (_ubi_iindex++)+ "img"; image.onload=function() { if (isPrint == false) { ctx.drawImage(image, imgleft, imgtop, imgwidth, imgheight); } }; if (imageobj.loadtype == 2) { image.src=imageobj.loadsrc; } else { image.src=keyurl + "&cHJvY2lk=GATEWAY&reqtype=3&serviceid="+doc.serviceid+"&imageid=" + imageobj.loadsrc; } if (isPrint) { var canvasobj=new UbiCanvasObject(); canvasobj.type="IMAGE"; canvasobj.canvasid=canvas.id; canvasobj.imageid=image.id; canvasobj.x=imgleft; canvasobj.y=imgtop; canvasobj.width=imgwidth; canvasobj.height=imgheight; canvasobj.src=image.src; drawcanvaslist[drawcanvaslist.length]=canvasobj; } }; }});var UbiCanvasObject=Base.extend({ type: "", divid: "", canvasid: "", imageid: "", left: 0, top: 0, width: 0, height: 0, src: "", linewidth: 0, strokestyle: "", fillstyle: "", radius: 0});var __ubi_isFF=false;var __ubi_isIE=false;var __ubi_isChrome=false;var __ubi_isOpera=false;var __ubi_isSafari=false;var __ubi_isMacOS=false;var __ubi_ieVersion=6;var __ubi_isMobile=false;var __ubi_isEdge=false;var __ubi_isWhale=false;var mobileKeyWords=new Array('iPhone', 'iPod', 'iPad', 'BlackBerry', 'Android', 'Windows CE', 'LG', 'MOT', 'SAMSUNG', 'SonyEricsson');try{ for (var word in mobileKeyWords) { if( navigator.userAgent.match(mobileKeyWords[word]) != null ) { __ubi_isMobile=true; break; } };}catch(e){}if (navigator.userAgent.indexOf('Macintosh')!= -1) __ubi_isMacOS=true;if (navigator.userAgent.indexOf('Trident/7')!= -1 && navigator.appName.indexOf("Netscape")!= -1 && navigator.product == "Gecko") { __ubi_isIE=true; __ubi_ieVersion=11;}else if (navigator.userAgent.indexOf('Whale')!= -1) { __ubi_isWhale=true;}else if (navigator.userAgent.indexOf('Edge')!= -1) { __ubi_isEdge=true;}else if (navigator.userAgent.indexOf('Chrome')!= -1) { if (navigator.userAgent.indexOf('OPR')!= -1) { __ubi_isOpera=true; } else { __ubi_isChrome=true; }}else if (navigator.userAgent.indexOf('Firefox')!= -1) { __ubi_isFF=true;}else if ((navigator.userAgent.indexOf('Safari')!= -1)||(navigator.userAgent.indexOf('Konqueror') != -1)) { __ubi_isSafari=true;}else if (navigator.userAgent.indexOf('Opera')!= -1) { __ubi_isOpera=true; _OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Opera')+6, 3));}else if (navigator.appName.indexOf("Microsoft")!= -1) { __ubi_isIE=true; if (navigator.appVersion.indexOf("MSIE 10.0")!= -1 && document.compatMode != "BackCompat") { __ubi_ieVersion=10; } if (navigator.appVersion.indexOf("MSIE 9.0")!= -1 && document.compatMode != "BackCompat") { __ubi_ieVersion=9; } if (navigator.appVersion.indexOf("MSIE 8.0")!= -1 && document.compatMode != "BackCompat") { __ubi_ieVersion=8; } if (navigator.appVersion.indexOf("MSIE 7.0")!= -1) { __ubi_ieVersion=7; }}else { __ubi_isFF=true;};if (__ubi_isIE) { if (window.XMLHttpRequest==null) __ubi_ieVersion=6;};function _ubi_lowerIE9() { if (__ubi_isIE && __ubi_ieVersion < 9) { return true; } return false;}function _ubi_checkPdfReader() { var obj=null; if (__ubi_isIE) { try { obj=new ActiveXObject("AcroPDF.PDF"); if( obj != null ) return true; } catch(e){ try { obj=new ActiveXObject("PDF.PdfCtrl"); if( obj != null ) return true; } catch(e1) { } } } else { var nav=navigator.plugins; for ( var i=0; i < nav.length; i++) { var name=nav[i].name; if( name.indexOf("Adobe Reader") != -1 || name.indexOf("Adobe PDF") != -1 || name.indexOf("Acrobat") != -1 || name.indexOf("Chrome PDF") != -1 ) { var version=nav[i].version; return true; } } } return false;}function _ubi_AddEvent(obj, evt, fn) { evt=(evt.indexOf(" ") != -1) ? evt.split(" ") : [ evt ]; for (i in evt) { var e=evt[i]; if (e == "mousewheel") { if (obj.addEventListener) obj.addEventListener('DOMMouseScroll', fn, false); obj.onmousewheel=fn; break; } if (obj.addEventListener) obj.addEventListener((e == "mousewheel") ? "DOMMouseScroll" : e, fn, false); else if (obj.attachEvent) obj.attachEvent('on' + e, fn); }}function _ubi_RemoveAddEvent(obj, evt, fn) { evt=(evt.indexOf(" ") != -1) ? evt.split(" ") : [ evt ]; for (i in evt) { var e=evt[i]; if (e == "mousewheel") { if (obj.removeEventListener) obj.removeEventListener('DOMMouseScroll', fn, false); obj.onmousewheel=null; break; } if (obj.removeEventListener) obj.removeEventListener((e == "mousewheel") ? "DOMMouseScroll" : e, fn, false); else if (obj.detachEvent) obj.detachEvent('on' + e, fn); }}function _ubi_strToBool(str) { if (str == "true") return true; if (str == "false") return false; return str;}function _ubi_strToInt(str) { var val=0; if (str) { try { val=parseInt(str); } catch (e) { val=0; } } return val;}function _ubi_isNumber(s) { s += ''; s=s.replace(/^\s*|\s*$/g, ''); if (s == '' || isNaN(s)) return false; return true;}function _ubi_clone(obj) { if (obj === null || typeof(obj) !== 'object') { return obj; } var copy=obj.constructor(); for (var attr in obj) { if (obj.hasOwnProperty(attr)) { copy[attr]=_ubi_clone(obj[attr]); } } return copy;}function _ubi_getMessage(language, key) { var lang=language; if (language == 'ko' || language == 'kr') { lang='korean'; } else if (language == 'en' || language == 'us') { lang='english'; } else if (language == 'es') { lang='spanish'; } if(typeof(_ubi_msg)=="undefined") { _ubi_msg={'korean':{ "StreamingMsg": "\uD604\uC7AC \uC2A4\uD2B8\uB9AC\uBC0D \uB9AC\uD3EC\uD2B8\uB97C \uC0DD\uC131 \uC911\uC785\uB2C8\uB2E4.", "StreamingMsg2": "\uD398\uC774\uC9C0 \uC0DD\uC131 \uC911...", "StreamingMsg3": "\uD398\uC774\uC9C0 \uC911 ", "CompleteMsg": "\uC2A4\uD2B8\uB9AC\uBC0D \uB9AC\uD3EC\uD2B8 \uC0DD\uC131\uC774 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.", "CreateErrMsg": "\uB9AC\uD3EC\uD2B8\uAC00 \uC0DD\uC131\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.", "TotalpageErrMsg": "\uC804\uCCB4 \uD398\uC774\uC9C0 \uC815\uBCF4\uB97C \uAC00\uC838\uC624\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD558\uC600\uC2B5\uB2C8\uB2E4.", "UnknownErrMsg": "\uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD558\uC600\uC2B5\uB2C8\uB2E4.", "ErrMsg": "\uC624\uB958\uAC00 \uBC1C\uC0DD\uD558\uC600\uC2B5\uB2C8\uB2E4.", "ExportMsg" : "\uD30C\uC77C\uC744 \uC0DD\uC131 \uC911\uC785\uB2C8\uB2E4.", "ExportMsg2" : "\uC804\uC6A9 \uBDF0\uC5B4 \uBAA8\uB4DC\uC5D0\uC11C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC800\uC7A5 \uD0C0\uC785\uC785\uB2C8\uB2E4.", "StatusWaitMsg" : "\uC7A0\uC2DC\uB9CC \uAE30\uB2E4\uB824 \uC8FC\uC138\uC694.", "PrintDlgTitle": "\uC778\uC1C4 \uBC94\uC704\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.", "PrintDlgAll": "\uBAA8\uB450", "PrintDlgCurrent": "\uD604\uC7AC", "PrintDlgFromTo": "\uD398\uC774\uC9C0 \uC9C0\uC815", "PrintDlgFrom": "\uBD80\uD130", "PrintDlgTo": "\uAE4C\uC9C0", "PrintDlgHMent": "Internet Explorer\uC5D0\uC11C \uAC00\uB85C \uC591\uC2DD\uC740 \uC778\uC1C4 \uBBF8\uB9AC \uBCF4\uAE30", "PrintDlgHMent2": "\uC635\uC158\uC5D0\uC11C \uC6A9\uC9C0 \uBC29\uD5A5\uC744 \uBCC0\uACBD\uD558\uC5EC \uC778\uC1C4\uD558\uC138\uC694.", "PrintDlgLink": "\uC790\uC138\uD788 \uBCF4\uAE30", "PrintDlgMent": "\u203B \uC778\uC1C4\uB7C9\uC774 \uB9CE\uC544\uC11C \uBD80\uBD84\uC778\uC1C4\uB9CC \uAC00\uB2A5\uD569\uB2C8\uB2E4.", "PrintDlgMaxMent" : "\uCD5C\uB300 \uD398\uC774\uC9C0 \uC218 : ", "PrintDlgHTMLRangeErr": "HTML\uC778\uC1C4 \uD5C8\uC6A9 \uD398\uC774\uC9C0 \uBC94\uC704\uB97C \uBC97\uC5B4\uB0AC\uC2B5\uB2C8\uB2E4.", "PrintDlgRangeErr": "\uD398\uC774\uC9C0 \uBC94\uC704\uB97C \uBC97\uC5B4\uB0AC\uC2B5\uB2C8\uB2E4.", "PrintDlgEnter": "\n\uB2E4\uC2DC \uC785\uB825\uD558\uC5EC \uC8FC\uC2ED\uC2DC\uC624.", "Button_OK": "\uD655\uC778", "Button_Cancel": "\uCDE8\uC18C", "PdfCheckMsg9": "Adobe Reader\uC758 \uBC84\uC804\uC774 \uC124\uCE58\uB418\uC5B4\uC788\uC9C0 \uC54A\uAC70\uB098, 9 \uBC84\uC804 \uC774\uD558\uC758 \uC624\uB798\uB41C \uBC84\uC804\uB9CC \uC124\uCE58\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.", "PdfCheckMsg6": "Adobe Reader\uC758 \uBC84\uC804\uC774 \uC124\uCE58\uB418\uC5B4\uC788\uC9C0 \uC54A\uAC70\uB098, 6 \uBC84\uC804 \uC774\uD558\uC758 \uC624\uB798\uB41C \uBC84\uC804\uB9CC \uC124\uCE58\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.", "PdfGuideMsg": "\uC5B4\uB3C4\uBE44 \uD648\uD398\uC774\uC9C0\uC5D0\uC11C \uCD5C\uC2E0 Adobe Reader\uB97C
    \uC124\uCE58\uD558\uC2DC\uAE30 \uBC14\uB78D\uB2C8\uB2E4.", "PdfDownloadMsg" : "\uD604\uC7AC \uC0AC\uC6A9 \uC911\uC778 ^browser^ \uBE0C\uB77C\uC6B0\uC800\uB294 PDF \uD30C\uC77C\uC774 \uB2E4\uC6B4\uB85C\uB4DC\uB429\uB2C8\uB2E4.
    \uC778\uC1C4\uB97C \uC6D0\uD558\uB294 \uACBD\uC6B0 \uC800\uC7A5 \uBC84\uD2BC\uC744 \uC774\uC6A9\uD558\uC5EC \uD30C\uC77C \uC800\uC7A5 \uD6C4
    \uC778\uC1C4\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.", "PdfDownloadChromeMsg" : "PDF \ud30c\uc77c\uc5d0 \uc554\ud638\uac00 \uc124\uc815\ub418\uc5b4 \ud30c\uc77c\uc774 \ub2e4\uc6b4\ub85c\ub4dc\ub429\ub2c8\ub2e4.
    \uC778\uC1C4\uB97C \uC6D0\uD558\uB294 \uACBD\uC6B0 \uC800\uC7A5 \uBC84\uD2BC\uC744 \uC774\uC6A9\uD558\uC5EC \uD30C\uC77C \uC800\uC7A5 \uD6C4
    \uC778\uC1C4\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.", "PdfInstallMsg1" : "\uD604\uC7AC \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C Adobe Reader\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.", "PdfInstallMsg2" : "\uD604\uC7AC \uC124\uCE58\uB41C Adobe Reader\uC758 \uBC84\uC804\uC774 \uB0AE\uAC70\uB098 \uC815\uC0C1\uC801\uC73C\uB85C \uC124\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.", "PdfInstallMsg3" : "\uC815\uC0C1\uC801\uC778 \uC778\uC1C4\uB97C \uC704\uD574\uC11C\uB294 Adobe Reader 10 \uBC84\uC804 \uC774\uC0C1\uC744 \uC124\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4.
    \uBE0C\uB77C\uC6B0\uC800 \uC885\uB8CC \uD6C4 \uC544\uB798 \uC0AC\uC774\uD2B8\uB97C \uD1B5\uD574\uC11C \uC124\uCE58\uD558\uAE30 \uBC14\uB78D\uB2C8\uB2E4.

    https://get.adobe.com/kr/reader

    \uC124\uCE58 \uC5C6\uC774 \uC778\uC1C4\uD558\uAE30\uB97C \uC6D0\uD55C\uB2E4\uBA74 \uC800\uC7A5 \uBC84\uD2BC\uC744 \uC774\uC6A9\uD558\uC5EC \uD30C\uC77C \uC800\uC7A5 \uD6C4 \uC778\uC1C4\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.", "SaveFileMsg1" : "  \u203B \uBCC4\uB3C4\uC758 \uC124\uCE58 \uC5C6\uC774 \uD30C\uC77C\uC744 PC\uB85C \uB2E4\uC6B4\uB85C\uB4DC \uD569\uB2C8\uB2E4.", "SaveFileMsg2" : "  ※ \uD398\uC774\uC9C0 \uC218\uAC00 \uB9CE\uC740 \uACBD\uC6B0 \uC77C\uBC18 \uC800\uC7A5\uBCF4\uB2E4 \uBE60\uB974\uAC8C \uC800\uC7A5\uC774 \uAC00\uB2A5\uD569\uB2C8\uB2E4.
      \uD504\uB85C\uADF8\uB7A8 \uC124\uCE58\uAC00 \uD544\uC694\uD558\uBA70 \uD574\uB2F9 \uD504\uB85C\uADF8\uB7A8\uC774 \uC124\uCE58\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC740 \uACBD\uC6B0
      \uC124\uCE58 \uC791\uC5C5\uC774 \uC9C4\uD589\uB429\uB2C8\uB2E4.", "SaveDialogTitle" : "\uD30C\uC77C \uC800\uC7A5", "SaveDialogType" : "\uC800\uC7A5 \uBC29\uC2DD", "SaveDialogFileType" : "\uD30C\uC77C \uC720\uD615", "SaveDialogDefault" : "\uC77C\uBC18 \uC800\uC7A5", "SaveDialogUbiViewer" : "\uC804\uC6A9 \uBDF0\uC5B4 \uC800\uC7A5", "PrintPDFTitle" : "PDF \uC778\uC1C4 \uC548\uB0B4", "PrintHTMLTitle" : "HTML \uC778\uC1C4 \uC548\uB0B4", "PrintHTMLMsg_Edge" : "\uC778\uC1C4\uD558\uAE30 \uC804 \u2018\uBA38\uB9AC\uAE00 \uBC0F \uBC14\uB2E5\uAE00\u2019\uC5D0\uC11C \u2018\uB054\u2019\uC744 \uC120\uD0DD\uD558\uACE0 \uC778\uC1C4 \uBC84\uD2BC\uC744 \uB204\uB974\uBA74 \uB429\uB2C8\uB2E4.", "PrintHTMLMsg_FF" : "\uC778\uC1C4\uD558\uAE30 \uC804 \uBE0C\uB77C\uC6B0\uC800 \uC124\uC815\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
    \uBE0C\uB77C\uC6B0\uC800\uC758 [\uD30C\uC77C] \uBA54\uB274 > \uD398\uC774\uC9C0 \uC124\uC815 > \uC5EC\uBC31 \uBC0F \uBA38\uB9AC\uAE00/\uBC14\uB2E5\uAE00\uC5D0\uC11C \uBA38\uB9AC\uAE00, \uBC14\uB2E5\uAE00\uC744 \u2018\uACF5\uBC31\u2019\uC73C\uB85C \uC124\uC815\uD55C \uD6C4 \uC778\uC1C4\uD558\uAE30 \uBC14\uB78D\uB2C8\uB2E4.", "PrintHTMLMsg_Chrome" : "\uC778\uC1C4\uD558\uAE30 \uC804 \u2018\uC124\uC815 \uB354\uBCF4\uAE30\u2019\uC5D0\uC11C \u2018\uBA38\uB9AC\uAE00\uACFC \uBC14\uB2E5\uAE00\u2019 \uC635\uC158\uC744 \uD574\uC81C\uD55C \uD6C4 \uC778\uC1C4 \uBC84\uD2BC\uC744 \uB204\uB974\uBA74 \uB429\uB2C8\uB2E4.", "PrintHTMLMsg_Opera" : "\uC778\uC1C4\uD558\uAE30 \uC804 \u2018\uCD94\uAC00 \uC635\uC158\u2019\uC5D0\uC11C \u2018\uBA38\uB9AC\uAE00\uACFC \uBC14\uB2E5\uAE00\u2019 \uC635\uC158\uC744 \uD574\uC81C\uD55C \uD6C4 \uC778\uC1C4 \uBC84\uD2BC\uC744 \uB204\uB974\uBA74 \uB429\uB2C8\uB2E4.", "PrintHTMLMsg_IE" : "\uC778\uC1C4\uD558\uAE30 \uC804 \uBE0C\uB77C\uC6B0\uC800 \uC124\uC815\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
    \uBE0C\uB77C\uC6B0\uC800\uC758 [\uD30C\uC77C] \uBA54\uB274 > \uD398\uC774\uC9C0 \uC124\uC815 > \uBA38\uB9AC\uAE00/\uBC14\uB2E5\uAE00\uC744 \u2018\uBE44\uC5B4 \uC788\uC74C\u2019\uC73C\uB85C \uC124\uC815\uD55C \uD6C4 \uC778\uC1C4\uD558\uAE30 \uBC14\uB78D\uB2C8\uB2E4.", "PrintHTMLMsg_IEObj" : "\uC778\uC1C4\uD558\uAE30 \uC804 '\uD398\uC774\uC9C0 \uC124\uC815(Alt + U)'\uC5D0\uC11C
    \uBA38\uB9AC\uAE00 \uBC0F \uBC14\uB2E5\uAE00 \u2018\uBE44\uC5B4 \uC788\uC74C\u2019\uC744 \uC120\uD0DD \uD6C4 \uC778\uC1C4\uD558\uAE30 \uBC14\uB78D\uB2C8\uB2E4.", "ExportOption" : "\uC800\uC7A5 \uC635\uC158", "ExportFormat" : "\uD3EC\uB9F7", "TiffOption" : "Tiff \uC555\uCD95 \uBC29\uC2DD", "TiffPageOption" : "\uD398\uC774\uC9C0\uBCC4 Tiff \uC774\uBBF8\uC9C0 \uC0DD\uC131", "ZipFileMsg" : "※ \uC774\uBBF8\uC9C0\uB294 \uC555\uCD95 \uD30C\uC77C(*.zip)\uB85C \uB2E4\uC6B4\uB85C\uB4DC\uB429\uB2C8\uB2E4." }}; } var rtnstr=""; if (_ubi_msg[lang]) { if (_ubi_msg[lang][key] != undefined) rtnstr=_ubi_msg[lang][key]; } return rtnstr;}function _ubi_wafoucus(id) { if (!id) return; var obj=null; if (typeof(id) == "object") { obj=id; } else { obj=document.getElementById(id); } if (obj) { obj.setAttribute("orgstyle", obj.style.cssText); obj.style.border="2px solid #FF0000"; }}function _ubi_wablur(id) { if (!id) return; var obj=null; if (typeof(id) == "object") { obj=id; } else { obj=document.getElementById(id); } if (obj) { obj.style.cssText=obj.getAttribute("orgstyle"); }}var __ubi_createStyle=false;var __ubi_viewers=[];var __ubi_URF="0";var __ubi_EXPORT_URF="1";var __ubi_PDF="2";var __ubi_EXPORT_IMAGE="10";var __ubi_EXPORT_PDF="11";var __ubi_EXPORT_EXCEL1="12";var __ubi_EXPORT_EXCEL2="13";var __ubi_EXPORT_RTF="14";var __ubi_EXPORT_HWP="15";var __ubi_EXPORT_PPTX="16";var __ubi_EXPORT_HML="17";var __ubi_EXPORT_DOCX="18";var __ubi_EXPORT_CELL="19";var __ubi_PAGE="91";var __ubi_TOTAL_PAGE="99";var __ubi_EXPORT_JOB="93";var __ubi_EXPORT_RESULT="94";var __ubi_exportMap={ 'SAVE_PDF' : __ubi_EXPORT_PDF, 'PDF' : __ubi_EXPORT_PDF, 'EXCEL_TYPE1': __ubi_EXPORT_EXCEL1, 'EXCEL_TYPE2': __ubi_EXPORT_EXCEL2, 'SAVE_PPTX' : __ubi_EXPORT_PPTX, 'PPTX' : __ubi_EXPORT_PPTX, 'SAVE_HML' : __ubi_EXPORT_HML, 'HML' : __ubi_EXPORT_HML, 'SAVE_DOCX' : __ubi_EXPORT_DOCX, 'DOCX' : __ubi_EXPORT_DOCX, 'SAVE_CELL' : __ubi_EXPORT_CELL, 'CELL' : __ubi_EXPORT_CELL, 'IMAGE' : __ubi_EXPORT_IMAGE };var UbiViewer=Base.extend({ key: "", page: 0, totalPage: 0, PrintDefaultType : "PDF", SaveDefaultType : "", SaveExcelDefaultType : "EXCEL_TYPE1", exportSeq : -1, isEnableNoPage : false, retrieveUrfUrl : "", HmlExtension : "hml", ieAdobeReaderInfoPopup : false, vid : null, viewer : this, serviceValid : false, pageWidth : 0, pageHeight : 0, pageOrientation : "Portrait", ds : 1, exportsetmode : 1, _isMultiDocument: false, _isMultiPaper: false, _isPrintPDF: false, _isAutoDownload: true, _isReceiveTotalpage: false, _exportImageType: "", _scrollUpdateTimerID : null, _scrollPageCount : -1, _arghash : new UbiMap(), _datasets : [], constructor: function(params, styles, events) { this.params={ reqtype: __ubi_URF, cHJvY2lk: "GATEWAY", imageid: "", key: params.key || "", ubiserverurl: params.ubiserverurl || "", printurl: params.printurl || "", timeout: params.timeout || "600000", jrffile: params.jrffile || "", masterfilename: params.masterfilename || "", resid: params.resid || "", arg: params.arg || "", ismultireport: params.ismultireport || "false", multicount: params.multicount || "1", ismultireportpaging: params.ismultireportpaging || "true", exportseq: params.exportseq || "", reporttitle: params.reporttitle || "", sheetname: params.sheetname || "", toolbar: params.toolbar || "true", resource: params.resource || "", divid: params.divid || params.div.id, skin: params.skin || "standard", scale: params.scale || "PageWidth", userscale: params.userscale || "0", isencrypt: params.isencrypt || "false", isencrypt64: params.isencrypt64 || "false", bgcolor: params.bgcolor || "#E4E4E4", bgimage: params.bgimage || "", flicking: params.flicking || "false", scrollpage: params.scrollpage || "true", isStreaming: params.isStreaming || "true", issvg: params.issvg || "false", direction: params.direction || "", language: params.language || "ko", printlimit: params.printlimit || "20", imagescale: params.imagescale || "100", isexportchartimage : params.isexportchartimage || "true", exceladjustpage : params.exceladjustpage || "false", excelExportLineItem : params.excelExportLineItem || "false", excelPrintPaperSize : params.excelPrintPaperSize || "", excelPrintfitWidth : params.excelPrintfitWidth || "", excelPrintfitHeight : params.excelPrintfitHeight || "", excelSheetPerReport : params.excelSheetPerReport || "false", excelSheetPerMasterPage: params.excelSheetPerMasterPage || "false", excelSheetPerPage: params.excelSheetPerPage || "false", excelSkipMasterItem : params.excelSkipMasterItem || "false", excelSheetPerPageCount: params.excelSheetPerPageCount || "100", excelOrgItemType : params.excelOrgItemType || "false", excelExportUseUrf : params.excelExportUseUrf || "true", tiffType : params.tiffType || "GROUP3_2D", tiffPerPage : params.tiffPerPage || "false", streamdata : params.streamdata || "", clienttype : params.clienttype || "", datasetinfos : params.datasetinfos || "", runtimedata: params.runtimedata || "", isvoiceye : params.isvoiceye || "false", iswa : params.iswa || "false", isredbc : params.isredbc || "false", password : params.password || "", drmdocnumber : params.drmdocnumber || "", drmdocname : params.drmdocname || "", drmpagenames : params.drmpagenames || "", hmlTableProtect : params.hmlTableProtect || "false", hmlTextWrap : params.hmlTextWrap || "InFrontOfText", fontElement : params.fontElement || "", userHeader : params.userHeader || "", useplugin : params.useplugin || "false", usepluginsave : params.usepluginsave || "false", pluginprogress : params.pluginprogress || "false", printIEobj : params.printIEobj || "false", useAdobeReader : params.useAdobeReader || "true", exportPageFrom : params.exportPageFrom || "0", exportPageTo : params.exportPageTo || "0", exportAsOrgImage : params.exportAsOrgImage || "true", exportDS : params.exportDS || "1", serviceid : "" }; this.pluginparams=[]; if (styles == undefined) styles={}; this.styles={ margin: styles.margin || "10", pagegap: styles.pagegap || "10", pageborder: styles.pageborder || "true", pagebordercolor: styles.pagebordercolor || "#A0A0A0", toolbarbgcolor: styles.toolbarbgcolor || "#ffffff" }; if (events == undefined) events={}; this.events={ printEnd: events.printEnd, exportEnd: events.exportEnd, closeEnd: events.closeEnd, linkButtonDown: events.linkButtonDown, getUserParams: events.getUserParams, printClicked : events.printClicked, exportClicked : events.exportClicked }; if (_ubi_strToBool(this.params.issvg)) { if (_ubi_lowerIE9()) { alert("IE8 이하에서는 HTML5 뷰어 기능을 지원하지 않습니다.\nHTML4 뷰어로 미리보기를 진행합니다."); this.params.issvg=false; } else { this.params.isStreaming=true; this.params.scrollpage=true; } } this.vid=this.params.divid; var params=this.params; var styles=this.styles; for(var viewerIndex in __ubi_viewers) { if(__ubi_viewers[viewerIndex]) { if(this.vid == __ubi_viewers[viewerIndex].vid) { __ubi_viewers[viewerIndex].destroy(); __ubi_viewers[viewerIndex]=null; } } } __ubi_viewers[this.vid]=this; _ubi_AddEvent(window, "resize", function() { __ubi_viewers[params.divid].resize(); } ); this.page=1; this.totalPage=0; this.isEnableNoPage=false; this.toolbarHeight=44; this.msgWidth=380; this.msgHeight=122; this.msg=""; if (__ubi_createStyle == false) { __ubi_createStyle=true; if (document.styleSheets.length < 1) { var s=document.createElement('style'); document.head.appendChild(s); }; if (document.styleSheets[0]) { var sheet=document.styleSheets[0]; if (sheet.addRule) { sheet.addRule('.ubireportcontainer', 'white-space:normal; box-sizing:content-box;', 0); sheet.addRule('.ubireportcontainer div', 'box-sizing:content-box;', 0); sheet.addRule('.ubireportcontainer .toolbar', 'position:relative; white-space:normal; box-sizing:content-box;', 0); sheet.addRule('.ubireportcontainer .toolbar div', 'position:relative; white-space:normal; box-sizing:content-box; overflow:visible;', 0); sheet.addRule('.ubireportcontainer .toolbar input', 'position:relative; white-space:normal; box-sizing:content-box;', 0); sheet.addRule('.ubireportcontainer .dialog', 'position:absolute; white-space:normal; box-sizing:content-box; overflow:visible;', 0); sheet.addRule('.ubireportcontainer .dialog div', 'position:static; white-space:normal; box-sizing:content-box;', 0); sheet.addRule('.ubireportcontainer .dialog input', 'position:static; white-space:normal; box-sizing:content-box;', 0); sheet.addRule('.ubireportcontainer .textitem', 'position: absolute; border: 0px; margin:0px; padding: 0px; letter-spacing: 0px; overflow: hidden; box-sizing:content-box;', 0); sheet.addRule('.ubireportcontainer .textitem td', 'margin:0px; padding:0px; word-wrap:break-word; white-space:pre-wrap; word-break:break-all; letter-spacing:-0.3px; text-align: center; vertical-align: middle; box-sizing:content-box;', 0); sheet.addRule('.ubireportdlgcontainer', 'white-space:normal; box-sizing:content-box;', 0); sheet.addRule('.ubireportdlgcontainer div', 'white-space:normal; box-sizing:content-box;', 0); } else { sheet.insertRule('.ubireportcontainer { white-space:normal; box-sizing:content-box; }', sheet.cssRules.length); sheet.insertRule('.ubireportcontainer div { box-sizing:content-box; }', sheet.cssRules.length); sheet.insertRule('.ubireportcontainer .toolbar {position:relative; white-space:normal; box-sizing:content-box;}', sheet.cssRules.length); sheet.insertRule('.ubireportcontainer .toolbar div {position:relative; white-space:normal; box-sizing:content-box; overflow:visible;}', sheet.cssRules.length); sheet.insertRule('.ubireportcontainer .toolbar input {position:relative; white-space:normal; box-sizing:content-box;}', sheet.cssRules.length); sheet.insertRule('.ubireportcontainer .dialog {position:absolute; white-space:normal; box-sizing:content-box;}', sheet.cssRules.length); sheet.insertRule('.ubireportcontainer .dialog div {position:static; white-space:normal; box-sizing:content-box;}', sheet.cssRules.length); sheet.insertRule('.ubireportcontainer .dialog input {position:static; white-space:normal; box-sizing:content-box;}', sheet.cssRules.length); sheet.insertRule('.ubireportcontainer .textitem {position: absolute; border: 0px; margin:0px; padding: 0px; letter-spacing: 0px; overflow: hidden; box-sizing:content-box;}', sheet.cssRules.length); sheet.insertRule('.ubireportcontainer .textitem td { margin:0px; padding:0px; word-wrap:break-word; white-space:pre-wrap; word-break:break-all; letter-spacing:-0.3px; text-align: center; vertical-align: middle; box-sizing:content-box;}', sheet.cssRules.length); sheet.insertRule('.ubireportdlgcontainer { white-space:normal; box-sizing:content-box; }', sheet.cssRules.length); sheet.insertRule('.ubireportdlgcontainer div { box-sizing:content-box; }', sheet.cssRules.length); } } else { alert('[UbiReport] StyleSheets is null!'); }; } this.divMain=null; this.divToolbar=null; this.divPreviewFrame=null; this.divCanvas=null; this.divLoadImage=null; this.divMsg=null; this.toolbar=null; this.ubidoc=null; this.divMain=document.getElementById(params.divid); var divMain=this.divMain; divMain.style.textAlign="center"; divMain.className="ubireportcontainer"; this.divToolbar=document.createElement("div"); var divToolbar=this.divToolbar; divToolbar.id=params.divid + "_toolbar"; if( params.toolbar == "false" ) this.toolbarHeight=0; divToolbar.className="toolbar"; divToolbar.style.height=this.toolbarHeight + 'px'; divToolbar.style.whiteSpace="nowrap"; divToolbar.style.overflow="hidden"; divToolbar.style.backgroundColor=styles.toolbarbgcolor; if( params.toolbar == "true" ) divToolbar.style.borderBottom="1px solid #767676"; divMain.appendChild(divToolbar); this.toolbar=new UbiPreviewToolbar(this); if (params.iswa == true || params.iswa == "true") { this.toolbar.applyWA(params.divid); } this.toolbar.setCurrScale(params.scale); this.toolbar.setVisibleToolbar("PRINTSET", false); this.toolbar.setVisibleToolbar("PRINT_UBI", _ubi_strToBool(this.params.useplugin)); if (this.params.language == 'ko') { this.toolbar.setMenuTextToolbar('HML', '\uD55C\uAE00'); this.toolbar.setMenuTextToolbar('CELL', '\uD55C\uC140'); } if (_ubi_strToBool(params.isredbc) == true) { this.toolbar.setVisibleToolbar("SAVE", false); this.toolbar.setVisibleToolbar("PRINT_PDF", false); this.toolbar.setVisibleToolbar("PRINT_HTML", false); this.toolbar.setVisibleToolbar("PRINT_UBI", false); this.toolbar.setVisibleToolbar("PRINTSET", false); this.setPrintMenu("PDF"); } this.divPreviewFrame=document.createElement("div"); var divPreviewFrame=this.divPreviewFrame; divPreviewFrame.id=params.divid + "_previewframe"; if( params.bgimage == "" ) divPreviewFrame.style.backgroundColor=params.bgcolor; else divPreviewFrame.style.backgroundImage="url(" + params.bgimage + ")"; divPreviewFrame.style.position="relative"; divPreviewFrame.style.margin="0px"; divPreviewFrame.style.padding="0px"; divPreviewFrame.style.width="100%"; divPreviewFrame.style.height=(parseInt(divMain.style.height) - parseInt(divToolbar.style.height)) + 'px'; divPreviewFrame.style.overflow="auto"; divPreviewFrame.style.textAlign="center"; divPreviewFrame.style.whiteSpace="normal"; divPreviewFrame.style.MozUserSelect="none"; divPreviewFrame.style.webkitUserSelect="none"; divMain.appendChild(divPreviewFrame); var tmpviewer=this; _ubi_AddEvent(divPreviewFrame, "scroll", function(){ clearTimeout(tmpviewer._scrollUpdateTimerID); tmpviewer._scrollUpdateTimerID=setTimeout(function(){tmpviewer._scrollUpdate();},100); }); if (!_ubi_lowerIE9()) { _ubi_AddEvent(divPreviewFrame, "touchmove", function (evt) { evt.stopPropagation(); }); _ubi_AddEvent(divPreviewFrame, "mousewheel", function (evt) { evt.stopPropagation(); }); } this.divMsg=document.createElement("div"); var divMsg=this.divMsg; divMsg.id=params.divid + "_msg"; divMsg.style.display="none"; divMsg.style.position="absolute"; divMsg.style.left=(parseInt(this.divMain.style.width) - this.msgWidth) / 2 + "px"; divMsg.style.top=(parseInt(this.divMain.style.height) - this.msgHeight) / 2 + "px"; divMsg.style.width=(this.msgWidth + "px"); divMsg.style.height=(this.msgHeight + "px"); divMsg.style.fontFamily="Tahoma"; divMsg.style.fontSize="11px"; divMsg.style.margin="0 auto"; divMsg.style.backgroundColor="#f3f3f3"; divMsg.style.border="2px solid #000000"; divMain.appendChild(divMsg); this.divDisable=document.createElement("div"); this.divDisable.style.display="none"; this.divDisable.style.position="absolute"; this.divDisable.style.left='0px'; this.divDisable.style.top='0px'; if (__ubi_isIE && __ubi_ieVersion <= 9) { this.divDisable.style.backgroundColor='rgb(190,190,190)'; this.divDisable.style.filter="alpha(opacity=50)"; } else { this.divDisable.style.backgroundColor='rgba(190,190,190,0.5)'; } divMain.appendChild(this.divDisable); this.divLoadImage=document.createElement("div"); var loadImgWidth=54; var loadImgHeight=55; var divLoadImage=this.divLoadImage; divLoadImage.style.display="none"; divLoadImage.style.position="absolute"; divLoadImage.style.left=(parseInt(divMain.style.width) - loadImgWidth)/2 + 'px'; divLoadImage.style.top=(parseInt(divMain.style.height) - loadImgHeight)/2 + 'px'; divLoadImage.style.width=loadImgWidth + "px"; divLoadImage.style.height=loadImgHeight + "px"; divLoadImage.style.margin="0 auto"; var loadImg=""; divLoadImage.innerHTML=loadImg; divMain.appendChild(divLoadImage); divMain.appendChild(this._createErrorDialog()); divMain.appendChild(this._createProgress()); divMain.appendChild(this._createStatusBar()); }, resize : function() { try{ if(this.params) { this.divPreviewFrame.style.height=(parseInt(document .getElementById(this.params.divid).style.height) - parseInt(document.getElementById(this.params.divid + "_toolbar").style.height)) + 'px'; if (this.toolbar) { var scale=this.toolbar.getCurrScale(); if (scale == "PageWidth" || scale == "WholePage") { var viewer=this; setTimeout(function(){viewer._changeScale();},5); } } } }catch(e){} }, destroy : function() { _ubi_RemoveAddEvent(this.divPreviewFrame, "scroll", this._scrollUpdate); this.toolbar.destroy(); }, _enableViewer : function() { this.divDisable.style.display="none"; }, _disableViewer : function() { this.divDisable.style.width=this.divMain.style.width; this.divDisable.style.height=this.divMain.style.height; this.divDisable.style.display=""; }, _jobStart : function() { this._disableViewer(); this.divLoadImage.style.display=""; this.divMain.style.cursor="progress"; }, _jobEnd : function() { this.divLoadImage.style.display="none"; this.divMain.style.cursor="default"; this._enableViewer(); }, _showErrorDialog : function(title, msg) { document.getElementById(this.vid+'UbiToolbarPop_Error_Title').innerText=title; document.getElementById(this.vid+'UbiToolbarPop_Error_Contents').innerHTML=msg; document.getElementById(this.vid+'UbiToolbarPop_Error').style.display=''; }, _showStatusBar : function(msg) { document.getElementById(this.vid+'_UbiStatus_Msg').innerText=msg; document.getElementById(this.vid+'_UbiStatus').style.display=''; }, _closeStatusBar : function() { var statusobj=document.getElementById(this.vid+'_UbiStatus'); if (statusobj) { statusobj.style.display='none'; } }, _setStatusBar : function(msg, pagemsg) { document.getElementById(this.vid+'_UbiStatus_Msg').innerText=msg; document.getElementById(this.vid+'_UbiStatus_PageMsg').innerText=pagemsg; }, _showProgress : function(msg) { this._disableViewer(); document.getElementById(this.vid+'_UbiProgress_Msg').innerText=msg; document.getElementById(this.vid+'_UbiProgress_Position').style.width=0 + "px"; document.getElementById(this.vid+'_UbiProgress').style.display=''; }, _closeProgress : function() { document.getElementById(this.vid+'_UbiProgress').style.display='none'; this._enableViewer(); }, _setProgress : function(msg, page, totalpage) { var pos=0; if (page != undefined && _ubi_isNumber(page)) { var barwidth=196; var edgewidth=7*2; pos=Math.floor((barwidth - edgewidth) * (parseInt(page) / totalpage)); msg += " ("+ page +"/"+ totalpage +")"; } document.getElementById(this.vid+'_UbiProgress_Msg').innerText=msg; document.getElementById(this.vid+'_UbiProgress_Position').style.width=pos + "px"; }, _createErrorDialog : function() { var str=[]; var i=0; var obj=document.createElement("div"); obj.id=this.vid+"UbiToolbarPop_Error"; obj.className="dialog"; obj.style.cssText='display:none;position:absolute;z-index:999999104;left:50%;top:50%;width:450px;height:300px;margin-left:-225px;margin-top:-150px;border:1px solid #555555; background:#fff;'; str[i++]="
    "; str[i++]="
    Error
    "; str[i++]=" " + _ubi_getMessage(this.params.language, "ErrMsg") + ""; str[i++]="
    "; str[i++]="
    "; str[i++]="
    "; str[i++]="
    "; str[i++]="
    "; str[i++]="
    "; str[i++]=" "; str[i++]="
    "; str[i++]="
    "; obj.innerHTML=str.join(""); return obj; }, _createProgress : function() { var str=[]; var obj=document.createElement("div"); obj.id=this.vid + "_UbiProgress"; obj.className="dialog"; obj.style.cssText="display:none; position: absolute; left:50%; top:50%; margin-left:-120px; margin-top:-32px; width:240px; height:65px; z-index: 999999101; padding: 2px; border: 1px solid rgb(80, 80, 80); border-image: none; overflow: hidden; background-color: #646464;"; str.push("
    "); str.push(" "); str.push(" "); str.push(" "); str.push(" "); str.push("
    " + _ubi_getMessage(this.params.language, "ExportMsg") + "
    "); str.push("
    "); str.push("
    "); str.push(" "); str.push(" "); str.push(" "); str.push(" "); str.push(" "); str.push(" "); str.push("
    "); str.push("
    "); obj.innerHTML=str.join(""); return obj; }, _createStatusBar : function() { var str=[]; var obj=document.createElement("div"); obj.id=this.vid + "_UbiStatus"; obj.className="dialog"; if (_ubi_lowerIE9()) { obj.style.cssText="display:none; position: absolute; right:5%; top:90%; margin-left:-120px; margin-top:-40px; width:240px; height:55px; z-index: 999999101; padding: 2px; border-radius: 10px;border-image: none; overflow: hidden; background-color: rgb(35,114,185); filter:alpha(opacity=40);"; } else { obj.style.cssText="display:none; position: absolute; right:5%; top:90%; margin-left:-120px; margin-top:-40px; width:240px; height:55px; z-index: 999999101; padding: 2px; border-radius: 10px;border-image: none; overflow: hidden; background-color: rgba(35,114,185,0.3);"; } str.push("
    "); str.push(" "); str.push(" "); str.push(" "); str.push(" "); str.push(" "); str.push(" "); str.push(" "); str.push("
    " + _ubi_getMessage(this.params.language, "StreamingMsg") + "
    " + _ubi_getMessage(this.params.language, "StatusWaitMsg") + "
    "); str.push("
    "); obj.innerHTML=str.join(""); return obj; }, _createPreview : function(page) { var divPreview=document.createElement("div"); divPreview.id=this.vid + "_preview_"+ page; divPreview.setAttribute("isloaded", "false"); if (_ubi_strToBool(this.styles.pageborder)) { divPreview.style.border="1px solid "+ this.styles.pagebordercolor; } divPreview.style.backgroundColor="#ffffff"; divPreview.style.marginRight="auto"; divPreview.style.marginLeft="auto"; if (page > 1 && this.styles.pagegap != "") { divPreview.style.marginTop=this.styles.pagegap + "px"; } if (_ubi_strToInt(this.styles.margin) > 0) { if (page == 1) { divPreview.style.marginTop=this.styles.margin + "px"; } if (page == this.totalPage || _ubi_strToBool(this.params.scrollpage) == false) { divPreview.style.marginBottom=this.styles.margin + "px"; } } divPreview.style.position="relative"; divPreview.style.overflow="hidden"; divPreview.style.display="none"; var divLoadImage=document.createElement("div"); divLoadImage.style.position="relative"; divLoadImage.style.top="50%"; divLoadImage.style.width="100%"; divLoadImage.style.height="100%"; divLoadImage.style.margin="0 auto"; divLoadImage.innerHTML=""; divPreview.appendChild(divLoadImage); this.divPreviewFrame.appendChild(divPreview); return divPreview; }, _drawPage : function(preview, page) { var isSvg=_ubi_strToBool(this.params.issvg); var scale=this.toolbar.getCurrScale(); var frame=document.getElementById(this.vid+"_previewframe"); var frameWidth=frame.clientWidth; if (page == 1 && (scale == "PageWidth" || scale == "WholePage")) { frameWidth -= 17; } var frameHeight=frame.clientHeight; var framemargin=2; var isloaded=preview.getAttribute("isloaded"); var baseScale=1.0; if (isSvg) { baseScale=2.0; } var ds=1.0; if (scale != "PageWidth" && scale != "WholePage") { ds=parseInt(scale)/100; this.ds=ds; } if (_ubi_strToInt(this.styles.margin) > 0) { framemargin += parseInt(this.styles.margin) * 2; } if (isSvg && isloaded == "true") { var children=preview.children; var svgObj=null; if (children) { svgObj=children[0]; var svgWidth=parseInt(svgObj.getAttribute("orgwidth")); var svgHeight=parseInt(svgObj.getAttribute("orgheight")); if (page == 1) { this.totalPage=parseInt(svgObj.getAttribute("totalpage")); this.params.serviceid=svgObj.getAttribute("serviceid"); this.pageOrientation=svgObj.getAttribute("orientation"); this.pageWidth=svgWidth; this.pageHeight=svgHeight; if (page == this.totalPage) { preview.style.marginBottom=this.styles.margin + "px"; } } preview.setAttribute("orgwidth", svgWidth); preview.setAttribute("orgheight", svgHeight); if (scale == "PageWidth") { ds=(frameWidth-framemargin) / (svgWidth / baseScale); var height=svgHeight / baseScale * ds; if ((height+framemargin) > frameHeight && page == 1) { if (__ubi_isIE && __ubi_ieVersion < 8) { frameWidth=frame.clientWidth - 17; } else { preview.style.height=(height) +"px"; preview.style.display=""; frameWidth=frame.clientWidth; } frameWidth=frame.clientWidth; ds=(frameWidth-framemargin) / (svgWidth / baseScale); } } else if (scale == "WholePage") { ds=Math.min((frameHeight-framemargin) / (svgHeight / baseScale), (frameWidth-framemargin) / (svgWidth / baseScale)); } svgWidth=svgWidth / baseScale * ds; svgHeight=svgHeight / baseScale * ds; var conscale=ds / baseScale; svgObj.setAttribute("width", svgWidth); svgObj.setAttribute("height", svgHeight); if (__ubi_isIE) { svgObj.setAttribute("letter-spacing", (-0.15*baseScale*2)+"px"); } else { svgObj.setAttribute("letter-spacing", (-0.15*baseScale)+"px"); } var gObj=svgObj.childNodes; if (gObj) { for (var i=0; i frameHeight && (page == 1 || _ubi_strToBool(this.params.scrollpage) == false)) { if (__ubi_isIE && __ubi_ieVersion < 8) { frameWidth=frame.clientWidth - 17; } else { preview.style.height=(height) +"px"; preview.style.display=""; frameWidth=frame.clientWidth; } frameWidth=frame.clientWidth; ds=(frameWidth-framemargin) / (this.pageWidth / baseScale); } } else if (scale == "WholePage") { ds=Math.min((frameHeight-framemargin) / (this.pageHeight / baseScale), (frameWidth-framemargin) / (this.pageWidth / baseScale)); } this.ds=ds; } else { if (scale == "PageWidth" || scale == "WholePage") { ds=this.ds; } } var width=this.pageWidth / baseScale * ds; var height=this.pageHeight / baseScale * ds; preview.style.width=(width) +"px"; preview.style.height=(height) +"px"; if (!isSvg) { var doc=this.ubidoc.doc; var pageobj=doc.pages.GetAt(page - 1); if (pageobj) { var objWidth=0; var objHeight=0; var objLeft=0; var objTop=0; if (pageobj.width > 0) { objWidth=pageobj.width; objHeight=pageobj.height; objLeft=pageobj.left; objTop=pageobj.top; } else { objWidth=doc.docprop.width; objHeight=doc.docprop.height; objLeft=doc.docprop.marginleft; objTop=doc.docprop.margintop; } if (objWidth != this.pageWidth || objHeight != this.pageWidth) { if (scale == "PageWidth") { ds=(frameWidth-framemargin) / (objWidth / baseScale); var height=objHeight / baseScale * ds; if ((height+framemargin) > frameHeight && (page == 1 || _ubi_strToBool(this.params.scrollpage) == false)) { if (__ubi_isIE && __ubi_ieVersion < 8) { frameWidth=frame.clientWidth - 17; } else { preview.style.height=(height) +"px"; preview.style.display=""; frameWidth=frame.clientWidth; } frameWidth=frame.clientWidth; ds=(frameWidth-framemargin) / (objWidth / baseScale); this.ds=ds; } } else if (scale == "WholePage") { ds=Math.min((frameHeight-framemargin) / (objHeight / baseScale), (frameWidth-framemargin) / (objWidth / baseScale)); this.ds=ds; } preview.style.width=(objWidth / baseScale * ds) +"px"; preview.style.height=(objHeight / baseScale * ds) +"px"; } var previewPage=document.createElement("div"); previewPage.id=this.vid + "_previewpage_"+ page; var objRight=doc.docprop.marginright; var objBottom=doc.docprop.marginbottom; previewPage.style.width=(Math.round((objWidth-objLeft-objRight)*ds)+1) + "px"; previewPage.style.marginLeft=Math.round(objLeft*ds) + "px"; previewPage.style.marginTop=Math.round(objTop*ds) + "px"; previewPage.style.position="relative"; if (pageobj.bgcolor != "") { previewPage.style.backgroundColor="#" + pageobj.bgcolor; } if (pageobj.iscusom) { previewPage.style.height="auto"; preview.divPreview.style.height="auto"; } else { previewPage.style.height=(Math.round((objHeight-objTop-objBottom)*ds)+1) +"px"; } preview.innerHTML=""; preview.appendChild(previewPage); this.ubidoc.Draw(previewPage, page, ds); } } } preview.style.display=""; }, _drawPageStream : function(page) { this._requestReportPage(page); var pages=[page-1]; if (this._scrollPageCount > 1) { for (var i=1; i < this._scrollPageCount; i++) { pages.push(page+i); } } else { pages.push(page+1); } var v=this; for (var i=0; i 0 && pages[i] <= this.totalPage) { var streampage=pages[i]; v._requestReportPage(streampage); } } }, _drawRemainPages : function() { if (_ubi_strToBool(this.params.scrollpage) && this._scrollPageCount == -1) { var page_cnt=-1; var pageObj=document.getElementById(this.vid + "_preview_1"); if (pageObj) { var frame=document.getElementById(this.vid+"_previewframe"); var frameHeight=frame.clientHeight; var pageHeight=parseInt(pageObj.style.height); var pageGap=parseInt(this.styles.pagegap); page_cnt=frameHeight / (pageHeight + pageGap); this._scrollPageCount=page_cnt; } } if (this.totalPage > 1) { var preview=null; for (var i=2; i<=this.totalPage; i++) { preview=document.getElementById(this.vid + "_preview_"+ i); if (!preview) { preview=this._createPreview(i); preview.style.width=this.pageWidth; preview.style.height=this.pageHeight; this._drawPage(preview, i); preview.style.display=""; if (this._scrollPageCount > -1 && i <= Math.round(this._scrollPageCount)) { this._requestReportPage(i); } } } } }, _movePage : function(page) { if (_ubi_strToBool(this.params.issvg) || _ubi_strToBool(this.params.scrollpage)) { var preview=document.getElementById(this.vid + "_preview_"+ page); if (preview) { if (page == 1) this.divPreviewFrame.scrollTop=preview.offsetTop - parseInt(this.styles.margin); else this.divPreviewFrame.scrollTop=preview.offsetTop - parseInt(this.styles.pagegap); } } else { this.divPreviewFrame.innerHTML=""; var preview=this._createPreview(page); if (this.ubidoc.doc.pages.GetAt(parseInt(page)-1) == undefined) { this._drawPage(preview, page); this._requestReportPage(page); } else { this._drawPage(preview, page); } } }, _changeScale : function() { if (this.totalPage < 1) return; if (_ubi_strToBool(this.params.issvg) == false) this.divPreviewFrame.innerHTML=""; if (_ubi_strToBool(this.params.scrollpage)) { for (var i=1; i<=this.totalPage; i++) { var preview=null; if (_ubi_strToBool(this.params.issvg) == false) { preview=this._createPreview(i); } else { preview=document.getElementById(this.vid + "_preview_"+ i); } if (preview) this._drawPage(preview, i); } if (_ubi_strToBool(this.params.isStreaming)) { var pagePos=0; var frameHeight=this.divPreviewFrame.clientHeight; for (var i=1; i<=this.totalPage; i++) { pagePos=document.getElementById(this.vid+"_preview_"+i).getBoundingClientRect().top; if(pagePos > 0 && pagePos < frameHeight) { this._requestReportPage(i); } } } if (_ubi_strToBool(this.params.issvg)) { if (!__ubi_isIE) { var tempObj=document.createElement("div"); tempObj.innerHTML=this.divPreviewFrame.innerHTML; this.divPreviewFrame.innerHTML=""; this.divPreviewFrame.innerHTML=tempObj.innerHTML; tempObj.innerHTML=""; tempObj=null; } } } else { var preview=this._createPreview(this.toolbar.page); this._drawPage(preview, this.toolbar.page); } }, callUrl : function(strUrl, callback) { function callReport(viewer) { var params=_ubi_clone(viewer.params); params.arg=viewer._getArguments(); _ubi_ajax({ type: "POST", datatype: "text", timeout: params.timeout, url: strUrl, reqdata: params, exportseq: "", returnmsg: "", onSuccess: function(msg) { this.returnmsg=msg; }, onComplete: function() { viewer._jobEnd(); if (callback) { try{ callback(this.returnmsg); } catch(e){} } }, onError: function(msg) { viewer._showErrorDialog("", msg); } }); }; if (strUrl == undefined || strUrl == null || strUrl == "") { return; } this._jobStart(); callReport(this, callback); }, showReport : function(callback) { function createControl(xml, viewer) { viewer.divPreviewFrame.innerHTML=""; var preview=viewer._createPreview(1); if (_ubi_strToBool(viewer.params.issvg)) { preview.innerHTML=decodeURIComponent(xml); preview.setAttribute("isloaded", "true"); viewer._drawPage(preview, 1); } else { var doc=UbiDoc.CreateInstance(xml, true); if (_ubi_strToBool(viewer.params.iswa)) doc.isWA=true; else doc.isWA=false; if(_ubi_strToBool(doc.isEnableNoPage) == false || _ubi_strToBool(viewer.params.usepluginsave)) { viewer.toolbar.enableButton("SaveExcelBase", false); } else { viewer.toolbar.enableButton("SaveExcelBase", true); } if (viewer.params.runtimedata == "") { viewer.isEnableNoPage=_ubi_strToBool(doc.isEnableNoPage); } else { viewer.isEnableNoPage=false; } viewer.ubidoc=new UbiDocument(doc, viewer.vid, viewer.params.jrffile, viewer.params.key, viewer.params.resid, viewer.params.ubiserverurl, viewer.params.exportseq); viewer.params.serviceid=viewer.ubidoc.doc.serviceid; viewer.totalPage=doc.pagecount; viewer.pageWidth=doc.docprop.width; viewer.pageHeight=doc.docprop.height; viewer.pageOrientation=doc.docprop.orientation; viewer._drawPage(preview, 1); } viewer.toolbar.setCurrPage(1); if (viewer.totalPage > 0 && viewer._isMultiDocument && _ubi_strToBool(viewer.params.isStreaming)) { viewer.toolbar.setTotalPage(viewer.totalPage +"+"); } else { viewer.toolbar.setTotalPage(viewer.totalPage); } if (_ubi_strToBool(viewer.params.issvg) || _ubi_strToBool(viewer.params.scrollpage)) { setTimeout(function(){ viewer._drawRemainPages(); }, 10); } }; function requestReport(viewer) { var isError=false; var reqDatatype="xml"; var params=_ubi_clone(viewer.params); params.arg=viewer._getArguments(); params.streamdata=viewer._getDatasets(); if (_ubi_strToBool(params.issvg)) { reqDatatype="text"; } _ubi_ajax({ type: "POST", datatype: reqDatatype, timeout: params.timeout, url: params.ubiserverurl, reqdata: params, exportseq: "", onSuccess: function(xml) { viewer.serviceValid=true; if (xml == null) { viewer._showErrorDialog("", _ubi_getMessage(viewer.params.language, "CreateErrMsg")); isError=true; } else { createControl(xml, viewer); viewer.exportSeq=this.exportseq; viewer.params.exportseq=this.exportseq; } }, onComplete: function() { viewer._jobEnd(); if (_ubi_strToBool(viewer.params.isStreaming) && viewer.totalPage > 0) { viewer._showStatusBar(_ubi_getMessage(viewer.params.language, "StreamingMsg")); } if (_ubi_strToBool(viewer.params.isStreaming) && viewer.serviceValid) { setTimeout(function(){ viewer._receiveTotalPage(callback); }, 100); } var ubiserverurl=viewer.params.ubiserverurl; ubiserverurl=ubiserverurl.toUpperCase(); if (ubiserverurl.indexOf("HTTP") != 0) { ubiserverurl=self.location.protocol +"//"+ self.location.host + viewer.params.ubiserverurl; } else { ubiserverurl=viewer.params.ubiserverurl; } viewer.retrieveUrfUrl=ubiserverurl + "?cHJvY2lk=GATEWAY" + "&key=" + viewer.params.key + "&resid=" + viewer.params.resid + "&jrffile=" + viewer.params.jrffile + "&exportseq=" + viewer.exportSeq + "&isStreaming=" + viewer.params.isStreaming + "&serviceid=" + viewer.params.serviceid + "&reporttitle=" + viewer.params.reporttitle + "&reqtype="+__ubi_EXPORT_URF; if( _ubi_strToBool(viewer.params.isStreaming) == false && viewer.params.reqtype == "0" ) { if (callback) { try{ callback(); } catch(e){} } } }, onError: function(msg) { viewer.serviceValid=false; if( msg.indexOf("ER0") == -1 ) { msg="ER9999#An unknown error occurred."; viewer._showErrorDialog(_ubi_getMessage(viewer.params.language, "UnknownErrMsg"), msg); return; } else { msg=msg.split("#")[0] + " : " + msg.split("#")[1]; viewer._showErrorDialog("", msg); } } }); }; this._isReceiveTotalpage=false; if (this.params.scale != this.toolbar.getCurrScale()) { this.toolbar.setCurrScale(this.params.scale); } if ( (this.params.toolbar == false && this.toolbarHeight != 0) || (this.params.toolbar == true && this.toolbarHeight == 0) ) { this.setToolbar(this.params.toolbar); } if (_ubi_strToBool(this.params.isStreaming) && ((_ubi_strToBool(this.params.ismultireport) && _ubi_strToInt(this.params.multicount) > 1) || this.params.jrffile.indexOf(",") > 0)) { this._isMultiDocument=true; } else { this._isMultiDocument=false; } this.exportSeq=-1; this.params.reqtype=__ubi_URF; var d=new Date(); this.params.exportseq=d.getTime(); this._jobStart(); requestReport(this, callback); }, _requestReportPage: function(page, isprint, callback) { if (!isprint || isprint == undefined) isprint=false; function createControl(xml, viewer, isprint, callback) { if (_ubi_strToBool(viewer.params.issvg)) { var preview=document.getElementById(viewer.vid + "_preview_"+ page); if (preview) { preview.innerHTML=decodeURIComponent(xml); preview.setAttribute("isloaded", "true"); viewer._drawPage(preview, page); viewer._changeTotalPage(); } } else { var doc=UbiDoc.CreateInstance(xml, false); var viewerDoc=viewer.ubidoc.doc; for ( var i=0; i < doc.colors.GetCount(); i++){ var key=doc.colors.GetAt(i); if (viewerDoc.colors.FindIndex(key) == -1) { viewerDoc.colors.SetAt(key, doc.colors.GetValue(i)); } } for ( var i=0; i < doc.fonts.GetCount(); i++){ var key=doc.fonts.GetAt(i); if (viewerDoc.fonts.FindIndex(key) == -1) { viewerDoc.fonts.SetAt(key, doc.fonts.GetValue(i)); } } for ( var i=0; i < doc.borders.GetCount(); i++){ var key=doc.borders.GetAt(i); if (viewerDoc.borders.FindIndex(key) == -1) { viewerDoc.borders.SetAt(key, doc.borders.GetValue(i)); } } for ( var i=0; i < doc.lines.GetCount(); i++){ var key=doc.lines.GetAt(i); if (viewerDoc.lines.FindIndex(key) == -1) { viewerDoc.lines.SetAt(key, doc.lines.GetValue(i)); } } for ( var i=0; i < doc.objects.GetCount(); i++){ var key=doc.objects.GetAt(i); if (viewerDoc.objects.FindIndex(key) == -1) { viewerDoc.objects.SetAt(key, doc.objects.GetValue(i)); } } viewerDoc.pages.SetAt(page-1, doc.pages.GetAt(0)); if (doc.pages.GetAt(0) != undefined) { var preview=document.getElementById(viewer.vid + "_preview_"+ page); if (preview) { viewer._drawPage(preview, page); viewer._changeTotalPage(); } } } if (callback) callback(); }; function requestReport(viewer, page, isprint, callback) { var reqDatatype="xml"; if (_ubi_strToBool(viewer.params.issvg)) { reqDatatype="text"; } var reqparams={ cHJvY2lk: viewer.params.cHJvY2lk, reqtype: __ubi_PAGE + "#"+ page, key: viewer.params.key || "", ubiserverurl: viewer.params.ubiserverurl || "", timeout: viewer.params.timeout || "60000", jrffile: viewer.params.jrffile || "", resid: viewer.params.resid || "", exportseq: viewer.exportSeq || "", userHeader: viewer.params.userHeader || "", issvg: viewer.params.issvg || "false", serviceid : viewer.params.serviceid }; _ubi_ajax({ type: "POST", datatype: reqDatatype, timeout: viewer.params.timeout, url: viewer.params.ubiserverurl, reqdata: reqparams, onSuccess: function(xml) { viewer.serviceValid=true; if (xml == null) { viewer._showErrorDialog("", _ubi_getMessage(viewer.params.language, "CompleteMsg")); } else { createControl(xml, viewer, isprint, callback); } }, onComplete: function() { }, onError: function(msg) { viewer.serviceValid=false; if( msg.indexOf("ER0") == -1 ) { msg="ER9999#An unknown error occurred."; viewer._showErrorDialog(_ubi_getMessage(viewer.params.language, "UnknownErrMsg"), msg); return; } else { msg=msg.split("#")[0] + " : " + msg.split("#")[1]; viewer._showErrorDialog("", msg); } } }); }; var isLoadedPage=true; if (_ubi_strToBool(this.params.issvg)) { var preview=document.getElementById(this.vid + "_preview_"+ page); if (preview) { var isloaded=preview.getAttribute("isloaded"); if (isloaded == undefined || isloaded == "false") { isLoadedPage=false; requestReport(this, page, isprint, callback); } } } else { if (this.ubidoc.doc.pages.GetAt(parseInt(page)-1) == undefined) { isLoadedPage=false; var viewer=this; setTimeout(function(){requestReport(viewer, page, isprint, callback);},100); } } if (isLoadedPage && callback) { callback(); } }, _receiveTotalPage: function(callback) { var viewer=this; var params=_ubi_clone(viewer.params); params.arg=viewer._getArguments(); params.reqtype=__ubi_TOTAL_PAGE; _ubi_ajax({ type: "POST", datatype: "text", timeout: params.timeout, url: params.ubiserverurl, reqdata: params, onSuccess: function(text) { viewer.serviceValid=true; }, onComplete: function() { viewer._changeTotalPage(); }, onError: function(msg) { viewer.serviceValid=false; if( msg.indexOf("ER0") == -1 ) { msg="ER9999#An unknown error occurred."; viewer._showErrorDialog(_ubi_getMessage(viewer.params.language, "UnknownErrMsg"), msg); return; } else { msg=msg.split("#")[0] + " : " + msg.split("#")[1]; viewer._showErrorDialog("", msg); } }, onStatus: function(status) { if (!status || status.length < 2) { return; } var errMsg=""; var index=0; if( (index=status.indexOf("ER0")) > -1 ) { errMsg=status.substring(index); status=status.substring(0,index); } var pos=status.lastIndexOf("^"); if (pos >= 0) { var msg=status.substring(pos+1); if (!_ubi_lowerIE9()) { try { msg=msg.trim(); } catch (e) {} } var arr=msg.split("#"); if (arr.length == 3) { if (viewer._isMultiDocument) { var preTotalPage=viewer.totalPage; if (arr[1] == '0') { viewer.totalPage=parseInt(arr[0]); viewer.toolbar.setTotalPage(arr[0]); viewer._isReceiveTotalpage=true; var ismultipaper=parseInt(arr[2]); if (ismultipaper == 1) { viewer._isMultiPaper=true; } else { viewer._isMultiPaper=false; } viewer._changeTotalPage(); viewer.toolbar.setStatus(); viewer._setStatusBar(_ubi_getMessage(viewer.params.language, "CompleteMsg"), ''); setTimeout(function(){viewer._closeStatusBar();},3000); if (callback) { try{ callback(); } catch(e){} } } else { viewer.totalPage=parseInt(arr[0]); viewer.toolbar.setTotalPage(arr[0] +"+"); viewer._isReceiveTotalpage=false; viewer._setStatusBar(_ubi_getMessage(viewer.params.language, "StreamingMsg"), ' ' + arr[0] + _ubi_getMessage(viewer.params.language, "StreamingMsg2")); } if (_ubi_strToBool(viewer.params.scrollpage)) { for (var i=preTotalPage+1; i<=viewer.totalPage; i++) { if (!document.getElementById(viewer.vid + "_preview_"+ i)) { var preview=viewer._createPreview(i); viewer._drawPage(preview, i); if (viewer._scrollPageCount > -1 && i <= Math.round(viewer._scrollPageCount)) { viewer._requestReportPage(i); } } } } } else { if (arr[1] == '0') { viewer._isReceiveTotalpage=true; viewer.toolbar.setStatus(); viewer._setStatusBar(_ubi_getMessage(viewer.params.language, "CompleteMsg"), ''); setTimeout(function(){viewer._closeStatusBar();},3000); if (callback) { try{ callback(); } catch(e){} } } else { viewer._isReceiveTotalpage=false; if (viewer.params.language == 'ko') { viewer._setStatusBar(_ubi_getMessage(viewer.params.language, "StreamingMsg"), viewer.totalPage + _ubi_getMessage(viewer.params.language, "StreamingMsg3") + arr[0] + _ubi_getMessage(viewer.params.language, "StreamingMsg2")); } else { viewer._setStatusBar(_ubi_getMessage(viewer.params.language, "StreamingMsg"), arr[0] + ' of ' + viewer.totalPage + _ubi_getMessage(viewer.params.language, "StreamingMsg2")); } } } } } else { if( status.indexOf("ER0") == 0 ) { viewer._isReceiveTotalpage=false; viewer._setStatusBar(_ubi_getMessage(viewer.params.language, "TotalpageErrMsg"), ''); setTimeout(function(){viewer._closeStatusBar();},3000); } } if( errMsg != '' ) { viewer._showErrorDialog(_ubi_getMessage(viewer.params.language, "UnknownErrMsg"), errMsg); viewer._isReceiveTotalpage=false; viewer._setStatusBar(_ubi_getMessage(viewer.params.language, "TotalpageErrMsg"), ''); setTimeout(function(){viewer._closeStatusBar();},3000); return; } } }); }, _changeTotalPage : function() { if (this._isReceiveTotalpage) { if (_ubi_strToBool(this.params.issvg)) { for(var k=this.totalPage; k > 0; k--) { var preview=document.getElementById(this.vid + "_preview_"+ k); if (preview) { var str=preview.innerHTML; str=str.replace("^totalpage^", ""+this.totalPage); preview.innerHTML=str; } } } else { for(var k=this.ubidoc.doc.totalpageNodes.length-1; k>=0; k--) { var node=this.ubidoc.doc.totalpageNodes[k]; var item=this.ubidoc.doc.totalpageItems[k]; this.ubidoc.doc.totalpageNodes.pop(node); this.ubidoc.doc.totalpageItems.pop(node); var str=""; if (_ubi_lowerIE9()) { str=node.nodeValue; } else { str=node.textContent; } str=str.replace("^totalpage^", ""+this.totalPage); if (_ubi_lowerIE9()) { node.nodeValue=str; } else { node.textContent=str; } str=item.value; str=str.replace("^totalpage^", ""+this.totalPage); item.value=str; } } } }, _scrollUpdate : function() { if (_ubi_strToBool(this.params.scrollpage)) { var pageHeight=this.divPreviewFrame.clientHeight; var pageTop=this.divPreviewFrame.getBoundingClientRect().top; var pageNum=0; var pagePos=0; for(var k=1; k<=this.totalPage; k++) { pagePos=document.getElementById(this.vid+"_preview_"+k).getBoundingClientRect().top; if(pagePos > 0) break; } if(pageTop+pageHeight/2 < pagePos) { pageNum=k-1; } else { pageNum=Math.min(this.totalPage,k); } this.toolbar.setCurrPage(pageNum); this._drawPageStream(pageNum); } }, _printPDF : function(isPrintSet) { if (!isPrintSet || isPrintSet == undefined) isPrintSet=false; if (_ubi_strToBool(this.params.isredbc) && (!_ubi_strToBool(this.params.useAdobeReader) && __ubi_isIE)) { this._exportReport(__ubi_EXPORT_PDF); return; } if (__ubi_isFF || __ubi_isSafari || __ubi_isEdge || (__ubi_isChrome && this.params.password != "")) { var obj=document.getElementById(this.vid +"Popup_PdfDownLoad_Message"); if (obj) { obj.style.display=""; } return; } var viewer=this; var params=_ubi_clone(viewer.params); params.arg=viewer._getArguments(); if (params.language == 'ko') { viewer._showProgress("\uc778\uc1c4 \uc900\ube44 \uc911\uc785\ub2c8\ub2e4."); } else { viewer._showProgress("Please wait while the file is generated for printing."); } params.reqtype=__ubi_EXPORT_JOB; params.reqsubtype=__ubi_EXPORT_PDF; _ubi_ajax({ type: "POST", datatype: "text", timeout: params.timeout, url: params.ubiserverurl, reqdata: params, flag: true, filename: "", onSuccess: function(xml) { this.flag=true; if (this.filename == "" || this.filename == undefined) { var pos=status.lastIndexOf("^"); if (pos >= 0) { var msg=status.substring(pos+1); if (!_ubi_lowerIE9()) { try { msg=msg.trim(); } catch (e) {} } var arr=msg.split("#"); if (arr[0] == "filename") this.filename=arr[1]; } } }, onComplete: function() { viewer._printEnd(this.flag, this.filename, isPrintSet); }, onError: function(msg) { this.flag=false; if( msg.indexOf("ER0") == -1 ) { msg="ER9999#An unknown error occurred."; viewer._showErrorDialog(_ubi_getMessage(viewer.params.language, "UnknownErrMsg"), msg); return; } else { msg=msg.split("#")[0] + " : " + msg.split("#")[1]; viewer._showErrorDialog("", msg); } }, onStatus: function(status) { var pos=status.lastIndexOf("^"); if (pos >= 0) { var msg=status.substring(pos+1); if (!_ubi_lowerIE9()) { try { msg=msg.trim(); } catch (e) {} } var arr=msg.split("#"); if (arr[0] == "page") { if (viewer.params.language == 'ko') { viewer._setProgress("\uc778\uc1c4 \uc900\ube44 \uc911\uc785\ub2c8\ub2e4.", arr[1], viewer.totalPage); } else { viewer._setProgress("Please wait while the file is generated for printing.", arr[1], viewer.totalPage); } } else if (arr[0] == "info") { viewer._setProgress(arr[1], null); } else if (arr[0] == "filename") { this.filename=arr[1]; } } } }); }, _printEnd : function(flag, filename, isPrintSet) { this._closeProgress(); var pdfobj=null; var divPrint=document.getElementById(this.vid + "_print"); if (!divPrint) { divPrint=document.createElement("div"); divPrint.id=this.vid + "_print"; this.divMain.appendChild(divPrint); } var isAdobePrint=false; if( __ubi_isIE) { if (_ubi_strToBool(this.params.useAdobeReader)) { if( _ubi_checkPdfReader() ) { pdfobj=document.createElement("object"); pdfobj.setAttribute('id', this.vid+'UbiPdfDoc'); pdfobj.setAttribute('classid', 'CLSID:CA8A9780-280D-11CF-A24D-444553540000'); pdfobj.setAttribute('type', 'application/pdf'); pdfobj.style.position="absolute"; pdfobj.style.top="0px"; pdfobj.style.width="0px"; pdfobj.style.height="0px"; divPrint.appendChild(pdfobj); try { pdfVersion=pdfobj.getVersions(); pdfVersion=pdfVersion.substring(pdfVersion.indexOf('=')+1, pdfVersion.indexOf('.')); if (((__ubi_ieVersion > 10) && parseInt(pdfVersion) < 10) || parseInt(pdfVersion) <= 6) { isAdobePrint=false; } else { isAdobePrint=true; } } catch(e){ isAdobePrint=false; } } else { isAdobePrint=false; } } else { isAdobePrint=false; } if( isAdobePrint ) { var userparamUrl=""; if (this.events.getUserParams) { var userparams=this.events.getUserParams(); if (userparams != undefined) { for ( var i=0; i < userparams.length; i+=2) { var str="&" + userparams[i] + "=" + userparams[i+1]; userparamUrl += str; } } } var url=""; var ubiserverurl=this.params.ubiserverurl; ubiserverurl=ubiserverurl.toUpperCase(); if (ubiserverurl.indexOf("HTTP") != 0) { ubiserverurl=self.location.protocol +"//"+ self.location.host + this.params.ubiserverurl; } else { ubiserverurl=this.params.ubiserverurl; } url=ubiserverurl + "?cHJvY2lk=GATEWAY&reqtype=" + __ubi_EXPORT_RESULT + "&jrffile=" + this.params.jrffile + "&resid=" + this.params.resid + "&key=" + this.params.key + "&arg=&pagenum=&imageid=&exportseq=" + this.exportSeq + "&isvoiceye=" + this.params.isvoiceye + "&isStreaming=" + this.params.isStreaming + "&exportfilename=" + filename + "&reqsubtype=2" + "&serviceid=" + this.params.serviceid; if (userparamUrl != "") { url += userparamUrl; } pdfobj.src=url; if (isPrintSet) { pdfobj.setCurrentPage(this.page); pdfobj.printWithDialog(); } else { pdfobj.printAll(); } if (this.events.printEnd) { this._isPrintPDF=true; this.events.printEnd(true); } } else { if (this.ieAdobeReaderInfoPopup) { this.toolbar.makePrintPdfErrorMessage(flag, filename); var obj=document.getElementById(this.vid +"Popup_PdfError_Message"); if (obj) { obj.style.display=""; } } else { this._isPrintPDF=true; this._exportEnd(flag, filename); } } } else { if (__ubi_isChrome || __ubi_isOpera || __ubi_isWhale) { var framename=this.vid + '_ubipdf'; var formname=this.vid + '_pdfForm'; var events=this.events; var postUrl=[]; postUrl.push(""); postUrl.push("
    "); var inputArray=[]; inputArray.push("\n"); inputArray.push("\n"); inputArray.push("\n"); inputArray.push("\n"); inputArray.push("\n"); inputArray.push("\n"); inputArray.push("\n"); inputArray.push("\n"); inputArray.push("\n"); inputArray.push("\n"); inputArray.push("\n"); if (this.events.getUserParams) { var userparams=this.events.getUserParams(); if (userparams != undefined) { for ( var i=0; i < userparams.length; i+=2) { var str=""; inputArray.push(str); } } } postUrl.push(inputArray.join('')); postUrl.push("
    "); divPrint.innerHTML=postUrl.join(); if (document.forms[formname] == undefined) { divPrint.innerHTML=""; var formobj=document.createElement("form"); formobj.method='post'; formobj.name=formname; formobj.action=this.params.ubiserverurl + "#toolbar=1"; formobj.target=framename; divPrint.appendChild(formobj); formobj.innerHTML=inputArray.join(""); } document.forms[formname].submit(); var ifr=document.getElementById(framename); var params=this.params; var intervalCnt=0; self.interval=setInterval(function() { var isComplete=false; try { intervalCnt++; if (document.getElementById(framename).contentWindow.location.href != 'about:blank' && ifr.contentDocument.readyState === 'complete') { isComplete=true; clearInterval(self.interval); document.getElementById(framename).focus(); document.getElementById(framename).contentWindow.print(); if (events.printEnd) { events.printEnd(true); } } if (intervalCnt >= 30) { clearInterval(self.interval); var w=window.open('', 'Ubi_PDF','menubar=no,toolbar=no,status=no,scrollbars=no'); divPrint.innerHTML=""; var formobj=document.createElement("form"); formobj.name='pdfForm'; formobj.method='post'; formobj.action=params.ubiserverurl + '#toolbar=1'; formobj.target='Ubi_PDF'; formobj.innerHTML=inputArray.join(''); divPrint.appendChild(formobj); document.pdfForm.submit(); if (events.printEnd) { events.printEnd(true); } } } catch (e) { clearInterval(self.interval); var w=window.open('', 'Ubi_PDF','menubar=no,toolbar=no,status=no,scrollbars=no'); divPrint.innerHTML=""; var formobj=document.createElement("form"); formobj.name='pdfForm'; formobj.method='post'; formobj.action=params.ubiserverurl + '#toolbar=1'; formobj.target='Ubi_PDF'; formobj.innerHTML=inputArray.join(''); divPrint.appendChild(formobj); document.pdfForm.submit(); if (events.printEnd) { events.printEnd(true); } } }, 100); } else if (__ubi_isMobile) { var w=window.open('', 'Ubi_PDF','menubar=no,toolbar=no,status=no,scrollbars=no'); var postUrl="
    "; postUrl += ""; postUrl += ""; postUrl += ""; postUrl += ""; postUrl += ""; postUrl += ""; postUrl += ""; postUrl += ""; postUrl += ""; if (this.events.getUserParams) { var userparams=this.events.getUserParams(); if (userparams != undefined) { for ( var i=0; i < userparams.length; i+=2) { var str=""; postUrl += str; } } } postUrl += "
    "; divPrint.innerHTML=postUrl; document.pdfForm.submit(); if (this.events.printEnd) { this.events.printEnd(true); } } else { this._isPrintPDF=true; this._exportEnd(flag, filename); } } }, _printRetrieveAll : function(pagefrom, pageto) { var page=pagefrom - 1; var viewer=this; this._jobStart(); retrievePage(); function retrievePage() { if (page < pageto) { page++; viewer._requestReportPage(page, true, retrievePage); } else { viewer._printHTML(pagefrom, pageto); } }; }, _printHTML : function(pagefrom, pageto) { this._jobStart(); var divPrint=document.createElement("div"); divPrint.style.display="none"; this.divMain.appendChild(divPrint); var issvg=_ubi_strToBool(this.params.issvg); if (!issvg) { var doc=this.ubidoc.doc; var ds=1.2; var pagewidth=Math.round(doc.docprop.width*ds - doc.docprop.marginleft*ds - doc.docprop.marginright*ds); var pageheight=Math.round(doc.docprop.height*ds - doc.docprop.margintop*ds - doc.docprop.marginbottom*ds); for( var i=pagefrom; i <= pageto; i++ ) { var divPreviewPage=document.createElement("div"); divPreviewPage.style.position="relative"; divPreviewPage.style.width=pagewidth +"px"; divPreviewPage.style.height=pageheight +"px"; divPreviewPage.style.margin="0px"; if (i > pagefrom && i > 1) { divPreviewPage.style.pageBreakBefore="always"; } divPrint.appendChild(divPreviewPage); this.ubidoc.Draw(divPreviewPage, i, ds, true); } } var win=window.open("about:blank", "UbiReportPrint", "width=800px, height=600px,menubar=no,toolbar=no,status=no,scrollbars=yes"); var viewer=this; setTimeout(function() { _printHTMLWrite(viewer, win, ds); }, 500); function _printHTMLWrite(viewer, win, ds) { var marginLeft=0; var marginTop=0; function convertPixelToMm(pixel) { return pixel * (25.4 / 72) / 10; }; var doc=null; var clist=null; if (!issvg) { doc=viewer.ubidoc.doc; clist=viewer.ubidoc.canvaslist; marginLeft=convertPixelToMm(doc.docprop.marginleft); marginTop=convertPixelToMm(doc.docprop.margintop); } var contents=[]; contents.push("\n"); contents.push(""); contents.push("Print"); contents.push("\n"); if (!issvg && clist.length > 0) { contents.push("\n"); } contents.push("\n"); contents.push("\n"); if(__ubi_isIE && viewer.pageOrientation.toLowerCase()=="landscape" && _ubi_strToBool(viewer.params.printIEobj) == false){ contents.push(""); } else { contents.push(""); } win.document.open(); win.document.write(contents.join("")); if (issvg) { var preview=null; for (var i=1; i<=viewer.totalPage; i++) { preview=document.getElementById(viewer.vid + "_preview_"+ i); if (preview) { win.document.write(preview.innerHTML); if (i > 1 && i< viewer.totalPage) { win.document.write("
    "); } } } } else { win.document.write(divPrint.innerHTML); } if (!issvg && clist.length > 0) { contents="\n"; win.document.write(contents); } win.document.write(""); win.focus(); win.document.close(); viewer.divMain.removeChild(divPrint); divPrint=null; viewer.ubidoc.canvaslist=new Array(); viewer._jobEnd(); if (viewer.events.printEnd) { viewer.events.printEnd(true); } }; }, _exportReport : function(type) { var dlgFlag=false; if (_ubi_strToBool(this.params.usepluginsave) || type == __ubi_EXPORT_IMAGE || (type != __ubi_EXPORT_EXCEL2 && _ubi_strToBool(this.params.usepluginsave) == false && parseInt(this.exportsetmode) != 1)) { dlgFlag=true; } if (dlgFlag == true) { var obj=document.getElementById(this.vid +"Popup_ExportDialog"); var iframeobj=document.getElementById(this.vid +"Popup_ExportDialogFrame"); if (obj && iframeobj) { var exportTypeObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_ExportType"); var fileComboObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_FileType"); var saveTypeObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_SaveType"); var exportRangeObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_ExportRange"); var exportmode=parseInt(this.exportsetmode); if (exportmode != 1) { if (exportmode == 2) { var currObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_Current"); currObj.checked='checked'; } else if (exportmode == 3) { var pagesObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_Pages"); pagesObj.checked='checked'; } else { var allObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_All"); allObj.checked='checked'; } var pageFromObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_PageFrom"); var pageToObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_PageTo"); pageFromObj.value='1'; pageToObj.value=this.totalPage; } exportTypeObj.style.display=""; if (type == __ubi_EXPORT_PDF) fileComboObj.selectedIndex='0'; else if (type == __ubi_EXPORT_EXCEL1) fileComboObj.selectedIndex='1'; else if (type == __ubi_EXPORT_EXCEL2) fileComboObj.selectedIndex='2'; else if (type == __ubi_EXPORT_DOCX) fileComboObj.selectedIndex='3'; else if (type == __ubi_EXPORT_PPTX) fileComboObj.selectedIndex='4'; else if (type == __ubi_EXPORT_HML) fileComboObj.selectedIndex='5'; else if (type == __ubi_EXPORT_CELL) fileComboObj.selectedIndex='6'; else if (type == __ubi_EXPORT_IMAGE) fileComboObj.selectedIndex='7'; if (_ubi_strToBool(this.params.usepluginsave)) { saveTypeObj.style.display=""; var pluginSaveObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_Plugin"); pluginSaveObj.checked='checked'; var msgObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_PluginMsg"); if (msgObj) { msgObj.innerHTML=_ubi_getMessage(this.params.language, "SaveFileMsg2"); msgObj.style.display=""; } } else { if (exportmode != 1) { exportRangeObj.style.display=""; } else { exportRangeObj.style.display="none"; } } var imageObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_Image"); if (imageObj) { if (type != __ubi_EXPORT_IMAGE) { imageObj.style.display="none"; } else { imageObj.style.display=""; } var zipMsgObj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_ZipMsg"); if (zipMsgObj) { if (_ubi_strToBool(this.params.usepluginsave)) { zipMsgObj.innerHTML=""; if (type == __ubi_EXPORT_IMAGE) { zipMsgObj.style.borderBottom="1px solid #bdbdbd"; } } else { zipMsgObj.innerHTML=_ubi_getMessage(this.params.language, "ZipFileMsg"); zipMsgObj.style.borderBottom="none"; } } } obj.style.display=""; var tobj=iframeobj.contentWindow.document.getElementById(this.vid + "_ExportDialog_Table"); var iframeheight=tobj.scrollHeight; iframeobj.height=iframeheight + "px"; obj.style.height=iframeheight + "px"; obj.style.marginTop=(-iframeheight/2) + "px"; } } else { this._exportStart(type); } }, _exportStart : function(type) { var upperExt=this.HmlExtension.toUpperCase(); if (upperExt == 'HWP' && type == __ubi_EXPORT_HML) { type=__ubi_EXPORT_HWP; } var viewer=this; var params=_ubi_clone(viewer.params); params.arg=viewer._getArguments(); var exportTotalPage=this.totalPage; if (parseInt(params.exportPageTo) > 0 && parseInt(params.exportPageFrom) > 0) { exportTotalPage=parseInt(params.exportPageTo) - parseInt(params.exportPageFrom) + 1; } if (params.language == 'ko') { viewer._showProgress("\ud30c\uc77c \uc0dd\uc131\uc911\uc785\ub2c8\ub2e4."); } else { viewer._showProgress("Please wait while the file is generated."); } params.reqtype=__ubi_EXPORT_JOB; params.reqsubtype=type; if (type == __ubi_EXPORT_IMAGE) { params.reqimagetype=viewer._exportImageType; } _ubi_ajax({ type: "POST", datatype: "text", timeout: params.timeout, url: params.ubiserverurl, reqdata: params, flag: true, filename: "", onSuccess: function(xml) { this.flag=true; if (this.filename == "" || this.filename == undefined) { var pos=status.lastIndexOf("^"); if (pos >= 0) { var msg=status.substring(pos+1); if (!_ubi_lowerIE9()) { try { msg=msg.trim(); } catch (e) {} } var arr=msg.split("#"); if (arr[0] == "filename") this.filename=arr[1]; } } }, onComplete: function() { viewer._exportEnd(this.flag, this.filename); }, onError: function(msg) { this.flag=false; msg=msg.split("#")[0] + " : " + msg.split("#")[1]; viewer._showErrorDialog("", msg); }, onStatus: function(status) { var pos=status.lastIndexOf("^"); if (pos >= 0) { var msg=status.substring(pos+1); if (!_ubi_lowerIE9()) { try { msg=msg.trim(); } catch (e) {} } var arr=msg.split("#"); if (arr[0] == "page") { if (viewer.params.language == 'ko') { viewer._setProgress(_ubi_getMessage(viewer.params.language, "ExportMsg"), arr[1], exportTotalPage); } else { viewer._setProgress("Please wait while the file is generated.", arr[1], exportTotalPage); } } else if (arr[0] == "info") { viewer._setProgress(arr[1], null); } else if (arr[0] == "filename") { this.filename=arr[1]; } } } }); }, _exportEnd : function(flag, filename) { this._closeProgress(); if (flag && this._isAutoDownload) { var frameObj=document.getElementById(this.vid +"UbiExportFrame"); if (!frameObj) { frameObj=document.createElement("div"); frameObj.style.position="absolute"; frameObj.style.margin="0px"; frameObj.style.padding="0px"; frameObj.style.left="-1px"; frameObj.style.width="1px"; frameObj.style.height="1px"; frameObj.innerHTML= ""; this.divMain.appendChild(frameObj); } var formObj=document.getElementById(this.vid + "UbiExportForm"); if (!formObj) { formObj=document.createElement("form"); formObj.id=this.vid + "UbiExportForm"; formObj.method="POST"; formObj.action=this.params.ubiserverurl; if( __ubi_isMobile ) formObj.target='_blank'; else formObj.target=this.vid +'UbiExportFrame'; } formObj.method='post'; var innerHtml=[]; innerHtml.push(""); innerHtml.push(""); innerHtml.push(""); innerHtml.push(""); innerHtml.push(""); innerHtml.push(""); innerHtml.push(""); innerHtml.push(""); innerHtml.push(""); innerHtml.push(""); innerHtml.push(""); if(this.params.excelPrintPaperSize != "") { innerHtml.push(""); } if(this.params.excelPrintfitWidth != "") { innerHtml.push(""); } if(this.params.excelPrintfitHeight != "") { innerHtml.push(""); } if (this.events.getUserParams) { var userparams=this.events.getUserParams(); if (userparams != undefined) { for ( var i=0; i < userparams.length; i+=2) { var str=""; innerHtml.push(str); } } } formObj.innerHTML=innerHtml.join(""); this.divMain.appendChild(formObj); formObj.submit(); } if (this.events.printEnd && (_ubi_strToBool(this.params.isredbc) || this._isPrintPDF)) { this.events.printEnd(flag); } else { if (this.events.exportEnd) { var exporturl=""; if (this._isAutoDownload == false && filename != undefined && filename != "") { exporturl=this.params.ubiserverurl + "?cHJvY2lk=GATEWAY&reqtype="+__ubi_EXPORT_RESULT + "&key=" + this.params.key + "&resid=" + this.params.resid + "&jrffile=" + this.params.jrffile + "&exportfilename=" + filename; } else { var ext=''; switch(this.params.reqsubtype) { case __ubi_EXPORT_IMAGE : ext='.zip'; break; case __ubi_EXPORT_PDF : ext='.pdf'; break; case __ubi_EXPORT_EXCEL1 : case __ubi_EXPORT_EXCEL2 : ext='.xlsx'; break; case __ubi_EXPORT_RTF : ext='.rtf'; break; case __ubi_EXPORT_HWP : ext='.hwp'; break; case __ubi_EXPORT_PPTX : ext='.pptx'; break; case __ubi_EXPORT_HML : ext='.hml'; break; case __ubi_EXPORT_DOCX : ext='.docx'; break; case __ubi_EXPORT_CELL : ext='.cell'; break; } if (this.params.reporttitle != undefined && this.params.reporttitle != "") { exporturl=this.params.reporttitle + ext; } else if (filename != undefined && filename != "") { exporturl=filename; if (this.params.reqsubtype == __ubi_EXPORT_CELL) { exporturl=exporturl.substring(0, exporturl.lastIndexOf('.')) + ext; } } } this.events.exportEnd(flag, exporturl); } } this._isAutoDownload=true; this._exportImageType=""; }, _linkButtonDown : function(filename, args) { if (this.events.linkButtonDown) { this.events.linkButtonDown(filename, args); } }, setArgument : function(key, value) { if (key == '') return; var replaceStr=String.fromCharCode(26) + '#'.charCodeAt(0) + String.fromCharCode(26); try { value=value.replace(/#/g, replaceStr); } catch (e) { } this._arghash.SetAt(key, value); }, _getArguments : function() { var arghash=new UbiMap(); if (this._arghash && this._arghash.GetCount() > 0) { if (this._arghash) { for (i=0; i 0) { var _rs_=String.fromCharCode(30); var _nrs_=String.fromCharCode(28); var datasetinfos=[]; datasetinfos.push("HTMLLOCALDATASET:" + _rs_); for (var i=0; i 0 && this.id.indexOf("UbiToolbarButton_SaveExcel") < 0){ viewer.toolbar.hidePopupExcel(); } if (_ubi_strToBool(viewer.params.iswa)) { _ubi_wafoucus(this); } }; buttonObj.onmouseout=buttonObj.onblur=function() { var disabledflag=(this.disabled == undefined ? true : !this.disabled); if (__ubi_isFF && !disabledflag) { return; } if (_ubi_strToBool(viewer.params.iswa)) { _ubi_wablur(this); } this.style.cursor="default"; this.style.backgroundColor=bgcolor; this.style.borderColor=bgcolor; this.style.borderWidth="1px"; this.style.borderStyle="solid"; if (this.getAttribute("outimage")) this.style.backgroundImage="url('"+ this.getAttribute("imageurl") + this.getAttribute("outimage") +"')"; }; popup.appendChild(buttonObj); this.buttons[id]=buttonObj; i++; if (i == infos.length) break; } var flag=viewer.divMain.contains(popup); if (!flag) { viewer.divMain.appendChild(popup); } return popup; }; this.makePrintPdfMessage=function() { var _browser=''; if (__ubi_isFF) _browser='Firefox'; else if (__ubi_isSafari) _browser='Safari'; else if (__ubi_isEdge) _browser='Edge'; else _browser=''; var chromeflag=false; if (__ubi_isChrome && viewer.params.password != "") { chromeflag=true; } var msg=""; if (chromeflag) { msg=_ubi_getMessage(viewer.params.language, "PdfDownloadChromeMsg"); } else { msg=_ubi_getMessage(viewer.params.language, "PdfDownloadMsg"); msg=msg.replace("^browser^", _browser); } var str=[]; var obj=document.createElement("div"); obj.id=viewer.vid +"Popup_PdfDownLoad_Message"; obj.className="dialog"; obj.style.cssText="display:none; position: absolute; z-index: 999999104; left: 50%; top: 50%; width: 450px; height: 300px; margin-left: -225px; margin-top: -150px;"; str.push("
    "); str.push(_ubi_getMessage(viewer.params.language, "PrintPDFTitle")); str.push("
    "); str.push("
    "); str.push("
    "); str.push("
    "); str.push(msg); str.push("
    "); str.push("
    "); str.push("
    "); str.push(" "); str.push(" "); str.push("
    "); str.push("
    "); obj.innerHTML=str.join(""); viewer.divMain.appendChild(obj); }; this.makePrintPdfErrorMessage=function(flag, filename) { var str=[]; var createflag=false; var obj=document.getElementById(viewer.vid +"Popup_PdfError_Message"); if (obj) { obj.innerHTML=""; } else { createflag=true; obj=document.createElement("div"); } obj.id=viewer.vid +"Popup_PdfError_Message"; obj.className="dialog"; obj.style.cssText="display:none; position: absolute; z-index: 999999104; left: 50%; top: 50%; width: 450px; height: 300px; margin-left: -225px; margin-top: -150px;"; str.push("
    "); str.push(_ubi_getMessage(viewer.params.language, "PrintPDFTitle")); str.push("
    "); str.push("
    "); str.push("
    "); str.push("
    "); str.push(_ubi_getMessage(viewer.params.language, "PdfInstallMsg1") + "
    "); str.push(_ubi_getMessage(viewer.params.language, "PdfInstallMsg3")); str.push("
    "); str.push("
    "); str.push("
    "); str.push(" "); str.push(" "); str.push("
    "); str.push("
    "); obj.innerHTML=str.join(""); if (createflag) { viewer.divMain.appendChild(obj); } }; this.changeExportDialog=function(type) { var iframeobj=document.getElementById(viewer.vid +"Popup_ExportDialogFrame"); if (!iframeobj) { return; } var obj=document.getElementById(viewer.vid + "Popup_ExportDialog"); var tobj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_ExportDialog_Table"); if (obj && tobj) { var imgObj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_ExportDialog_Image"); if (imgObj) { if (type == __ubi_EXPORT_IMAGE) { imgObj.style.display=''; } else { imgObj.style.display='none'; } } var iframeheight=tobj.scrollHeight; iframeobj.height=iframeheight + "px"; obj.style.height=iframeheight + "px"; obj.style.marginTop=(-iframeheight/2) + "px"; } }; this.makeExportDialog=function() { var str=[]; var obj=document.createElement("div"); obj.id=viewer.vid +"Popup_ExportDialog"; obj.className="dialog"; obj.style.cssText="display:none; position: absolute; z-index: 999999104; left: 50%; top: 50%; width: 450px; height: 300px; margin-left: -225px; margin-top: -150px; border: 1px solid #555555;background:#fff;"; str.push("
    "); str.push("
    "); str.push(_ubi_getMessage(viewer.params.language, "SaveDialogTitle")); str.push("
    "); str.push(" "); str.push(" "); str.push("
    "); str.push(" Image " + _ubi_getMessage(viewer.params.language, "ExportOption") + ""); str.push("
    "); str.push(" "); str.push(" "); str.push("
    "); str.push("
    "); str.push(" "); str.push(" "); str.push("
    "); str.push("
    "); str.push(" "); str.push("
    "); str.push("
    "); str.push( _ubi_getMessage(viewer.params.language, "ZipFileMsg")); str.push("
    "); str.push("
    "); str.push(" "); str.push("
    "); str.push(" "); str.push("  "); str.push("
    "); str.push("
    "); var iframeobj=document.createElement('iframe'); iframeobj.id=viewer.vid +"Popup_ExportDialogFrame"; iframeobj.scrolling="no"; iframeobj.style.cssText="width: 100%; margin:0px;border:0 none;"; obj.appendChild(iframeobj); viewer.divMain.appendChild(obj); var html=str.join(""); iframeobj.contentWindow.document.open(); iframeobj.contentWindow.document.write(html); iframeobj.contentWindow.document.body.style.cssText="margin:0px;"; iframeobj.contentWindow.document.close(); }; this.makeAboutBox=function() { var str=[]; var obj=document.createElement("div"); obj.id=viewer.vid +"Popup_AboutBox"; obj.className="dialog"; obj.style.cssText="display:none; position: absolute; z-index: 999999104; left: 50%; top: 50%; width: 450px; height: 300px; margin-left: -225px; margin-top: -150px;"; str[i++]="
    UbiReport
    "; str[i++]="
    "; str[i++]="
    "; str[i++]="
    "; str[i++]="" + _UBI_REPORT_BUILD_NO + "
    This copy is licensed to UbiDecision."; str[i++]="
    "; str[i++]="
    "; str[i++]=" www.ubireport.com"; str[i++]="
    "; str[i++]="
    "; str[i++]="
    "; str[i++]=" "; str[i++]="
    "; str[i++]="
    "; obj.innerHTML=str.join(""); viewer.divMain.appendChild(obj); }; this.makePrintDialog=function() { var msg=""; var msgflag=true; if (__ubi_isFF) msg="PrintHTMLMsg_FF"; else if (__ubi_isChrome || __ubi_isWhale) msg="PrintHTMLMsg_Chrome"; else if (__ubi_isOpera) msg="PrintHTMLMsg_Opera"; else if (__ubi_isEdge) msg="PrintHTMLMsg_Edge"; else if (__ubi_isIE) { msg="PrintHTMLMsg_IE"; if (viewer.params.printIEobj) { msg="PrintHTMLMsg_IEObj"; } } else msgflag=false; var str=[]; var obj=document.createElement("div"); obj.id=viewer.vid +"Popup_PrintDialog"; obj.className="dialog"; obj.style.cssText="display:none; position: absolute; z-index: 999999104; left: 50%; top: 50%; width: 450px; height: 320px; margin-left: -225px; margin-top: -160px; border: 1px solid #555555;background:#fff;"; str.push("
    "); str.push("
    UbiReport
    "); str.push("
    "); if (msgflag) { str.push("
    "); } else { str.push("
    "); } str.push("
    "); str.push(_ubi_getMessage(viewer.params.language, "PrintDlgMent") + "("+ _ubi_getMessage(viewer.params.language, "PrintDlgMaxMent") + viewer.params.printlimit +")"); str.push("
    "); str.push("
    " + _ubi_getMessage(viewer.params.language, "PrintDlgRange") + "
    "); str.push("
    "); str.push(" "); str.push(" "); str.push(" "); str.push("   " + _ubi_getMessage(viewer.params.language, "PrintDlgFrom") + "  "); str.push(" " + _ubi_getMessage(viewer.params.language, "PrintDlgTo") + ""); str.push("
    "); if (msgflag) { str.push("
    "); str.push(_ubi_getMessage(viewer.params.language, msg)); str.push("
    "); } str.push("
    "); str.push(_ubi_getMessage(viewer.params.language, "PrintDlgHMent") + "
    " + _ubi_getMessage(viewer.params.language, "PrintDlgHMent2") + " "); } else { str.push(viewer.params.resource + "/images/printGuide_us.html' target='_blank'>"); } str.push(_ubi_getMessage(viewer.params.language, "PrintDlgLink") + ""); str.push("
    "); str.push("
    "); str.push("
    "); str.push(" "); str.push("  "); str.push("
    "); str.push("
    "); str.push("
    "); var iframeobj=document.createElement('iframe'); iframeobj.id=viewer.vid +"Popup_PrintDialogFrame"; iframeobj.scrolling="no"; iframeobj.style.cssText="width: 100%; margin:0px;border:0 none;"; obj.appendChild(iframeobj); viewer.divMain.appendChild(obj); var html=str.join(""); iframeobj.contentWindow.document.open(); iframeobj.contentWindow.document.write(html); iframeobj.contentWindow.document.body.style.cssText="margin:0px;"; iframeobj.contentWindow.document.close(); }; this.createCombo=function() { if (this.zoomCombo == null) { this.zoomCombo=document.createElement("div"); this.zoomCombo.id=viewer.vid +"UbiToolbarSelect_ZoomList"; this.zoomCombo.style.cssText="display: none; position: absolute; z-index: 999999101; width: 74px; height: 21px; font-family: Dotum, Tahoma, 맑은고딕; font-size: 13px; overflow: auto; border: 0px solid #ccc; margin-top:1px; margin-bottom:1px; background:#5f6064; border:1px solid #ff6600; border-color:#BDBDBD #BDBDBD #BDBDBD #BDBDBD;"; viewer.divMain.appendChild(this.zoomCombo); } if (this.pageCombo == null) { this.pageCombo=document.createElement("div"); this.pageCombo.id=viewer.vid +"UbiToolbarSelect_PageList"; this.pageCombo.style.cssText="display: none; position: absolute; z-index: 999999101; width: 74px; height: 21px; font-family: Dotum, Tahoma, 맑은고딕; font-size: 13px; overflow: auto; border: 0px solid #ccc; margin-top:1px; margin-bottom:1px; background:#5f6064; border:1px solid #ff6600; border-color:#BDBDBD #BDBDBD #BDBDBD #BDBDBD;"; viewer.divMain.appendChild(this.pageCombo); } }; this.showComboBox=function(type) { if (type != "ZoomCombo" && type != "PageCombo" ) return; var xpos=0; var ypos=0; var typeindex=0; var visiblecount=0; var tbodyObj=this.toolbarObj.childNodes; if (tbodyObj) { var trlist=tbodyObj[0].childNodes; if (trlist) { var tdlist=trlist[0].childNodes; for (var i=0; i 0) { visiblecount++; } } } } ypos=(ypos - this.buttons[type].clientHeight)/2 + this.buttons[type].clientHeight + 1; if (__ubi_isIE) { var combotdObj=document.getElementById(viewer.vid +"UbiToolbar_"+ type); if (type == "ZoomCombo" && this.buttons["TotalPageText"] && combotdObj && combotdObj.clientWidth > 0) { if (this.buttons["TotalPageText"].innerText.length == 4) { xpos++; } } if (__ubi_ieVersion < 8) { xpos += visiblecount*2 + 4; ypos += 3; } else { xpos += 2; } } else { xpos += 1; } var viewerObj=document.getElementById(vid); var toolbarObj=document.getElementById(vid + "_toolbar"); var baseHeight=20; var listHeight=0; if (type == "ZoomCombo") { listHeight=Math.min(baseHeight*this.scaleValues.length, baseHeight*15); } else if (type == "PageCombo") { listHeight=Math.min(baseHeight*viewer.totalPage, baseHeight*15); } var viewerHeight=viewerObj.scrollHeight; if (toolbarObj && toolbarObj.style.display != "none") { viewerHeight -= toolbarObj.scrollHeight; } if (listHeight < baseHeight) { listHeight=baseHeight; } else { listHeight=Math.min(listHeight, viewerHeight); } if (type == "ZoomCombo") { this.zoomCombo.style.left=xpos + "px"; this.zoomCombo.style.top=ypos + "px"; this.zoomCombo.style.height=listHeight + "px"; this.zoomCombo.style.display=""; } else if (type == "PageCombo") { this.pageCombo.style.left=xpos + "px"; this.pageCombo.style.top=ypos + "px"; this.pageCombo.style.height=listHeight + "px"; this.pageCombo.style.display=""; } }; this.showPopup=function(type) { var buttonid=""; if (type == "SaveDropMenu") { buttonid="SaveButton"; } else if (type == "PrintDropMenu") { buttonid="PrintButton"; } else { return; } var xpos=0; var visiblecount=0; var tbodyObj=this.toolbarObj.childNodes; if (tbodyObj) { var trlist=tbodyObj[0].childNodes; if (trlist) { var tdlist=trlist[0].childNodes; for (var i=0; i 0) { visiblecount++; } } } } if (__ubi_isIE) { if (__ubi_ieVersion < 8) { xpos += visiblecount*2 + 4; } else { xpos += 2; } } else { xpos += 1; } if (type == "SaveDropMenu") { this.saveList.style.left=0 + "px"; this.saveList.style.display=""; } else if (type == "PrintDropMenu") { this.printList.style.left=xpos + "px"; this.printList.style.display= ""; } }; this.showPopupExcel=function() { if (this.buttons["SaveXls"]) { this.excelList.style.left="130px"; var height=viewer.divToolbar.style.height; if (height.indexOf('px') >= 0) { height=height.substring(0, height.indexOf('px')); } this.excelList.style.top=(parseInt(height) + this.buttons["SaveXls"].offsetTop) +"px"; this.excelList.style.display=""; } }; this.hidePopupExcel=function() { this.excelList.style.display="none"; }; this.isShowPopup=function(type) { if (type == "ZoomCombo") { if (this.zoomCombo.style.display != "none") return true; } else if (type == "PageCombo") { if (this.pageCombo.style.display != "none") return true; } else if (type == "SaveDropMenu") { if (this.saveList.style.display != "none") return true; } else if (type == "PrintDropMenu") { if (this.printList.style.display != "none") return true; } return false; }; this.hidePopupAll=function() { this.zoomCombo.style.display="none"; this.pageCombo.style.display="none"; this.saveList.style.display="none"; this.excelList.style.display="none"; this.printList.style.display="none"; }; this.destroy=function() { _ubi_RemoveAddEvent(document, "click", clicked); }; this.getCurrScale=function() { return this.scaleValues[this.scaleIndex]; }; this.setCurrScale=function(zoom) { var scalevalue="PageWidth"; this.scaleIndex=this.scaleValues.length - 2; var zoomstr=""+zoom; if (zoomstr == "-9998") { zoomstr="PageWidth"; } else if (zoomstr == "-9999") { zoomstr="WholePage"; } var lowerValue=""; var lowerZoomValue=zoomstr.toLowerCase(); for (var i=0; i 0 && page <= viewer.totalPage) { this.setCurrPage(page); viewer._movePage(page); this.setStatus(); } }; this.changeScale=function(scale) { if (viewer.totalPage < 1) return; if (this.scaleValues[this.scaleIndex] != scale) { this.jobStart(); setTimeout(function() { viewer.toolbar.changeScaleJob(scale); },50); } }; this.changeScaleJob=function(scale) { this.setCurrScale(scale); this.setStatus(); viewer._changeScale(); this.jobEnd(); }; this.first=function() { if (viewer.totalPage > 0 && this.page != 1) { var page=1; this.movePage(page); } }; this.previous=function() { if (this.page > 1) { var page=this.page-1; this.movePage(page); } }; this.next=function() { if (this.page < viewer.totalPage) { var page=this.page+1; this.movePage(page); } }; this.last=function() { if (viewer.totalPage > 0 && this.page != viewer.totalPage) { var page=viewer.totalPage; this.movePage(page); } }; this.zoomout=function() { if (this.scaleIndex > 0) { var scale=this.scaleValues[this.scaleIndex-1]; this.changeScale(scale); } }; this.zoomin=function() { if ((this.scaleIndex+1) < this.scaleValues.length) { var scale=this.scaleValues[this.scaleIndex+1]; this.changeScale(scale); } }; this.setscale=function(scale) { var scalenum=scale; if (typeof(scale) != "number") { scalenum=parseInt(scale); } for (var i=0; i= parseInt(limitpage)) { var obj=document.getElementById(viewer.vid +"Popup_PrintDialog"); var iframeobj=document.getElementById(viewer.vid +"Popup_PrintDialogFrame"); if (obj && iframeobj) { var commentFlag=false; if (viewer.totalPage <= parseInt(limitpage)) { var allobj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_All"); allobj.checked=true; iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_Comment").style.display='none'; commentFlag=true; iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_PageFrom").value=1; iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_PageTo").value=viewer.totalPage; } else { var allobj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_Pages"); allobj.checked=true; iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_PageFrom").value=1; iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_PageTo").value=limitpage; obj.style.height=350 + 'px'; var contentsObj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_Contents"); contentsObj.style.height=200 + 'px'; } var commentobj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_Landscape"); if (commentobj && __ubi_isIE && viewer.pageOrientation == "Landscape") { commentobj.style.display=''; var contentsObj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_Contents"); if (commentFlag) { obj.style.height=350 + 'px'; contentsObj.style.height=200 + 'px'; } else { obj.style.height=380 + 'px'; contentsObj.style.height=230 + 'px'; } } else { commentobj.style.display='none'; } obj.style.display=""; var tobj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_Table"); var iframeheight=tobj.scrollHeight; iframeobj.height=iframeheight + "px"; } } else { if (viewer.params.isStreaming) { viewer._printRetrieveAll(1, viewer.totalPage); } else { viewer._printHTML(1, viewer.totalPage); } } }; this.printPLUGIN=function(isPrintSet) { exePrint(isPrintSet, viewer); }; this.exportPLUGIN=function(type) { exeExport(type, viewer); }; this.downloadPDFok=function(flag, filename) { if (__ubi_isIE) { viewer._isPrintPDF=true; viewer._exportEnd(flag, filename); document.getElementById(viewer.vid +"Popup_PdfError_Message").style.display='none'; } else { viewer._isPrintPDF=true; viewer._exportReport(__ubi_EXPORT_PDF); document.getElementById(viewer.vid +"Popup_PdfDownLoad_Message").style.display='none'; } }; this.exportok=function() { var iframeobj=document.getElementById(viewer.vid +"Popup_ExportDialogFrame"); if (!iframeobj) { return; } var type=__ubi_EXPORT_IMAGE; var pluginSaveFlag=_ubi_strToBool(viewer.params.usepluginsave); if (_ubi_strToBool(viewer.params.usepluginsave) || parseInt(viewer.exportsetmode) != 1) { var fileComboObj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_ExportDialog_FileType"); type=fileComboObj.value; pluginSaveFlag=iframeobj.contentWindow.document.getElementById(viewer.vid + "_ExportDialog_Plugin").checked; } if (type == __ubi_EXPORT_IMAGE) { var imgType='jpg'; var tiffType='GROUP3_2D'; var tiffPage=false; var obj=document.getElementById(viewer.vid +"Popup_ExportDialog"); if (obj) { var imgTypeObj=iframeobj.contentWindow.document.getElementById(viewer.vid +"_ExportDialog_ImageType"); if (imgTypeObj) { imgType=imgTypeObj.value; viewer._exportImageType=imgType; if (pluginSaveFlag) { viewer.setPluginVariable('Export.Image.DefaultExtension', imgType); } } if (imgType == 'tif') { var tiffCompObj=iframeobj.contentWindow.document.getElementById(viewer.vid +"_ExportDialog_TifType"); if (tiffCompObj) { tiffType=tiffCompObj.value; } var tiffPageObj=iframeobj.contentWindow.document.getElementById(viewer.vid +"_ExportDialog_TifPage"); if (tiffPageObj) { tiffPage=tiffPageObj.checked; } if (pluginSaveFlag) { if (tiffType == 'GROUP3_2D') { tiffType='GROUP3'; } else if (tiffType == 'JPEG_TTN2') { tiffType='JPEG'; } viewer.setPluginVariable('Export.Image.CompressionType', tiffType); viewer.setPluginVariable('Export.Image.TiffPerPage', tiffPage); } else { viewer.params.tiffType=tiffType; viewer.params.tiffPerPage=tiffPage; } } } } if (pluginSaveFlag) { viewer.toolbar.exportPLUGIN(type); } else { viewer.params.exportPageFrom=0; viewer.params.exportPageTo=0; if (parseInt(viewer.exportsetmode) != 1) { var allObj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_ExportDialog_All"); var currentObj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_ExportDialog_Current"); var pagesObj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_ExportDialog_Pages"); if (currentObj.checked) { var pageFrom=this.page; var pageTo=this.page; viewer.params.exportPageFrom=pageFrom; viewer.params.exportPageTo=pageTo; } else if (pagesObj.checked) { var fromObj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_ExportDialog_PageFrom"); var toObj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_ExportDialog_PageTo"); var pageFrom=parseInt(fromObj.value); var pageTo=parseInt(toObj.value); viewer.params.exportPageFrom=pageFrom; viewer.params.exportPageTo=pageTo; } } viewer._exportStart(type); } document.getElementById(viewer.vid +"Popup_ExportDialog").style.display='none'; }; this.printok=function() { var iframeobj=document.getElementById(viewer.vid +"Popup_PrintDialogFrame"); if (!iframeobj) { return; } var allobj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_All"); var currobj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_Current"); var pagesobj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_Pages"); var pagefrom=1, pageto=1; if (allobj.checked) { pageto=viewer.totalPage; } else if (currobj.checked) { pagefrom=this.page; pageto=this.page; } else if (pagesobj.checked) { var fromobj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_PageFrom"); var toobj=iframeobj.contentWindow.document.getElementById(viewer.vid + "_PrintDialog_PageTo"); pagefrom=parseInt(fromobj.value); pageto=parseInt(toobj.value); } if (pagefrom < 1 || pageto > viewer.totalPage) { alert(_ubi_getMessage(viewer.params.language, "PrintDlgRangeErr") + _ubi_getMessage(viewer.params.language, "PrintDlgEnter")); return; } if ((pageto - pagefrom + 1) > viewer.params.printlimit) { alert(_ubi_getMessage(viewer.params.language, "PrintDlgHTMLRangeErr") + "\n(" + _ubi_getMessage(viewer.params.language, "PrintDlgMaxMent") + viewer.params.printlimit + ")" + _ubi_getMessage(viewer.params.language, "PrintDlgEnter")); return; } document.getElementById(viewer.vid +"Popup_PrintDialog").style.display='none'; if (viewer.params.isStreaming) viewer._printRetrieveAll(pagefrom, pageto); else viewer._printHTML(pagefrom, pageto); }; this.enableButton=function(buttonid, flag) { var button=this.buttons[buttonid]; if (button) { var orgImage=button.getAttribute("outimage"); if (orgImage) { var disImage=button.getAttribute("disimage"); if (flag) button.style.backgroundImage="url('"+ viewer.params.resource + "/images/toolbar/"+ orgImage +"')"; else button.style.backgroundImage="url('"+ viewer.params.resource + "/images/toolbar/"+ disImage +"')"; } if (flag) button.disabled=false; else button.disabled=true; } }; this.isEnabledButton=function(buttonid) { var button=this.buttons[buttonid]; if (button) { if (button.disabled == undefined) return true; return !button.disabled; } return false; }; this.setStatus=function() { if (this.page == viewer.totalPage || viewer.totalPage <= 1) { this.enableButton("NextButton", false); this.enableButton("LastButton", false); } else { this.enableButton("NextButton", true); this.enableButton("LastButton", true); } if (this.page == 1 || this.page == 0 || viewer.totalPage <= 1) { this.enableButton("FirstButton", false); this.enableButton("PreviousButton", false); } else { this.enableButton("FirstButton", true); this.enableButton("PreviousButton", true); } this.enableButton("ZoomOutButton", false); this.enableButton("ZoomInButton", false); if (viewer.totalPage > 0) { if (this.scaleIndex > 0) { this.enableButton("ZoomOutButton", true); } if (this.scaleIndex < (this.scaleValues.length-1)) { this.enableButton("ZoomInButton", true); } } if ((_ubi_strToBool(viewer.params.isStreaming) && viewer._isReceiveTotalpage) || (_ubi_strToBool(viewer.params.isStreaming) == false && viewer.totalPage > 0)) { this.enableButton("SaveButton", true); this.enableButton("PrintButton", true); this.enableButton("PrintSetButton", true); this.enableButton("RefreshButton", true); this.enableButton("SaveDropMenu", true); this.enableButton("PrintDropMenu", true); } else { this.enableButton("SaveButton", false); this.enableButton("PrintButton", false); this.enableButton("PrintSetButton", false); this.enableButton("RefreshButton", false); this.enableButton("SaveDropMenu", false); this.enableButton("PrintDropMenu", false); } if (viewer._isMultiPaper) { if (this.isEnabledButton("SaveButton")) { this.enableButton("SaveXls", false); this.enableButton("SaveRtf", false); this.enableButton("SaveHwp", false); this.enableButton("SavePptx", false); this.enableButton("SaveHml", false); this.enableButton("SaveDocx", false); this.enableButton("SaveCell", false); this.enableButton("SaveImage", false); } } }; this.setUserSaveList=function(list) { this.userSaveList=list; if (this.userSaveList != "") { var arr=this.userSaveList.split(","); var newsaveinfos=[]; for(var j in arr) { var savetype=arr[j].trim().toUpperCase(); if (savetype != "") { for (var k in saveinfos) { var info=saveinfos[k]; if (savetype == info[0].toUpperCase()) { newsaveinfos.push(info); break; } } } } if (newsaveinfos.length > 0) { this.saveList=this.makePopupMenu("Save", this.saveList, newsaveinfos); } } }; this.setUserPrintList=function(list) { this.userPrintList=list; if (this.userPrintList != "") { var arr=this.userPrintList.split(","); var newprintinfos=[]; for(var j in arr) { var printtype=arr[j].trim().toUpperCase(); if (printtype != "") { for (var k in printinfos) { var info=printinfos[k]; if (printtype == info[0].toUpperCase()) { newprintinfos.push(info); break; } } } } if (newprintinfos.length > 0) { this.printList=this.makePopupMenu("Print", this.printList, newprintinfos); } } }; this.setVisibleToolbar=function(id, flag) { var tdid=viewer.vid +"UbiToolbar_"; var name=id.toUpperCase(); var display=(flag) ? "block" : "none"; switch(name) { case "SAVE": this.buttontds["SaveButton"].style.display=display; this.buttontds["SaveText"].style.display=display; this.buttontds["SaveDropMenu"].style.display=display; break; case "SAVEBUTTON": this.buttontds["SaveButton"].style.display=display; break; case "SAVETEXT": this.buttontds["SaveText"].style.display=display; break; case "SAVEDROPMENU": this.buttontds["SaveDropMenu"].style.display=display; break; case "PRINT": this.buttontds["PrintButton"].style.display=display; this.buttontds["PrintText"].style.display=display; this.buttontds["PrintDropMenu"].style.display=display; this.buttons["PrintPdf"].style.display=display; this.buttons["PrintHtml"].style.display=display; this.buttons["PrintUbi"].style.display=display; break; case "PRINTBUTTON": this.buttontds["PrintButton"].style.display=display; break; case "PRINTTEXT": this.buttontds["PrintText"].style.display=display; break; case "PRINTDROPMENU": this.buttontds["PrintDropMenu"].style.display=display; break; case "PRINTSET": this.buttontds["PrintSetButton"].style.display=display; this.buttontds["PrintSetText"].style.display=display; break; case "PRINTSETBUTTON": this.buttontds["PrintSetButton"].style.display=display; break; case "PRINTSETTEXT": this.buttontds["PrintSetText"].style.display=display; break; case "NAVIGATION": this.buttontds["NaviSep"].style.display=display; this.buttontds["FirstButton"].style.display=display; this.buttontds["PreviousButton"].style.display=display; this.buttontds["PageCombo"].style.display=display; this.buttontds["TotalPageText"].style.display=display; this.buttontds["NextButton"].style.display=display; this.buttontds["LastButton"].style.display=display; break; case "FIRST": this.buttontds["FirstButton"].style.display=display; break; case "PREV": this.buttontds["PreviousButton"].style.display=display; break; case "PAGE": this.buttontds["PageCombo"].style.display=display; break; case "TOTALPAGE": this.buttontds["TotalPageText"].style.display=display; break; case "NEXT": this.buttontds["NextButton"].style.display=display; break; case "LAST": this.buttontds["LastButton"].style.display=display; break; case "PAGECOMBO": this.buttontds["PageCombo"].style.display=display; break; case "TOTALPAGETEXT": this.buttontds["TotalPageText"].style.display=display; break; case "ZOOM": this.buttontds["ZoomSep"].style.display=display; this.buttontds["ZoomOutButton"].style.display=display; this.buttontds["ZoomCombo"].style.display=display; this.buttontds["ZoomInButton"].style.display=display; break; case "ZOOM_OUT": this.buttontds["ZoomOutButton"].style.display=display; break; case "ZOOM_VALUE": this.buttontds["ZoomCombo"].style.display=display; break; case "ZOOM_IN": this.buttontds["ZoomInButton"].style.display=display; break; case "REFRESH": this.buttontds["RefreshButton"].style.display=display; break; case "INFO": this.buttontds["AboutButton"].style.display=display; break; case "SAVE_PDF": this.buttons["SavePdf"].style.display=display; break; case "SAVE_EXCEL": this.buttons["SaveXls"].style.display=display; break; case "SAVE_PPTX": this.buttons["SavePptx"].style.display=display; break; case "SAVE_HML": this.buttons["SaveHml"].style.display=display; break; case "SAVE_DOCX": this.buttons["SaveDocx"].style.display=display; break; case "SAVE_CELL": this.buttons["SaveCell"].style.display=display; break; case "SAVE_IMAGE" : this.buttons["SaveImage"].style.display=display; break; case "EXCEL_TYPE1": this.buttons["SaveExcelPrint"].style.display=display; break; case "EXCEL_TYPE2": this.buttons["SaveExcelBase"].style.display=display; break; case "PRINT_PDF": this.buttons["PrintPdf"].style.display=display; break; case "PRINT_HTML": this.buttons["PrintHtml"].style.display=display; break; case "PRINT_UBI": if (_ubi_strToBool(viewer.params.useplugin)) { this.buttons["PrintUbi"].style.display=display; } else { this.buttons["PrintUbi"].style.display="none"; } break; } var isVisiblePrintPDF=(this.buttons["PrintPdf"].style.display == 'none')?false:true; var isVisiblePrintHTML=(this.buttons["PrintHtml"].style.display == 'none')?false:true; var isVisiblePrintPLUGIN=(this.buttons["PrintUbi"].style.display == 'none')?false:true; if ( (!isVisiblePrintPDF && !isVisiblePrintHTML && !isVisiblePrintPLUGIN) || (isVisiblePrintPDF && !isVisiblePrintHTML && !isVisiblePrintPLUGIN && this.printDefaultType == 'PDF') || (isVisiblePrintHTML && !isVisiblePrintPDF && !isVisiblePrintPLUGIN && this.printDefaultType == 'HTML') || (isVisiblePrintPLUGIN && !isVisiblePrintPDF && !isVisiblePrintHTML && this.printDefaultType == 'UBI')) { this.buttontds["PrintDropMenu"].style.display='none'; } else { this.buttontds["PrintDropMenu"].style.display=''; } }; this.setMenuTextToolbar=function(id, text) { var name=id.toUpperCase(); switch(name) { case "SAVE": this.buttons["SaveText"].innerHTML=text; break; case "PRINT": this.buttons["PrintText"].innerHTML=text; break; case "PRINTSET": this.buttons["PrintSetText"].innerHTML=text; break; case "PDF": this.buttons["SavePdf"].value=text; break; case "EXCEL": this.buttons["SaveXls"].value=text; break; case "DOCX": this.buttons["SaveDocx"].value=text; break; case "PPTX": this.buttons["SavePptx"].value=text; break; case "HML": this.buttons["SaveHml"].value=text; break; case "CELL": this.buttons["SaveCell"].value=text; break; case "IMAGE": this.buttons["SaveImage"].value=text; break; case "EXCEL_TYPE1": this.buttons["SaveExcelPrint"].value=text; break; case "EXCEL_TYPE2": this.buttons["SaveExcelBase"].value=text; break; case "PRINT_PDF": this.buttons["PrintPdf"].value=text; break; case "PRINT_HTML": this.buttons["PrintHtml"].value=text; break; case "PRINT_UBI": this.buttons["PrintUbi"].value=text; break; } }; this.jobStart=function() { viewer.divDisable.style.width=viewer.divToolbar.clientWidth; viewer.divDisable.style.height=viewer.divToolbar.style.height; viewer.divDisable.style.display=""; viewer.divMain.style.cursor="progress"; }; this.jobEnd=function() { viewer.divDisable.style.display="none"; viewer.divMain.style.cursor="default"; }; this.initToolbar(); function clicked(e) { var target=e.target || e.srcElement; if (!target || !target.id || target.id.substring(0, vid.length) != vid) { __ubi_viewers[vid].toolbar.hidePopupAll(); return; } var targetid=target.id; if (targetid == (vid +"UbiToolbarButton_ZoomCombo")) { if (__ubi_viewers[vid].toolbar.isShowPopup("ZoomCombo") == false) { __ubi_viewers[vid].toolbar.hidePopupAll(); __ubi_viewers[vid].toolbar.showComboBox("ZoomCombo"); return; } } else if (targetid == (vid +"UbiToolbarButton_PageCombo")) { if (__ubi_viewers[vid].toolbar.isShowPopup("PageCombo") == false) { __ubi_viewers[vid].toolbar.hidePopupAll(); __ubi_viewers[vid].toolbar.showComboBox("PageCombo"); return; } } else if (targetid == (vid +"UbiToolbarButton_SaveDropMenu")) { if (__ubi_viewers[vid].toolbar.isShowPopup("SaveDropMenu") == false) { __ubi_viewers[vid].toolbar.hidePopupAll(); if (__ubi_viewers[vid].toolbar.isEnabledButton("SaveButton") == true) { __ubi_viewers[vid].toolbar.showPopup("SaveDropMenu"); } return; } } else if (targetid == (vid +"UbiToolbarButton_PrintDropMenu")) { if (__ubi_viewers[vid].toolbar.isShowPopup("PrintDropMenu") == false) { __ubi_viewers[vid].toolbar.hidePopupAll(); if (__ubi_viewers[vid].toolbar.isEnabledButton("PrintButton") == true) { __ubi_viewers[vid].toolbar.showPopup("PrintDropMenu"); } return; } } var viewer=__ubi_viewers[vid]; var toolbarid=vid + "UbiToolbarButton_"; if (targetid.indexOf(vid +"ZoomOption_") == 0) { var scale=target.getAttribute("value"); viewer.toolbar.changeScale(scale); } else if (targetid.indexOf(vid +"PageOption_") == 0) { var page=targetid.substring(targetid.lastIndexOf("_")+1); viewer.toolbar.movePage(parseInt(page)); } else if (targetid == toolbarid +"FirstButton") { if (viewer.toolbar.isEnabledButton("FirstButton")) __ubi_viewers[vid].toolbar.first(); } else if (targetid == toolbarid +"PreviousButton") { if (viewer.toolbar.isEnabledButton("PreviousButton")) viewer.toolbar.previous(); } else if (targetid == toolbarid +"NextButton") { if (viewer.toolbar.isEnabledButton("NextButton")) viewer.toolbar.next(); } else if (targetid == toolbarid +"LastButton") { if (viewer.toolbar.isEnabledButton("LastButton")) viewer.toolbar.last(); } else if (targetid == toolbarid +"ZoomOutButton") { if (viewer.toolbar.isEnabledButton("ZoomOutButton")) viewer.toolbar.zoomout(); } else if (targetid == toolbarid +"ZoomInButton") { if (viewer.toolbar.isEnabledButton("ZoomInButton")) viewer.toolbar.zoomin(); } else if (targetid == toolbarid +"RefreshButton") { if (viewer.toolbar.isEnabledButton("RefreshButton")) viewer.toolbar.refresh(); } else if (targetid == toolbarid +"AboutButton") { if (viewer.toolbar.isEnabledButton("AboutButton")) viewer.toolbar.aboutbox(); } else if (targetid == toolbarid +"PrintButton" || targetid == toolbarid +"PrintText") { if (viewer.toolbar.isEnabledButton("PrintButton")) { if (viewer.toolbar.printDefaultType == "") { if (viewer.toolbar.isShowPopup("PrintDropMenu") == false) { viewer.toolbar.hidePopupAll(); viewer.toolbar.showPopup("PrintDropMenu"); return; } } else { if (viewer.events.printClicked) { viewer.events.printClicked(viewer.toolbar.printDefaultType); } else { if (viewer.toolbar.printDefaultType == "PDF") { viewer._printPDF(true); } else if (viewer.toolbar.printDefaultType == "HTML") { viewer.toolbar.printHTML(); } else if (viewer.toolbar.printDefaultType == "UBI") { viewer.toolbar.printPLUGIN(false); } } } } } else if (targetid == toolbarid +"PrintSetButton" || targetid == toolbarid +"PrintSetText") { if (viewer.toolbar.isEnabledButton("PrintSetButton")) { viewer._printPDF(true); } } else if (targetid == toolbarid +"PrintPdf") { if (viewer.toolbar.isEnabledButton("PrintPdf")) { if (viewer.events.printClicked) { viewer.events.printClicked('PDF'); } else { viewer._printPDF(true); } } } else if (targetid == toolbarid +"PrintHtml") { if (viewer.toolbar.isEnabledButton("PrintHtml")) { if (viewer.events.printClicked) { viewer.events.printClicked('HTML'); } else { viewer.toolbar.printHTML(); } } } else if (targetid == toolbarid +"PrintUbi") { if (viewer.toolbar.isEnabledButton("PrintUbi")) { if (viewer.events.printClicked) { viewer.events.printClicked('UBI'); } else { viewer.toolbar.printPLUGIN(true); } } } else if (targetid == toolbarid +"SaveButton" || targetid == toolbarid +"SaveText") { if (viewer.toolbar.isEnabledButton("SaveButton")) { if (viewer.toolbar.saveDefaultType == "") { if (viewer.toolbar.isShowPopup("SaveDropMenu") == false) { viewer.toolbar.hidePopupAll(); viewer.toolbar.showPopup("SaveDropMenu"); return; } } else { if (viewer.events.exportClicked) { var savetype='PDF'; switch (viewer.toolbar.saveDefaultType) { case __ubi_EXPORT_EXCEL1 : savetype='EXCEL'; break; case __ubi_EXPORT_EXCEL2 : savetype='EXCEL_NO'; break; case __ubi_EXPORT_PPTX : savetype='PPTX'; break; case __ubi_EXPORT_DOCX : savetype='DOCX'; break; case __ubi_EXPORT_HML : savetype='HML'; break; case __ubi_EXPORT_CELL : savetype='CELL'; break; case __ubi_EXPORT_IMAGE : savetype='IMAGE'; break; } viewer.events.exportClicked(savetype); } else { viewer._exportReport(viewer.toolbar.saveDefaultType); } } } } else if (targetid == toolbarid +"SavePdf") { if (viewer.toolbar.isEnabledButton("SavePdf")) { viewer._isPrintPDF=false; if (viewer.events.exportClicked) { viewer.events.exportClicked('PDF'); } else { viewer._exportReport(__ubi_EXPORT_PDF); } } } else if (targetid == toolbarid +"SaveExcel") { if (viewer.toolbar.isEnabledButton("SaveExcel")) { if (viewer.events.exportClicked) { viewer.events.exportClicked('EXCEL'); } else { viewer._exportReport(__ubi_EXPORT_EXCEL1); } } } else if (targetid == toolbarid +"SaveExcelPrint") { if (viewer.toolbar.isEnabledButton("SaveExcelPrint")) { if (viewer.events.exportClicked) { viewer.events.exportClicked('EXCEL'); } else { viewer._exportReport(__ubi_EXPORT_EXCEL1); } } } else if (targetid == toolbarid +"SaveExcelBase") { if (viewer.toolbar.isEnabledButton("SaveExcelBase")) { if (viewer.events.exportClicked) { viewer.events.exportClicked('EXCEL_NO'); } else { viewer._exportReport(__ubi_EXPORT_EXCEL2); } } } else if (targetid == toolbarid +"SaveDocx") { if (viewer.toolbar.isEnabledButton("SaveDocx")) { if (viewer.events.exportClicked) { viewer.events.exportClicked('DOCX'); } else { viewer._exportReport(__ubi_EXPORT_DOCX); } } } else if (targetid == toolbarid +"SavePptx") { if (viewer.toolbar.isEnabledButton("SavePptx")) { if (viewer.events.exportClicked) { viewer.events.exportClicked('PPTX'); } else { viewer._exportReport(__ubi_EXPORT_PPTX); } } } else if (targetid == toolbarid +"SaveHml") { if (viewer.toolbar.isEnabledButton("SaveHml")) { if (viewer.events.exportClicked) { viewer.events.exportClicked('HML'); } else { viewer._exportReport(__ubi_EXPORT_HML); } } } else if (targetid == toolbarid +"SaveCell") { if (viewer.toolbar.isEnabledButton("SaveCell")) { if (viewer.events.exportClicked) { viewer.events.exportClicked('CELL'); } else { viewer._exportReport(__ubi_EXPORT_CELL); } } } else if (targetid == toolbarid +"SaveImage") { if (viewer.toolbar.isEnabledButton("SaveImage")) { if (viewer.events.exportClicked) { viewer.events.exportClicked('IMAGE'); } else { viewer._exportReport(__ubi_EXPORT_IMAGE); } } } else if (targetid == toolbarid +"SaveXls") { if (viewer.toolbar.saveExcelDefaultType != "") { if (viewer.toolbar.saveExcelDefaultType == __ubi_EXPORT_EXCEL1 && viewer.toolbar.isEnabledButton("SaveExcelPrint")) { if (viewer.events.exportClicked) { viewer.events.exportClicked('EXCEL'); } else { viewer._exportReport(__ubi_EXPORT_EXCEL1); } } else if (viewer.toolbar.saveExcelDefaultType == __ubi_EXPORT_EXCEL2 && viewer.toolbar.isEnabledButton("SaveExcelBase")) { if (viewer.events.exportClicked) { viewer.events.exportClicked('EXCEL_NO'); } else { viewer._exportReport(__ubi_EXPORT_EXCEL2); } } } } if (targetid != toolbarid +"SaveXls" || (targetid == toolbarid +"SaveXls" && viewer.toolbar.saveExcelDefaultType != "") ) { __ubi_viewers[vid].toolbar.hidePopupAll(); } }; this.applyWA=function(id) { var buttonNames=[ ["SaveButton", "저장"], ["SaveDropMenu", "저장유형 선택"], ["SavePdf", "PDF로 저장" ], ["SaveXls", "엑셀로 저장" ], ["SaveExcelPrint", "프린트형식의 엑셀로 저장" ], ["SaveExcelBase", "리스트형식의 엑셀로 저장" ], ["SaveRtf", "RTF 저장" ], ["SaveDocx", "MS워드로 저장" ], ["SavePptx", "파워포인트로 저장" ], ["SaveHml", "한글파일로 저장" ], ["SaveCell", "한셀로 저장" ], ["SaveImage", "이미지로 저장" ], ["PrintButton", "인쇄"], ["PrintDropMenu", "인쇄유형 선택"], ["PrintPdf", "PDF로 인쇄" ], ["PrintHtml", "HTML로 인쇄"], ["PrintUbi", "대량 인쇄"], ["PrintSetButton", "인쇄설정"], ["FirstButton", "첫번째 페이지로 이동"], ["PreviousButton", "이전 페이지로 이동"], ["NextButton", "다음 페이지로 이동"], ["LastButton", "마지막 페이지로 이동"], ["ZoomOutButton", "축소"], ["ZoomInButton", "확대"], ["RefreshButton", "새로고침"], ["AboutButton", "솔루션 정보" ] ]; var obj=null; var tabindex=4; for (var i=0; i -1) { + UbiJS_Language = 'ko'; + } else { + UbiJS_Language = 'en'; + } +} + +//---------------------------------------------------------------------------------------------------- +// 배포 설치본 관리 +//---------------------------------------------------------------------------------------------------- +var UbiJS_Host = self.location.host; +var UbiJS_BaseUrl = self.location.protocol + "//" + UbiJS_Host; +if( UbiJS_App != "" ) + UbiJS_BaseUrl = UbiJS_BaseUrl + "/" + UbiJS_App; + +var UbiJS_PluginInstallPath = UbiJS_BaseUrl + "/ubi4/ubiviewer/" + UbiJS_PlguinInstallFile; // 플러그인 통합본 설치 +var UbiJS_InstallCabPath = UbiJS_BaseUrl + "/ubi4/ubiviewer/" + UbiJS_PluginCabFile; // 뷰어 파일 설치 +var UbiJS_WsInstallPath = UbiJS_BaseUrl + "/ubi4/ubiviewer/" + UbiJS_WsInstallFile; // WS 설치 파일 경로 + +var UbiJS_CabUpdateXml = ""; +UbiJS_CabUpdateXml += ""; +UbiJS_CabUpdateXml += ""; +UbiJS_CabUpdateXml += ""; + +//---------------------------------------------------------------------------------------------------- +// 안내 메세지 +//---------------------------------------------------------------------------------------------------- +var UbiJS_HelpSafari = "ㆍSafari 브라우저에서는 설치 후에 브라우저를 닫았다가 다시 접속하시기 바랍니다.
    "; +var UbiJS_HelpFireFox = "ㆍFireFox 브라우저에서 실행 권한을 요구하는 경우 반드시 [허가]→[허가하고 기억] 버튼을 차례대로 눌러주십시오.
    ㆍ설치가 안된다면 플러그인 차단 여부를 확인해 주십시오.
    "; +var UbiJS_HelpChrome = "ㆍChrome 브라우저에서 실행 권한이 필요하다고 요구하는 경우 반드시 [이 사이트에서 항상 실행] 버튼을 눌러주십시오.
    ㆍ설치가 안된다면 플러그인 차단 여부를 확인해 주십시오.
    "; +var UbiJS_HelpOpera = "ㆍOpera 브라우저입니다. 다운로드 받은 파일을 직접 실행하여 주십시오.
    "; +var UbiJS_HelpIE = "ㆍIE 브라우저에서 파일 다운로드가 차단된 경우 [다운로드] 로 실행하여 주십시오.
    "; + +var UbiJS_msgboxColor = new Object(); +UbiJS_msgboxColor["amber"] = "color:#000!important;background-color:#ffc107!important"; +UbiJS_msgboxColor["aqua"] = "color:#000!important;background-color:#00ffff!important"; +UbiJS_msgboxColor["blue"] = "color:#fff!important;background-color:#2196F3!important"; +UbiJS_msgboxColor["light-blue"] = "color:#000!important;background-color:#87CEEB!important"; +UbiJS_msgboxColor["brown"] = "color:#fff!important;background-color:#795548!important"; +UbiJS_msgboxColor["cyan"] = "color:#000!important;background-color:#00bcd4!important"; +UbiJS_msgboxColor["blue-grey"] = "color:#fff!important;background-color:#607d8b!important"; +UbiJS_msgboxColor["green"] = "color:#fff!important;background-color:#4CAF50!important"; +UbiJS_msgboxColor["light-green"] = "color:#000!important;background-color:#8bc34a!important"; +UbiJS_msgboxColor["indigo"] = "color:#fff!important;background-color:#3f51b5!important"; +UbiJS_msgboxColor["khaki"] = "color:#000!important;background-color:#f0e68c!important"; +UbiJS_msgboxColor["lime"] = "color:#000!important;background-color:#cddc39!important"; +UbiJS_msgboxColor["orange"] = "color:#000!important;background-color:#ff9800!important"; +UbiJS_msgboxColor["deep-orange"] = "color:#fff!important;background-color:#ff5722!important"; +UbiJS_msgboxColor["pink"] = "color:#fff!important;background-color:#e91e63!important"; +UbiJS_msgboxColor["purple"] = "color:#fff!important;background-color:#9c27b0!important"; +UbiJS_msgboxColor["deep-purple"] = "color:#fff!important;background-color:#673ab7!important"; +UbiJS_msgboxColor["red"] = "color:#fff!important;background-color:#f44336!important"; +UbiJS_msgboxColor["sand"] = "color:#000!important;background-color:#fdf5e6!important"; +UbiJS_msgboxColor["teal"] = "color:#fff!important;background-color:#009688!important"; +UbiJS_msgboxColor["yellow"] = "color:#000!important;background-color:#ffeb3b!important"; +UbiJS_msgboxColor["white"] = "color:#000!important;background-color:#fff!important"; +UbiJS_msgboxColor["black"] = "color:#fff!important;background-color:#000!important"; +UbiJS_msgboxColor["grey"] = "color:#000!important;background-color:#9e9e9e!important"; +UbiJS_msgboxColor["light-grey"] = "color:#000!important;background-color:#f1f1f1!important"; +UbiJS_msgboxColor["dark-grey"] = "color:#fff!important;background-color:#616161!important"; +UbiJS_msgboxColor["pale-red"] = "color:#000!important;background-color:#ffdddd!important"; +UbiJS_msgboxColor["pale-green"] = "color:#000!important;background-color:#ddffdd!important"; +UbiJS_msgboxColor["pale-yellow"] = "color:#000!important;background-color:#ffffcc!important"; +UbiJS_msgboxColor["pale-blue"] = "color:#000!important;background-color:#ddffff!important"; + +var UbiJS_InstallHeader = UbiJS_msgboxColor["blue-grey"]; +var UbiJS_NoticeHeader = UbiJS_msgboxColor["brown"]; +var UbiJS_StandbyHeader = UbiJS_msgboxColor["teal"]; +var UbiJS_CompleteHeader = UbiJS_msgboxColor["teal"]; +var UbiJS_CancelHeader = UbiJS_msgboxColor["teal"]; +var UbiJS_FailHeader = UbiJS_msgboxColor["teal"]; + +//미설치시 설치화면에서 자동으로 다운로드할지의 여부 ( true : 설치화면으로 이동시 자동으로 다운로드 실행 / false : 다운로드 클릭 버튼을 이용해야만 다운로드 ) +var UbiJS_IE_AutoDownload = false; + +//전역 객체로 사용 +var UbiJS_WINDOC = null; +try { + UbiJS_WINDOC = window.top.document; + //UbiJS_WINDOC = document; +} +catch(e){} + +var UbiJS_MS_XMLDOM = null; +try { + UbiJS_MS_XMLDOM = new ActiveXObject("Microsoft.XMLDOM"); +} +catch(e){} + +//==================================================================================================== +// OS check 관련 +//==================================================================================================== +var UbiJS_Match = navigator.userAgent.match(/(CrOS\ \w+|Windows\ NT|Mac\ OS\ X|Linux)\ ([\d\._]+)?/); +var UbiJS_Os = (UbiJS_Match || [])[1] || "Unknown"; + +//==================================================================================================== +// 플러그인 모듈 관리 프로그램 - 아래를 수정하거나 지우지 마십시오. +//==================================================================================================== +var UbiJS_CurrentInstalledVersion = ""; +var Ubi_Object = null; +var UbiJS_PluginId = "__object_ubiviewer_plugin"; +var UbiJS_Div_PluginId = "__hidden_div_ubiviewer_plugin"; +var UbiJS_Object = null; +var UbiJS_IsPluginUpdate = false; + +var UbiJS_IsIE = /*@cc_on!@*/false || !!document.documentMode; +var UbiJS_IsIE10 = document.all && !window.atob; +var UbiJS_IsIE11 = navigator.appName == 'Netscape' && navigator.userAgent.search('Trident') != -1; +var UbiJS_IsEdge = navigator.userAgent.indexOf("AppleWebKit") >= 0 && navigator.userAgent.indexOf("Edge") != -1; +var UbiJS_IsOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; +var UbiJS_IsFirefox = typeof InstallTrigger !== 'undefined'; +var UbiJS_IsSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0; +var UbiJS_IsChrome = !!window.chrome && !UbiJS_IsOpera; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +// HTML 뷰어에서 Plugin(WebSocket) 뷰어를 임베디드하여 호출이 되는 경우 사용되는 스크립트 +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +var UbiJS_Run_Plugin = UbiJS_PluginAvailableBrowser(); + +var UbiJS_Object_PluginViewer = "__object_plugin_viewer"; +var UbiJS_Div_PluginViewer = "__hidden_div_plugin_viewer"; +var UbiJS_Object_PluginViewerVersion = "__object_plugin_viewer_version"; + +var UbiJS_PlguinViewer = null; +var UbiJS_PluginViewer_ActType= -1; +var UbiJS_PluginViewer_Arg = ""; +var UbiJS_PluginViewer_RetrieveUrfUrl = ""; + +//var UbiJS_WsPort = "16886"; +var UbiJS_WsProtocol = "ubi-protocol"; +var UbiJS_WsPorts = [16886, 56888, 56889]; +var UbiJS_WsCheckIndex = 0; +var UbiJS_WsWaitCheckCount = 0; +var UbiJS_WsCheckComplete = false; + +var UbiJS_WsViewer = null; +var UbiJS_WsViewer_ActType = -1; + +var UbiJS_WS_RS_ = String.fromCharCode(30); +var UbiJS_WS_CS_ = String.fromCharCode(31); +var UbiJS_WS_EOF_ = String.fromCharCode(27); +var UbiJS_WS_VER_EOF_ = String.fromCharCode(29); // version check용 eof + +var UbiJS_WsInstallFlag = false; + +var UbiJS_Div_Install = "__div_ubi_install_message"; +var UbiJS_Div_Notice = "__div_ubi_notice_message"; +var UbiJS_Div_64Warning = "__div_ubi_64warning_message"; +var UbiJS_Div_PrintStandby = "__div_ubi_printstandby_message"; +var UbiJS_Div_PrintComplete = "__div_ubi_printcomplete_message"; +var UbiJS_Div_PrintCancel = "__div_ubi_printcancel_message"; +var UbiJS_Div_PrintFail = "__div_ubi_printfail_message"; + +var UbiJS_Div_ExportStandby = "__div_ubi_exportstandby_message"; +var UbiJS_Div_ExportComplete = "__div_ubi_exportcomplete_message"; +var UbiJS_Div_ExportCancel = "__div_ubi_exportcancel_message"; +var UbiJS_Frame_Download = "__frame_ubi_download_exe"; + +var UbiJS_Is_PrintJob = true; +var UbiJS_Viewer_Progress = false; +var UbiJS_callbackFuncs = []; + +// 브라우저 종료 및 페이지가 변경되는 경우 Viewer close 처리 +window.onbeforeunload = function(e) { + if( UbiJS_WsViewer != null ) { + + UbiJS_WsViewer.close(); +// UbiJS_WsViewer = null; + } +}; + +// 페이지 로드 완료 시 필요 요소 초기화 +// "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; // 폰트보정. 변경 불가. + pluginScript[i++] = " "; // 출력보정. 변경 불가. + pluginScript[i++] = " "; + pluginScript[i++] = ""; + + var obj = document.createElement("div"); + obj.id = UbiJS_Div_PluginViewer; + obj.style.cssText = "position:absolute; width:0px; height:0px; left:50%; top:50%;"; + obj.innerHTML = pluginScript.join(""); + UbiJS_WINDOC.body.appendChild(obj); + + if( isPrintSet ) + UbiJS_PluginViewer_ActType = 1; // PrintSet + else + UbiJS_PluginViewer_ActType = 0; // Direct 인쇄 + + UbiJS_PluginViewer_RetrieveUrfUrl = htmlViewer.retrieveUrfUrl; + + UbiJS_PlguinViewer = UbiJS_WINDOC.getElementById(UbiJS_Object_PluginViewer); + } + } + else { + + function UbiJS_LoadReport(ws) { + UbiJS_WsViewer = new UbiWSViewer(ws); + + // 전용 뷰어 설정 + var _params = htmlViewer.pluginparams; + if (_params != undefined) { + for (var i = 0; i < _params.length; i+=2) { + //console.log(_params[i] + ' - ' + _params[i+1]); + UbiJS_WsViewer.SetVariable(_params[i], _params[i+1]); + } + } + + UbiJS_WsViewer.arg = htmlViewer.params.arg; + UbiJS_WsViewer.ubiserverurl = ubiserverurl; + UbiJS_WsViewer.jrffiledir = ''; + UbiJS_WsViewer.jrffilename = ''; + UbiJS_WsViewer.datasource = ''; + UbiJS_WsViewer.progress = htmlViewer.params.pluginprogress; + UbiJS_WsViewer.printsetmode = '1'; + UbiJS_WsViewer.scale = '100'; + UbiJS_WsViewer.toolbar = 'false'; + UbiJS_WsViewer.margin = 'false'; + UbiJS_WsViewer.fontrevision = 'true'; + UbiJS_WsViewer.printmarginrevision = 'true'; + UbiJS_WsViewer.SetVariable("Viewer.IsRunThread", "true"); + UbiJS_WsViewer.setResize("hide"); //창 안보임 + if (UbiJS_Language.indexOf('ko') == -1) { + UbiJS_WsViewer.SetVariable("Language", UbiJS_Language); + } + + if (htmlViewer.params.reporttitle != '') { + UbiJS_WsViewer.reporttitle = htmlViewer.params.reporttitle; + } else { + //UbiJS_WsViewer.reporttitle = htmlViewer.params.jrffile; + UbiJS_WsViewer.jrffilename = htmlViewer.params.jrffile; + } + + UbiJS_WsViewer.PrintHtmlUrf(isPrintSet, htmlViewer.params.isStreaming, + htmlViewer.totalPage, htmlViewer.toolbar.page, htmlViewer.retrieveUrfUrl); + + }; +/* + CloseEnd 두번 호출로 인해 주석처리 함 + try { + + if( UbiJS_WsViewer != null ) { + + UbiJS_WsViewer.close(); +// UbiJS_WsViewer = null; + } + } + catch(e) {} +*/ + InitWebSocket(UbiJS_LoadReport, htmlViewer); + + } +} + +/** + * HTML 뷰어에서 저장 클릭 시 호출되는 함수 + */ +function exeExport(exportType, htmlViewer) { + + if( UbiJS_WINDOC == null ) { + try { + UbiJS_WINDOC = document; + } + catch(e){} + } + + UbiJS_Is_PrintJob = false; + UbiJS_Viewer_Progress = _ubi_strToBool(htmlViewer.params.pluginprogress); + // 전용 뷰어 출력인 경우 HTML 뷰어에 설정한 언어로 변경 + UbiJS_Language = htmlViewer.params.language; + + // Plugin 뷰어의 프로그래스바 설정이 False이면 메시지를 보여준다. + if( !UbiJS_Viewer_Progress ) { + + if( UbiJS_Is_PrintJob ) + UbiJS_ShowPrintStandby(); + else + UbiJS_ShowExportStandby(); + } + + if( UbiJS_Run_Plugin ) { + + try { UbiJS_WINDOC.body.removeChild(UbiJS_WINDOC.getElementById(UbiJS_Div_PluginViewer)); } catch(e) {} + UbiJS_PlguinViewer = null; + + if( UbiJS_PluginCheck() ) { + + UbiJS_PluginViewer_Arg = htmlViewer.params.arg; + + var i = 0; + var pluginScript = []; + + pluginScript[i++] = ""; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; + pluginScript[i++] = " "; // 폰트보정. 변경 불가. + pluginScript[i++] = " "; // 출력보정. 변경 불가. + pluginScript[i++] = " "; + pluginScript[i++] = ""; + + var obj = document.createElement("div"); + obj.id = UbiJS_Div_PluginViewer; + obj.style.cssText = "position:absolute; width:0px; height:0px; left:50%; top:50%;"; + obj.innerHTML = pluginScript.join(""); + UbiJS_WINDOC.body.appendChild(obj); + + UbiJS_PluginViewer_ActType = exportType; + // 여기 추가 + UbiJS_PluginViewer_RetrieveUrfUrl = htmlViewer.retrieveUrfUrl; + + UbiJS_PlguinViewer = UbiJS_WINDOC.getElementById(UbiJS_Object_PluginViewer); + } + + } + else { + + function UbiJS_LoadReport(ws) { + + UbiJS_WsViewer = new UbiWSViewer(ws); + + // 전용 뷰어 설정 + var _params = htmlViewer.pluginparams; + if (_params != undefined) { + for (var i = 0; i < _params.length; i+=2) { + //console.log(_params[i] + ' - ' + _params[i+1]); + UbiJS_WsViewer.SetVariable(_params[i], _params[i+1]); + } + } + + // HWPML 저장 시 옵션 반영 + if (exportType == 17) { + + UbiJS_WsViewer.SetVariable("Export.HML.DefaultExtension", htmlViewer.HmlExtension); + UbiJS_WsViewer.SetVariable("Export.HML.TextWrap", htmlViewer.params.hmlTextWrap); + UbiJS_WsViewer.SetVariable("Export.HML.TableProtect", htmlViewer.params.hmlTableProtect); + } + // Excel 저장 시 옵션 반영 +// else if (exportType == 12) { +// } + + UbiJS_WsViewer.arg = htmlViewer.params.arg; + UbiJS_WsViewer.ubiserverurl = htmlViewer.params.ubiserverurl; + UbiJS_WsViewer.jrffiledir = ''; + UbiJS_WsViewer.jrffilename = ''; + UbiJS_WsViewer.datasource = ''; + UbiJS_WsViewer.progress = htmlViewer.params.pluginprogress; + UbiJS_WsViewer.printsetmode = '1'; + UbiJS_WsViewer.scale = '100'; + UbiJS_WsViewer.toolbar = 'false'; + UbiJS_WsViewer.margin = 'false'; + UbiJS_WsViewer.fontrevision = 'true'; + UbiJS_WsViewer.printmarginrevision = 'true'; + UbiJS_WsViewer.SetVariable("Viewer.IsRunThread", "true"); + UbiJS_WsViewer.setResize("hide"); //창 안보임 + if (UbiJS_Language.indexOf('ko') == -1) { + UbiJS_WsViewer.SetVariable("Language", UbiJS_Language); + } + + if (htmlViewer.params.reporttitle != '') { + UbiJS_WsViewer.reporttitle = htmlViewer.params.reporttitle; + } else { + var jrffilename = htmlViewer.params.jrffile; + jrffilename = jrffilename.substring(0, jrffilename.lastIndexOf(".")); + UbiJS_WsViewer.reporttitle = jrffilename; + //UbiJS_WsViewer.reporttitle = htmlViewer.params.jrffile; + } + + UbiJS_WsViewer.ExportHtmlUrf(exportType, htmlViewer.params.isStreaming, htmlViewer.totalPage, + htmlViewer.toolbar.page, htmlViewer.retrieveUrfUrl); + }; +/* + try { + + if( UbiJS_WsViewer != null ) { + + UbiJS_WsViewer.close(); +// UbiJS_WsViewer = null; + } + } + catch(e) {} +*/ + InitWebSocket(UbiJS_LoadReport, htmlViewer); + + } +} + +/******************************************************************* + * Printer 관련 정보 + *******************************************************************/ +function GetPrinterInfos(ws, callbak) { + // Printer 목록과 기본 프린터명을 같이 리턴 + if( UbiJS_Run_Plugin ) { + + } else { + var msg = "reqtype" + UbiJS_WS_CS_ + "getprinterinfos" + UbiJS_WS_RS_ + UbiJS_WS_VER_EOF_ + UbiJS_WS_EOF_; + ws.send(msg); + + UbiJS_callbackFuncs['PRINTERINFOS'] = callbak; + } +} + +/******************************************************************* +Plugin 전용 함수 +*******************************************************************/ + +/** + * 플러그인 설치 확인 + */ +function UbiJS_PluginCheck() { + + if( UbiJS_Run_Plugin ) { + + if( UbiJS_PluginInstallCheck(UbiJS_GetPluginType(), "UbiDecision.UbiViewerPlugin.1") ) { + + if( UbiJS_PluginUpdateCheck() ) { + + UbiJS_CabUpdateCheck(); + return true; + } + else { + // 플러그인 설치 버전 업데이트로 인해 설치 페이지로 이동 + UbiJS_ShowPluginInstall(true); + return false; + } + } + else { + // 플러그인 미설치로 인해 설치 페이지로 이동 + UbiJS_ShowPluginInstall(false); + return false; + } + } + else { + // 플러그인 미지원 브라우져 안내 페이지로 이동 + UbiJS_ShowPluginWarning(); + return false; + } +} + +/** + * 플러그인 타입명 가져오기 + */ +function UbiJS_GetPluginType() { + + return "application/x-ubiviewerplugin"; +} + +/** + * 플러그인 모듈명 반환 + */ +function UbiJS_PluginType() { + + return "application/x-ubiviewer"; +} + +/** + * 플러그인 설치 버전 체크 + */ +function UbiJS_PluginInstallCheck(mimetype, progid) { + + if( UbiJS_WINDOC.getElementById(UbiJS_PluginId) == null ) { + + var i = 0; + var pluginScript = []; + + pluginScript[i++] = ""; + + var obj = document.createElement("div"); + obj.id = UbiJS_Div_PluginId; + obj.style.cssText = "position:absolute; width:0px; height:0px; left:0px; top:0px;"; + obj.innerHTML = pluginScript.join(""); + UbiJS_WINDOC.body.appendChild(obj); + } + UbiJS_Object = UbiJS_WINDOC.getElementById(UbiJS_PluginId); + try { + + UbiJS_CurrentInstalledVersion = UbiJS_Object.GetVersion(); + return true; // 설치버전 있음 + } + catch(e) { + + return false; // 설치안됨 + } + return false; +} + +/** + * 플러그인의 업그레이드 버전 체크 + */ +function UbiJS_PluginUpdateCheck() { + + if( UbiJS_PluginVersion == UbiJS_CurrentInstalledVersion ) + return true; + + UbiJS_CurrentInstalledVersion = UbiJS_CurrentInstalledVersion.replace(/,/gi, "."); + var ver1 = UbiJS_CurrentInstalledVersion.split("."); + var ver2 = UbiJS_PluginVersion.split("."); + if( parseInt(ver1[0])>parseInt(ver2[0]) ) {return true;} + else if( parseInt(ver1[0])parseInt(ver2[1]) ) {return true;} + else if( parseInt(ver1[1])parseInt(ver2[2]) ) {return true;} + else if( parseInt(ver1[2])parseInt(ver2[3]) ) {return true;} + return false; +} + +/** + * Cab 파일 업데이트 체크 + */ +function UbiJS_CabUpdateCheck() { + + var xmlDoc; + var url; + var title; + var version; + + var XML = ""; + var resultXML = ''; + + if( UbiJS_IsIE ) { + + try { + xmlDoc = UbiJS_MS_XMLDOM; + } + catch(e) { + xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); + } + xmlDoc.async = false; + xmlDoc.loadXML(UbiJS_CabUpdateXml); + } + else { + + if( window.DOMParser ) { + + parser=new DOMParser(); + xmlDoc=parser.parseFromString(UbiJS_CabUpdateXml,"text/xml"); + } + } + + if( xmlDoc ) { + + for( var i=0;i"; + } + } + resultXML = ""+XML+""; + } + + if( XML=='' ) { + + return true; + } + else { + + UbiJS_Object.setUpdateXml(resultXML); + return false; + } +} + +/** + * Cab 버전 체크를 통한 업데이트 여부 반환 + */ +function UbiJS_CheckCabVersion(cur, last) { + + last = last.replace(/,/gi, "."); + + if(last == cur) return true; + var ver1 = cur.split("."); + var ver2 = last.split("."); + + if(parseInt(ver1[0])>parseInt(ver2[0])) {return true;} + else if(parseInt(ver1[0])parseInt(ver2[1])) {return true;} + else if(parseInt(ver1[1])parseInt(ver2[2])) {return true;} + else if(parseInt(ver1[2])parseInt(ver2[3])) {return true;} + return false; +} + +/** + * 플러그인 지원 브라우져 여부 + */ +function UbiJS_PluginAvailableBrowser() { + + // 우선 WS만 가능하도록 + return false; + + // Edge or Chrome 45 이상 버전이면 플러그인 미지원 브라우져 +/* if( UbiJS_IsEdge || ( UbiJS_IsChrome && UbiJS_GetBrowserVersion() > 44 ) || ( UbiJS_IsOpera && UbiJS_GetBrowserVersion() > 32 ) ) + return false; + return true;*/ +} + +/** + * 브라우저별 설치 가이드 가져오기 + */ +function UbiJS_GetInstallContents() { + + if(UbiJS_IsSafari){return UbiJS_HelpSafari;} + if(UbiJS_IsFirefox){return UbiJS_HelpFireFox;} + if(UbiJS_IsChrome){return UbiJS_HelpChrome;} + if(UbiJS_IsOpera){return UbiJS_HelpOpera;} + if(UbiJS_IsIE){return UbiJS_HelpIE;} + return ""; +} + +/** + * 브라우저별로 메세지 표시 처리 + */ +function UbiJS_Alert(msg, title) { + + if( UbiJS_IsIE ) { + + alert(msg); // IE 는 alert 함수 그대로 이용. + } + else { + + if(!title) { + + title='UbiReport'; + } + + var i = 0; + var pluginScript = []; + + pluginScript[i++] = ""; + + var obj = document.createElement("div"); + obj.style.cssText = "position:absolute; width:0px; height:0px; left:0px; top:0px;"; + obj.innerHTML = pluginScript.join(""); + UbiJS_WINDOC.body.appendChild(obj); + UbiJS_CurrentInstalledVersion = UbiJS_WINDOC.getElementById('UbiJS_Object_PluginViewerVersion').Alert(msg, title); //브라우저 특성상 내부 메세지 창 이용 + UbiJS_WINDOC.body.removeChild(obj); + } +} + +/** + * 뷰어 유형 반환 + */ +function UbiJS_ActiveXEdition() { + + var cab_edition = ""; + if( UbiJS_CabUpdateXml.indexOf("UbiViewerXP.cab")>=0 ) { + cab_edition = "MBCS"; + } + else if( UbiJS_CabUpdateXml.indexOf("UbiViewerXUniP.cab")>=0 ) { + cab_edition = "UNICODE"; + } + else if( UbiJS_CabUpdateXml.indexOf("UbiViewerXMarkAnyP.cab")>=0 ) { + cab_edition = "MARKANY"; + } + else if( UbiJS_CabUpdateXml.indexOf("UbiViewerXBcqreP.cab")>=0 ) { + cab_edition = "BCQRE"; + } + else if( UbiJS_CabUpdateXml.indexOf("UbiViewerXBcqreUniP.cab")>=0 ) { + cab_edition = "BCQREUNI"; + } + return cab_edition; +} + +/** + * 플러그인 이벤트 추가 + */ +function UbiJS_AddEvent(obj, name, func) { + + if(obj) { + if(obj.attachEvent) { + obj.attachEvent("on"+name,func); + } + else{ obj.addEventListener(name,func,false); + } + } +} + + +/******************************************************************* +WebSocket 전용 함수 +*******************************************************************/ +//---------------------------------------------------------------------------------------------------- +// WebSocket 뷰어 객체 정보 +//---------------------------------------------------------------------------------------------------- +var UbiWSViewer = function(websocket) { + + var ws = websocket; + + // property + this.fileurl = ""; + this.ubiserverurl = "", + this.jrffiledir = "", + this.jrffilename = "", + this.datasource = "", + this.islocalfile = "false", + this.islocaldata = "false", + this.scale = "100", + this.resource = "fixed", + this.invisibletoolbar = "", + this.rowdim = "", + this.coldim = "", + this.margin = "", + this.progress = "", + this.toolbar = "", + this.popupmenu = "", + this.servletrooturl = "", + this.exportfilename = "", + this.exportds = "", + this.invisibleexporttypes = "", + this.isurf = "", + this.printcopies = "1", + this.printleftmargin = "", + this.printtopmargin = "", + this.isencrypt = "false", + this.isencrypt64 = "false", + this.barcodeposition = "", + this.cdposition = "", + this.docname = "", + this.pagenames = "", + this.isdrm = "", + this.reportid = "", + this.printmarginrevision = "true", + this.printsetmode = "", + this.printpapersize = "", + this.imagecache = "false", + this.fontelement = "", + this.reporttitle = "", + this.printautofit = "", + this.fontrevision = "true", + this.exportsetmode = "", + this.ismultireport = "false", + this.multicount = "1", + this.ispluginasync = "false", + this.arg = "", + this.reqtype = "retrieve", + this.variable = "", + this.resize = "", + + // method + this.retrieve = function() { + // UbiServer와 연결되어 있는 지 체크 + //if (this.checkWebSocket() == false) + // return; + + var propery = this.GetUbiProperty(); + var msg = "reqtype" + UbiJS_WS_CS_ + "retrieve" + UbiJS_WS_RS_ + propery; + + // SetVariable을 통해 설정한 속성 + if (this.variable != '') { + msg += this.variable; + this.variable = ''; + } + + if (this.resize != '') { + //msg += this.resize; + msg = this.resize + msg; + this.resize = ''; + } + + this.UbiJS_WsSend(msg); + UbiJS_WsSleep(100); + }; + + this.RetrieveBind = function() { + var propery = this.GetUbiProperty(); + var msg = "reqtype" + UbiJS_WS_CS_ + "retrievebind" + UbiJS_WS_RS_ + propery; + + //SetVariable을 통해 설정한 속성 + if (this.variable != '') { + msg += this.variable; + this.variable = ''; + } + + if (this.resize != '') { + msg = this.resize + msg; + this.resize = ''; + } + + this.UbiJS_WsSend(msg); + sleep(100); + }; + + this.RetrieveUrf = function(s1) { + // s1 : urf file path + var propery = this.GetUbiProperty(); + var msg = "reqtype" + UbiJS_WS_CS_ + ("retrieveurf#" + s1) + UbiJS_WS_RS_ + propery; + + //SetVariable을 통해 설정한 속성 + if (this.variable != '') { + msg += this.variable; + this.variable = ''; + } + + if (this.resize != '') { + msg = this.resize + msg; + this.resize = ''; + } + + this.UbiJS_WsSend(msg); + }; + + this.PrintHtmlUrf = function(isPrintSet, isStreaming, totalpage, currentpage, urfurl) { + // s1 : urf file path + var propery = this.GetUbiProperty(); + var printtype = 1; + if (isPrintSet) { + printtype = 1; + } else { + printtype = 0; + } + var msg = "reqtype" + UbiJS_WS_CS_ + "printhtmlurf" + UbiJS_WS_RS_ + + "isprintsetup" + UbiJS_WS_CS_ + printtype + UbiJS_WS_RS_ + + "isstreaming" + UbiJS_WS_CS_ + isStreaming + UbiJS_WS_RS_ + + "totalpage" + UbiJS_WS_CS_ + totalpage + UbiJS_WS_RS_ + + "currentpage" + UbiJS_WS_CS_ + currentpage + UbiJS_WS_RS_ + + "urfurl" + UbiJS_WS_CS_ + urfurl + UbiJS_WS_RS_ + + propery; + //SetVariable을 통해 설정한 속성 + if (this.variable != '') { + msg += this.variable; + this.variable = ''; + } + + if (this.resize != '') { + msg = this.resize + msg; + this.resize = ''; + } + + this.UbiJS_WsSend(msg); + }; + + this.ExportHtmlUrf = function(exportType, isStreaming, totalpage, currentpage, urfurl) { + var propery = this.GetUbiProperty(); + + var msg = "reqtype" + UbiJS_WS_CS_ + "exporthtmlurf" + UbiJS_WS_RS_ + + "exporttype" + UbiJS_WS_CS_ + exportType + UbiJS_WS_RS_ + + "isstreaming" + UbiJS_WS_CS_ + isStreaming + UbiJS_WS_RS_ + + "totalpage" + UbiJS_WS_CS_ + totalpage + UbiJS_WS_RS_ + + "currentpage" + UbiJS_WS_CS_ + currentpage + UbiJS_WS_RS_ + + "urfurl" + UbiJS_WS_CS_ + urfurl + UbiJS_WS_RS_ + + propery; + //SetVariable을 통해 설정한 속성 + if (this.variable != '') { + msg += this.variable; + this.variable = ''; + } + + if (this.resize != '') { + msg = this.resize + msg; + this.resize = ''; + } + + this.UbiJS_WsSend(msg); + }; + + this.GetUbiProperty = function() { + var msg = "isPluginAsync" + UbiJS_WS_CS_ + this.ispluginasync + UbiJS_WS_RS_ + + "isPlugin" + UbiJS_WS_CS_ + "true" + UbiJS_WS_RS_ + + "isencrypt" + UbiJS_WS_CS_ + this.isencrypt + UbiJS_WS_RS_ + + "isencrypt64" + UbiJS_WS_CS_ + this.isencrypt64 + UbiJS_WS_RS_ + + "fileurl" + UbiJS_WS_CS_ + this.fileurl + UbiJS_WS_RS_ + + "ubiserverurl" + UbiJS_WS_CS_ + this.ubiserverurl + UbiJS_WS_RS_ + + "jrffiledir" + UbiJS_WS_CS_ + this.jrffiledir + UbiJS_WS_RS_ + + "jrffilename" + UbiJS_WS_CS_ + this.jrffilename + UbiJS_WS_RS_ + + "datasource" + UbiJS_WS_CS_ + this.datasource + UbiJS_WS_RS_ + + "islocalfile" + UbiJS_WS_CS_ + this.islocalfile + UbiJS_WS_RS_ + + "islocaldata" + UbiJS_WS_CS_ + this.islocaldata + UbiJS_WS_RS_ + + "scale" + UbiJS_WS_CS_ + this.scale + UbiJS_WS_RS_ + + "resource" + UbiJS_WS_CS_ + this.resource + UbiJS_WS_RS_ + + "invisibletoolbar" + UbiJS_WS_CS_ + this.invisibletoolbar + UbiJS_WS_RS_ + + "rowdim" + UbiJS_WS_CS_ + this.rowdim + UbiJS_WS_RS_ + + "coldim" + UbiJS_WS_CS_ + this.coldim + UbiJS_WS_RS_ + + "margin" + UbiJS_WS_CS_ + this.margin + UbiJS_WS_RS_ + + "progress" + UbiJS_WS_CS_ + this.progress + UbiJS_WS_RS_ + + "toolbar" + UbiJS_WS_CS_ + this.toolbar + UbiJS_WS_RS_ + + "popupmenu" + UbiJS_WS_CS_ + this.popupmenu + UbiJS_WS_RS_ + + "servletrooturl" + UbiJS_WS_CS_ + this.servletrooturl + UbiJS_WS_RS_ + + "exportfilename" + UbiJS_WS_CS_ + this.exportfilename + UbiJS_WS_RS_ + + "exportds" + UbiJS_WS_CS_ + this.exportds + UbiJS_WS_RS_ + + "invisibleexporttypes" + UbiJS_WS_CS_ + this.invisibleexporttypes + UbiJS_WS_RS_ + + "isurf" + UbiJS_WS_CS_ + this.isurf + UbiJS_WS_RS_ + + "printcopies" + UbiJS_WS_CS_ + this.printcopies + UbiJS_WS_RS_ + + "printleftmargin" + UbiJS_WS_CS_ + this.printleftmargin + UbiJS_WS_RS_ + + "printtopmargin" + UbiJS_WS_CS_ + this.printtopmargin + UbiJS_WS_RS_ + + "reportid" + UbiJS_WS_CS_ + this.reportid + UbiJS_WS_RS_ + + "printmarginrevision" + UbiJS_WS_CS_ + this.printmarginrevision + UbiJS_WS_RS_ + + "printsetmode" + UbiJS_WS_CS_ + this.printsetmode + UbiJS_WS_RS_ + + "printpapersize" + UbiJS_WS_CS_ + this.printpapersize + UbiJS_WS_RS_ + + "reporttitle" + UbiJS_WS_CS_ + this.reporttitle + UbiJS_WS_RS_ + + "imagecache" + UbiJS_WS_CS_ + this.imagecache + UbiJS_WS_RS_ + + "fontelement" + UbiJS_WS_CS_ + this.fontelement + UbiJS_WS_RS_ + + "printautofit" + UbiJS_WS_CS_ + this.printautofit + UbiJS_WS_RS_ + + "fontrevision" + UbiJS_WS_CS_ + this.fontrevision + UbiJS_WS_RS_ + + "exportsetmode" + UbiJS_WS_CS_ + this.exportsetmode + UbiJS_WS_RS_ + + "ismultireport" + UbiJS_WS_CS_ + this.ismultireport + UbiJS_WS_RS_ + + "multicount" + UbiJS_WS_CS_ + this.multicount + UbiJS_WS_RS_ + + "arg" + UbiJS_WS_CS_ + this.arg + UbiJS_WS_RS_; + + return msg; + }; + + this.ExportFile = function(s1) { + + var filetype = s1; + var msg = "reqtype" + UbiJS_WS_CS_ + ("exportfile#"+filetype) + UbiJS_WS_RS_ + + "exportfilename" + UbiJS_WS_CS_ + this.exportfilename + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.exportset = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "exportset" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.exportReport = function(s1, s2, s3) { + var jrffilename = s1; + var args = s2; + var exporttype = s3; + + var msg = "reqtype" + UbiJS_WS_CS_ + "exportreport" + UbiJS_WS_RS_ + + "jrffilename" + UbiJS_WS_CS_ + jrffilename + UbiJS_WS_RS_ + + "args" + UbiJS_WS_CS_ + args + UbiJS_WS_RS_ + + "exporttype" + UbiJS_WS_CS_ + exporttype + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.exportsetReport = function(s1, s2, s3) { + var jrffilename = s1; + var args = s2; + var exporttype = s3; + + var msg = "reqtype" + UbiJS_WS_CS_ + "exportsetreport" + UbiJS_WS_RS_ + + "jrffilename" + UbiJS_WS_CS_ + jrffilename + UbiJS_WS_RS_ + + "args" + UbiJS_WS_CS_ + args + UbiJS_WS_RS_ + + "exporttype" + UbiJS_WS_CS_ + exporttype + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.print = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "print" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.printset = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "printset" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.directPrint = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "directprint" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + UbiJS_WsSleep(100); + + this.close(); + }; + + this.printReport = function(s1, s2) { + var jrffilename = s1; + var args = s2; + + var msg = "reqtype" + UbiJS_WS_CS_ + "printreport" + UbiJS_WS_RS_ + + "jrffilename" + UbiJS_WS_CS_ + jrffilename + UbiJS_WS_RS_ + + "args" + UbiJS_WS_CS_ + args + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.printReportResizing = function(s1, s2, s3) { + var jrffilename = s1; + var args = s2; + var papersize = s3; + + var msg = "reqtype" + UbiJS_WS_CS_ + "printreportresizing" + UbiJS_WS_RS_ + + "jrffilename" + UbiJS_WS_CS_ + jrffilename + UbiJS_WS_RS_ + + "args" + UbiJS_WS_CS_ + args + UbiJS_WS_RS_ + + "papersize" + UbiJS_WS_CS_ + papersize + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.printsetReport = function(s1, s2, s3) { + var jrffilename = s1; + var args = s2; + var pagenum = s3; + + var msg = "reqtype" + UbiJS_WS_CS_ + "printsetreport" + UbiJS_WS_RS_ + + "jrffilename" + UbiJS_WS_CS_ + jrffilename + UbiJS_WS_RS_ + + "args" + UbiJS_WS_CS_ + args + UbiJS_WS_RS_ + + "pagenum" + UbiJS_WS_CS_ + pagenum + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.SetDataset = function(s1, s2) { + var dsid = s1; + var dsdata = s2; + + var msg = "reqtype" + UbiJS_WS_CS_ + "setdataset" + UbiJS_WS_RS_ + + dsid + "#" + dsdata; + this.UbiJS_WsSend(msg); + }; + + this.DrmStart = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "drmstart" + UbiJS_WS_RS_ + + "isencrypt" + UbiJS_WS_CS_ + this.isencrypt + UbiJS_WS_RS_ + + "isencrypt64" + UbiJS_WS_CS_ + this.isencrypt64 + UbiJS_WS_RS_ + + "ubiserverurl" + UbiJS_WS_CS_ + this.ubiserverurl + UbiJS_WS_RS_ + + "barcodeposition" + UbiJS_WS_CS_ + this.barcodeposition + UbiJS_WS_RS_ + + "cdposition" + UbiJS_WS_CS_ + this.cdposition + UbiJS_WS_RS_ + + "docname" + UbiJS_WS_CS_ + this.docname + UbiJS_WS_RS_ + + "pagenames" + UbiJS_WS_CS_ + this.pagenames + UbiJS_WS_RS_ + + "isdrm" + UbiJS_WS_CS_ + this.isdrm + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + UbiJS_WsSleep(200); + }; + + this.firstPage = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "firstpage" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.previousPage = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "previouspage" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.nextPage = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "nextpage" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.lastPage = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "lastpage" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.setPage = function(s1) { + var page = s1; + var msg = "reqtype" + UbiJS_WS_CS_ + ("setpage#" + page) + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.zoomIn = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "zoomin" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.zoomOut = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "zoomout" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.LoadTemplet = function(s1) { + var jrffilename = s1; + var msg = "reqtype" + UbiJS_WS_CS_ + ("loadtemplet#" + jrffilename) + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.SetVariable = function(s1, s2) { + if (s1 == 'Nexacro.DatasetInfos' || s1 == 'Nexacro.DesignData' || s1 == 'Nexacro.RuntimeData') { + var msg = "reqtype" + UbiJS_WS_CS_ + "setvariable_nexacro" + UbiJS_WS_RS_ + + (s1 + "#" + s2); + this.UbiJS_WsSend(msg); + } + else if (s1 == 'IsEncrypt64') { + var msg = "reqtype" + UbiJS_WS_CS_ + "setvariable_encrypt64" + UbiJS_WS_RS_ + (s1 + "#" + s2); + this.UbiJS_WsSend(msg); + } + else if (s1 == 'exportfilename') { + this.exportfilename = s2; + var msg = "reqtype" + UbiJS_WS_CS_ + "setvariable" + UbiJS_WS_RS_ + + ('exportFileName' + UbiJS_WS_CS_ + s2 + UbiJS_WS_RS_); + this.UbiJS_WsSend(msg); + } + else { + this.variable += (s1 + UbiJS_WS_CS_ + s2 + UbiJS_WS_RS_); + } + }; + + this.refresh = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "refresh" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.sendVariable = function() { + if (this.variable == '') + return; + + var msg = "reqtype" + UbiJS_WS_CS_ + "setvariable" + UbiJS_WS_RS_ + + this.variable; + this.UbiJS_WsSend(msg); + this.variable = ""; + }; + + this.setProgress = function(s1) { + var msg = "reqtype" + UbiJS_WS_CS_ + ("setprogress#"+s1) + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.SetVisibleTbButton = function(s1, s2) { + // s1 : button id, s2 : flag + var btnflag = s1 + '#' + s2; + var msg = "reqtype" + UbiJS_WS_CS_ + ("setvisibletbbutton#"+btnflag) + UbiJS_WS_RS_; + this.ubiWS_Send(msg); + }; + + // Viewer의 버전 정보를 확인한다. + this.aboutBox = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "aboutbox" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.checkWebSocket = function() { + // 0 : CONNECTING + // 1 : OPEN + // 2 : CLOSING + // 3 : CLOSED + if (ws.readyState != 1) { + alert('UbiViewerWS\uc640 \uc5f0\uacb0\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.'); + return false; + } + + return true; + }; + + // UbiServerWS 전체에 대한 버전을 확인한다. + this.checkVersion = function() { +// var msg = "reqtype" + UbiJS_WS_CS_ + "checkversion#" + UbiJS_WsVersion + UbiJS_WS_RS_ + UbiJS_WS_VER_EOF_; + var msg = "reqtype" + UbiJS_WS_CS_ + "checkversion#" + UbiJS_WsVersion + UbiJS_WS_RS_ + UbiJS_WS_VER_EOF_ + UbiJS_WS_EOF_; + ws.send(msg); + }; + + this.close = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "close" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + }; + + this.setResize = function(s1, s2, s3, s4) { + // 최대화 + if (s2 == undefined && s3 == undefined && s4 == undefined) { + var max = s1; + this.resize = ''; + this.resize = "resize" + UbiJS_WS_CS_ + (max + "#") + UbiJS_WS_RS_; + } else { + var top = s1; // x + var left = s2; // y + var width = s3; + var height = s4; + + this.resize = ''; + this.resize = "resize" + UbiJS_WS_CS_ + (left + "#" + top + "#" + width + "#" + height + "#") + UbiJS_WS_RS_; + } + }; + + this.UbiJS_WsSend = function(msg) { + msg += UbiJS_WS_EOF_; + ws.send(msg); + }; + + //KKD 20170118. HTML 임베디드 시 재호출을 막기위해 사용함. + this.quickPrint = function() { + var msg = "reqtype" + UbiJS_WS_CS_ + "directprint" + UbiJS_WS_RS_; + this.UbiJS_WsSend(msg); + UbiJS_WsSleep(100); + + //this.close(); + }; +}; + +/** + * WebSocket 초기화 및 설치 여부 확인 + */ +function InitWebSocket(callback, _htmlviewer) { + + if( !UbiJS_CheckSupportWS() ) { + UbiJS_ShowWsWarning(); + return; + } + + UbiJS_createWebSocket(callback, _htmlviewer); +} + +/** + * UbiJS_createWebSocket이 시작된 후 종료될때까지 대기 + * @param callback + * @param _htmlviewer + */ +function UbiJS_waitCreateJob(callback, _htmlviewer) { +//console.log('UbiJS_waitCreateJob'); + setTimeout( + function () { + if (!UbiJS_WsCreateStart) { + return; + } else { + UbiJS_waitCreateJob(callback, _htmlviewer); + } + }, 100); +} + +/** + * WebSocket 생성 + * @param callback + */ +function UbiJS_createWebSocket(callback, _htmlviewer) { + if (UbiJS_WsCreateStart && UbiJS_WsCheckIndex == 0) { + UbiJS_waitCreateJob(callback, _htmlviewer); + return; + } + + // 모든 포트가 연결이 안될 경우 신규 설치 + if (UbiJS_WsCheckIndex > 2) { + UbiJS_createWebSocketEnd(null, callback); + return; + } + + if (UbiJS_WsCheckComplete) { + return; + } + + UbiJS_WsCreateStart = true; + + var isCreate = true; + if (_ubijs_ws) { + if (_ubijs_ws.readyState == 1) { + isCreate = false; + } else { + //console.log('['+ (new Date().getTime()) + '] ubireport websocket reopen'); + } + } + + var htmlviewer = _htmlviewer; + var cur_protocolName = window.location.protocol; + + if (isCreate) { + var wsurl = ""; + if (cur_protocolName === 'https:') { + wsurl = 'wss://127.0.0.1:' + UbiJS_WsPorts[UbiJS_WsCheckIndex]; + } else { + wsurl = 'ws://127.0.0.1:' + UbiJS_WsPorts[UbiJS_WsCheckIndex]; + } + _ubijs_ws = new WebSocket(wsurl, UbiJS_WsProtocol); + } + + _ubijs_ws.onopen = function(e) { + //console.log('ws.onopen === url : ' + ws.url); + }; + + _ubijs_ws.onmessage = function(e) { + + //console.log('ws.onmessage === data : ' + e.data); + var message = e.data; + var result = ''; + + if( message.indexOf('RETRIEVEEND') != -1 ) { + + RetrieveEnd(); + } + else if( message.indexOf('EXPORTEND') != -1 ) { + + message = message.replace(/\0/g, ""); + result = message.substring(message.indexOf('#')+1, message.length); + ExportEnd(result); + + // HTML 뷰어에 선언된 ExportEnd 이벤트가 있다면 결과를 리턴 + if (htmlviewer) { + if (htmlviewer.events.exportEnd) { + // flag, exporturl + var bResult = (result == '0') ? false : true; + htmlviewer.events.exportEnd(bResult, result); + } + } + } + else if( message.indexOf('PRINTEND') != -1 ) { + + message = message.replace(/\0/g, ""); + result = message.substring(message.indexOf('#')+1, message.length); + PrintEnd(result); + + // HTML 뷰어에 선언된 PrintEnd 이벤트가 있다면 결과를 리턴 + if (htmlviewer) { + if (htmlviewer.events.printEnd) { + var bResult = (result == '0') ? true : false; + htmlviewer.events.printEnd(bResult); + } + } + } + else if( message.indexOf('RESET') != -1 ) { + if( callback ) { + callback(_ubijs_ws); + } + UbiJS_WsCreateStart = false; + } + else if( message.indexOf('CLOSE') != -1 ) { +// UbiJS_WsViewer = null; + if (htmlviewer) { + if (htmlviewer.events.closeEnd) { + htmlviewer.events.closeEnd(); + } + } + //ws.close(); + } + else if( message.indexOf('CHECKVERSION') != -1 ) { + + result = message.substring(message.indexOf('#')+1, message.length); + if( result == 'true' ) { // 설치 OK. 미리보기 + if( callback ) { + callback(_ubijs_ws); + } + } + else { // 업데이트 설치 + //console.log('['+ (new Date().getTime()) + '] upgrade install : '+ UbiJS_WsVersion); + UbiJS_ShowWsInstall(true); + if (_ubijs_ws) { + _ubijs_ws.close(); + _ubijs_ws = null; + } + } + UbiJS_WsCreateStart = false; + } + else if( message.indexOf('PRINTERINFOS') != -1 ) { + var names = []; + var defaultname = ""; + + var PREFIX_LIST = "#PRINTERLIST#"; + var PREFIX_DEFAULT = "#DEFAULTPRINTERNAME#"; + + listIndex = message.indexOf(PREFIX_LIST) + PREFIX_LIST.length; + defaultIndex = message.indexOf(PREFIX_DEFAULT); + + names = message.substring(listIndex, defaultIndex).split('|'); + defaultIndex += PREFIX_DEFAULT.length; + defaultname = message.substring(defaultIndex); + + if (UbiJS_callbackFuncs['PRINTERINFOS']) { + UbiJS_callbackFuncs['PRINTERINFOS'](names, defaultname); + UbiJS_callbackFuncs['PRINTERINFOS'] = null; + } + } + }; + + _ubijs_ws.onerror = function(e) { + //console.log('ws.onerror === code : '+ e.code); + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } + }; + + _ubijs_ws.onclose = function(e) { + //console.log('ws.onclose === code : '+ e.code); + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } + }; + + UbiJS_WsWaitCheckCount = 0; + if (isCreate) { + UbiJS_waitForWebSocketConnection(_ubijs_ws, callback); + } else { + var msg = "reqtype" + UbiJS_WS_CS_ + "reset" + UbiJS_WS_RS_ + UbiJS_WS_EOF_; + _ubijs_ws.send(msg); + } +} + +function UbiJS_createWebSocketEnd(ws, callback) { + // 재사용을 위한 변수 초기화 + UbiJS_WsCheckIndex = 0; + UbiJS_WsCheckComplete = false; + UbiJS_WsWaitCheckCount = 0; + UbiJS_WsCreateStart = false; + + // 신규 설치 + if (ws == null) { + if( UbiJS_WsCallback ) { + callback(ws); + } else { + UbiJS_ShowWsInstall(false); + if (_ubijs_ws) { + _ubijs_ws.close(); + _ubijs_ws = null; + } + } + + return; + } + + // Version Check + UbiJS_WsSleep(300); + var checkmsg = "reqtype" + UbiJS_WS_CS_ + "checkversion#" + UbiJS_WsVersion + UbiJS_WS_RS_ + UbiJS_WS_VER_EOF_ + UbiJS_WS_EOF_; + ws.send(checkmsg); +} + +/** + * WebSocket의 상태가 준비상태일때까지 대기 (3번연속 비정상이면 연결이 안되는것으로 판단) + * @param ws + * @param callback + */ +function UbiJS_waitForWebSocketConnection(ws, callback){ + // 10번 연속 연결이 확인 안될 경우 다음 포트를 호출 (1초 대기) + if (UbiJS_WsWaitCheckCount > 10) { + if (ws) { + //console.log('['+ (new Date().getTime()) + '] connect fail['+ UbiJS_WsPorts[UbiJS_WsCheckIndex] +'] : '+ ws.readyState); + ws.close(); + } + UbiJS_WsCheckIndex++; + UbiJS_createWebSocket(callback); + return; + } + + setTimeout( + function () { + if (ws.readyState === 1) { + //console.log("Connection is made"); + UbiJS_WsCheckComplete = true; + UbiJS_createWebSocketEnd(ws, callback); + return; + } else { + //console.log("wait for connection...["+ UbiJS_WsWaitCheckCount +"] : "+ ws.url); + UbiJS_WsWaitCheckCount++; + UbiJS_waitForWebSocketConnection(ws, callback); + } + }, 100); +} + +/** + * WebSocket 지원 가능 여부 확인 + */ +function UbiJS_WSCheckBrowser() { + + if( UbiJS_Os === 'Windows NT' && UbiJS_GetBrowser() === 'MSIE' && UbiJS_GetBrowserVersion() < 10) // IE10 미만 미지원 + return false; + if (UbiJS_Os === 'Windows NT' && UbiJS_GetBrowser() === 'Chrome' && UbiJS_GetBrowserVersion() < 19) // Chrome 19 미만 미지원 + return false; + if (UbiJS_Os === 'Windows NT' && UbiJS_GetBrowser() === 'Firefox' && UbiJS_GetBrowserVersion() < 18) // Firefox 18 미만 미지원 + return false; + if (UbiJS_Os === 'Windows NT' && UbiJS_GetBrowser() === 'Safari') // 해당 OS의 Safari 미지원 + return false; + if (UbiJS_Os === 'Windows NT' && UbiJS_GetBrowser() === 'Opera' && UbiJS_GetBrowserVersion() < 15) // Opera 15 미만 미지원 + return false; + if (UbiJS_Os === 'Mac OS X' || UbiJS_Os === 'Linux') // Mac/Linux 미지원 + return false; + return true; +} + +/** + * WebSocket 지원 가능 여부 확인 + */ +function UbiJS_CheckSupportWS() { + + if (!window.WebSocket) { + return false; + } + + if (!UbiJS_WSCheckBrowser()) { + return false; + } + + return true; +}; + +/** + * 지정된 시간 내 WebSocket 연결 대기 설치 페이지 이동 + */ +function UbiJS_WsStopCheck() { + + if( !UbiJS_WsInstallFlag ) { + + UbiJS_ShowWsInstall(false); + } +} + +/** + * 지연 시간 발생. + */ +function UbiJS_WsSleep(delay) { + + var start = new Date().getTime(); + while (new Date().getTime() < start + delay); +} + +/******************************************************************* +Plugin / WebSocke 메시지 보여주기 +*******************************************************************/ +/** + * 플러그인 설치 및 업데이트 안내 메시지 + */ +function UbiJS_ShowPluginInstall(isUpdate) { + + if( navigator.userAgent.indexOf('x64')>-1 && navigator.userAgent.indexOf('Win64')>-1 ) { + + UbiJS_ShowPlugin64Warning(); + } + else { + + if( UbiJS_IE_AutoDownload ) { + + if( UbiJS_WINDOC.getElementById(UbiJS_Frame_Download) == null ) { + + var obj = UbiJS_CreateUbiDownloadFrame(UbiJS_Frame_Download); + UbiJS_WINDOC.body.appendChild(obj); + } + else { + + UbiJS_WINDOC.getElementById(UbiJS_Frame_Download).src = UbiJS_PluginInstallPath; + } + } + + if( UbiJS_WINDOC.getElementById(UbiJS_Div_Install) == null ) { + + var str = []; + var i = 0; + + str[i++] = "
    {MSG_TITLE}
    "; + str[i++] = "
    "; + str[i++] = "
    {MSG_SUBJECT}
    "; + str[i++] = "
    {MSG_CONTENTS}
    "; + str[i++] = "
    "; + str[i++] = " "; + str[i++] = " "; + str[i++] = "
    "; + str[i++] = "
    "; + + var width ="500"; + var height ="350"; + var color = UbiJS_InstallHeader; + var title = isUpdate ? _ubinonax_getMessage(UbiJS_Language, 'Update_Title') : _ubinonax_getMessage(UbiJS_Language, 'Install_Title'); + var subject = isUpdate ? _ubinonax_getMessage(UbiJS_Language, 'Update_Subject') : _ubinonax_getMessage(UbiJS_Language, 'Install_Subject'); + var contents = ""; + if( isUpdate ) { + + contents = _ubinonax_getMessage(UbiJS_Language, 'Update_Contents'); + } + else { + + contents = _ubinonax_getMessage(UbiJS_Language, 'Install_Contents'); + } + var installpath = UbiJS_PluginInstallPath; + var html = str.join(""); + UbiJS_ShowMessage(UbiJS_Div_Install, width, height, color, title, subject, contents, installpath, html); + } + else { + + UbiJS_WINDOC.getElementById(UbiJS_Div_Install).style.display = ""; + } + } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } +} + +/** + * 플러그인 64bit 브라우저 미지원 안내 메시지 + */ +function UbiJS_ShowPlugin64Warning() { + + if( UbiJS_WINDOC.getElementById(UbiJS_Div_64Warning) == null ) { + + var str = []; + var i = 0; + + str[i++] = "
    {MSG_TITLE}
    "; + str[i++] = "
    "; + str[i++] = "
    {MSG_SUBJECT}
    "; + str[i++] = "
    {MSG_CONTENTS}
    "; + str[i++] = "
    "; + str[i++] = " "; + str[i++] = "
    "; + str[i++] = "
    "; + + var width ="500"; + var height ="350"; + var color = UbiJS_NoticeHeader; + var title = _ubinonax_getMessage(UbiJS_Language, 'Guide_Title'); + var subject = _ubinonax_getMessage(UbiJS_Language, '64_Subject'); + var contents = _ubinonax_getMessage(UbiJS_Language, '64_Contents'); + var installpath = UbiJS_PluginInstallPath; + var html = str.join(""); + + UbiJS_ShowMessage(UbiJS_Div_64Warning, width, height, color, title, subject, contents, installpath, html); + } + else { + + UbiJS_WINDOC.getElementById(UbiJS_Div_64Warning).style.display = ""; + } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } +} + +/** + * 플러그인 미지원 브라우저 안내 메시지 + */ +function UbiJS_ShowPluginWarning() { + + if( UbiJS_WINDOC.getElementById(UbiJS_Div_Notice) == null ) { + + var str = []; + var i = 0; + + str[i++] = "
    {MSG_TITLE}
    "; + str[i++] = "
    "; + str[i++] = "
    {MSG_SUBJECT}
    "; + str[i++] = "
    {MSG_CONTENTS}
    "; + str[i++] = "
    "; + str[i++] = " "; + str[i++] = "
    "; + str[i++] = "
    "; + + var width ="500"; + var height ="350"; + var color = UbiJS_NoticeHeader; + var title = _ubinonax_getMessage(UbiJS_Language, 'Guide_Title'); + var subject = _ubinonax_getMessage(UbiJS_Language, 'Plugin_Subject'); + var contents = _ubinonax_getMessage(UbiJS_Language, 'Plugin_Contents'); + var installpath = ""; + var html = ""; + + UbiJS_ShowMessage(UbiJS_Div_Notice, width, height, color, title, subject, contents, installpath, html); + } + else { + + UbiJS_WINDOC.getElementById(UbiJS_Div_Notice).style.display = ""; + } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } +} + +/** + * WS 미지원 브라우저 안내 메시지 + */ +function UbiJS_ShowWsWarning() { + + if( UbiJS_WINDOC.getElementById(UbiJS_Div_Notice) == null ) { + + var str = []; + var i = 0; + + str[i++] = "
    {MSG_TITLE}
    "; + str[i++] = "
    "; + str[i++] = "
    {MSG_SUBJECT}
    "; + str[i++] = "
    {MSG_CONTENTS}
    "; + str[i++] = "
    "; + str[i++] = " "; + str[i++] = "
    "; + str[i++] = "
    "; + + var width ="500"; + var height ="350"; + var color = UbiJS_NoticeHeader; + var title = _ubinonax_getMessage(UbiJS_Language, 'Guide_Title'); + var subject = _ubinonax_getMessage(UbiJS_Language, 'WS_Subject'); + var contents = _ubinonax_getMessage(UbiJS_Language, 'WS_Contents'); + var installpath = ""; + var html = str.join(""); + + UbiJS_ShowMessage(UbiJS_Div_Notice, width, height, color, title, subject, contents, installpath, html); + } + else { + + UbiJS_WINDOC.getElementById(UbiJS_Div_Notice).style.display = ""; + } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } +} + +/** + * 설치(업데이트) 안내 메시지 창 보이기 + */ +function UbiJS_ShowWsInstall(isUpdate) { + + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } + + if( UbiJS_WINDOC.getElementById(UbiJS_Div_Install) == null ) { + + var str = []; + var i = 0; + + str[i++] = "
    {MSG_TITLE}
    "; + str[i++] = "
    "; + str[i++] = "
    {MSG_SUBJECT}
    "; + str[i++] = "
    {MSG_CONTENTS}
    "; + str[i++] = "
    "; + str[i++] = " "; + str[i++] = " "; + str[i++] = "
    "; + str[i++] = "
    "; + + var width ="500"; + var height ="350"; + var color = UbiJS_InstallHeader; + var title = isUpdate ? _ubinonax_getMessage(UbiJS_Language, 'Update_Title') : _ubinonax_getMessage(UbiJS_Language, 'Install_Title'); + var subject = isUpdate ? _ubinonax_getMessage(UbiJS_Language, 'Update_Subject') : _ubinonax_getMessage(UbiJS_Language, 'Install_Subject'); + var contents = _ubinonax_getMessage(UbiJS_Language, 'Install_Contents'); + var installpath = UbiJS_WsInstallPath; + var html = str.join(""); + + UbiJS_ShowMessage(UbiJS_Div_Install, width, height, color, title, subject, contents, installpath, html); + } + else { + + UbiJS_WINDOC.getElementById(UbiJS_Div_Install).style.display = ""; + } +} + +/** + * 인쇄 준비 메시지 생성 + */ +function UbiJS_InitPrintStandby() { + + var width ="420"; + var height ="300"; + var color = UbiJS_StandbyHeader; + var title = "인쇄 준비 중"; + var subject = "
    사용자 PC환경 및 페이지양에 따라 5초~1분 정도 소요됩니다.

    잠시만 기다려 주세요.

    "; + var contents = ""; + var installpath = ""; + + UbiJS_HideMessage(UbiJS_Div_PrintStandby, width, height, color, title, subject, contents, installpath); +} + +/** + * 인쇄 준비 메시지 + */ +function UbiJS_ShowPrintStandby() { + var color = UbiJS_StandbyHeader; + var title = _ubinonax_getMessage(UbiJS_Language, "Print_Stanby_Title"); + var subject = _ubinonax_getMessage(UbiJS_Language, "Print_Stanby_Subject"); + var contents = ""; + var installpath = ""; + var id = UbiJS_Div_PrintStandby; + + var obj = UbiJS_WINDOC.getElementById(id); + if (obj) { + var html = obj.innerHTML; + obj.innerHTML = html.replace(/{HEADER_BG}/g, color).replace(/{MSG_TITLE}/g, title).replace(/{MSG_SUBJECT}/g, subject).replace(/{MSG_CONTENTS}/g, contents).replace(/{MSG_ID}/g, id).replace(/{DOWNLOAD_URL}/g, installpath); + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = ""; } catch(e) { } + } +} + +/** + * 인쇄 완료 메시지 + */ +function UbiJS_ShowPrintComplete() { + + if( UbiJS_WINDOC.getElementById(UbiJS_Div_PrintComplete) == null ) { + + var width ="420"; + var height ="300"; + var color = UbiJS_CompleteHeader; + var title = _ubinonax_getMessage(UbiJS_Language, "Print_Complete_Title"); + var subject = _ubinonax_getMessage(UbiJS_Language, "Print_Complete_Subject"); + var contents = ""; + var installpath = ""; + var html = ""; + + var str = []; + var i = 0; + str[i++] = "
    {MSG_TITLE}
    "; + str[i++] = "
    "; + str[i++] = "
    {MSG_SUBJECT}
    "; + str[i++] = "
    "; + str[i++] = " "; + str[i++] = "
    "; + str[i++] = "
    "; + + html = str.join(""); + + UbiJS_ShowMessage(UbiJS_Div_PrintComplete, width, height, color, title, subject, contents, installpath, html); + } + else { + + UbiJS_WINDOC.getElementById(UbiJS_Div_PrintComplete).style.display = ""; + } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } +} + +/** + * 인쇄 취소 메시지 + */ +function UbiJS_ShowPrintCancel() { + + if( UbiJS_WINDOC.getElementById(UbiJS_Div_PrintCancel) == null ) { + + var width ="420"; + var height ="300"; + var color = UbiJS_CancelHeader; + var title = _ubinonax_getMessage(UbiJS_Language, "Print_Cancel_Title"); + var subject = _ubinonax_getMessage(UbiJS_Language, "Print_Cancel_Subject"); + var contents = ""; + var installpath = ""; + var html = ""; + + var str = []; + var i = 0; + str[i++] = "
    {MSG_TITLE}
    "; + str[i++] = "
    "; + str[i++] = "
    {MSG_SUBJECT}
    "; + str[i++] = "
    "; + str[i++] = " "; + str[i++] = "
    "; + str[i++] = "
    "; + + html = str.join(""); + + UbiJS_ShowMessage(UbiJS_Div_PrintCancel, width, height, color, title, subject, contents, installpath, html); + } + else { + + UbiJS_WINDOC.getElementById(UbiJS_Div_PrintCancel).style.display = ""; + } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } +} + +/** + * 인쇄 오류 메시지 + */ +function UbiJS_ShowPrintFail() { + + if( UbiJS_WINDOC.getElementById(UbiJS_Div_PrintFail) == null ) { + + var width ="420"; + var height ="300"; + var color = UbiJS_FailHeader; + var title = _ubinonax_getMessage(UbiJS_Language, "Print_Fail_Title"); + var subject = _ubinonax_getMessage(UbiJS_Language, "Print_Fail_Subject"); + var contents = ""; + var installpath = ""; + var html = ""; + + var str = []; + var i = 0; + str[i++] = "
    {MSG_TITLE}
    "; + str[i++] = "
    "; + str[i++] = "
    {MSG_SUBJECT}
    "; + str[i++] = "
    "; + str[i++] = " "; + str[i++] = "
    "; + str[i++] = "
    "; + + html = str.join(""); + + UbiJS_ShowMessage(UbiJS_Div_PrintFail, width, height, color, title, subject, contents, installpath, html); + } + else { + + UbiJS_WINDOC.getElementById(UbiJS_Div_PrintFail).style.display = ""; + } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } +} + +/** + * 파일 저장 준비 메시지 생성 + */ +function UbiJS_InitExportStandby() { + + var width ="420"; + var height ="300"; + var color = UbiJS_StandbyHeader; + var title = "파일 저장 준비 중"; + var subject = "
    사용자 PC 환경에 따라 5초 ~ 1분 정도 소요됩니다.

    잠시만 기다려 주세요.

    "; + var contents = ""; + var installpath = ""; + + UbiJS_HideMessage(UbiJS_Div_ExportStandby, width, height, color, title, subject, contents, installpath); +} + +/** + * 파일 저장 준비 메시지 + */ +function UbiJS_ShowExportStandby() { + + var color = UbiJS_StandbyHeader; + var title = _ubinonax_getMessage(UbiJS_Language, "Export_Standby_Title"); + var subject = _ubinonax_getMessage(UbiJS_Language, "Export_Standby_Subject"); + var contents = ""; + var installpath = ""; + var id = UbiJS_Div_ExportStandby; + + var obj = UbiJS_WINDOC.getElementById(id); + if (obj) { + var html = obj.innerHTML; + obj.innerHTML = html.replace(/{HEADER_BG}/g, color).replace(/{MSG_TITLE}/g, title).replace(/{MSG_SUBJECT}/g, subject).replace(/{MSG_CONTENTS}/g, contents).replace(/{MSG_ID}/g, id).replace(/{DOWNLOAD_URL}/g, installpath); + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = ""; } catch(e) { } + } +} + +/** + * 파일 저장 완료 메시지 + */ +function UbiJS_ShowExportComplete() { + + if( UbiJS_WINDOC.getElementById(UbiJS_Div_ExportComplete) == null ) { + + var width ="420"; + var height ="300"; + var color = UbiJS_CompleteHeader; + var title = _ubinonax_getMessage(UbiJS_Language, "Export_Complete_Title"); + var subject = _ubinonax_getMessage(UbiJS_Language, "Export_Complete_Subject"); + var contents = ""; + var installpath = ""; + var html = ""; + + var str = []; + var i = 0; + str[i++] = "
    {MSG_TITLE}
    "; + str[i++] = "
    "; + str[i++] = "
    {MSG_SUBJECT}
    "; + str[i++] = "
    "; + str[i++] = " "; + str[i++] = "
    "; + str[i++] = "
    "; + + html = str.join(""); + UbiJS_ShowMessage(UbiJS_Div_ExportComplete, width, height, color, title, subject, contents, installpath, html); + } + else { + + UbiJS_WINDOC.getElementById(UbiJS_Div_ExportComplete).style.display = ""; + } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } +} + +/** + * 파일 저장 취소 메시지 + */ +function UbiJS_ShowExportCancel() { + + if( UbiJS_WINDOC.getElementById(UbiJS_Div_ExportCancel) == null ) { + + var width ="500"; + var height ="300"; + var color = UbiJS_CancelHeader; + var title = _ubinonax_getMessage(UbiJS_Language, "Export_Cancel_Title"); + var subject = _ubinonax_getMessage(UbiJS_Language, "Export_Cancel_Subject"); + var contents = ""; + var installpath = ""; + var html = ""; + + var str = []; + var i = 0; + str[i++] = "
    {MSG_TITLE}
    "; + str[i++] = "
    "; + str[i++] = "
    {MSG_SUBJECT}
    "; + str[i++] = "
    "; + str[i++] = " "; + str[i++] = "
    "; + str[i++] = "
    "; + + html = str.join(""); + UbiJS_ShowMessage(UbiJS_Div_ExportCancel, width, height, color, title, subject, contents, installpath, html); + } + else { + + UbiJS_WINDOC.getElementById(UbiJS_Div_ExportCancel).style.display = ""; + } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_PrintStandby).style.display = "none"; } catch(e) { } + try { UbiJS_WINDOC.getElementById(UbiJS_Div_ExportStandby).style.display = "none"; } catch(e) { } +} + + +/******************************************************************* + Plugin / WebSocke 공통 함수 +*******************************************************************/ +/** + * 브라우저명 가져오기 + */ +function UbiJS_GetBrowser() { + + var ua = navigator.userAgent, tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; + if (/trident/i.test(M[1])) { + tem = /\brv[ :]+(\d+)/g.exec(ua) || []; + return 'MSIE'; + } + if (M[1] === 'Chrome') { + tem = ua.match(/\bOPR\/(\d+)/); + if (tem != null) { + return 'Opera'; + } + } + M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; + if ((tem = ua.match(/version\/(\d+)/i)) != null) { + M.splice(1, 1, tem[1]); + } + return M[0]; +} + +/** + * 브라우저 버전 정보 가져오기 + * @returns + */ +function UbiJS_GetBrowserVersion() { + + var ua = navigator.userAgent, tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; + + if (/trident/i.test(M[1])) { + + tem = /\brv[ :]+(\d+)/g.exec(ua) || []; + return tem[1]; + } + + if (M[1] === 'Chrome') { + + tem = ua.match(/\bOPR\/(\d+)/); + if (tem != null) { + + return tem[1]; + } + } + + M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; + if ((tem = ua.match(/version\/(\d+)/i)) != null) { + + M.splice(1, 1, tem[1]); + } + return M[1]; +} + +/** + * 다운로드를 위해 동적 Frame 생성 + * @param id + * @returns {___obj9} + */ +function UbiJS_CreateUbiDownloadFrame(id) { + + var obj = document.createElement("iframe"); + obj.id = id; + obj.style.cssText = "position:absolute; width:0px; height:0px; left:0px; top:0px; frameborder:0px;"; + obj.src = UbiJS_PluginInstallPath; + return obj; +} + +/** + * 디자인 내용 가져오기 + * @param options + */ +function UbiJS_AjaxCall(options) { + + options={type: options.type || "POST", url: options.url || "", onComplete: options.onComplete || function(){}, onSuccess: options.onSuccess || function(){}}; + if(typeof XMLHttpRequest == "undefined"){XMLHttpRequest = function() {return new ActiveXObject(navigator.userAgent.indexOf("MSIE 5") >= 0 ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP");};} + var xml = new XMLHttpRequest(); + xml.open(options.type, options.url, true); + var requestDone = false; + setTimeout(function() {requestDone = true;}, 20000); + xml.onreadystatechange = function() {if( xml.readyState == 4 && !requestDone) {if(httpSuccess(xml) ) {options.onSuccess(xml.responseText);}options.onComplete();xml = null;}}; + xml.send(); + + function httpSuccess(r) { + + try{return (!r.status && location.protocol == "file:") ||(r.status >= 200 && r.status < 300) || r.status == 304 || navigator.userAgent.indexOf("Safari") >= 0 && typeof r.status == "undefined;";}catch(e){} + return false; + } +} + +/** + * 메시지 보여주기 + */ +function UbiJS_ShowMessage(id, width, height, color, title, subject, contents, installpath, html) { + + var obj = document.createElement("div"); + obj.id = id; + obj.className = "ubireportdlgcontainer"; +// obj.style.cssText = "position:absolute; z-index:999999104; left:50%; top:50%; width:" + width + "px; height:" + height + "px; margin-left: -" + (width/2) + "px; margin-top:-" + (height/2) + "px;"; + obj.style.cssText = "position:absolute; z-index:999999104; left:50%; top:50%; width:450px; height:" + height + "px; margin-left: -225px; margin-top:-" + (height/2) + "px;"; + obj.innerHTML = html.replace(/{HEADER_BG}/g, color).replace(/{MSG_TITLE}/g, title).replace(/{MSG_SUBJECT}/g, subject).replace(/{MSG_CONTENTS}/g, contents).replace(/{MSG_ID}/g, id).replace(/{DOWNLOAD_URL}/g, installpath); + UbiJS_WINDOC.body.appendChild(obj); +} + +/** + * 메시지창 미리 생성 (인쇄/저장 준비창) + */ +function UbiJS_HideMessage(id, width, height, color, title, subject, contents, installpath/*, html*/) { + + var obj = document.createElement("div"); + UbiJS_WINDOC.body.appendChild(obj); + obj.id = id; + obj.className = "ubireportdlgcontainer"; + obj.style.cssText = "display:none; position:absolute; z-index:999999104; left:50%; top:50%; width:450px; height:" + height + "px; margin-left: -225px; margin-top:-" + (height/2) + "px;"; + var str = []; + var i = 0; + str[i++] = "
    {MSG_TITLE}
    "; + str[i++] = "
    "; + str[i++] = "
    {MSG_SUBJECT}
    "; + str[i++] = "
    "; + + var html = str.join(""); + obj.innerHTML = html; + // language에 따라 문구를 변경하기 위하여 주석 처리 + //obj.innerHTML = html.replace(/{HEADER_BG}/g, color).replace(/{MSG_TITLE}/g, title).replace(/{MSG_SUBJECT}/g, subject).replace(/{MSG_CONTENTS}/g, contents).replace(/{MSG_ID}/g, id).replace(/{DOWNLOAD_URL}/g, installpath); +} + +function UbiJS_Trim(str) { + + return str.replace(/(^\s*)|(\s*$)/gi, ""); +} + + + +} \ No newline at end of file diff --git a/src/main/webapp/ubi4/license/License.xml b/src/main/webapp/ubi4/license/License.xml new file mode 100644 index 0000000..50c12ca --- /dev/null +++ b/src/main/webapp/ubi4/license/License.xml @@ -0,0 +1,8 @@ + + + + + 637a6462646e61656a425061727366714b5a533143357354512b427752744e320a74315571544979686b37616b4467447669427075384b656c69303246714977464a654c366b2b68764e596849416850332b48796b546e47703865786e306e5551445049526766514363547946544e343462537370466b71334b395177536563727a595a3958354c53632b597a7664703264312f66636330774a6d706a5457586c2b3231517155794c6f547446536a32775550554d4c694a33483636493850716b7578534a34737934672f32524b683135456c51704e4b485a63716e31477151625a766d6f396568544e634f4a69676e302b583876686779576e536c614c6c5439 + + + diff --git a/src/main/webapp/ubi4/license/License_REAL.xml b/src/main/webapp/ubi4/license/License_REAL.xml new file mode 100644 index 0000000..c909977 --- /dev/null +++ b/src/main/webapp/ubi4/license/License_REAL.xml @@ -0,0 +1,8 @@ + + + + + 75537a663556376c5a7a7555356d524d43427955597668384c3276784d7654790a4377523071676f5966437443733363513132312f4e594e35746f787a514952706f4f716d575055426a65695973727448504d6c6537376b6c484f5650784e6337664d423241596c5a705530546835695550315a5244696e704c584f3058326832546e474e446c3868547463446c2f46386f6b356766714667624c3650707832342b4658776974377a31664e6956755a6c47415139776236374a32636c7a4e6962505273442f75744f327a754c316a6c483567456e384c5953384e574c7248386562716434505a53327656387238565a716e354e4d4b6e556a59656749596c376a + + + diff --git a/src/main/webapp/ubi4/ubiactivex.jsp b/src/main/webapp/ubi4/ubiactivex.jsp new file mode 100644 index 0000000..537989a --- /dev/null +++ b/src/main/webapp/ubi4/ubiactivex.jsp @@ -0,0 +1,103 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%! + String nullToStr(String s1, String s2) { + return ((s1 == null)?s2:s1); + } +%> +<% + String jrf = nullToStr(request.getParameter("jrf"), "ubi_sample.jrf"); + String arg = nullToStr(request.getParameter("arg"), "user#홍길동#"); +%> + + + + + + +UbiReport4 AXViewer + + + + + + + + diff --git a/src/main/webapp/ubi4/ubiexport.jsp b/src/main/webapp/ubi4/ubiexport.jsp new file mode 100644 index 0000000..4fab137 --- /dev/null +++ b/src/main/webapp/ubi4/ubiexport.jsp @@ -0,0 +1,53 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ page import="com.ubireport.viewer.report.preview.UbiViewer" %> +<%! + String nullToStr(String s1, String s2) { + return ((s1 == null)?s2:s1); + } +%> +<% + String jrf = nullToStr(request.getParameter("jrf"), "ubi_sample.jrf"); + String arg = nullToStr(request.getParameter("arg"), "user#홍길동#"); + +// String appUrl = "http://localhost:8080/myapp"; + String appUrl = "http://localhost:8080/"; + String fileURL = appUrl + "/ubi4"; + String ubiServerURL = appUrl + "/UbiServer"; + + String dataSource = "Tutorial"; +// String jrfFileDir = "/webapp/myapp/ubi4/work/"; + String jrfFileDir = "/webapp/ubi4/work/"; + + String exportFileType = "PDF"; +// String exportPath = "/webapp/myapp/ubi4/export/"; + String exportPath = "/webapp/ubi4/export/"; + String exportFileName = jrf.substring(0, jrf.lastIndexOf(".")) + ".pdf"; + String exportFilePath = exportPath + java.io.File.separator + exportFileName; + + try { + + UbiViewer ubi = new UbiViewer(false, false); + + ubi.exectype = "TYPE6"; + ubi.fileURL = fileURL; + ubi.ubiServerURL = ubiServerURL; + ubi.isLocalFile = true; + ubi.dataSource = dataSource; + ubi.jrfFileDir = jrfFileDir; + ubi.jrfFileName = jrf; + ubi.arg = arg; + ubi.setExportParams(exportFileType, exportFilePath); + + boolean isSuccess = ubi.loadReport(); + + if( isSuccess ) + out.println("Export Success!"); + else + out.println("Export Fail!"); + } + catch(Exception e) { + + out.println(e.getMessage()); + e.printStackTrace(); + } +%> \ No newline at end of file diff --git a/src/main/webapp/ubi4/ubihtml.jsp b/src/main/webapp/ubi4/ubihtml.jsp new file mode 100644 index 0000000..79c6ea1 --- /dev/null +++ b/src/main/webapp/ubi4/ubihtml.jsp @@ -0,0 +1,126 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%! + String nullToStr(String s1, String s2) { + return ((s1 == null)?s2:s1); + } +%> +<% + String jrf = nullToStr(request.getParameter("jrf"), "ubi_sample.jrf"); + String arg = nullToStr(request.getParameter("arg"), "user#홍길동#"); + String resId = nullToStr(request.getParameter("resId"), "UBIHTML"); +%> + + + + + + +UbiReport4 HTMLViewer + + + + + + + +
    + + \ No newline at end of file diff --git a/src/main/webapp/ubi4/ubinonax.jsp b/src/main/webapp/ubi4/ubinonax.jsp new file mode 100644 index 0000000..faea8ca --- /dev/null +++ b/src/main/webapp/ubi4/ubinonax.jsp @@ -0,0 +1,109 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%! + String nullToStr(String s1, String s2) { + return ((s1 == null)?s2:s1); + } +%> +<% + String jrf = nullToStr(request.getParameter("jrf"), "ubi_sample.jrf"); + String arg = nullToStr(request.getParameter("arg"), "user#홍길동#"); +%> + + + + + + +UbiReport4 WSViewer + + + + + +

    WebSocket

    + + + diff --git a/src/main/webapp/ubi4/ubiviewer/Setup_UbiViewerWS_v4.exe b/src/main/webapp/ubi4/ubiviewer/Setup_UbiViewerWS_v4.exe new file mode 100644 index 0000000..8dc9e32 Binary files /dev/null and b/src/main/webapp/ubi4/ubiviewer/Setup_UbiViewerWS_v4.exe differ diff --git a/src/main/webapp/ubi4/ubiviewer/UbiViewerX4.cab b/src/main/webapp/ubi4/ubiviewer/UbiViewerX4.cab new file mode 100644 index 0000000..1ce175f Binary files /dev/null and b/src/main/webapp/ubi4/ubiviewer/UbiViewerX4.cab differ diff --git a/src/main/webapp/ubi4/ubiviewer/UbiViewerX4.exe b/src/main/webapp/ubi4/ubiviewer/UbiViewerX4.exe new file mode 100644 index 0000000..b519e77 Binary files /dev/null and b/src/main/webapp/ubi4/ubiviewer/UbiViewerX4.exe differ diff --git a/src/main/webapp/ubi4/work/bugwa.jrf b/src/main/webapp/ubi4/work/bugwa.jrf new file mode 100644 index 0000000..cb8788c Binary files /dev/null and b/src/main/webapp/ubi4/work/bugwa.jrf differ diff --git a/src/main/webapp/ubi4/work/bugwa_his.jrf b/src/main/webapp/ubi4/work/bugwa_his.jrf new file mode 100644 index 0000000..dbf6c1f Binary files /dev/null and b/src/main/webapp/ubi4/work/bugwa_his.jrf differ diff --git a/src/main/webapp/ubi4/work/checkReport.jrf b/src/main/webapp/ubi4/work/checkReport.jrf new file mode 100644 index 0000000..980f93e Binary files /dev/null and b/src/main/webapp/ubi4/work/checkReport.jrf differ diff --git a/src/main/webapp/ubi4/work/commonimages/LOGO.jpg b/src/main/webapp/ubi4/work/commonimages/LOGO.jpg new file mode 100644 index 0000000..6b9002d Binary files /dev/null and b/src/main/webapp/ubi4/work/commonimages/LOGO.jpg differ diff --git a/src/main/webapp/ubi4/work/db_mysql.jrf b/src/main/webapp/ubi4/work/db_mysql.jrf new file mode 100644 index 0000000..900dd8f Binary files /dev/null and b/src/main/webapp/ubi4/work/db_mysql.jrf differ diff --git a/src/main/webapp/ubi4/work/db_oracle.jrf b/src/main/webapp/ubi4/work/db_oracle.jrf new file mode 100644 index 0000000..3732817 Binary files /dev/null and b/src/main/webapp/ubi4/work/db_oracle.jrf differ diff --git a/src/main/webapp/ubi4/work/db_sqlserver.jrf b/src/main/webapp/ubi4/work/db_sqlserver.jrf new file mode 100644 index 0000000..1da97d5 Binary files /dev/null and b/src/main/webapp/ubi4/work/db_sqlserver.jrf differ diff --git a/src/main/webapp/ubi4/work/fstWarnning.jrf b/src/main/webapp/ubi4/work/fstWarnning.jrf new file mode 100644 index 0000000..b8dae73 Binary files /dev/null and b/src/main/webapp/ubi4/work/fstWarnning.jrf differ diff --git a/src/main/webapp/ubi4/work/images/LOGO.jpg b/src/main/webapp/ubi4/work/images/LOGO.jpg new file mode 100644 index 0000000..6b9002d Binary files /dev/null and b/src/main/webapp/ubi4/work/images/LOGO.jpg differ diff --git a/src/main/webapp/ubi4/work/label.jrf b/src/main/webapp/ubi4/work/label.jrf new file mode 100644 index 0000000..325bb85 Binary files /dev/null and b/src/main/webapp/ubi4/work/label.jrf differ diff --git a/src/main/webapp/ubi4/work/napbu_chokgu.jrf b/src/main/webapp/ubi4/work/napbu_chokgu.jrf new file mode 100644 index 0000000..f8bb193 Binary files /dev/null and b/src/main/webapp/ubi4/work/napbu_chokgu.jrf differ diff --git a/src/main/webapp/ubi4/work/pre_bugwa.jrf b/src/main/webapp/ubi4/work/pre_bugwa.jrf new file mode 100644 index 0000000..63a6f9f Binary files /dev/null and b/src/main/webapp/ubi4/work/pre_bugwa.jrf differ diff --git a/src/main/webapp/ubi4/work/property/commonitem.xml b/src/main/webapp/ubi4/work/property/commonitem.xml new file mode 100644 index 0000000..1bbedea --- /dev/null +++ b/src/main/webapp/ubi4/work/property/commonitem.xml @@ -0,0 +1,8 @@ + + + UbiDecision + 02-558-6996 + http://www.ubireport.com + http://www.ubireport.com + LOGO.jpg + diff --git a/src/main/webapp/ubi4/work/rgl_ret.jrf b/src/main/webapp/ubi4/work/rgl_ret.jrf new file mode 100644 index 0000000..771eade Binary files /dev/null and b/src/main/webapp/ubi4/work/rgl_ret.jrf differ diff --git a/src/main/webapp/ubi4/work/sijung.jrf b/src/main/webapp/ubi4/work/sijung.jrf new file mode 100644 index 0000000..bfb4597 Binary files /dev/null and b/src/main/webapp/ubi4/work/sijung.jrf differ diff --git a/src/main/webapp/ubi4/work/sndWarnning.jrf b/src/main/webapp/ubi4/work/sndWarnning.jrf new file mode 100644 index 0000000..32aebbd Binary files /dev/null and b/src/main/webapp/ubi4/work/sndWarnning.jrf differ diff --git a/src/main/webapp/ubi4/work/sndWarnning_label.jrf b/src/main/webapp/ubi4/work/sndWarnning_label.jrf new file mode 100644 index 0000000..7eea70a Binary files /dev/null and b/src/main/webapp/ubi4/work/sndWarnning_label.jrf differ diff --git a/src/main/webapp/ubi4/work/trip_report.jrf b/src/main/webapp/ubi4/work/trip_report.jrf new file mode 100644 index 0000000..c27a1fd Binary files /dev/null and b/src/main/webapp/ubi4/work/trip_report.jrf differ diff --git a/src/main/webapp/ubi4/work/ubi_bcqre.jrf b/src/main/webapp/ubi4/work/ubi_bcqre.jrf new file mode 100644 index 0000000..0692b41 Binary files /dev/null and b/src/main/webapp/ubi4/work/ubi_bcqre.jrf differ diff --git a/src/main/webapp/ubi4/work/ubi_sample.jrf b/src/main/webapp/ubi4/work/ubi_sample.jrf new file mode 100644 index 0000000..6b29cfb Binary files /dev/null and b/src/main/webapp/ubi4/work/ubi_sample.jrf differ diff --git a/src/main/webapp/ubi4/work/ubi_sample_h.jrf b/src/main/webapp/ubi4/work/ubi_sample_h.jrf new file mode 100644 index 0000000..e630a9f --- /dev/null +++ b/src/main/webapp/ubi4/work/ubi_sample_h.jrf @@ -0,0 +1,7 @@ +xW[wF~9^"#%G,INSJA@Ų; $Ȏӛ03;;3èa{B0U O0^%wa"}WQoi I{3!RQya˪8aDd%IJ(*Ra&r;.w}t&-C76-ɺ9BW?O!-ILH-A, %riFX[0Mp|EQ$/ԏH!Jr3B$ױ +|EdN + U*R +AHv1lrBC3kq ݔH(؄[A ې50l00' V$\༖e˲f4mC3MXcIv2oFSnښ ˰i0Ȃ=Ny' vR/vפ-qb*)O$н % k{|tdBQSe( ~ w׺8Z]Iw HBY':TRƶam]yU4;=GܬF=vRȒ:@Le^_ou{et{7{%C[jBmS* +-&PXEIU6A kΐ#'v:}gRtrABKiLp tx :Lg;owkZ +'!I[ZI^:h%t^če,l>w۶h>yXX<-E(xns8G^oyIhH#] +#3YEj|, ; 4<z1>$0G/C| ȸ֬JǚObX XA\P'TM5unlZϻFtq못{ͅ D'irWMoiG} 9m OX_1H!5^ d V5Y3#of0C)4lE +㌹Q$f2&lk1Xl8kmz&AdAnl6r5F0Cw[|:du&^c镢@/"nLz᭾ch7˦h%OV4>#GűϠvש*6m]3{16z0j!{XwAcs.S;hN%$v:pj8NΟ?s8ph&|7͞ M+Eq  \ No newline at end of file diff --git a/src/main/webapp/ubi4/work/ubi_tutorial.jrf b/src/main/webapp/ubi4/work/ubi_tutorial.jrf new file mode 100644 index 0000000..ec77d48 Binary files /dev/null and b/src/main/webapp/ubi4/work/ubi_tutorial.jrf differ