$(function()
{
	
	
	
	//if($('#speedCategories').length > 0)
	//{
		
	$("#category").change(function(){animateBar($(this).val())});
	
	$("#reset").click(function(){
		clearInterval(clockInterval);
		startTime = new Date();
		updateTimer();
					   
		$(".progressbar").stop(true, false).css({width:"0px"});
		$(".progressbar").html("");
		//Zet het pulldownmenu terug
		$("#category").attr( "value", "choice" );
	});
	
//}
});


function getTimeStamp() {
	return  parseInt(new Date().getTime());
}


/**
Bepaal de factor voor animatiesnelheid op basis
van de selectie van de gebruiker in het pulldownmenu
**/
function determineSpeedFactorFilesize(categoryId) {
	switch(categoryId)
		{
		case 'youtube': return 2000;
		case 'mp3': return 1000;
		case 'foto': return 300;
		case 'movie': return 212000;
		}						
}	

/**
Bepaal de factor voor animatiesnelheid voor alle
categorieen van de snelheidstest
**/
function determineSpeedFactorCategory(categoryId) {
	switch(categoryId)
		{
		case 'Kick100Up': return 100;
		case 'Kick100Down': return 100;
		case 'Kick50Up': return 50;
		case 'Kick50Down': return 50;
		case 'CableUp': return 10;
		case 'CableDown': return 120;
		case 'VdslUp': return 2;
		case 'VdslDown': return 16;
		case 'Adsl2Up': return 0.5;
		case 'Adsl2Down': return 9;
		case 'AdslUp': return 0.5;
		case 'AdslDown': return 6;
		}							
}

/**
Rond het aantal seconden af op twee cijfers
achter de komma.
**/
function formatSpeedTime(timeToFormat) {
	var time = timeToFormat.toFixed(2);	
	if (time < 60) {
		return time + " seconde.";
	}else {
		var minutes = parseInt(time/60);
		var seconds = time - (minutes*60);
		var minText = minutes == 1? "minuut" : "minuten";
		var secText = "seconden";

		return minutes + " "+ minText+ " " + seconds + " "+ secText+".";
	}
}


// 
// check complete = kijkt wanneer beide bars klaar zijn en zet er dan een vinkje achter


function checkComplete(updateString)
{
	switch(updateString)
	{
		case 'Kick100Up':
			  if(Kick100Down==1 && Kick100Up==1)
			  {
				  	$('#Kick100Down').append('<img src="/frontend/images/ok.png" alt="Klaar" />');
			  }
	  	break;

		case 'Kick50Up':
			  if(Kick50Down==1 && Kick50Up==1)
			  {
				  	$('#Kick50Down').append('<img src="/frontend/images/ok.png" alt="Klaar" />');
			  }
	  	break;

		case 'CableUp':
			  if(CableDown==1 && CableUp==1)
			  {
				  	$('#CableDown').append('<img src="/frontend/images/ok.png" alt="Klaar" />');
			  }
	  	break;

		case 'VdslUp':
			  if(VdslDown==1 && VdslUp==1)
			  {
				  	$('#VdslDown').append('<img src="/frontend/images/ok.png" alt="Klaar" />');
			  }
	  	break;

		case 'Adsl2Up':
			  if(Adsl2Down==1 && Adsl2Up==1)
			  {
				  	$('#Adsl2Down').append('<img src="/frontend/images/ok.png" alt="Klaar" />');
			  }
	  	break;

		case 'AdslUp':
			  if(AdslDown==1 && AdslUp==1)
			  {
				  	$('#AdslDown').append('<img src="/frontend/images/ok.png" alt="Klaar" />');
			  }
	  	break;
	}
	
	

}


/**
Animeer voor elke div met class progressbar 
een staafje dat volloopt. Snelheid van vollopen 
is op basis van keuze in het pulldown menu en 
het soort category.
**/
function animateBar(MB) {
	startTimer();
	$(".progressbar").html("");
	var startTime = getTimeStamp();
	
	
	$(".progressbar").each(function(index) {
		var elementId = $(this).attr( "id" );						
		var Mbps = determineSpeedFactorCategory(elementId);	
		var totalMb = $("#category").val();

			$("#"+elementId).stop(true, false).css({width:'0px'}).animate({ 
					width: "100%"}, 
					
					( (totalMb * 8) / Mbps ), function(){
						var totalSeconds = ((totalMb * 8) / Mbps) * 0.001;							
						totalTime = formatSpeedTime(totalSeconds);
						
						$("#"+elementId).html(totalTime);
						// elementId 
						window[elementId] = '1';												
						checkComplete(elementId);				
		});
	  });
}

var clockInterval;
var startTime;
function startTimer()
{
	startTime = new Date().getTime();
	clearInterval(clockInterval);
	clockInterval  = setInterval(updateTimer,200);
}

function updateTimer()
{
	var currentTime = new Date().getTime();
	var timer = new Date()
	timer.setTime(currentTime-startTime);
	$("#clock #timer").html( prependZero(timer.getMinutes()) + ":" + prependZero(timer.getSeconds()) + ":" + prependZero(parseInt(timer.getMilliseconds()*0.1)))
}

function prependZero(i)
{
	return i < 10 ? "0"+i : i; 
}
