function MediaPlayerBrowser() {
	this.noActiveX = !window.ActiveXObject; 
	this.isMac = (navigator.platform.indexOf('Mac')==0); 
	this.useMediaPlayer = true;
	try {
		this.useMediaPlayer = detectionObject.ok;
		this.noMediaPlayerProcessor = detectionObject.onError;
	}catch(e){
		Debug.trace('detection failed');
	}
}
MediaPlayerBrowser.prototype.createWindow = function(parentWindow,name,position,left,top,width,height,src,nodes) {
	
	try {
		// create browser container div
		this.mediaPlayerBrowser = document.createElement('div');
		this.id = name;
		
		// find parent window to attach this media div to.
		this.target = document.getElementById(parentWindow+"_div");	
		this.target.appendChild(this.mediaPlayerBrowser);

		// create the windows media player object
		//var existingNode = document.getElementById(name);	
		//if(existingNode){	
			//existingNode.parentNode.removeChild(existingNode);	
		//}	
		this.updateWindow(position,left,top,width,height,src);	

	}catch(e){
		Debug.trace("MediaPlayerBrowser Error: " + e);
	}

}
MediaPlayerBrowser.prototype.updateWindow = function(position,left,top,width,height,src) {
	Debug.trace(this.id + ' MediaPlayerBrowser_updateWindow(' + position + ',' + left + ',' + top + ',' + width + ',' + height + ',' + src  + ')');								
	

	this.currentSrc = src;

	if(!this.useMediaPlayer) {
		try{
			this.noMediaPlayerProcessor(src);
			return;
		}catch(e){ 
			Debug.trace('No media player error hanlder')
		};
	}

	if(this.isMac)
		return;
	// set div style
	var newStyle = 'display:inline;position:' + position + ';left:' + left + 'px;top:' + top + 'px;width:' + width + 'px;height:' + height + 'px;';	
	this.mediaPlayerBrowser.style.cssText = newStyle;


	if(this.noActiveX){
		
		//if there is a media player and there is no activex then remove the existing one.
		if(this.mediaPlayer){
			if(!src){
				return;
			}
			this.mediaPlayerBrowser.removeChild(this.mediaPlayer);
		}

		//adjust height for wmp controls
		height = parseInt(height) + 40;

		this.mediaPlayer = document.createElement('embed');
		this.mediaPlayer.setAttribute('type',"application/x-mplayer2");
		this.mediaPlayer.setAttribute('uiMode',"full");
		if(src||src==""){
			this.mediaPlayer.setAttribute('SRC',src);
		}

	}else{

		// if there is a media player, then adjust 
		if(src){
			this.trackPlayer();
		}
		if(this.mediaPlayer){

			this.mediaPlayer.uiMode = 'none';
			this.mediaPlayer.style.display = "inline";

			this.mediaPlayer.setAttribute('width',width);
			this.mediaPlayer.setAttribute('height',height);

			if(src||src==""){
				this.startImage = null;
				this.mediaPlayer.setAttribute('URL',src);
			}


			//MediaPlayerBrowser_writeEventScript(this.id);			
	
		

			return;

		}else{

			//create windows media player object
			this.mediaPlayer = document.createElement('object');
			this.mediaPlayer.setAttribute('codebase',"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=7,0,0,1954");
			this.mediaPlayer.setAttribute('classid',"CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6");
			this.mediaPlayer.setAttribute('type',"application/x-oleobject");
			this.mediaPlayer.setAttribute('URL',src);
			this.mediaPlayer.setAttribute('uiMode',"none");
			this.mediaPlayer.setAttribute('windowlessVideo',"true");
			
		}
	}

	this.mediaPlayer.setAttribute('width',width);
	this.mediaPlayer.setAttribute('height',height);
	this.mediaPlayer.setAttribute('id',this.id + '_player');
	this.mediaPlayer.setAttribute('autoStart',"true");
	
	this.mediaPlayerBrowser.appendChild(this.mediaPlayer);

	if(MediaPlayerBrowser.maxBandwidth)
		this.mediaPlayer.network.maxBandwidth = MediaPlayerBrowser.maxBandwidth;

	defaultMediaPlayerInstance = this;

	this.mediaPlayer.attachEvent("playstatechange",this.playstatechange); 	
	this.mediaPlayer.attachEvent("currentItemChange",this.currentItemChange); 	

}
MediaPlayerBrowser.prototype.destroyWindow = function() {
	Debug.trace('MediaPlayerBrowser_destroyWindow(' + this.id + ')');			

	if(this.noActiveX){
		this.mediaPlayer.SRC = null;
		this.mediaPlayerBrowser.removeChild(this.mediaPlayer);			
	}else{
		this.mediaPlayer.controls.pause();
		this.mediaPlayer.uiMode = 'invisible';
		this.mediaPlayer.style.display = "none";
		this.mediaPlayer.URL = null;
	}

	this.target.removeChild(this.mediaPlayerBrowser);			
}
MediaPlayerBrowser.prototype.command = function(name,commandName,args) {
	Debug.trace("MediaPlayerBrowser.command(" + name + "," + commandName + "," + args + ")");	
	switch(commandName) {
		case "play":
			this.mediaPlayer.controls.play();
			this.trackPlayer();
			break;
		case "stop":
			this.mediaPlayer.close();
			MediaPlayerBrowser_setPosition(this.id,0) 
			clearInterval(this.positionInterval);
			break;
		case "pause":
			this.mediaPlayer.controls.pause();
			break;
		case "fastForward":
			this.mediaPlayer.controls.fastForward();
			break;
		case "fastReverse":
			this.mediaPlayer.controls.fastReverse();
			break;
		case "goTo":
			this.mediaPlayer.controls.currentPosition = args;
			break;
		case "setVolume":
			this.mediaPlayer.settings.volume = args;
			break;
		default:
			break;
		
	}
}
MediaPlayerBrowser.prototype.trackPlayer = function () {
	if(this.positionInterval){
		clearInterval(this.positionInterval);
	}
	this.positionInterval = setInterval("MediaPlayerBrowser_setPosition('" + this.id + "')", 250)
}; 
MediaPlayerBrowser_setPosition = function(name,position){ 
	var position = position ? position : browserManager.childBrowsers[name].mediaPlayer.controls.currentPosition
	browserManager.routeMessage("command","setPosition:"+position,"root_browser_media_mediaControl")
}	
MediaPlayerBrowser.prototype.setDuration = function(){ 
	try {
		var duration = this.mediaPlayer.currentMedia.duration
		browserManager.routeMessage("command","setDuration:"+duration,"root_browser_media_mediaControl")
	}catch(e) {
		//window.status = 'Error MediaPlayerBrowser_setDuration ' + this.id + ' : ' + e;
	}
}

