var EmbeddedPlayerManager = function() {};
var embeddedPlayerManager = function() {};
var epmAttributes = new Object;
var resizeCalled = false;

if (typeof window.console == 'undefined') {
	var console = {};
	console.log = function(){}; // alert;
}

embeddedPlayerManager.setBaseLocation = function(a) {};
embeddedPlayerManager.setAttribute = function(a,b) {
	epmAttributes[a] = b;
};

embeddedPlayerManager.embedVideoPlayer = function(a) {
	var so = new SWFObject("http://video.nbcuni.com/outlet/embed/OutletEmbeddedPlayerLoader.swf", "OutletEmbeddedPlayerLoader", epmAttributes.width, epmAttributes.height, "9.0.115", "#000000");
	so.useExpressInstall("http://video.nbcuni.com/outlet/expressInstall.swf");
	so.addVariable("configUrl", "http://video.nbcuni.com/PlayerConfig/oxygen/outlet_config.xml");

	so.addVariable("starter", "embeddedPlayer");
	// required variables for embedded player extension

	for (var i in epmAttributes) {
		if (i.substring(0,8) == 'override' && epmAttributes[i] == "") continue;
		if (i == 'extend') continue;
		if (i == 'targetDivID') continue;

		if (i == 'width') continue;
		if (i == 'height') continue;
		//if (i == 'videoControls') continue;
		so.addVariable(i, epmAttributes[i]);
	}

	so.addVariable("adCanvasWidth", EP4AdCanvasWidth);
	so.addVariable("adCanvasHeight", EP4AdCanvasHeight);
	//so.addVariable("videoControls", "http://video.nbcuni.com/outlet/extensions/impd_controls/styles/oxygen_outlet2.swf");
	so.addParam("allowFullScreen", "true");
	so.addParam("allowScriptAccess", "always");
	so.write(epmAttributes.targetDivID);
};

embeddedPlayerManager.fakePlayer = {};
embeddedPlayerManager.fakePlayer.fullscreenElementIDs = [];
embeddedPlayerManager.fakePlayer.allowPlaylistAdvance = true;
embeddedPlayerManager.fakePlayer.runOnBeginFunction = function() {};
embeddedPlayerManager.fakePlayer.runOnEndFunction = function() {};
embeddedPlayerManager.fakePlayer.hidePlayer = function() { $(epmAttributes.targetDivID ? epmAttributes.targetDivID : 'videoplayer').style.visibility = 'hidden'; };
embeddedPlayerManager.fakePlayer.unHidePlayer = function() { $(epmAttributes.targetDivID ? epmAttributes.targetDivID : 'videoplayer').style.visibility = ''; };

embeddedPlayerManager.fakePlaylist = {};
embeddedPlayerManager.fakePlaylist.playlist = [];
embeddedPlayerManager.updatePositions = function() {};

embeddedPlayerManager.getPlayer = function() { return this.fakePlayer; };
embeddedPlayerManager.getRealPlayer = function() {
	if (player == null) player = Outlet.getOutletExtension("embeddedPlayer");
	return player;
};


embeddedPlayerManager.fakePlayer.getPlaylist = function() { return embeddedPlayerManager.fakePlaylist; };
embeddedPlayerManager.fakePlayer.createPlaylist = function(a) { console.log('create playlist called'); embeddedPlayerManager.fakePlaylist.playlist = a.split(','); };
embeddedPlayerManager.fakePlayer.setFullscreenElementIDs = function(a) { embeddedPlayerManager.fakePlayer.fullscreenElementIDs = a.split(','); };
embeddedPlayerManager.fakePlayer.setRunOnBegin = function(f) { embeddedPlayerManager.fakePlayer.runOnBeginFunction = embeddedPlayerManager.setFunction(f); };
embeddedPlayerManager.fakePlayer.setRunOnEnd = function(f) { embeddedPlayerManager.fakePlayer.runOnEndFunction = embeddedPlayerManager.setFunction(f); };
embeddedPlayerManager.fakePlayer.playVideo = function(c) {
	if (Outlet == null) {
		window.setTimeout("embeddedPlayerManager.getPlayer().playVideo("+c+")", 300);
	} else
		embeddedPlayerManager.getRealPlayer().playVideo(c);
};
embeddedPlayerManager.fakePlayer.play = function() { embeddedPlayerManager.getRealPlayer().play(); };
embeddedPlayerManager.fakePlayer.pause = function() { embeddedPlayerManager.getRealPlayer().pause(); };
embeddedPlayerManager.fakePlayer.isPlayingAd = function() { return embeddedPlayerManager.getRealPlayer().isPlayingAd(); };
embeddedPlayerManager.fakePlayer.getMetaData = function() { return embeddedPlayerManager.getRealPlayer().getMetaData(); };

