/****************************************************************************
	Created by		: pes
	Created Date	: 2008-03-25
	Last Updated	:
	Require			:
	Description		:
*****************************************************************************/
/****************************************************************************
	AJAX¸¦ À§ÇØ XMLHttpRequest °´Ã¼ »ý¼º
*****************************************************************************/
function createXMLHttpRequest()
{
	if(window.ActiveXObject) {				// IE
		try {
			return new ActiveXObject('Msxml2.XMLHTTP')
		} catch(e) {
			return new ActiveXObject("Microsoft.XMLHTTP");
		}
	} else if(window.XMLHttpRequest) {		// Mozilla, Safari, ...
		return new XMLHttpRequest();
	} else {
		return false;
	}
}

/****************************************************************************
	VODÇÃ·¹ÀÌ¾î ÃÊ±âÈ­
*****************************************************************************/
function initVODPlayer()
{
	try {
		VodPlayer.settings.volume	= 100;
	} catch(e) {}

	ProgressBar = new Common.Slide("ProgressHandle", "ProgressTrack", "ProgressFill","horizontal");
	VolumeBar = new Common.Slide("VolumeHandle", "VolumeTrack", "VolumeFill","horizontal");

	ProgressBar.onDragEnd = function()
	{
		try {
			var UpdatePosition = VodPlayer.currentMedia.duration * this.value / 100;
			setPosition(UpdatePosition);
			
		} catch (e) {}
	}
	VolumeBar.onDragEnd = function()
	{
		try {
			setVolume(this.value);
		} catch (e) {}
	}

	VolumeBar.onDragMove = function()
	{
		try {
			setVolume(this.value);
		} catch (e) {}
	}
	setMedia();
}

/****************************************************************************
	VODÇÃ·¹ÀÌ¾î ÁÖ±âÀû »óÅÂ Ã³¸®
*****************************************************************************/
var ObserverID=null;
var isDebug=false;
function startObserver()
{
//	alert(2);
	stopObserver();
	debug("[startObserver]");
	onObserver();
	ObserverID = setInterval(onObserver, 1000);
}
function stopObserver()
{
	debug("[stopObserver]");
	onObserver();
	clearInterval(ObserverID);
}
function onObserver()
{

	try {
	//	$("NowTimeSpan").innerHTML=convertTime(Math.floor(VodPlayer.controls.CurrentPosition));
		if(! ProgressBar.running) {
		//	alert(1);
			ProgressBar.setValue(parseInt(VodPlayer.controls.currentPosition / VodPlayer.currentMedia.duration * 300));
		}

	} catch(e) {}
}
function setPosition(){
	if (!Banner)	{
		if(arguments.length > 0) {
			if(Math.floor(arguments[0])>=Math.floor(VodPlayer.currentMedia.duration)){
				VodPlayer.controls.currentPosition = Math.floor(VodPlayer.currentMedia.duration)-1;
			}else{
					VodPlayer.controls.currentPosition = arguments[0];
			}

			if(! ProgressBar.running) {
				ProgressBar.setValue(VodPlayer.controls.currentPosition / VodPlayer.currentMedia.duration * 300);
			}
		}
	}
}
/****************************************************************************/

/****************************************************************************
	VODÇÃ·¹ÀÌ¾î ActiveX »ý¼º
*****************************************************************************/
function createPcube()
{
	var htmlString	= "\
<object id=\"_VodPlayer\" classid=\"CLSID:D1B04E69-5710-4c30-BD64-805931AD0E40\" width=\"512\" height=\"384\" type=\"application/x-oleobject\"  VIEWASTEXT>\
	<param name=\"setLBS\"		value=\"vodlbs.mnet.com;vodlbs.mnet.com\">\
	<param name=\"autoStart\"	value=\"-1\">\
	<param name=\"volume\"		value=\"100\">\
	<param name=\"serviceID\"	value=\"mnetv\">\
	<param name=\"LogSvr\"	value=\"p2plogvod01.maxmp3.co.kr;p2plogvod02.maxmp3.co.kr\">\
	<param name=\"URL\"			value=\"\">\
	\
</object>\
<script type=\"text/javascript\" for=\"_VodPlayer\" event=\"playStateChange(NewState)\">onPlayStateChange(NewState);</"+"script>\
<script type=\"text/javascript\" for=\"_VodPlayer\" event=\"error(NewState)\">onError(NewState);</"+"script>\
	";
	document.write(htmlString);
	return document.getElementById("_VodPlayer");
}
function play() {
	 VodPlayer.controls.play();
}
function stop() {
	try{
		VodPlayer.controls.stop(); }
	catch(e){}
}
function pause() { 
	VodPlayer.controls.pause();
}

