var mediaPlayer = new MPlayer(
{
  name     : "worldbaseballclassic",
  template : "/media/player/mp_tpl.jsp",
  width    : 910,
  height   : 640
});

mediaPlayer.preLaunch = function(o){
	// Support old ver2 media type setting
	function setV2MediaType(){
		if(!o["pid"] || o["pid"]!=''){
			switch(o.pid){
				case 'mlb_lg'            : o.type = "v_sub";  break;
				case 'mlb_lg_pr'         : o.type = "v_sub";  break;
				case 'mlb_tv_linescore'  : o.type = "v_sub";  break;
				case 'mlb_pghs'          : o.type = "v_sub";  break;
				case 'mlb_bb'            : o.type = "v_sub";  break;
				case 'mlb_cg'            : o.type = "v_sub";  break;
				case 'wbc_media_2009'    : o.type = "v_sub";  break;
				case 'mlb_media_mlb_wbc' : o.type = "v_sub";  break;
				case 'mlb_ga'            : o.type = "a_sub";  break;
				case 'bb_audio'          : o.type = "a_sub";  break;
				case 'bb_video'          : o.type = "v_sub";  break;
				case 'mlb_cchd'          : o.type = "v_free"; break;
				case 'gen_video'         : o.type = "v_free"; break;
				case 'gen_audio'         : o.type = "a_free"; break;
				case 'mlb_tp'            : o.type = "v_free"; break;
				case 'mlb_potg'          : o.type = "v_free"; break;
				case 'mlb_dv'            : o.type = "v_free"; break;
				case 'CWSVID2007'        : o.type = "v_sub";  break;
				case 'CWSVID2006'        : o.type = "v_sub";  break;
				case 'false'             : o.type = "v_free"; break;
				default                  : o.type = "v_free"; break;
			}
			document.cookie = "media_pid=" + o.pid + "; path=/; domain=worldbaseballclassic.com";
		}
		else{ o.pid = "v_free"; }
		//return o;
	}
	setV2MediaType();


	// get FLV
	if(!!o.mid && o.type=='v_free'){

		if(o.mid.length >= 9){ // m(eta)id must be at least 9 characters long in order for operations below to work.
			var dateStr   = o.mid.substring(0,4)+"/"+o.mid.substring(4,6)+"/"+o.mid.substring(6,8);
			var contentId = o.mid.substring(8);
			var mediaMetaFilePath = "/gen/multimedia/detail/"+dateStr+"/"+contentId+".xml";

			var xmlData = $.ajax({url:mediaMetaFilePath, async:false}).responseText; 
			var playbackScenarios = [];
			var urlData = {};

			if (xmlData){
				bam.loadSync('/shared/scripts/bam/packed/bam.xml.js');

				var mediaJson = bam.xml.xmlToJSON(xmlData);
				var urls      = mediaJson.url;

				$.each(urls, 
					function(){
						var url = this;
						if (!!url.playback_scenario){
							playbackScenarios.push(url.playback_scenario);
							urlData[url.playback_scenario] = {
								id  : url.id,
								url : url.Text
							};
						}

						if (url.speed=='400'&&url.type=='windows-media'){
							playbackScenarios.push('MLB_WM_400K_STREAM');
							urlData.MLB_WM_400K_STREAM = {
								id  : url.id,
								url : url.Text
							};
						}

						if (url.speed=='350'&&url.type=='windows-media'){
							playbackScenarios.push('MLB_WM_350K_STREAM');
							urlData.MLB_WM_350K_STREAM = {
								id  : url.id,
								url : url.Text
							};
						}

						if (!!url.pid&&url.pid.indexOf('audio')!=-1&&url.type=='windows-media'){
							playbackScenarios.push('MLB_WM_AUDIO_STREAM');
							urlData.MLB_WM_AUDIO_STREAM = {
								id  : url.id,
								url : url.Text
							};
						}

					}
				);
				
				// handle playback scenarios
				var streamType;
				if ($.inArray('MLB_FLASH_800K_PROGDNLD',playbackScenarios)!=-1) {
					o.flv   = urlData.MLB_FLASH_800K_PROGDNLD.url;
					o.id    = urlData.MLB_FLASH_800K_PROGDNLD.id;
					if (typeof o.w_id!=='undefined'){ delete o.w_id; }
					if (!!o.w) { delete o.w; } // remove 'w' param b/c metadata file trumps 'w' and we're playing flash
					o.streamType = "Progressive Download";
				}
				else if ($.inArray('MLB_WM_400K_STREAM',playbackScenarios)!=-1) {
					var arl_w = "mms://a1503.v108692.c10869.g.vm.akamaistream.net/7/1503/10869/v0001/mlb.download.akamai.com/10869/";
					if (typeof o.w_id!=='undefined'){ delete o.w_id; }
					o.w    = (urlData.MLB_WM_400K_STREAM.url.charAt(0)=='/') ? arl_w + urlData.MLB_WM_400K_STREAM.url : urlData.MLB_WM_400K_STREAM.url;
					o.w_id = urlData.MLB_WM_400K_STREAM.id;
					o.streamType = "Stream";
				}
				else if ($.inArray('MLB_WM_350K_STREAM',playbackScenarios)!=-1) {
					var arl_w = "mms://a1503.v108692.c10869.g.vm.akamaistream.net/7/1503/10869/v0001/mlb.download.akamai.com/10869/";
					if (typeof o.w_id!=='undefined'){ delete o.w_id; }
					if (urlData.MLB_WM_350K_STREAM.url.charAt(0)=='2') { urlData.MLB_WM_350K_STREAM.url = '/' + urlData.MLB_WM_350K_STREAM.url;	}
					o.w    = (urlData.MLB_WM_350K_STREAM.url.charAt(0)=='/') ? arl_w + urlData.MLB_WM_350K_STREAM.url : urlData.MLB_WM_350K_STREAM.url;
					o.w_id = urlData.MLB_WM_350K_STREAM.id;
					o.streamType = "Stream";
				}
				// WMA playback
				else if ($.inArray('MLB_WM_AUDIO_STREAM',playbackScenarios)!=-1) {
					var arl_w = "mms://a1503.v108692.c10869.g.vm.akamaistream.net/7/1503/10869/v0001/mlb.download.akamai.com/10869/";
					if (typeof o.w_id!=='undefined'){ delete o.w_id; }
					if (urlData.MLB_WM_AUDIO_STREAM.url.charAt(0)=='2') { urlData.MLB_WM_AUDIO_STREAM.url = '/' + urlData.MLB_WM_AUDIO_STREAM.url;	}
					o.w    = (urlData.MLB_WM_AUDIO_STREAM.url.charAt(0)=='/') ? arl_w + urlData.MLB_WM_AUDIO_STREAM.url : urlData.MLB_WM_AUDIO_STREAM.url;
					o.w_id = urlData.MLB_WM_AUDIO_STREAM.id;
					o.type = 'a_free';
					o.streamType = "Stream";
				}
			}
		}
		delete o.mid; // clear mid so MP swf doesn't set w param
	}

	o.mType = 'w';

	var mURL = o.w,
	    arlPrependLiveReal = "rtsp://a1503.l10869[PORT].c10869.g.lr.akamaistream.net/live/D/1503/10869/v0001/reflector:[PORT]",
	    arlPrependLiveWMP  = "mms://a1503.l10869[PORT].c10869.g.lm.akamaistream.net/D/1503/10869/v0001/reflector:[PORT]",
		arlPrependReal = "rtsp://a592.v108693.c10869.g.vr.akamaistream.net/ondemand/7/592/10869/v0001/mlb.download.akamai.com/10869/",
	    arlPrependWMP = "mms://a1503.v108692.c10869.g.vm.akamaistream.net/7/1503/10869/v0001/mlb.download.akamai.com/10869/";

	if(typeof mURL!="undefined" && mURL!="" && mURL.indexOf("://")<0){
		if(mURL.charAt(0)=="/"){ mURL=mURL.substring(1); }
		// Set Live ARL
		if(mURL.indexOf("reflector:")>-1){
			var reflector = mURL.match(/reflector\:(\d{5})/);
			wmpArl  = arlPrependLiveWMP.replace(/\[PORT\]/g, reflector[1]);
			realArl = arlPrependLiveReal.replace(/\[PORT\]/g, reflector[1]);
			mURL    = (o.mType=='w') ? wmpArl : realArl;
		}
		// Set Archive ARL
		else{
			mURL=(o.mType=='w') ? arlPrependWMP+mURL : arlPrependReal+mURL;
		}
		o.w = mURL;
	}

	// set domain for ad iframe re-write
	o.domain = 'worldbaseballclassic.com';
	if (mediaPlayer.isNested) { document.domain = o.domain; }

	o.adType      = 'flash'; 
	//o.adUrl       = 'http://ad.doubleclick.net/pfadx/mlb.mlb/mlb;page=media;sect=player;match=test;pos=1;sz=512x288;tile=1;ord=' + (new Date).getTime(); // for testing pre-roll
	//o.adUrl       = 'http://ad.doubleclick.net/pfadx/mlb.mlb/mlb;page=media;sect=player;match=videolanding;pos=1;sz=512x288;tile=1;ord=' + (new Date).getTime(); // hardcoded ad; none sold, so add when pre-roll is present
	o.adBannerUrl = 'http://ad.doubleclick.net/adi/wbc.mlb;page=media;sect=player;match=wbc;pos=1;sz=728x90;tile=1;dc_seed=197548186;ord=' + (new Date).getTime(); // hardcoded banner; pre-roll companion ad will overwrite this if sold

	return true;
};

// aliases for mediaPlayer.play; for newsroom- and backwards-compatibility
function playMedia2(o){
	mediaPlayer.play(o);
}

function startPlayer(o){
	mediaPlayer.play(o);
}