var FiveDownloadPlayer = {};
FiveDownloadPlayer.custId = "five";
FiveDownloadPlayer.configVersion = '1.0.0.12174';

FiveDownloadPlayer.redirectToInstall = function()
{
	window.location.href = Url.format('WhatYouNeed.aspx?ReturnUrl=' + escape(window.location.href));
}

FiveDownloadPlayer.isUpgradeRequired = function(version)
{
	try {
		var versionString = version.join('.');//[1,0,0,1234] => '1.0.0.1234'
		return FiveDownloadPlayer.checkVersion(versionString, FiveDownloadPlayer.configVersion);
	} catch (e) {}
	return FiveDownloadPlayer.checkVersion(version, FiveDownloadPlayer.configVersion);
}

FiveDownloadPlayer.openOrInstall = function()
{
	FiveDownloadPlayer.ifUpToDate(
		function(){
			new DownloadManager(FiveDownloadPlayer.custId, function(){ this.launchUserInterface(); });
		},
		FiveDownloadPlayer.redirectToInstall);
}

FiveDownloadPlayer.checkVersion = function( current, self )
{
	var aVIn = current.split(".") ;
	var aVOut = self.split(".") ; 
	if ( parseInt(aVIn[0]) < parseInt(aVOut[0]) ) return false;
	if ( parseInt(aVIn[1]) < parseInt(aVOut[1]) ) return false;
	if ( parseInt(aVIn[2]) < parseInt(aVOut[2]) ) return false;
	if ( parseInt(aVIn[3]) < parseInt(aVOut[3]) ) return false;
	return true ;
}

FiveDownloadPlayer.ifUpToDate = function(latestVersionCallback, notLatestVersionCallback)
{
	var oVersion = null;
	var browserType = (document.all) ? DMVersion.BrowserType.InternetExplorer : DMVersion.BrowserType.Firefox;
	
	if ( browserType == DMVersion.BrowserType.InternetExplorer || DMVersion.HasPlugin() ) {
		oVersion = new DMVersion(browserType, "oVControl"); // created in Master template
	}
	
	var dmc = DMVersion.hasPassed(browserType, oVersion);
	if (dmc.pass){
		latestVersionCallback();
	} else {
		if (notLatestVersionCallback) notLatestVersionCallback();
	}
}

FiveDownloadPlayer.requireInstalled = function()
{
	FiveDownloadPlayer.ifUpToDate(function() {}, FiveDownloadPlayer.redirectToInstall);
}
/*
FiveDownloadPlayer.requireWmpFirefoxPlugin = function(notInstalledCallback)
{
	if (document.all)
		return;
		
	for (var i = 0; i < navigator.plugins.length; i++) {
		// normal WMP plugin is npmswmp.dll, we want newer np-mswmp.dll
		if (navigator.plugins[i].filename.toLowerCase().indexOf("np-mswmp") >= 0)
			return;
	}
	
	notInstalledCallback();
}*/

FiveDownloadPlayer.getEntitlements = function(sessionid,callback)
{
	var upToDate = function() {
		$.get(Url.format("/handlers/Entitlements.ashx?" + sessionid), function(data) {
			var entitlements = eval(data);
			if (entitlements.length > 0)
			{
				new DownloadManager(FiveDownloadPlayer.custId, function() {

					var jobs = this.queryJobs();
					var downloadNowCount = 0;
					var readyToPlayCount = 0;
					for (var i = 0; i < entitlements.length; i++)
					{
						var entitlement = entitlements[i];
						var readyToPlay = false;
						for (var j = 0; j < jobs.length; j++)
						{
							var job = jobs[j];
							if (job["@ChannelId"] == entitlement.ChannelId && job["@ItemId"] == entitlement.ItemId)
							{
								readyToPlay = true;
								break;
							}
						}
						if (readyToPlay)
							readyToPlayCount++;
						else
							downloadNowCount++;
						
						callback(readyToPlayCount, downloadNowCount);
					}
				});
			}
			else
			{
				callback(0,0);
			}
		});
	}
	
	var notUpToDate = function() { callback(0, 0); };

	FiveDownloadPlayer.ifUpToDate(upToDate, notUpToDate);
}