function setMedia()
{
	if(loadComplete) {
		if(arguments.length >= 2 && arguments[0] && arguments[1]) {
			stop();
			CurrentVOD.id		= arguments[0];
			CurrentVOD.type		= arguments[1];
		}
		showBannerBefore();
	}
}

function openMedia()
{
	VodPlayer.url = "http://player.mnet.com/outp/L_protocol/inc.VodPath.asp?vodID="+ CurrentVOD.id+	"&vodType="+ CurrentVOD.type ;
	play();

}
function getVolume()
{
	debug("[getVolume]");
	return parseInt(VodPlayer.settings.volume);
}
function setVolume()
{
	debug("[setVolume]");
	if(arguments.length > 0) {
		VodPlayer.settings.volume = arguments[0];
	}
}

function setMute()
{
	if(arguments.length > 0) {
		VodPlayer.settings.mute = arguments[0];
	} else {
		VodPlayer.settings.mute = (! VodPlayer.settings.mute);
	}
	if (document.getElementById("img_spkr").src=="http://img.mnet.com/VODPlayer/OutP/images/b_spkrm.gif")
	{
		document.getElementById("img_spkr").src="http://img.mnet.com/VODPlayer/OutP/images/b_spkr.gif";
	}else{
		document.getElementById("img_spkr").src="http://img.mnet.com/VODPlayer/OutP/images/b_spkrm.gif";
	}
}


function setFullScreen()
{
	VodPlayer.fullScreen = -1;
}
function setSkin(mode){
	switch(mode){
		case "stop" :		
			document.getElementById("li_pause").style.display="none";
			document.getElementById("li_play").style.display="block";	
		break;
		case "pause" :		
			document.getElementById("li_pause").style.display="none";
			document.getElementById("li_play").style.display="block";
		break;
		case "play" :		
			document.getElementById("li_pause").style.display="block";
			document.getElementById("li_play").style.display="none";
		break;
	}

}
function onPlayStateChange()
{
	switch(arguments[0]) {
		case 0 :		// Undefined
		break;

		case 1 :		// Stopped
			setSkin('stop');
			stopObserver();
		break;

		case 2 :		// Paused
			setSkin('pause');
			stopObserver();
		break;

		case 3 :		// Playing
			setSkin('play');
			startObserver();
			document.getElementById("dd_VodTitle").innerHTML=VodPlayer.currentMedia.getItemInfo("title");
			playLog();
		break;

		case 4 :		// ScanForward
		break;

		case 5 :		// ScanReverse
		break;

		case 6 :		// Buffering
		break;

		case 7 :		// Waiting
		break;

		case 8 :		// MediaEnded
			setSkin('stop');
			stopObserver();
			showBannerAfter();
			countingLog();
		break;

		case 9 :		// Transitioning
		break;

		case 10 :		// Ready
		break;

		case 11 :		// Reconnecting
		break;

		default :		// Default
		break;
	}
}
function onError(ErrorCode)
{
	//errorLog(ErrorCode)
}
function showVodPlayer()
{
	Banner=false;
	document.getElementById("__P2PPlayer__").style.display		= "block";
	document.getElementById("__BannerBefore__").style.display	= "none";
	document.getElementById("__BannerAfter__").style.display	= "none";
	document.getElementById("__BannerBeforeFrame__").src	= "about:blank";
}
function showBannerBefore()
{
	Banner=true;
	document.getElementById("__P2PPlayer__").style.display		= "none";
	document.getElementById("__BannerBefore__").style.display	= "none";
	document.getElementById("__BannerAfter__").style.display	= "none";
	var bannerUrl	="BannerBefore.asp?vodID="+ CurrentVOD.id +"&vodType="+ CurrentVOD.type;
	document.getElementById("__BannerBeforeFrame__").src	= bannerUrl;
}

function showBannerAfter()
{
	Banner=true;
	document.getElementById("__P2PPlayer__").style.display		= "none";
	document.getElementById("__BannerBefore__").style.display	= "none";
	document.getElementById("__BannerAfter__").style.display	= "block";
}


