﻿// RMS Sergvet Url Info
var strRmsUrl = "http://www.kbs-tv.jp:8081/Service.asmx";

function CheckUser(UserInfo){
	var info = document.info;
	
    try{
		UserInfo.UserID		= info.loginID.value;
		UserInfo.bSVOD		= info.isSVOD.value;
		UserInfo.AuthToken	= info.loginID.value;	// 현재는 UserID와 Authoring token을 동일하게 사용한다.
		
		if(info.cooperID.value == 'YH'){	
			UserInfo.SiteID = "KBS-Y";
		}else{			
			UserInfo.SiteID = "KBS";
		}		
    }catch(e){
		//사용자 정보가 존재하지 않습니다.
		alert("ユーザー情報が存在しません。:" + e);
		return false;
    }    
	
	return UserInfo.UserID != "";	
}
 
function CheckPurchase(SiteID, LoginID, ProductID){
	var xmlHttp;
    var dom;
    var nodeResult;
    var param;
    
    dom			= null;
    nodeResult	= null;
    
    // Internet Explorer
    try{      
        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        dom = new ActiveXObject("Microsoft.XMLDOM.1.0");        
    }catch (e){      
        try{        
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");        
            dom = new ActiveXObject("Microsoft.XMLDOM.1.0");
        }catch (e){   
			//브라우저가 AJAX를 지원하지 않습니다
            alert("ブラウザがAJAX非対応です。");
            return null;        
        } 
    }
          
    xmlHttp.open("POST",strRmsUrl, false);
    xmlHttp.setRequestHeader("Content-Type","text/xml; charset=utf-8");
    xmlHttp.setRequestHeader("SOAPACTION", "http://tempuri.org/CheckPurchase");
    xmlHttp.setRequestHeader("Expect", "100-continue");
 
    try {
        xmlHttp.send("<?xml version='1.0' encoding='utf-8'?><soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><soap:Body><CheckPurchase xmlns='http://tempuri.org/'><SiteID>"+ SiteID+"</SiteID><LoginID>" + LoginID +"</LoginID><ProductID>"+ProductID+"</ProductID></CheckPurchase></soap:Body></soap:Envelope>");
    }catch(e){
		//HTTP 요청이 실패하였습니다.
        alert("HTTPリクエストに失敗しました。");
        return null;
    }

	try {
		if (dom != null)
		{				
			dom.async = false;

			dom.loadXML(xmlHttp.responseText);
			
			if (dom.parseError.errorCode == 0)			
			{
				nodeResult = dom.selectSingleNode("/soap:Envelope/soap:Body/CheckPurchaseResponse/CheckPurchaseResult");
				if (nodeResult != null){
					return nodeResult.text;
				}else{
					//웹서버가 예상하지 못한 값을 반환하였습니다
					alert("ウェブサーバーから予想外の値が返されました。" + xmlHttp.responseText);
					return null;
				}
			}
			else
			{
				//웹서버가 예상하지 못한 값을 반환하였습니다
				alert("ウェブサーバーから予想外の値が返されました。:" + xmlHttp.responseText);
				return null;
			}
		}
	}catch(e){
		//예외가 발생하였습니다
		alert("例外が発生しました。:" + e);
	}
  
    return null;
}

function GetPlaylist(SiteID,  ProductID, ExpireTime, Mode)
{
	var xmlHttp;
    var dom;
    var nodeResult;
    var param;
    
    dom = null;
    nodeResult = null;

    try	// Internet Explorer    
    {      
        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        dom = new ActiveXObject("Microsoft.XMLDOM.1.0");
    }
    catch (e)
    {      
        try{        
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");        
            dom = new ActiveXObject("Microsoft.XMLDOM.1.0");
        }catch (e){
        	//브라우저가 AJAX를 지원하지 않습니다
            alert("ブラウザがAJAX非対応です。");
            return null;        
        } 
    }
        
    xmlHttp.open("POST", strRmsUrl, false);
    xmlHttp.setRequestHeader("Content-Type","text/xml; charset=utf-8");
    xmlHttp.setRequestHeader("SOAPACTION", "http://tempuri.org/GetPlaylist");
    xmlHttp.setRequestHeader("Expect", "100-continue");

    try {
        xmlHttp.send("<?xml version='1.0' encoding='utf-8'?><soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><soap:Body><GetPlaylist xmlns='http://tempuri.org/'><SiteID>" + SiteID + "</SiteID><ProductID>"+ ProductID + "</ProductID><ExpireTime>"+ ExpireTime +"</ExpireTime><Mode>"+ Mode +"</Mode></GetPlaylist></soap:Body></soap:Envelope>");
    }catch(e){
		//HTTP 요청이 실패하였습니다.
        alert("HTTPリクエストに失敗しました。");
        return null;
    }

	try {
		if (dom != null)
		{
			dom.async = false;
			
			dom.loadXML(xmlHttp.responseText);
			
			if (dom.parseError.errorCode == 0)			
			{
				nodeResult = dom.selectSingleNode("/soap:Envelope/soap:Body/GetPlaylistResponse/GetPlaylistResult");
				if (nodeResult != null){
					return nodeResult.text;
				}else{
					//웹서버가 예상하지 못한 값을 반환하였습니다
					alert("ウェブサーバーから予想外の値が返されました。:" + xmlHttp.responseText);
					return null;
				}
			}
			else
			{
				//웹서버가 예상하지 못한 값을 반환하였습니다
				alert("ウェブサーバーから予想外の値が返されました。:" + xmlHttp.responseText);
				return null;
			}
		}
	}catch(e){
		//예외가 발생하였습니다
		alert("例外が発生しました。:" + e);
	}
  
    return null;
}