embeddedPlayerManager.fakePlayer.advance = function() {
	var plArr = embeddedPlayerManager.fakePlaylist.playlist;
	var currentClip = embeddedPlayerManager.getRealPlayer().getMetaData().id;
	var plPos = 0;
	var currPos = -1;
	for (plPos = 0; plPos < plArr.length; plPos++) {
		if (plArr[plPos] == currentClip) currPos = plPos;
	};
	var nextPos = currPos + 1;
	if (currPos != -1 && nextPos < plArr.length)
		embeddedPlayerManager.fakePlayer.playVideo(plArr[nextPos]);
};

/*embeddedPlayerManager.getPlayer = function(a) {
	if (player != null) return player;
	if (typeof Outlet != 'undefined')
		return Outlet.getOutletExtension("embeddedPlayer");
	return function(){};
}*/

embeddedPlayerManager.browserWindowBeforeUnloadAll = function(a) {};

embeddedPlayerManager.processPlaylist = function() {
	console.log("runOnEnd: current clipid = " + player.getMetaData().id);
};

embeddedPlayerManager.myRunOnBegin = function() {};
embeddedPlayerManager.myRunOnEnd = function() { embeddedPlayerManager.processPlaylist(); };

embeddedPlayerManager.setFunction = function(f) {
	var g = null;
	if(typeof f == "function"){
		return f;
	} else if (typeof f == "string") {
		var g1 = function(h) {
			return function() {
				eval(h);
			}
		};
		return g1(f);
	}
	return function(){};
}

/*
embeddedPlayerManager.appendFunction = function(origF, f) {
	var g = null;
	if(typeof f == "function"){
		g = f;
	} else if (typeof f == "string") {
		var g1 = function(h) {
			return function() {
				eval(h);
			}
		};
		g = g1(f);
	}

	var retfun = function() {
		origF();
		g();
	};

	return retfun;
}
*/

var doAfterLoad=function(f){
	if(typeof f!="function"){
		return;
	}
	var _12c=window.onload;
	window.onload=function(){
		if(typeof _12c=="function"){
			_12c();
		}
		f();
	};
};

var doAfterOutletFunction = function() {};
var doAfterOutlet = function(f) {
	doAfterOutletFunction = f;
};

var player = null;
function onOutletEvent(e){
	//console.log(e.type);
	if(e.type == "outletInited"){
		//alert("inited");
		player = Outlet.getOutletExtension("embeddedPlayer");
		player.updateAdData({ numberOfAdCalls: 0});
		loadEvents();
		doAfterOutletFunction();
	}
}

function loadEvents(){
		player.addEventListener("AD_BREAK_EVENT_ON_LOADING", function() {
			embeddedPlayerManager.fakePlayer.metadata = player.getMetaData();
			embeddedPlayerManager.fakePlayer.metadata.originalObject = player.getMetaData();
		});

		player.addEventListener("Player.start" , function() {
			console.log('runOnBegin called');
			embeddedPlayerManager.fakePlayer.runOnBeginFunction();
		});
		player.addEventListener("Player.end" , function() {
			console.log('runOnEnd called');
			embeddedPlayerManager.fakePlayer.runOnEndFunction();
		});

 		/*player.addEventListener("VideoControlsEvents.USER_PLAY" , eventHandler);
		player.addEventListener("VideoControlsEvents.USER_PAUSE"  , eventHandler);
		player.addEventListener("VideoControlsEvents.SKIN_READY"  , eventHandler);
		player.addEventListener("Player.start" , eventHandler);
		player.addEventListener("Player.end" , eventHandler);
		player.addEventListener("Player.SWITCHED"  , eventHandler);
		player.addEventListener("Player.seekStart"  , eventHandler);*/
		//player.addEventListener("AD_BREAK_EVENT_ON_COMPLETE" , function() { player.resize(630,443); });
		//player.addEventListener("AD_EVENT_ON_END" , eventHandler);
		//player.addEventListener("StateUpdateEvent.UPDATE" , function() { if (!resizeCalled) { setTimeout("player.resize(630,473);", 200); resizeCalled = true; } else { resizeCalled = false; } });
}

function eventHandler(evt) {
	//console.log('PLAYER EVENT: '+evt.type);
}

jQuery(document).ready(function(){
var origWidget_Overlay = Widget_Overlay;
Widget_Overlay = function(a,b,c) {

if (embeddedPlayerManager.getPlayer().isPlayingAd == true || ( typeof embeddedPlayerManager.getPlayer().isPlayingAd!="undefined" && typeof embeddedPlayerManager.getPlayer().isPlayingAd != "boolean" && embeddedPlayerManager.getPlayer().isPlayingAd() ) ) {
alert(adPlayingMessage);
return;
}

origWidget_Overlay(a,b,c);
}
});

/*var ivJ = window.setInterval(function() {
	if (typeof jQuery == 'undefined' || typeof jQuery.noConflict != 'function') return;
	jQuery.noConflict();
	window.clearInterval(ivJ);
}, 200);*/
