var thisIndexId = -1;
var loadIndexId	= -1;
var loadContentUrl = "";
var pluginCheckCount = 0;
var curErrorMedia = "";
var curErrorTime = new Date().getTime();
var hasError = false;
var objWMedia;
//function to output the player object

function loadWmp(contentUrl, indexId, seekIndex){
	debugThis(' load movie '+contentUrl);
	
	//play the wmv after buffer has finsihed
	bufferingStatus = 1;
	bufferDone = false;
	userPause = false;
	wrongPause = false;
	newWmpObj = true;
	
	thisIndexId = indexId;
	loadIndexId = indexId;
	loadContentUrl = contentUrl;
	
	setStatus('playing');

	if(contentUrl.substring(0,5) == "media" ){
		contentUrl = domain + contentUrl;
	}

	hasError = false;	
	curErrorMedia = "";
	
	debugThis("objWMedia "+objWMedia);
	
	if(objWMedia != undefined){
		objWMedia.URL = contentUrl;
		return;
	}
	
	var videoWidth = 488;
	var videoHeight = 272;
	var outputStr;
	outputStr = '<object id="objMediaPlayer" classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="488" height="272">'+
				'<param name="windowlessVideo" value="true">' +
				'<param name="url" value="' + contentUrl + '">' +
				'<param name="autostart" value="1">' +
				'<param name="showcontrols" value="0">' +
				'<param name="enablecontextmenu" value="false">' +
				'<param name="uiMode" value="none">' +
				'<param name="loop" value="false">' +
				'<param name="bufferingtime" value="5">' +
				'<param name="stretchtofit" value="true">' +
				'<param name="SendErrorEvents" value="true">' + 
				'</object>';

	var targetPlayer = document.getElementById('videoPlayer');

	targetPlayer.innerHTML = outputStr;
	objWMedia = getWmpObject("objMediaPlayer");
	
	assignEvents(objWMedia);
}