function StartPlayer(ProductID, ProductType, ProgramID, bPackaged, Mode)
{
    var UserInfo;
    var strXML;
    var dom;
    var nodeErrCode;
    var nodeExpireTime;
    var strPlaylist;
    var Result;
    
    //alert("#DEBUG:" + "(ProductID,ProductType,ProgramID,bPackaged):"+","+ ProductID +","+ ProductType +","+ ProgramID +","+ bPackaged);
    
	UserInfo = new Object();    
	var userForm = document.info;
	    
    if (CheckUser(UserInfo) == false) 
    {
		//로그인을 먼저 해주세요.		
		if(userForm.cooperID.value == 'YH'){
         	fn_yahooLogin();
         	//alert('Yahoo!決済ページへ移動中です。そのままお待ちください。');
		}else{
			alert('先にログインしてください。');
			moveToURL('login.action?category=' + userForm.category.value);
		}
        return;
    }    
    
    if(!$.browser.msie){
		alert("決済·ご視聴は Internet Explorerでのみ 可能です。");
		return;
	}
    
    strXML = CheckPurchase(UserInfo.SiteID, UserInfo.UserID, ProductID);
    
    //alert("#DEBUG:" + "NeedPurchase return:" + strXML);
    try{
		dom = new ActiveXObject("Microsoft.XMLDOM.1.0");
    }catch(e){
		//브라우저가 MSXML1.0을 지원하지 않습니다.
		alert("ブラウザがMSXML1.0に対応していません。 :" + e);
		return;
    }
    
    try
    {
		dom.async = false;
		dom.loadXML(strXML);
		
		if (dom.parseError.errorCode == 0)
		{
			nodeErrCode = dom.selectSingleNode("/Result/ErrCode");
			if (nodeErrCode.text == "0")
			{
				nodeExpireTime = dom.selectSingleNode("/Result/ExpireTime");
				if (nodeExpireTime == null){
					//시청기한 정보가 존재하지 않아서 재생할 수 없습니다.
					alert("試聴期限情報がないため再生できません。");
				};
				
				strPlaylist = GetPlaylist(UserInfo.SiteID, ProductID, nodeExpireTime.text, Mode);
				if (strPlaylist < 0){
					//웹서버가 예상하지 못한 값을 반환하였습니다
					alert("ウェブサーバーから予想外の値が返されました。:" + strPlaylist);
					return;
				}
			}
			else
			{	
				// 구매한적이 없는 상품이거나 시청기한이 지난 상품일때는 다시 구매해야한다.
				if (nodeErrCode.text == "-7" || nodeErrCode.text == "-10"){
					//alert(#DEBUG:" + "Go to Purchase-Page");
					askPurchase(ProductType, ProgramID, ProductID, bPackaged);					
					
					return;
				}else{
					//서버 내부에서 에러가 발생하였습니다
					alert("サーバー内でエラーが発生しました。:" + nodeErrCode.text);
				}
				return;
			}
		}
		else
		{
			//웹서버가 예상하지 못한 값을 반환하였습니다
			alert("ウェブサーバーから予想外の値が返されました。:" + dom.parseError.reason);
			return;
		}
    }
    catch(e)
    {
		//예외가 발생하였습니다
		alert("例外が発生しました。:" + e);
		return;
    }
    
	
	try{
		Result = IPlayerOCX.StartPlayer(UserInfo.UserID, UserInfo.AuthToken, strPlaylist);
		
		if (Result != 0)
		{
			switch(Result)
			{
				/* 2008/7/24 mhkang: IMX에서 플레이어가 설치되지 않았을때 표시되는 메시지 스트링 변경 요청
				플레이어가 설치되어 있지 않거나 또는 설치가 제대로 완료되지 않았을 가능성이 있습니다.
				이용 가이드”의 “플레이어 설치”에서 다시 플레이어를 설치해주세요.
				*/
				case -2: alert("プレーヤーがインストールされてないか、またはインストールが正しく完了していない可能性があります。\n\nご利用ガイド」の「プレーヤーのインストール」より、再度プレーヤーのインストールをして下さい。");
						 break;
				
				//Player를 실행할 수 없습니다
				default: alert("Playerを起動できません。: " + (0 - Result));
			}
		}
	}catch(e){
		//PeerNet ActiveX를 설치하세요
		alert("PeerNet ActiveXをインストールしてください。:" + e);
	}
}

function DownloadVideo(ProductID, ProductType, ProgramID, bPackaged)
{    
    StartPlayer(ProductID, ProductType, ProgramID, bPackaged, "D");
}

function WatchVideo(ProductID, ProductType, ProgramID, bPackaged, YhPid)
{    
    StartPlayer(ProductID, ProductType, ProgramID, bPackaged, "S");
}