function getVodServiceName(argCode)
{
	var rtnName;
	switch(argCode.toUpperCase()) {
		case "3001"		:
		case "PRG"		: rtnName = "PRG";	break;
		case "3002"		:
		case "NEWS"		: rtnName = "NEWS";	break;
		case "3003"		:
		case "LC"		: rtnName = "LC";	break;
		case "3004"		:
		case "MV"		: rtnName = "MV";	break;
		case "3005"		:
		case "MIX"		: rtnName = "MIX";	break;
		case "3006"		:
		case "MOV"		: rtnName = "MOV";	break;
		case "3010"		:
		case "CF"		: rtnName = "CF";	break;
		case "3011"		:
		case "PCC"		: rtnName = "PCC";	break;
		case "MNET"		: rtnName = "MNET";	break;
		case "KM"		: rtnName = "KM";	break;
		default			: rtnName = "";	break;
	}
	return rtnName;
}
function getVodServiceCode(argName)
{
	var rtnCode;
	switch(argName.toUpperCase()) {
		case "3001"		:
		case "PRG"		: rtnCode = "3001";	break;
		case "3002"		:
		case "NEWS"		: rtnCode = "3002";	break;
		case "3003"		:
		case "LC"		: rtnCode = "3003";	break;
		case "3004"		:
		case "MV"		: rtnCode = "3004";	break;
		case "3005"		:
		case "MIX"		: rtnCode = "3005";	break;
		case "3006"		:
		case "MOV"		: rtnCode = "3006";	break;
		case "3010"		:
		case "CF"		: rtnCode = "3010";	break;
		case "3011"		:
		case "PCC"		: rtnCode = "3011";	break;
		case "MNET"		: rtnCode = "Mnet";	break;
		case "KM"		: rtnCode = "Km";	break;
		default			: rtnCode = "";	break;
	}
	return rtnCode;
}
function debug()
{
	if(isDebug) {
		document.getElementById("__DebugZone__").style.display = 'block';
		var debugZone = document.getElementById("__Debug__");

		var message = arguments[0];

		if(debugZone) {
			debugZone.innerHTML += message +"<br />";
			debugZone.scrollTop = debugZone.scrollHeight;
		} else {
			alert(message);
		}
	}
}
/****************************************************************************/

/********DMC ±¤°í¿¡¼­ È£ÃâµÇ´Â ÇÔ¼ö***************************************/
function loadDMCBanner(){
	document.getElementById("__BannerBefore__").style.display	= "block";
	document.getElementById("__BannerBefore__").innerHTML	= "<iframe frameborder=0 src=Banner.asp bgcolor=#000000 width=512 height=384 marginwidth=0 marginheight=0 scrolling=no></iframe>";
}
/********DMC ±¤°í¿¡¼­ È£ÃâµÇ´Â ÇÔ¼ö***************************************/

/********·Î±×***************************************/
function countingLog()
{
	var LoadURL = "http://player.mnet.com/_PlayerLog/CountLog_VOD.asp";
	LoadURL += "?MediaType="+ (CurrentVOD.type || "");
	LoadURL += "&MediaID="+ (CurrentVOD.id || "");
	var httpRequest = createXMLHttpRequest();
	httpRequest.onreadystatechange = function(httpRequest) {};
	httpRequest.open('GET', LoadURL, true);
	httpRequest.send('');
}
function playLog()
{
	var LoadURL = "http://player.mnet.com/_PlayerLog/PlayLog_Set.asp";
	LoadURL += "?PlayerType=WEB";
	LoadURL += "&PlayerKind="+ escape("OUTP VOD Player");
	LoadURL += "&MediaType="+ (CurrentVOD.type || "");
	LoadURL += "&MediaID="+ (CurrentVOD.id || "");
	LoadURL += "&UserID=" ;
	LoadURL += "&MediaURL=" + (escape(VodPlayer.currentMedia.sourceURL) || "");

	var httpRequest = createXMLHttpRequest();
	httpRequest.onreadystatechange = function(httpRequest) {};
	httpRequest.open('GET', LoadURL, true);
	httpRequest.send('');
}

/********·Î±×***************************************/

// ============================================
// Slide Class
// ============================================
var Common = {
	Version : "0.2.1",
	prototypeVersion : parseFloat(Prototype.Version.split(".")[0] + "." + Prototype.Version.split(".")[1])
}

