var current;
var maxBase;
var converter;
var bases;
var dur1 = 300;
var dur2 = 300;

//once the page is ready, generate the converter
window.addEvent('domready', function()
{
	createConverter();
	populateDefault();
});

//create the converter object
function createConverter()
{
	if(converter!=undefined)
		converter.destroy();
	converter = new BaseConverter($("container"),
	{
		controls: true,
		english: true,
		transition: true,
		transitionTime: 600,
		transitionType: Fx.Transitions.Expo.easeInOut,
		defaultBase: 10,
		precision: 100
	});
}

//various functions to quickly populate the tool with selected bases

function populateExtreme()
{
	converter.removeAll();
	createConverter.delay(dur1, this);
	
	bases = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36];
	current = 0;
	populateRecurse.delay(dur2, this);
}

function populateAll()
{
	converter.removeAll();
	createConverter.delay(dur1, this);
	
	bases = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36];
	current = 0;
	populateRecurse.delay(dur2, this);
}

function populateDefault()
{
	converter.removeAll();
	createConverter.delay(dur1, this);
	
	bases = [2,8,10,16];
	current = 0;
	populateRecurse.delay(dur2, this);
}

function populateEven()
{
	converter.removeAll();
	createConverter.delay(dur1, this);
	
	bases = [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36];
	current = 0;
	populateRecurse.delay(dur2, this);
}

function populateOdd()
{
	converter.removeAll();
	createConverter.delay(dur1, this);
	
	bases = [3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35];
	current = 0;
	populateRecurse.delay(dur2, this);
}

function populatePrime()
{
	converter.removeAll();
	createConverter.delay(dur1, this);
	
	bases = [2,3,5,7,11,13,17,19,23,29,31];
	current = 0;
	populateRecurse.delay(dur2, this);
}

function populatePowerOfTwo()
{
	converter.removeAll();
	createConverter.delay(dur1, this);
	
	bases = [2,4,8,16,32];
	current = 0;
	populateRecurse.delay(dur2, this);
}

//recursive function to delay adding boxes for population functions
function populateRecurse()
{
	converter.addBox(bases[current]);
	current++;
	if(current < bases.length)
		populateRecurse.delay(25, this);
}

