﻿var DEBUG_CODE = 0;

/**
* 지면 페이지나 검색 결과 페이지를 초기화 한다.
* @param execCount 초기화 동작 횟수 0:최초실행, 1:Flex동작중 실행
*/
function paoinInit(exeCount) {
    var _url = '';
    
    var paoinIframeObj = document.getElementById("paoinIframe");
    var page = new PageQuery(location.search);
    var _exec = page.getValue("exec");
    var _keyword = encodeChecker(page.getValue("keyword"));

    // 페이지 요청시, 뷰어 구동을 요청한 경우 뷰어 동작
    if (_exec == 'viewpage' && exeCount == "0") {
        initViewPage(page, window);
    }
    else if (_exec == 'viewsearch' && exeCount == "0") {
        initArticleViewPage(page, window);
    }
    else {
        if (_keyword != '') {
            _url = PaoinSearchResultPage;
        }
        else {
            _url = PaoinDefaultPage;
        }

        if (paoinIframeObj.src != 'about:blank') {
            return;
        }

        paoinIframeObj.src = (_url.indexOf('?') == -1)
			? (_url + location.search)
			: _url + ((location.search.length > 0) ? location.search.substr(1, location.search.length - 1) : '');
    }
}

/**
* 로그인이 필요한 서비스에 접근할 경우, 표시하는 메시지
*/
function showLogoffMessage() {
    alert(logoffMessage);
    return;
}

/**
* 로그인 인증을 받을 페이지로 이동한다.
* @path 절대주소  http://www.domain.com/service/index.html
*/
function goLoginPage(w) {

    if (w == null) {
        w = window;
    }

    var argv = goLoginPage.arguments;
    var argc = goLoginPage.arguments.length;
    var path = (1 < argc) ? argv[1] : '';
    var encoding = (2 < argc) ? argv[2] : ''; //base64, url

    w.location = (LoginSyncUrl
		+ '?ReturnUrl=' + encodeURIComponent((path != '') ? path : PdfServiceUrl));
}

/**
* 스크롤 표시 
*/
function showScroll(doc) {
    doc.body.scroll = "auto";
    doc.body.scrolling = "yes";
}

/**
* 스크롤 숨김
*/
function hideScroll(doc) {
    doc.body.scroll = "no";
    doc.body.scrolling = "yes";
}

/** 
* 뷰어 숨김
*/
function hidePaoinViewer() {
    var contentContainer = document.getElementById("contentContainer");
    var paoinViewerContainer = document.getElementById("paoinViewerContainer");

    paoinViewerContainer.style.display = "none";
    contentContainer.style.display = "inline";

    showScroll(document);
}

/**
* 지면뷰어에 전달할 FlashVar
* @return QueryString 첫문자는 &로 시작하므로 URL이나 Flash에 전달시 주의해야함
*/
function getPaperViewerParameters() {
		var argv = getPaperViewerParameters.arguments;
		var argc = getPaperViewerParameters.arguments.length;
		var page = (0 < argc) ? argv[0] : new PageQuery(location.search);
    
    try { page = validatePaperViewerParameter(page); } catch (e) { }; /// 언론사별 config.js에서 파라미터를 체크한다.

    var exec = page.getValue("exec");
    var orderAction = page.getValue('orderAction');
    var GCC = page.getValue('GCC');
    var PaperDate = page.getValue('PaperDate');
    var PageNo = page.getValue('PageNo');
    var PageName = page.getValue('PageName');
    var CNo = page.getValue('CNo');
    var COI = page.getValue('COI');


    return '&exec=' + exec + '&orderAction=' + orderAction + '&GCC=' + GCC + '&PaperDate=' + PaperDate + '&PageNo=' + PageNo + '&PageName=' + PageName
		+ '&CNo=' + CNo + '&COI=' + COI;
}

/**
* 기사뷰어에 전달할 FlashVar
* @return QueryString 첫문자는 &로 시작하므로 URL이나 Flash에 전달시 주의해야함
*/
function getArticleViewerParameters() {
		var argv = getArticleViewerParameters.arguments;
		var argc = getArticleViewerParameters.arguments.length;
		var page = (0 < argc) ? argv[0] : new PageQuery(location.search);

    try { page = validateArticleViewerParameter(page); } catch (e) { }; /// 언론사별 config.js에서 파라미터를 체크한다.

    var exec = page.getValue("exec");
    var orderAction = page.getValue('orderAction');
    var GCC = page.getValue("GCC");
    var NCT = page.getValue('NCT');

    var CNo = page.getValue('CNo');
    var keyword = encodeChecker(page.getValue('keyword'));
    var scope = page.getValue('scope');
    var period = page.getValue('period');
    var startdate = page.getValue('startdate');
    var enddate = page.getValue('enddate');
    var _page = page.getValue('page');
    var page_size = page.getValue("page_size");
    var idx = page.getValue('idx');

    return '&exec=' + exec + '&orderAction=' + orderAction + '&CNo=' + CNo + '&GCC=' + GCC + '&NCT=' + NCT + '&keyword=' + keyword
		+ '&scope=' + scope + '&period=' + period + '&startdate=' + startdate + '&enddate=' + enddate
		+ '&page=' + _page + '&page_size=' + page_size + '&idx=' + idx;
}

