﻿// RMS설치 서버에 맞게 아래 Url정보를 변경한다.
//var strRmsUrl = "http://pls.imx-iptv.com/rms_test/Service.asmx";
var strRmsUrl = "/rms/Serviec.asmx";

function CheckUser(UserInfo){
    try{
		UserInfo.UserID		= document.info.loginID.value;
		UserInfo.bSVOD		= document.info.isSVOD.value;
		UserInfo.AuthToken	= document.info.loginID.value;	// 현재는 UserID와 Authoring token을 동일하게 사용한다.
    }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;
    
    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/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){		
        alert("HTTPリクエストに失敗しました。" +e.message);	//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;

    // 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){   
            alert("ブラウザがAJAX非対応です。");		//브라우저가 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){		
        alert("HTTPリクエストに失敗しました。");		//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();    
        
	//Login Check
    if (CheckUser(UserInfo) == false){		
    	needLogin();
        return;
    }
   
    //IE Browser Check
    if(window.ActiveXObject){
    	try{
    		dom = new ActiveXObject("Microsoft.XMLDOM.1.0");
        }catch(e){    		
    		alert("ブラウザがMSXML1.0に対応していません。 :" + e);
    		return;
        }
    }else{
    	alert("ご視聴は Internet Explorerでのみ 可能です。");
    	return;
    }
    
    strXML = CheckPurchase("MBC", UserInfo.UserID, ProductID);
    //alert("#DEBUG:" + "NeedPurchase return:" + strXML);    
    
    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("MBC", ProductID, nodeExpireTime.text, Mode);
				
				if (strPlaylist < 0){
					//웹서버가 예상하지 못한 값을 반환하였습니다
					alert("ウェブサーバーから予想外の値が返されました。:" + strPlaylist);
					return;
				}
			}
			else
			{	// 구매한적이 없는 상품이거나 시청기한이 지난 상품일때는 다시 구매해야한다.
				if (nodeErrCode.text == "-7" || nodeErrCode.text == "-10"){					
					askPurchase(ProductType, ProgramID, ProductID, '0', 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)
			{
				case -2:
					/* 2008/7/24 mhkang: IMX에서 플레이어가 설치되지 않았을때 표시되는 메시지 스트링 변경 요청
					플레이어가 설치되어 있지 않거나 또는 설치가 제대로 완료되지 않았을 가능성이 있습니다.
					이용 가이드”의 “플레이어 설치”에서 다시 플레이어를 설치해주세요.
					*/
					alert("プレーヤーがインストールされてないか、またはインストールが正しく完了していない可能性があります。\n\nご利用ガイド」の「プレーヤーのインストール」より、再度プレーヤーのインストールをして下さい。");
					break;
				default:
					//Player를 실행할 수 없습니다
					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) 
{
	if(ipCheck())   
		StartPlayer(ProductID, ProductType, ProgramID, bPackaged, "S");
	else 
		return;
}	