﻿/*****************************************************************************************************
		[ 지원 method ]

		//해당 경로의 Regi Key값 가져오기
		regikeyvalue = eGateRegiChecker.GetRegiValue(RegiKeyName);
		//해당 경로의 Regi Key값을 가져온 후에 Type값도 체크할 수 있음
		/ *
		REG_DWORD : 32bit 숫자
		REG_EXPAND_SZ : 문자
		REG_MULTI_SZ : 문자
		REG_SZ : 문자
		* /
		// 저장된 Data형태
		regikeytype = eGateRegiChecker.ValueType;

function List ---------------------------------------------------------------------------------------

checkTrustedSite	: 신뢰할수 있는 사이트에 등록(Vista는 사용자 수동처리 그외는 Reg파일을 통해 처리)
getRegFile			: 레지스트리 파일명을 얻어옴
chkIEProtect		: 보호모드 해제
setTrustedSite		: 신뢰할수 있는 사이트에 등록 (일반 OS)
GetIEProtect		: Vista에서 신뢰할 수 있는 사이트의 IE보호모드 On/Off체크
GetTrustSite		: 신뢰할수 있는 사이트에 등록되어 있는지 체크
TrustedInsError		: 컨트롤 설치 에러
openModalSubwin		: Open Modal Popup window
chkos_for_trustsite	: OS 버전체크

*****************************************************************************************************/

// 상수선언
var WINDOWS					= "Windows";
var WINDOWS_98				= "Windows 98";
var WINDOWS_2000			= "Windows 2000";
var WINDOWS_2003			= "Windows 2003";
var WINDOWS_NT				= "Windows NT";
var WINDOWS_XP				= "Windows XP";
var WINDOWS_VISTA			= "Windows Vista";
var IE7 = (navigator.userAgent.indexOf("MSIE 7.0") > -1?true:false);

var IS_ERROR_UNINSTALLED	= false;
var TRUST_DOMAIN_NAME		= "dongguk.edu";
var SITE_NAME				= "<b>동국대학교 차세대통합시스템</b>";

// 전역변수
var OS_VERSION				= "";		// OS 버전
var REG_FILE				= "";		// 레지스트리 파일
var IS_TRUSTSITE			= false;	// 신뢰할수 있는 사이트에 등록되어 있는지 체크

// 각 페이지 URL 결정
var IEPROTECT_NOTICE_VISTA_PAGE	= "/regichecker/html/ieprotect_notice_vista.htm";	// 보호모드 페이지
var TRUSTSITE_NOTICE_VISTA_PAGE	= "/regichecker/html/trustsite_notice_vista.htm";	// 신뢰할수 있는 사이트에 등록 (Vista용)
var TRUSTSITE_NOTICE_PAGE		= "/regichecker/html/trustsite_notice.htm";			// 신뢰할수 있는 사이트에 등록 (일반 Windows용)
var TRUSTSITE_CONFIRMBOX_PAGE	= "/regichecker/html/truststie_confirmbox.htm";		// 메세지 창