MediaPlayerBrowser_writeEventScript = function (name) {

	//document.write('<SCRI' + 'PT LANGUAGE = "JScr' + 'ipt"  FOR="' + name + '_player" EVENT="playStateChange(NewState)"/>')		
}; 

MediaPlayerBrowser.prototype.showStartImage = function () {
	if(this.startImage)
		return;
	var img = "/relaunch/sitewide/components/media/od_initial.gif"
	this.startImageDiv = document.createElement("div")
	this.startImage = document.createElement("img")
	this.startImage.src = img;
	this.startImageDiv.style.cssText = "z-index:100;position:absolute;bottom:0;right:0;";
	this.startImageDiv.appendChild(this.startImage);
	this.mediaPlayerBrowser.appendChild(this.startImageDiv);

}; 


var coad = false;
var lastAdTag = "";

MediaPlayerBrowser.prototype.currentItemChange = function (state) {

	var adDisplayed = false;

	// unfortunaltely, we lose the scope here, using defaultMediaPlayerInstance is temporary and means that we can have only one media player.
	var adTag = defaultMediaPlayerInstance.mediaPlayer.currentMedia.getItemInfo("coAd");

	if((typeof adTag == "undefined") || (adTag == "") && coad == false){
	   // let the regular ad stay
	} else {
	   if((adTag == "none") && (coad == false)){
	   // let the regular ad stay
	   } else {
	      // adTag is set
	      if(adTag.indexOf("doubleclick") != -1){
		 coad = true;
	      }
	   }
	}

	//if(typeof adFrame != "undefined"){	
	   if(adTag != lastAdTag){
	      if(adTag.indexOf("doubleclick") != -1){
		try{
			document.getElementById("root_browser_media_tabMenu_ad").src = adTag;
		}catch(e){
		}
			//adFrame.location.href = adTag; 
		//top.browserManager.routeMessage("navigate",coAdUrl,"root_browser_media_mediaControl");	
	      }
	   } else{
	      // the ad is the same as last one so don't change it
	   }
	//}	

	//window.status = 'adTag = ' + adTag;
	lastAdTag = adTag;

}
MediaPlayerBrowser.prototype.playstatechange = function (state) {

	// unfortunaltely, we lose the scope here, using defaultMediaPlayerInstance is temporary and means that we can have only one media player.

	if(state=="3"){ //play
		defaultMediaPlayerInstance.showStartImage();
		defaultMediaPlayerInstance.setDuration();
	}
	if(state=="8"){ //stop 
	}
}; 

MediaPlayerBrowser.prototype.onPageLoad = function() { }
