MN.Tracking = {};
_uacct = "UA-676303-4";
var TR = MN.Tracking;

TR.User = function(u)
{
	log('send user hit');
	if(u)
	{
		log('send unique user hit');
		urchinTracker('totalUsers');
	}
}

TR.ReturnUser = function(u)
{
	log('send return user hit');
	if(u)
	{
		log('unique return user hit');
		urchinTracker('returnUser');
	}
}

TR.IsInstalled = function(u)
{
	log('send is installed hit');
	if(u)
	{
		log('unique is installed');
		urchinTracker('hasPlayer');
	}

}

TR.NeedsInstall = function(u)
{ // No player is not installed on user's machine
	log('send needs install hit');
	if(u)
	{
		log('unique needs install');
		urchinTracker('needsInstall');
	}
}

TR.InstallStart = function(u)
{
	log('send install start');
	if(u)
	{
		log('unique install start');
		urchinTracker('installStart');
	}
}

TR.InstallSuccess = function(u)
{
	log('send install success');
	if(u)
	{
		log('unique install success');
		urchinTracker('installSuccess');
	}
}

TR.InstallFailed = function(u)
{
	log('send install failed');
}

TR.NeedsUpgrade = function(u)
{ // Old version of player found but needs to do a forced upgrade
	log('send needs upgrade hit');
	if(u)
	{
		log('unique needs upgrade');
		urchinTracker('needsUpgrade');
	}
}

TR.UpgradeStart = function(u)
{ // The forced upgrade started
	log('send upgrade start hit');
	if(u)
	{
		log('unique upgrade start');
		urchinTracker('upgradeStart');
	}
}

TR.UpgradeSuccess = function(u)
{ // Upgrade successful and player created
	log('send upgrade success hit');
	if(u)
	{
		log('unique upgrade success');
		urchinTracker('upgradeSuccess');
	}
}

TR.UpgradeFailed = function(u)
{ // Upgrade failed
	log('send upgrade failed hit');
}

TR.UnsupportedPlatform = function(u)
{
	log('send unsupported platform hit');
	if(u)
	{
		log('unique unsupported platform');
		urchinTracker('unsupported');
	}
}

/*
* DO NOT MODIFY BELOW HERE
*/

QI.OrigStartInstall = QI.StartInstall;
QI.StartInstall = function()
{
	if(TR._hasCookies)
	{
		if(document.cookie.indexOf('iU=1') != -1) // "iU" in upgrade
			MN.Cookie.Clear('iU');
		if(document.cookie.indexOf('iI=1') == -1) // "iI" in Install
		{
			MN.Cookie.Set('iI', '1', 1);
			setTimeout(function(){TR.InstallStart(true);}, 10);
		}
		else
		{
			log('StartInstall', 'already in install');
		}
	}
	else
	{
		log('StartInstall', 'No Cookies');
		// Should we try to just use global variables?????
	}
	QI.OrigStartInstall();
}

QI.OrigStartUpgrade = QI.StartUpgrade;
QI.StartUpgrade = function(n)
{
	if(TR._hasCookies)
	{
		if(document.cookie.indexOf('iI=1') == -1)
			MN.Cookie.Clear('iI');
		if(document.cookie.indexOf('iU=1') == -1)
		{
			MN.Cookie.Set('iU', '1', 1);
			TR.UpgradeStart(true);
		}
		else
		{
			log('StartUpgrade', 'already in upgrade');
		}
	}
	else
	{
		log('StartUpgrade', 'No Cookies');
	}
	QI.OrigStartUpgrade(n);
}



TR._OrigDoneCB = null;

TR._MyDoneCB = function(doneOK)
{
	if(doneOK)
	{
		var c = MN.Cookie.Get('RU');
		if(c != null)
		{
			var c1 = MN.Cookie.Get('RUS'); // Return User Sent
			if(c1 == null)
			{
				MN.Cookie.Set('RUS', '1', 365);
				TR.ReturnUser(true);
			}
			else
			{
				MN.Cookie.Clear('RUS');
				MN.Cookie.Set('RUS', '1', 365); 
				TR.ReturnUser(false);
			}
			MN.Cookie.Clear('RU');
			MN.Cookie.Set('RU', '1', 365);
		}
		else
		{
			MN.Cookie.Set('RU', '1', 365);
		}
		if(document.cookie.indexOf('iU=1') != -1)
		{
			MN.Cookie.Clear('iU');
			MN.Cookie.Clear('NUS');
			TR.UpgradeSuccess(true);
		}
		if(document.cookie.indexOf('iI=1') != -1)
		{
			MN.Cookie.Clear('iI');
			MN.Cookie.Clear('NIS');
			TR.InstallSuccess(true);
		}
	}
	else
	{
		if(document.cookie.indexOf('iU') != -1)
		{
			MN.Cookie.Clear('iU');
			TR.UpgradeFailed(true);
		}
		if(document.cookie.indexOf('iI') != -1)
		{
			MN.Cookie.Clear('iI');
			TR.InstallFailed(true);
		}
	}
	TR._OrigDoneCB(doneOK);
}

QI.OrigCreatePlayer = QI.CreatePlayer;
QI.CreatePlayer = function(parentID, DoneCB, w, h, playerID)
{
	if(!TR._OrigDoneCB)
		TR._OrigDoneCB = DoneCB; // Store the original DoneCB function for later
	return QI.OrigCreatePlayer(parentID, TR._MyDoneCB, w, h, playerID);
}


TR._HasCookiesEnabled = function()
{
	MN.Cookie.Set('hc', '1');
	var c = MN.Cookie.Get('hc');
	if(c != null)
		return true;
	return false;
}

TR.Init = function()
{
	TR._hasCookies = TR._HasCookiesEnabled();
	if(!QI.OSIsGood() || !QI.BrowserIsGood())
	{
		var c = MN.Cookie.Get('UPS')
		if(c == null)
		{
			MN.Cookie.Set('UPS', '1', 365); // UPS "Unsupported Platform Sent"
			TR.UnsupportedPlatform(true);
		}
		else
			TR.UnsupportedPlatform(false);
	}
	else
	{
		if(MN.QMPInstall.CanPlay())
		{
			MN.Cookie.Clear('NUS');
			MN.Cookie.Clear('NIS');
			MN.Cookie.Clear('UPS'); // What can brown do for you :)
			var c = MN.Cookie.Get('IIS');
			if(c == null)
			{
				MN.Cookie.Set('IIS', '1', 365); // IIS "Is Installed Sent"
				TR.IsInstalled(true);
			}
			else
				TR.IsInstalled(false);
		}
		else if(MN.QMPInstall.UpgradeRequired())
		{
			var c = MN.Cookie.Get('NUS');
			if(c == null)
			{	
				MN.Cookie.Set('NUS', '1', 365); // NUS "Needs Upgrade Sent"
				TR.NeedsUpgrade(true);
			}
			else
				TR.NeedsUpgrade(false);
		}
		else if(MN.QMPInstall.InstallRequired())
		{
			var c = MN.Cookie.Get('NIS');
			if(c == null)
			{
				MN.Cookie.Set('NIS', '1', 365); // NIS "Needs Install Sent"
				TR.NeedsInstall(true);
			}
			else
				TR.NeedsInstall(false);
		}
	}
	var c = MN.Cookie.Get('UU') // UU "Unique Users"
	if(c == null)
	{
		MN.Cookie.Set('UU', '1', 365);
		TR.User(true);
	}
	else
	{
		MN.Cookie.Clear('UU');
		MN.Cookie.Set('UU', '1', 365);
		TR.User(false);
	}
}

TR.Init();