if((typeof Prototype=='undefined') || Common.prototypeVersion < 1.5) {
	throw("Common requires the Prototype JavaScript framework >= 1.5");
}
Common.Slide = new Class.create();
Common.Slide.prototype = {

	initialize : function()
	{
		this.handleElement	= ($(arguments[0]) || null);
		this.trackElement	= ($(arguments[1]) || null);
		this.fillElement	= ($(arguments[2]) || null);

		this.running		= false;
		this.value			= 0;
		this.options = {
		//	axis	: "horizontal",
			axis	: arguments[3],
		
			max		: null,
			min		: null,
			offset	: 0
		};

	Object.extend(this.options, arguments[3] || {});

	var trackPos	= Position.cumulativeOffset(this.trackElement);

		if(this.options.axis == "horizontal") {
			this.options.min	= 0;
			this.options.max	= this.options.min + Element.getWidth(this.trackElement) - Element.getWidth(this.handleElement)-10;
		//	this.options.max	= this.options.min + Element.getWidth(this.fillElement) - Element.getWidth(this.handleElement);
			//alert(this.options.max);
			this.options.offset	= (Element.getWidth(this.handleElement) / 2) + trackPos[0];
		} else {
			this.options.min	= 0;
			this.options.max	= this.options.min + Element.getHeight(this.trackElement) ;
			this.options.offset	= (Element.getHeight(this.handleElement) / 2) + trackPos[1];
		}

	//Position.absolutize(this.handleElement);

		this.eventDragStart	= this.startDrag.bindAsEventListener(this);
		this.eventDragMove	= this.moveDrag.bindAsEventListener(this);
		this.eventDragEnd	= this.endDrag.bindAsEventListener(this);

		Event.observe(this.trackElement,	"mousedown",	this.eventDragStart);
		Event.observe(this.handleElement,	"mousedown",	this.eventDragStart);
	},

	startDrag : function(event)
	{
		this.running		= true;

		Event.observe(document.body,	"mousemove",	this.eventDragMove);
		Event.observe(document.body,	"mouseup",		this.eventDragEnd);

		this.onDragStart();
		this.moveDrag(event);

		Event.stop(event);
	},

	moveDrag : function(event)
	{
		var movePos	= 0;
		if(this.options.axis == "horizontal") {
			movePos	= Event.pointerX(event) - this.options.offset;
			movePos	= Math.min(movePos, this.options.max);
			movePos	= Math.max(movePos, this.options.min);

			Element.setStyle(this.handleElement, { 'marginLeft' : movePos +"px" });
			if(this.fillElement != null) {
				Element.setStyle(this.fillElement, { 'width' : movePos +"px" });
			}
		} else {
			movePos	= Event.pointerY(event) - this.options.offset;
			movePos	= Math.min(movePos, this.options.max);
			movePos	= Math.max(movePos, this.options.min-1);

			movePos = Element.getHeight(this.trackElement) - movePos;
			Element.setStyle(this.handleElement, { 'marginTop' : "-"+movePos +"px" });
			if(this.fillElement != null) {
				Element.setStyle(this.fillElement, { 'height' : movePos +"px" });
			}
		}

		this.value	= movePos / this.options.max * 100;

		this.onDragMove();

		Event.stop(event);
	},

	endDrag : function(event)
	{
		Event.stopObserving(document.body,	"mousemove",	this.eventDragMove);
		Event.stopObserving(document.body,	"mouseup",		this.eventDragEnd);

		this.onDragEnd();

		this.running		= false;

		Event.stop(event);
	},

	setValue : function()
	{
		
		if(arguments.length > 0) {
			var changeValue	= (parseInt(arguments[0]) || 0);
			var movePos		= this.options.max / 300 * changeValue;

			if(this.options.axis == "horizontal") {
				Element.setStyle(this.handleElement, { 'marginLeft' : movePos +"px" });
				if(this.fillElement != null) {
					Element.setStyle(this.fillElement, { 'width' : movePos +"px" });
				}
			} else {
				Element.setStyle(this.handleElement, { 'marginTop' : "-"+movePos +"px" });
				if(this.fillElement != null) {
					Element.setStyle(this.fillElement, { 'height' : movePos +"px" });
				}
			}
		}
	},

	onDragStart		: function()	{},
	onDragMove		: function()	{},
	onDragEnd		: function()	{}
}