var mtvnPlayers = [];
function mtvnPlayerLoaded( playerId ){
  mtvnPlayers[playerId]._onPlayerLoaded();
}
function MTVNPlayerController(id,onLoadFunctionName){
  mtvnPlayers[id] = this;
  this.onLoadFunctionName = onLoadFunctionName;
  this.playerLoaded = false;
  this.playerId = id;
  this.player = null;

  this._onPlayerLoaded = function(){
    this.playerLoaded = true;
    this.player = (navigator.appName.indexOf("Microsoft") != -1) ? window[this.playerId] : document[this.playerId];
	
    var f = eval(onLoadFunctionName);
    f(this);
  }
}

VH1 = new Object();

// global vars
var controller;
var coad = new CoAdBrowser("coadTarget");

VH1.Player = new function(){
	
	this.configParams;
	this.playerMediaHost;
	this.videoUri;
	this.continuousPlay = true;
	this.fullEpisode = false;
	
	var coAdInterval;
	var onNoAdObject;	
	var coAdRefreshTime = 90000;
	var coAdObject = null;
	
	var bannerAdObject = {};
	var bannerAdInterval;
	var bannerAdRefreshTime = 60000;
	
		
	this.init = function() {
		out('VH1.Player.init');
		VH1.Player.initBannerAd();
	
	}
	
	this.addPlayer = function(host,uri,config,fullepisode,width,height) {
		//System.out.println('addPlayer uri='+uri);
		var flashVersion = "9.0.115.0";		
		var configParams = config;
		this.configParams = config;
		this.playerMediaHost = host;
		this.videoUri = uri;
		this.fullEpisode = fullepisode;
		
		if (width==undefined) width=448;		
		if (height==undefined) width=367;		
		
		var so = new SWFObject(VH1.Player.playerMediaHost + "/" + VH1.Player.videoUri, "embeddedPlayer", width, height, flashVersion, "#cccccc");

		so.addVariable("configParams", encodeURIComponent(configParams));
	
		so.addParam("allowFullScreen",true);
		so.addParam("allowScriptAccess","always");
		so.addParam("wmode", "transparent");
		so.addParam("swliveconnect",true);
		so.addParam("bgcolor", "#000000");
		try{
			so.write("video-player");
		}catch(e){
			try{
				so.write("videoPlayer");
			}catch(e){}
		
		}
		controller = new MTVNPlayerController("embeddedPlayer","VH1.Player.onPlayerLoaded");
		
		// set the share link
		//document.getElementById("shareLink").value=location.href;
	}
	
	this.onPlayerLoaded = function(controller){
		controller.player.addEventListener("NO_AD","VH1.Player.onNoAd");
		controller.player.addEventListener("METADATA","VH1.Player.onMetaData");
		//VH1.Player.coAdInterval = setInterval("VH1.Player.refreshCoad()", VH1.Player.coAdRefreshTime);	
	}
	
	this.onMetaData = function(metadata){ 
		//System.out.println('metadata='+metadata);
		//System.out.println('metadata.adUrl='+metadata.adUrl);
		//System.out.println('VH1.Player.coAdObject.url='+VH1.Player.coAdObject);
		if(metadata.adUrl!=null && VH1.Player.coAdObject==undefined){
			VH1.Player.setCoAdObject(metadata.adUrl);
		}
	}
	
	this.setCoAdObject = function(adUrl){
		try{
			VH1.Player.coAdObject = {};
			VH1.Player.coAdObject.url = adUrl.replace(/pfadx/, "adi").replace(/640x480/, "300x250").replace(/text\/xml/, "text/html");
			VH1.Player.coAdObject.width = "300";
			VH1.Player.coAdObject.height = "250";
		
		}catch(e){System.out.pringln('setCoAdObject ERROR');}
	}
	
	this.onNoAd = function(metadata) {
		System.out.println('onNoAd');
		var adObject = {};
		adObject.url = metadata.adUrl.replace(/pfadx/, "adi").replace(/640x480/,"300x250").replace(/text\/xml/,"text/html");
		adObject.width = 300;
		adObject.height = 250;
		onNoAdObject = adObject;
		VH1.Player.noAdSetCoad();		
	}
	
	this.noAdSetCoad = function() {
		System.out.println('noAdSetCoad');
		VH1.Player.setCoad(onNoAdObject);
	}
	
	this.setCoad = function(adObject) {	
		//VH1.Player.coAdObject = adObject;
		//System.out.println('setting coad '+coAdRefreshTime);
		//System.out.println('adObject.url '+adObject.url);
		//System.out.println('adObject.width '+adObject.width);
		//System.out.println('adObject.height '+adObject.height);
		var src = adObject.url;
		var w = adObject.width;
		var h = adObject.height;
		coad.updateWindow(src, w, h);
			
		// no_ad event isn't firing, temp fix
		//if (adObject.url.substring(39,43)!="coad") {
		clearInterval(coAdInterval);
		coAdInterval = setInterval("VH1.Player.refreshCoad()", coAdRefreshTime);	
		//}
		
	}
	
	this.initBannerAd = function(){
		var scrObj = document.getElementById('hat_ads').getElementsByTagName("script")[1].src;
		if(scrObj){
			var adUrl = scrObj;
			adUrl = adUrl.replace(/adj/, "adi");		
			bannerAdObject.url = adUrl;
			clearInterval(bannerAdInterval);
			bannerAdInterval = setInterval("VH1.Player.refreshBannerAd()", bannerAdRefreshTime);
		}
	}
	
	this.refreshBannerAd = function(){
		out('refreshBannerAd');
		var newAdUrl = bannerAdObject.url;
		newAdUrl = newAdUrl.substring(0,newAdUrl.lastIndexOf("ord=")+4) + Math.round(Math.random()*Math.pow(10,7)).toString();
		bannerAdObject.url = newAdUrl;
		
		Page.e('hat_ads').innerHTML = '';
		var banner = new CoAdBrowser("hat_ads");
		banner.updateWindow(bannerAdObject.url, 728, 90);
	}
	
/*	this.refreshCoad = function(){
		//System.out.println('refreshCoad');
		if(VH1.Player.coAdObject != null){
			//System.out.println('refreshing coad with same ad object');
			VH1.Player.setCoad(VH1.Player.coAdObject);
		}
		else{
		
			try{
				if(onNoAdObject.url!=undefined&&onNoAdObject.url!=null){
					var newAdUrl = onNoAdObject.url;
					newAdUrl = newAdUrl.substring(0,newAdUrl.lastIndexOf("ord=")+4) + Math.round(Math.random()*Math.pow(10,7)).toString();
					onNoAdObject.url = newAdUrl;
					VH1.Player.setCoad(onNoAdObject);
				}
			}
			catch(e){ System.out.println('getting error in onNoAdObject'); }
		
		}
	}	*/

	this.refreshCoad = function(){
		if(VH1.Player.coAdObject.url!=undefined&&VH1.Player.coAdObject.url!=null){			
			var newAdUrl = VH1.Player.coAdObject.url;
			newAdUrl = newAdUrl.substring(0,newAdUrl.lastIndexOf("ord=")+4) + Math.round(Math.random()*Math.pow(10,7)).toString();
			VH1.Player.coAdObject.url = newAdUrl;
			//System.out.println('|||REFRESH COAD|||');
			//System.out.println('|||'+VH1.Player.coAdObject.url+'|||');
			VH1.Player.setCoad(VH1.Player.coAdObject);
		}
	}

			
	this.isContinuousPlay = function() {	
		var isContinuous = document.getElementById('continuousPlay').checked;
		return isContinuous;
	}
}

VH1.Utils = new function(){
	this.init = function(){}
	
	this.select = function(obj){
		obj.focus();
		obj.select();
	}
	
	this.pageUrl = function() {
		return location.href;
	}
}

var mtvnSetCoad = VH1.Player.setCoad;

Page.onload('VH1.Player.init');