// -------------------------------------------------------------------------------
// 신뢰할수 있는 사이트에 등록(Vista는 사용자 수동처리 그외는 Reg파일을 통해 처리)
// -------------------------------------------------------------------------------
function checkTrustedSite() {
	// OCX가 설지 되지 않은 경우
	if(IS_ERROR_UNINSTALLED == true)	return "cancel";

	OS_VERSION		= chkos_for_trustsite();	// OS Version 체크
	REG_FILE		= getRegFile();				// Reg 파일명을 구함
	IS_TRUSTSITE	= GetTrustSite();			// 신뢰할수 있는 사이트에 등록되어 있는지 체크

	var RetValue = "";

	if (IS_TRUSTSITE) {
		if (OS_VERSION == WINDOWS_VISTA) {
			// Vista에서 신뢰할 수 있는 사이트의 IE보호 기능 Off되었는지 체크
			chkIEProtect();
			RetValue = "registered";
		} else {
			RetValue = "registered";
		}
	} else {
		if (OS_VERSION == WINDOWS_VISTA) {
			RetValue = setTrustedSiteVista();
		} else {
			RetValue = setTrustedSite();
		}
	}

	return RetValue;
}
// -------------------------------------------------------------------------------
// 레지스트리 파일명을 얻어옴
// -------------------------------------------------------------------------------
function getRegFile() {//trustsite_dongguk.edu_winvista.reg
	switch (OS_VERSION) {
	case WINDOWS_2003	: return "trustsite_" + TRUST_DOMAIN_NAME + "_win2003.reg";		break;
	case WINDOWS_VISTA	: return "trustsite_" + TRUST_DOMAIN_NAME + "_winvista.reg";	break;
	//case WINDOWS_VISTA	: return "trustsite_" + TRUST_DOMAIN_NAME + "_winvista.txt";	break;
	default				: return "trustsite_" + TRUST_DOMAIN_NAME + ".reg";				break;
	}
}
// -------------------------------------------------------------------------------
// 보호모드 해제
// -------------------------------------------------------------------------------
function chkIEProtect() {
	if(GetIEProtect() == false) {
		var ieprotect_flag = false;
		var reval;

		while(ieprotect_flag == false) {
			var sOption		= new Object();
			sOption.site_name	= SITE_NAME;			// 사이트 명
			sOption.domain_name	= TRUST_DOMAIN_NAME;	// 도메인 명
			sOption.regfile		= REG_FILE;				// 레지스트리 파일

			retValue = openModalSubwin(IEPROTECT_NOTICE_VISTA_PAGE, sOption, "567", "515", "no");

			var confirmOption = new Object();

			if (retValue == "ok") {
				if(GetIEProtect() == false){
					confirmOption.Comment = "신뢰할 수 있는 사이트의 보호 모드를 해제하지 않았습니다.";
					confirmOption.warningComment = "다시 시도하십시오.";
					confirmOption.okBtn = true;
					confirmOption.cancelBtn = true;
					winWidth = "390";
					winHeight = (IE7 ? "140" : "170");

					retValue = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");
					if (retValue == "cancel") {
						confirmOption.Comment = "신뢰할 수 있는 사이트의 보호 모드 해제를 취소하였습니다.";
						confirmOption.warningComment = "주의!!)신뢰할 수 있는 사이트의 보호 모드를 해제하지<br>않으면 일부기능이 정상작동되지 않습니다.";
						confirmOption.okBtn = true;
						confirmOption.cancelBtn = false;
						winWidth = "390";
						winHeight = (IE7 ? "140" : "170");

						retValue = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");
						return "cancel";
					}
				}
				else{
					confirmOption.Comment = "신뢰할 수 있는 사이트의 보호 모드가 해제 되었습니다.";
					confirmOption.warningComment = "키보드의 F5키를 눌러 웹페이지를 재정리 하십시오.";
					confirmOption.okBtn = true;
					confirmOption.cancelBtn = false;
					winWidth = "390";
					winHeight = (IE7 ? "140" : "170");

					retValue = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");
					return "added";
				}
			} else {
				confirmOption.Comment = "신뢰할 수 있는 사이트의 보호 모드 해제를 취소하였습니다.";
				confirmOption.warningComment = "주의!!)신뢰할 수 있는 사이트의 보호 모드를 해제하지<br>않으면 일부기능이 정상작동되지 않습니다.";
				confirmOption.okBtn = true;
				confirmOption.cancelBtn = false;
				winWidth = "390";
				winHeight = (IE7 ? "140" : "170");

				retValue = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");
				return "cancel";
			}


		}
	}
	else{
		return "added";
	}
}
// -------------------------------------------------------------------------------
// 신뢰할수 있는 사이트에 등록 (일반 OS)
// -------------------------------------------------------------------------------
function setTrustedSite() {
	//IE나 OS버젼별로 각각 다른 REG파일을 배포할 수 있음.
	var reg_flag	= false;
	var sOption		= new Object();

	while (reg_flag == false) {
		var sOption = new Object();
		sOption.site_name	= SITE_NAME;			// 사이트 명
		sOption.domain_name	= TRUST_DOMAIN_NAME;	// 도메인 명
		sOption.regfile		= REG_FILE;				// 레지스트리 파일

		var retValue = "";
		try {
			retValue = openModalSubwin(TRUSTSITE_NOTICE_PAGE, sOption, "560", "418", "no");
		} catch (e) {
			alert("팝업이 차단되었습니다. 팝업창을 허용한 후에 다시 시도하십시오.");
			retValue = "popup_error";
		}

		IS_TRUSTSITE = GetTrustSite();

		var confirmOption = new Object();
		var winHeight = "";
		var winWidth = "";

		switch (retValue) {
		case "ok" :
			if(IS_TRUSTSITE){
				confirmOption.Comment = "신뢰할 수 있는 사이트에 등록되었습니다.";
				confirmOption.warningComment = "키보드의 F5키를 눌러 웹페이지를 재정리 하십시오.";
				confirmOption.okBtn = true;
				confirmOption.cancelBtn = false;
				winWidth = "390";
				winHeight = (IE7 ? "135" : "165");

				retValue = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");
				return "added";
			} else {
				confirmOption.Comment = "신뢰할 수 있는 사이트 등록이 되지않았습니다.";
				confirmOption.warningComment = "Registry추가를 다시 시도하십시오.";
				confirmOption.okBtn = true;
				confirmOption.cancelBtn = true;
				winWidth = "390";
				winHeight = (IE7 ? "155" : "185");

				retValue = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");

				if (retValue == "cancel") {
					confirmOption.Comment = "신뢰할 수 있는 사이트 등록을 취소하였습니다.";
					confirmOption.warningComment = "주의!!)신뢰할 수 있는 사이트를 등록하지 않으면<br>일부기능이 정상작동되지 않습니다.";
					confirmOption.okBtn = true;
					confirmOption.cancelBtn = false;
					winWidth = "390";
					winHeight = (IE7 ? "155" : "185");

					retValue = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");
					return "cancel";
				}
			}
			break;
		case "popup_error" :	return "stop";	break;
		default :
			if(!IS_TRUSTSITE){
				confirmOption.Comment = "신뢰할 수 있는 사이트 등록을 취소하였습니다.";
				confirmOption.warningComment = "주의!!)신뢰할 수 있는 사이트를 등록하지 않으면<br>일부기능이 정상작동되지 않습니다.";
				confirmOption.okBtn = true;
				confirmOption.cancelBtn = false;
				winWidth = "390";
				winHeight = (IE7 ? "155" : "185");

				retValue = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");
				return "cancel";
			}
			else{
				return "added";
			}
			break;
		}
	}
}
// -------------------------------------------------------------------------------
// 신뢰할수 있는 사이트에 등록 (Vista)
// -------------------------------------------------------------------------------
function setTrustedSiteVista() {
	var reg_flag	= false;
	var sOption		= new Object();

	while (reg_flag == false) {
		var sOption = new Object();
		sOption.site_name	= SITE_NAME;			// 사이트 명
		sOption.domain_name	= TRUST_DOMAIN_NAME;	// 도메인 명
		sOption.regfile		= REG_FILE;				// 레지스트리 파일

		var retValue = "";
		//try {
			retValue = openModalSubwin(TRUSTSITE_NOTICE_VISTA_PAGE, sOption, "567", "525", "no");
		//} catch (e) {
		//	alert("팝업이 차단되었습니다. 팝업창을 허용한 후에 다시 시도하십시오.");
		//	retValue = "popup_error";
		//}

		IS_TRUSTSITE = GetTrustSite();

		var confirmOption = new Object();
		var winHeight = "";
		var winWidth = "";

		switch (retValue) {
		case "ok" :
			if (IS_TRUSTSITE) {
				confirmOption.Comment = "신뢰할 수 있는 사이트에 등록되었습니다.";
				confirmOption.warningComment = "<B>ieuser.exe</B>와 웹브라우저를 종료 후 다시 접속하십시오.";
				confirmOption.okBtn = true;
				confirmOption.cancelBtn = false;
				winWidth = "390";
				winHeight = (IE7 ? "135" : "165");

				retValue = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");
				return "added";
			} else {
				confirmOption.Comment = "신뢰할 수 있는 사이트 등록이 되지않았습니다.";
				confirmOption.warningComment = "Registry추가를 다시 시도하십시오.";
				confirmOption.okBtn = true;
				confirmOption.cancelBtn = true;
				winWidth = "390";
				winHeight = (IE7 ? "155" : "185");

				retValue = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");

				if (retValue == "cancel") {
					confirmOption.Comment = "신뢰할 수 있는 사이트 등록을 취소하였습니다.";
					confirmOption.warningComment = "주의!!)신뢰할 수 있는 사이트를 등록하지 않으면<br>일부기능이 정상작동되지 않습니다.";
					confirmOption.okBtn = true;
					confirmOption.cancelBtn = false;
					winWidth = "390";
					winHeight = (IE7 ? "155" : "185");

					retValue = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");
					return "cancel";
				}
			}
			break;
		case "popup_error" :	return "stop";	break;
		default :
				//alert("신뢰할 수 있는 사이트 등록이 되지않았습니다.\n\r다시 시도하십시오.");
				if(GetTrustSite() == false){
					confirmOption.Comment = "신뢰할 수 있는 사이트 등록을 취소하였습니다.";
					confirmOption.warningComment = "주의!!)신뢰할 수 있는 사이트를 등록하지 않으면<br>일부기능이 정상작동되지 않습니다.";
					confirmOption.okBtn = true;
					confirmOption.cancelBtn = false;
					winWidth = "390";
					winHeight = (IE7 ? "155" : "185");

					reval = openModalSubwin(TRUSTSITE_CONFIRMBOX_PAGE, confirmOption, winWidth, winHeight, "no");
					return "cancel";
				}
				else{
					//Reg 추가된 상태에서 취소한 경우 통과
					return "added";
				}
				break;
		}
	}
}
// -------------------------------------------------------------------------------
// Vista에서 신뢰할 수 있는 사이트의 IE보호모드 On/Off체크
// -------------------------------------------------------------------------------
function GetIEProtect(){
	var eGateRegiChecker = document.getElementById("eGateRegiChecker");

	var HKEY = "HKEY_CURRENT_USER";
	/*
	HKEY_CLASSES_ROOT
	HKEY_CURRENT_USER
	HKEY_LOCAL_MACHINE
	HKEY_USERS
	HKEY_PERFORMANCE_DATA
	HKEY_CURRENT_CONFIG
	HKEY_DYN_DATA
	*/
	//IE나 OS따라 위치가 다른 경우 변경해서 체크할 것.
	var SUBKEY = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\2";
	var RegiKeyName = "2500";

	eGateRegiChecker.hkey = HKEY;
	eGateRegiChecker.subkey = SUBKEY;

	if(eGateRegiChecker.IsExistRegiKey(RegiKeyName) == true){

		//alert(eGateRegiChecker.GetRegiValue(RegiKeyName));

		if(eGateRegiChecker.GetRegiValue(RegiKeyName) == 3){
			//IE보호 모드가 Off임
			return true;
		}
		else{
			//IE보호 모드가 on임
			return false;
		}
	}
	else{
		//IE보호 모드가 없음
		return false;
	}
}
// -------------------------------------------------------------------------------
// 신뢰할수 있는 사이트에 등록되어 있는지 체크
// -------------------------------------------------------------------------------
function GetTrustSite(){
	var eGateRegiChecker = document.getElementById("eGateRegiChecker");

	var HKEY = "HKEY_CURRENT_USER";
	/*
	HKEY_CLASSES_ROOT
	HKEY_CURRENT_USER
	HKEY_LOCAL_MACHINE
	HKEY_USERS
	HKEY_PERFORMANCE_DATA
	HKEY_CURRENT_CONFIG
	HKEY_DYN_DATA
	*/

	//IE나 OS따라 위치가 다른 경우 변경해서 체크할 것.
	var SUBKEY = "";
	var SUBKEY2 = "";
	if(chkos_for_trustsite() == "Windows 2003"){
		SUBKEY = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\EscDomains\\" + TRUST_DOMAIN_NAME;
	}
	else{
		SUBKEY = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains\\" + TRUST_DOMAIN_NAME;
	}
	var RegiKeyName_ALL = "*";
	var RegiKeyName_HTTP = "http";
	var RegiKeyName_HTTPS = "https";

	/* 값을 체크할 Registry의 기초정보 세팅 */

	eGateRegiChecker.hkey = HKEY;
	eGateRegiChecker.subkey = SUBKEY;

	// http://demo.cordial.co.kr이 등록되어 있는지 체크
	try{
		//신뢰할 수 있는 사이트에 등록되어 있음
		if (eGateRegiChecker.IsExistRegiKey(RegiKeyName_HTTP) == true || eGateRegiChecker.IsExistRegiKey(RegiKeyName_ALL) == true)	return true;
		else	return false;

	}catch (e){
		if(IS_ERROR_UNINSTALLED != true)		alert("신뢰할 수 있는 사이트 체크 중 에러가 발생하였습니다. 관리자에게 문의하십시오.");

		return false;
	}
}
// -------------------------------------------------------------------------------
//  컨트롤 설치 에러
// -------------------------------------------------------------------------------
function TrustedInsError() {
	alert("신뢰할 수 있는 사이트 체크 컨트롤이 정상적으로 설치되지 않았습니다.\n\n*WindowsXP SP2이상의 버젼일 경우 \n브라우저 알림표시줄의 경고메시지를 클릭하여 설치해주십시요");
	IS_ERROR_UNINSTALLED = true;
	return;
}
// -------------------------------------------------------------------------------
//  Open Modal Popup window
// -------------------------------------------------------------------------------
function openModalSubwin(url, args, win_width, win_height, scrollflag) {

    try
    {
	    var dt = new Date();
	    var winFeature = "dialogWidth:"+win_width+"px; dialogHeight:"+win_height+"px; center:yes; help:no; status:no; scroll:"+(scrollflag == null ? "no" : scrollflag)+"; resizable:no";
	    //var strurl = url+"&"+dt.toUTCString().replace(/ /gi,"");
	    var strurl = url;
	    var retValue = window.showModalDialog(strurl, args, winFeature);

	    return retValue;
	}
	catch (e) 
	{
		//alert("팝업이 차단되었습니다. 팝업창을 허용한 후에 다시 시도하십시오.");
		return "popup_error";
	}
}
// -------------------------------------------------------------------------------
//  OS 버전 체크
// -------------------------------------------------------------------------------
function chkos_for_trustsite(){
	webblasare = navigator.appVersion;
	if (webblasare.indexOf("Windows 98")!=-1 || webblasare.indexOf("Win98")!=-1){
		return WINDOWS_98;
	}else if (webblasare.indexOf("Windows 95")!=-1 || webblasare.indexOf("Win95")!=-1){
		return WINDOWS_98;
	}else if (webblasare.indexOf("Windows NT 5.2")!=-1){
		if (webblasare.indexOf("WOW64")!=-1)
			return WINDOWS_XP;		//XP 64bit의 경우
		else
			return WINDOWS_2003;
	}else if (webblasare.indexOf("Windows NT 5.1")!=-1){
		return WINDOWS_XP;
	}else if (webblasare.indexOf("Windows NT 5.")!=-1){
		return WINDOWS_2000;
	}else if (webblasare.indexOf("Windows NT 6.")!=-1){
		return WINDOWS_VISTA;
	}else if (webblasare.indexOf("Windows NT")!=-1){
		return WINDOWS_NT;
	}else if (webblasare.indexOf("Win")!=-1){
		return WINDOWS;
	}
}