/**
* 파오인 Iframe 높이 조절
* @param h 높이값
*/
function resizePaoinIframe(h) {
    getMainDocument().all["paoinIframe"].height = h;
    window.scrollTo(0, 0);
    hidePaoinViewer();
}

/**
* 지면뷰어 초기화
* @param page QueryString 오프젝트
* @param w 제어할 Window
*/
function initViewPage(page, w) {
		var returnURL = top.location.href;
		if(returnURL.indexOf('exec=') == -1) {
    	if(returnURL.indexOf('?') == -1) {
    		returnURL = returnURL + '?dummy=';
    	}
    	returnURL = returnURL + getPaperViewerParameters(page);
    }
    
    var login = false;

    /// 기사뷰어인지? 지면뷰어인지? 체크
    if (page.getValue('CNo') == '0' || page.getValue('CNo') == '') { // 지면뷰어 실행
        if (PaperAnonymousAccess == 'none' && !IsAuthenticated()) {
            login = true;
            goLoginPage(w, returnURL);
        }
    }
    else { // 기사뷰어 실행
        if (ArticleAnonymousAccess == 'none' && !IsAuthenticated()) {
            login = true;
            goLoginPage(w, returnURL);
        }
    }

    if (!login) {
        var parameters = getPaperViewerParameters(page);
        w.callPaoinViewer(parameters);
    }
}

/**
* 기사뷰어 초기화
* @param page QueryString 오프젝트
* @param w 제어할 Window
*/
function initArticleViewPage(page, w) {
	var returnURL = top.location.href;
	if(returnURL.indexOf('exec=') == -1) {
    	if(returnURL.indexOf('?') == -1) {
    		returnURL = returnURL + '?dummy=';
    	}
    	returnURL = returnURL + getArticleViewerParameters(page);
    }
    
    var login = false;

    // 기사뷰어 실행
    if (ArticleViewerAnonymousAccess == 'none' && !IsAuthenticated()) {
        login = true;
        goLoginPage(w, returnURL);
    }

    if (!login) {
        var parameters = getArticleViewerParameters(page);
        w.callPaoinArticleViewer(parameters);
    }
}

/**
* 지면뷰어호출( 지면뷰어에서도 기사를 표시할 수 있음)
* 하단 width, height값을 100%로 넘겼을때, 파이어폭스에서 동작하지 않는 문제가 있음
* 향후, 보완해야 함
*
* @param param 지면뷰어에 전달할 QueryString (예:&GCC=AA001&PaperDate=2008-01-01&PageNo=32423 ... )
*/
function callPaoinViewer(param) {
    var _SWF = "";

    try {
        _SWF = PaoinPaperSWF;
    }
    catch (e) {
        alert('서비스 정검중입니다. 잠시 후, 이용해주세요.');
        return;
    }

    var contentContainer = document.getElementById("contentContainer");
    var paoinViewerContainer = document.getElementById("paoinViewerContainer");

    contentContainer.style.display = "none";
    paoinViewerContainer.style.display = "inline";

    scrollTo(0, 0);
    hideScroll(document);

    var flashvars = false;

    var params = {
        menu: "false",
        allowScriptAccess: "always",
        flashvars: "dummy=1" + param
    };

    var attributes = {
        id: "paoinViewerContainer",
        name: "paoinViewerContainer"
    };

    swfobject.embedSWF(_SWF, "paoinViewerContainer"
		, '100%', '100%', "9.0.0", "expressInstall.swf", flashvars, params, attributes);

    DEBUG_CODE = 999;
}

/**
* 기사 뷰어 호출
* 하단 width, height값을 100%로 넘겼을때, 파이어폭스에서 동작하지 않는 문제가 있음
* 향후, 보완해야 함
*
* @param param 기사뷰어에 전달할 QueryString (예:&GCC=AA001&PaperDate=2008-01-01&PageNo=32423 ... )
*/
function callPaoinArticleViewer(param) {
    var _SWF = "";

    try {
        _SWF = PaoinArticleSWF;
    }
    catch (e) {
        alert('서비스 정검중입니다. 잠시 후, 이용해주세요.');
        return;
    }

    var contentContainer = document.getElementById("contentContainer");
    var paoinViewerContainer = document.getElementById("paoinViewerContainer");

    contentContainer.style.display = "none";
    paoinViewerContainer.style.display = "inline";

    scrollTo(0, 0);
    hideScroll(document);

    var flashvars = false;

    var params = {
        menu: "false",
        allowScriptAccess: "always",
        flashvars: "dummy=1" + param
    };

    var attributes = {
        id: "paoinViewerContainer",
        name: "paoinViewerContainer"
    };

    swfobject.embedSWF(_SWF, "paoinViewerContainer"
		, '100%', '100%', "9.0.0", "expressInstall.swf", flashvars, params, attributes);

    DEBUG_CODE = 999;
}