function assignEvents(objWMedia){
	
	objWMedia.attachEvent("buffering",bufferingCall);
	objWMedia.attachEvent("error",errorCall);
	objWMedia.attachEvent("MediaError",MediaErrorCall);
	objWMedia.attachEvent("CurrentMediaItemAvailable",CurrentMediaItemAvailableCall);
	objWMedia.attachEvent("OpenStateChange",OpenStateChangeCall);
	objWMedia.attachEvent("playStateChange",playStateChangeCall);
	objWMedia.attachEvent("ScriptCommand",ScriptCommandCall);
	
	function bufferingCall(start){
		try{
			if (start == true) {
				bufferingStatus = 1;
			
				playStatus = 'waiting';
				debugThis(' buffer start');
				
				var objFlash = getObject("objFlashPlayer");
				objFlash.showBufferMc(true, 'WMV');
				//objFlash.initCheckBuffer('WMV', thisIndexId);
			} else {		
				//clearInterval(bufferInterval);		
				bufferingStatus = 2;
				setStatus('playing');
				debugThis(' buffer stop');
				var objFlash = getObject("objFlashPlayer");
				objFlash.showBufferMc(false, 'WMV');
				
			}		
		}catch(e){}
	}
	
	function errorCall(er){
		//removed as part of the error handling dev
		
		/*if(hasError)
			return;
			
		debugThis("ERROR WITH CONTENT");
		
		var Player = getObject("objMediaPlayer");
				
		// Store the number of errors in the error queue.
		var max = Player.error.errorCount;
		
		// Retrieve most recent ErrorItem object.
		var err = Player.error.item(max-1)
		
		// Store the error code number.
		var errNum = err.errorCode;
		
		// Store the error description string.
		var errDesc = err.errorDescription;
		
		var objFlash = getObject("objFlashPlayer");
		objFlash.errorMedia({'errNum':errNum, 'errDesc':errDesc});
		
		debugThis("errDesc: "+errDesc);*/
	}
	
	function MediaErrorCall(er){
		debugThis("MEDIA ERROR WITH CONTENT");
		
		var Player = getObject("objMediaPlayer");
		var time = new Date().getTime();
				
		// Retrieve most recent ErrorItem object.
		var err = Player.currentMedia.error;
		
		//cetch if same media throws same error more than once
		if(curErrorMedia == Player.currentMedia.name && curErrorMedia != "" && time < (curErrorTime+1000))
			return;
			
		curErrorMedia = Player.currentMedia.name;
		curErrorTime = time;

		// Store the error code number.
		var errNum = err.errorCode;
		debugThis(" log errNum: "+errNum);
		errNum = (errNum<0?errNum+0x100000000:errNum).toString(16).toUpperCase();
		debugThis(" log errNum: "+errNum);
		// Store the error description string.
		var errDesc = err.errorDescription;

		var objFlash = getObject("objFlashPlayer");
		objFlash.errorWmv({'errorCode':errNum, 'errorDesc':errDesc, 'errorGroup':'WM'}, curIndexId);
		
	
		//move on in schedule if error is missing file error
		debugThis("send play next media ");
		bufferingStatus = 3;

		setStatus('waiting');
		thisIndexId++;	
		
		hasError = true;
		
		debugThis(curErrorMedia+" log errDesc: "+errDesc);
	}
	
	function CurrentMediaItemAvailableCall(x){
		
		if(newWmpObj){
			if(objMediaPlayer.network.BufferingProgress == 0){
				bufferingStatus = 2;
			}
		}
		debugThis('CurrentMediaItemAvailable '+ "  buffer:" +objMediaPlayer.network.BufferingProgress + "%"+ "  download:" +objMediaPlayer.network.downloadProgress + "%");
	}
	
	function OpenStateChangeCall(state){
		debugThis("OpenStateChange "+state);
		try{				
			if(state == 13){
				bufferingStatus = 1;
				debugThis("bufferingStatus "+bufferingStatus);
			}
			
			//move on in schedule
			if(state == 8){
				//
			}
		
		}catch(e){}
	}
	
	function playStateChangeCall(state){
		var d = new Date()
		debugThis("playState "+state + "    "+(Math.round(d.getTime()/1000)));

		try{	
		if(state == 1){
			resetPlayer = true;
		}
		
		
		if(state == 3){
			//bufferingStatus = 2;
			resetPlayer = false;
			
			wrongPause = false;
			setStatus('playing');
		}
		
		if (state == 2) {
			if(!userPause){
				wrongPause = true;
			}else{
				wrongPause = false;
			}
			userPause = false;
		}

		if (state == 6) {
			//
		}
		
		//move on in schedule
		if(state == 8){
			debugThis(' resetPlayer '+resetPlayer);
				if(!resetPlayer){
					bufferingStatus = 3;
					
					var objFlash = getObject("objFlashPlayer");
					objFlash.playNextWmv();
					debugThis("send play next media ");
					
					setStatus('waiting');
					thisIndexId++;
				}
		}
		
		
		if (state == 10) {
			resetPlayer = false;
			playStatus = 'stopped';
		}
		
		}catch(e){}
	}
	
	function ScriptCommandCall(scType, Param){
		debugThis('ScriptCommandCall ');
		try{
			//var cpt = document.objMediaPlayer.controls.CurrentPositionTimecode;		
			var cpt = document.objMediaPlayer.controls.CurrentPositionTimecode;	
	//			alert(cpt+":"+Param);	
			if(cpt != "[00000]00:00:00.00"){
				writeSchedule.fetchSchedule(writeSchedule.get_utc_time(Param,cpt));
			}
		}catch(e){}
	}
						
}





function getWmpDownloadProgress(){
	var dProgress;
	var objWMedia = getWmpObject("objMediaPlayer");
	dProgress = objWMedia.network.downloadProgress;
	return dProgress;	
}

