// Determine size of image to use for the test (bytes)
var TestImageSizes = [ 194411, 486639, 759456, 1084219, 1851030, 2787918, 3833910, 4027823, 4963971, 6011777, 8877189, 12469231 ];
var LastImage = (TestImageSizes.length - 1);
var startTime = (new Date).getTime();
var currentImage = 0;
var myCallback = 0;

var BW_COOKIE_NAME = 'SolusBandwidthTest';

function BitrateTest_StartTestWithOverride(callBack)
{
    myCallback = callBack;
    BitrateTest_LoadImage(0);
	
}

function BitrateTest_StartTest(callBack)
{
    myCallback = callBack;

	var bwCookie = GetCookie(BW_COOKIE_NAME);
	if ((bwCookie == null) || (bwCookie == ''))
	{
	    BitrateTest_LoadImage(0);
	}
	else
	{

	    myCallback(bwCookie);
	}
}


function BitrateTest_LoadImage(ImageNumber)
{
	// Do Check here for already loading
	currentImage = ImageNumber;
	startTime = (new Date).getTime();
	document.getElementById('BitrateTest_BWTTarget').src = '/bwimg/psbw' + ImageNumber + '.png?cb=' + startTime;
}


function BitrateTest_LoadComplete()
{
	var finishTime = (new Date).getTime();
	var timeTaken = (finishTime - startTime) || 10;

	if ((timeTaken < 2500) && (currentImage < LastImage))
	{
		var nextTry = (3250*TestImageSizes[currentImage])/timeTaken;
		var nextImage = LastImage;
		for(var i = (currentImage + 1); i <= LastImage; i++)
		{
			if (TestImageSizes[i] >= nextTry)
			{
				nextImage = i;
				break;
			}
		}
		BitrateTest_LoadImage(nextImage);
	}
	else
	{
		var bitrate = Math.round((((8 * TestImageSizes[currentImage])/timeTaken)*1000)/1024);
		SetCookie(BW_COOKIE_NAME, bitrate);
		myCallback(bitrate);
	}
}

function BitrateTest_LoadError()
{
	myCallback(0);
}


function SetCookie(sName, sValue)
{
  date = new Date();
  date.setDate(date.getDate() + 1);
  document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString() + '; path=/;';
}

function GetCookie(sName)
{
  // cookies are separated by semicolons
  var aCookie = document.cookie.split("; ");
  
  for (var i=0; i < aCookie.length; i++)
  {
    // a name/value pair (a crumb) is separated by an equal sign
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0]) 
      return unescape(aCrumb[1]);
  }

  // a cookie with the requested name does not exist
  return null;
}