/** 
* 한글 파라미터 체크(한글 파라미터를 인코딩하여, 인코딩된 값을 반환한다.)
* 이미 인코딩된 값이 들어왔을 경우를 대비하기 위해서, 디코딩한다음 인코딩하여 반환한다.
* 인코딩되지 않은 값을 decodeURLComponent를 이용하여 디코딩하면, 오류가 발생하지 않고 입력된 값 그대로 반환되는 점을 이용함
* @param param 인코딩된값이나 인코딩되지 않은 값
* @return 인코딩된 값
*/
function encodeChecker(param) {
    var retValue = param;

    if (retValue != "") {
        retValue = decodeURIComponent(retValue);
        retValue = encodeURIComponent(retValue);
    }

    return retValue;
}

/**
* 결제 페이지로 이동한다.
* @param GCC 매체코드
* @param MediaPolicyNo 정책번호
* @param StartDate 구독시작일
* @param Price 결제금액
*/
function callOrderPaper(GCC, MediaPolicyNo, StartDate, Price) {
    window.location = OrderSyncUrl + '?GCC=' + GCC + '&MediaPolicyNo=' + MediaPolicyNo + '&StartDate=' + StartDate + '&Price=' + Price;
}

/**
* 뷰어명칭 반환
* @return 뷰어명칭(예: 파오인뷰어, 매경 epaper 등)
*/
function getViewerName() {
    return ViewerName;
}

/**
* 뷰어명칭 반환
* @return 뷰어명칭+는/은 (예: 파오인뷰어, 매경 epaper 등)
*/
function getViewerNameA() {
    return ViewerName + "는";
}

/**
* 매체코드 연동
* @reutrn 매체코드
*/
function getSCT() {
    return SCT;
}

/** 
* 캐시잔액 조회 페이지를 반환한다.
* @return 캐시잔액 조회 페이지(캐시잔액 조회 페이지에는 Only 캐시잔액 String만 표시한다.)
*/
function callGetCashUrl() {
    return CashUrl;
}

/** 
* 캐시 충전 페이지로 이동한다.
*/
function callCashChargeUrl() {
    window.location = CashChargeUrl;
}

/**
* 기사뷰어(ArticleViewer)의 오른쪽 섹션탭에 표시한 명칭을 연동한다.
* @param idx 섹션탭번호
* @return 섹션명
*/
function getSectionName(idx) {
    return SectionName[idx];
}

/**
* 기사뷰어(ArticleViewer)의 오른쪽 섹션탭의 내용을 표시할 RSS주소를 연동한다.
* @param idx 섹션탭번호
* @return RSS주소
*/
function getSectionRSSUrl(idx) {
    return SectionRSSUrl[idx];
}

/**
* 페이지이동
* @param _url 이동할 주소
*/
function goURL(_url) {
    window.location = _url;
}

/**
* 서비스 메인 페이지로 이동한다.
* @param _param 메인페이지로 이동시, 전달할 파라미터
*/
function topPageLink(_param) {
    //window.location = (PdfServiceUrl.indexOf('?') == -1) ? (PdfServiceUrl + '?' + _param) : (PdfServiceUrl + '&' + _param);
    self.close();
}

/**
* 서비스 메인 페이지의 주소를 연동한다.
* @return 메인페이지주소(절대)
*/
function getPdfServiceUrl() {
    return PdfServiceUrl;
}

/**
* 입력받은 서비스페이지와 파라미터로 절대주소를 생성해서 반환한다.
* @param pathAndQuery 서브주소와 파라미터
* @return 생성된 절대주소 URL
*/
function getAbsoluteUri(pathAndQuery) {
    return encodeURIComponent((PdfServiceUrl.indexOf('?') == -1) ? (PdfServiceUrl + '?' + pathAndQuery) : (PdfServiceUrl + '&' + pathAndQuery));
}

/**
* 결제
*/
function CallPaymentForm(url) {
    try {
        var paoin_payment_pop = open(url, 'paoin_payment_pop', 'left=0,top=0,width=570,height=670,toolbars=no,scrollbars=no,resizable=no');
    } catch (e) {
        alert('결제팝업이 차단되었습니다. 팝업차단을 해제하신 후, 이용하세요.');
    }
}