function getWmpBitrate(){
	var bitRate;
	var objWMedia = getWmpObject("objMediaPlayer");
	bitRate = objWMedia.network.bitRate;
	bitRate = Math.round(bitRate/1000);
	return bitRate;	
}



//get the video time of current playback
function getVideoTimeWmp(){
	var videoTime = 0;
	try{
		var objWMedia = getWmpObject("objMediaPlayer");
		videoTime = objWMedia.controls.currentPosition;
	}catch(e){}
	return videoTime;
}


//get the total time for current video
function getTotalTimeWmp(){
	var totalTime = 0;
	try{
		var objWMedia = getWmpObject("objMediaPlayer");
		totalTime = objWMedia.controls.currentItem.duration;
	}catch(e){}
	return totalTime;
}


//set the volume of current medium
function setVolumeWmp(vol){
	try{
		var objWMedia = getWmpObject("objMediaPlayer");
		objWMedia.settings.volume = vol;
	}catch(e){}
}

//set the volume of current medium
function setMuteWmp(status){
	debugThis("setMuteWmp "+status);
	try{
		var objWMedia = getWmpObject("objMediaPlayer");
		objWMedia.settings.mute = status;
	}catch(e){}
}

//set controls for wmp
function sendControlWmp(contolState, fromBufferCheck) {
var objWMedia = getWmpObject("objMediaPlayer");
try{
	switch(contolState) {
		case 1: // Stop
			objWMedia.controls.stop();
			break;
		case 2: // Pause
			//pauseVideo();
			if(fromBufferCheck != 1){
				userPause = true;
			}
			objWMedia.controls.pause();
			break;
		case 3: // Play
			//playVideo();
			objWMedia.controls.play();
			if(fromBufferCheck)
				setVolume(75);
			setStatus('playing');
			setVisibility('silverlightPlayer', false);
			break;
		case 4: // Previous
			objWMedia.controls.previous();
			break;
		case 5: // Next
			objWMedia.controls.next();
			break;
		}
	} catch (e) {}			
}


//set playhead for wmp after dragging it
function setPlayPosWmp(playPos) {
	try{
		var objWMedia = getWmpObject("objMediaPlayer");
		objWMedia.controls.currentPosition = playPos;
	} catch (e) {}			
}


//fast forwards wpm
function fFwdWmp(){	
	try{
		var objWMedia = getWmpObject("objMediaPlayer");
		objWMedia.controls.fastForward();
	} catch (e) {}			
}

// fast rewind wmp
function fRvsWmp(){
	try{
		var objWMedia = getWmpObject("objMediaPlayer");
		objWMedia.controls.fastReverse();
	} catch (e) {}	
}

function getBufferWmv(){
	debugThis('getBufferWmv  ');
	var bufferValue;
	debugThis('bufferingStatus  '+bufferingStatus);
	if(bufferingStatus == 1 || bufferingStatus == 3){
		bufferValue = true;
		bufferDone = false;
	}else{
		bufferValue = false;
		bufferDone = true;
	}
	var objWMedia = getWmpObject("objMediaPlayer");
	debugThis('getBufferWmv  '+objWMedia.network.BufferingProgress);
	return bufferValue;
}

//go fullscreen
function maximizeWmp(){
	document.objMediaPlayer.fullScreen=true;	
}

//go fullscreen
function minmizeWmp(){
	document.objMediaPlayer.fullScreen=false;	
}


function getFullscreenWmp(){
	return document.objMediaPlayer.fullScreen;
}

function maximizeFlv(){
	var objFlash = getObject("objFlashPlayer");
	objFlash.goFullScreen();
	debugThis(' max flv send off ');
}








function push247ScheduleToJs(jsonData){
	try{
		writeSchedule.write_schedule(jsonData);
	}catch(e){}
}

function videoPlaying(){
	try {
		
		if(document.objMediaPlayer != undefined){
			if(document.objMediaPlayer.controls.CurrentPosition){
				return true;
			}else{
				return false;
			}
		}else{
			return false;
		}
		
	} catch(e) {}
	
}


