var _level1Max = 10;
var _level2Max = 10;
var _level3Max = 10;
var _level4Max = 5;
var _level5Max = 5;
var _level6Max = 5;
var _level7Max = 5;
var _level8Max = 5;
var _avgLicensePerCustomer = 50;
var infinityBonus = 0;
function calculate()
{
	if (validateMaximums ())
	{
		var avgSubscriptionCost = 50;

		var level1CommRate = .2;
		var level2CommRate = .04;
		var level3CommRate = .03;
		var level4CommRate = .02;
		var level5CommRate = .02;
		var level6CommRate = .02;
		var level7CommRate = .02;
		var level8CommRate = .04;
		var _infinityPercent = .01;
		var _infinityTotal = 0;
		var _totalPaidInfinity = 0;
		var _totalSubscriptions = 0;
		

		var calc = document.calculator;
		var subPerIsa = calc.sub_per_isa.value;
		var sum = 0;
		var totalActiveISA = 0;
		var totalActiveSubs = 0;
		var subsPerISA = eval(parseInt (subPerIsa));
		
		sum += subPerIsa * avgSubscriptionCost * level1CommRate;
		if (subPerIsa.length > 0)
		{
			if (calc.level1.value.length > 0 && calc.level1.value > 0)
			{
				//var totalActiveLevel1 = eval(parseInt (subPerIsa) + parseInt(calc.level1.value));
				var totalISAsLevel1 = parseInt(calc.level1.value);
				var totalISAsLevel1Commission = totalISAsLevel1 * avgSubscriptionCost * level2CommRate;
				var totalRetailSubsLevel1 = totalISAsLevel1 * subsPerISA;
				var payoutForRetailSubsLevel1 = totalRetailSubsLevel1 * avgSubscriptionCost * level2CommRate;
				var totalPayoutLevel1 = totalISAsLevel1Commission + payoutForRetailSubsLevel1;
				
				changeText("level1IsaPay", formatCurrency(totalPayoutLevel1));
				sum += totalPayoutLevel1;
				totalActiveISA += totalISAsLevel1;
				totalActiveSubs += totalRetailSubsLevel1;
				if (calc.level2.value.length > 0 && calc.level2.value > 0)
				{
					var totalISAsLevel2 = totalISAsLevel1 * calc.level2.value;
					var totalISAsLevel2Commission = totalISAsLevel2 * avgSubscriptionCost * level3CommRate;
					var totalRetailSubsLevel2 = totalISAsLevel2 * subsPerISA;
					//_totalSubscriptions += totalActiveLevel2;
					var payoutForRetailSubsLevel2 = totalRetailSubsLevel2 * avgSubscriptionCost *level3CommRate;
					var totalPayoutLevel2 = totalISAsLevel2Commission + payoutForRetailSubsLevel2;
					changeText("level2IsaPay", formatCurrency(totalPayoutLevel2));
					sum += totalPayoutLevel2;
					totalActiveISA += totalISAsLevel2;
					totalActiveSubs += totalRetailSubsLevel2;
					if (calc.level3.value.length > 0 && calc.level3.value > 0)
					{
						var totalISAsLevel3 = totalISAsLevel2 * calc.level3.value;
						var totalISAsLevel3Commission = totalISAsLevel3 * avgSubscriptionCost * level4CommRate;
						var totalRetailSubsLevel3 = totalISAsLevel3 * subsPerISA;
						//_totalSubscriptions += totalActiveLevel3;
						var payoutForRetailSubsLevel3 = totalRetailSubsLevel3 * avgSubscriptionCost *level4CommRate;
						var totalPayoutLevel3 = totalISAsLevel3Commission + payoutForRetailSubsLevel3;
						changeText("level3IsaPay", formatCurrency(totalPayoutLevel3));
						sum += totalPayoutLevel3;
						totalActiveISA += totalISAsLevel3;
						totalActiveSubs += totalRetailSubsLevel3;
						if (calc.level4.value.length > 0 && calc.level4.value > 0)
						{
							var totalISAsLevel4 = totalISAsLevel3 * calc.level4.value;
							var totalISAsLevel4Commission = totalISAsLevel4 * avgSubscriptionCost * level5CommRate;
							var totalRetailSubsLevel4 = totalISAsLevel4 * subsPerISA;
							//_totalSubscriptions += totalActiveLevel4;
							var payoutForRetailSubsLevel4 = totalRetailSubsLevel4 * avgSubscriptionCost *level5CommRate;
							var totalPayoutLevel4 = totalISAsLevel4Commission + payoutForRetailSubsLevel4;
							changeText("level4IsaPay", formatCurrency(totalPayoutLevel4));
							sum += totalPayoutLevel4;
							totalActiveISA += totalISAsLevel4;
							totalActiveSubs += totalRetailSubsLevel4;
							if (calc.level5.value.length > 0 && calc.level5.value > 0)
							{
								var totalISAsLevel5 = totalISAsLevel4 * calc.level5.value;
								var totalISAsLevel5Commission = totalISAsLevel5 * avgSubscriptionCost * level6CommRate;
								var totalRetailSubsLevel5 = totalISAsLevel5 * subsPerISA;
								//_totalSubscriptions += totalActiveLevel5;
								var payoutForRetailSubsLevel5 = totalRetailSubsLevel5 * avgSubscriptionCost *level6CommRate;
								var totalPayoutLevel5 = totalISAsLevel5Commission + payoutForRetailSubsLevel5;
								changeText("level5IsaPay", formatCurrency(totalPayoutLevel5));
								sum += totalPayoutLevel5;
								totalActiveISA += totalISAsLevel5;								
								totalActiveSubs += totalRetailSubsLevel5;
								if (calc.level6.value.length > 0 && calc.level6.value > 0)
								{
									var totalISAsLevel6 = totalISAsLevel5 * calc.level6.value;
									var totalISAsLevel6Commission = totalISAsLevel6 * avgSubscriptionCost * level7CommRate;
									var totalRetailSubsLevel6 = totalISAsLevel6 * subsPerISA;
									//_totalSubscriptions += totalActiveLevel6;
									var payoutForRetailSubsLevel6 = totalRetailSubsLevel6 * avgSubscriptionCost *level7CommRate;
									var totalPayoutLevel6 = totalISAsLevel6Commission + payoutForRetailSubsLevel6;
									changeText("level6IsaPay", formatCurrency(totalPayoutLevel6));
									sum += totalPayoutLevel6;
									totalActiveISA += totalISAsLevel6;
									totalActiveSubs += totalRetailSubsLevel6;
									if (calc.level7.value.length > 0 && calc.level7.value > 0)
									{
										var totalISAsLevel7 = totalISAsLevel6 * calc.level7.value;
										var totalISAsLevel7Commission = totalISAsLevel7 * avgSubscriptionCost * level8CommRate;
										var totalRetailSubsLevel7 = totalISAsLevel7 * subsPerISA;
										//_totalSubscriptions += totalActiveLevel7;
										var payoutForRetailSubsLevel7 = totalRetailSubsLevel7 * avgSubscriptionCost *level8CommRate;
										var totalPayoutLevel7 = totalISAsLevel7Commission + payoutForRetailSubsLevel7;
										changeText("level7IsaPay", formatCurrency(totalPayoutLevel7));
										sum += totalPayoutLevel7;
										totalActiveISA += totalISAsLevel7;
										totalActiveSubs += totalRetailSubsLevel7;
										if (calc.infinity_levels.value.length > 0 && calc.infinity_levels.value > 0)
										{
											var _infinityLevels =  parseInt (calc.infinity_levels.value);
											var currentVal = totalISAsLevel7;
											for (var i=0; i < _infinityLevels; i++)
											{
//bhs												totalActiveISA = totalActiveISA * subPerIsa;
//bhs												totalActiveSubs += totalActiveISA;
												totalActiveISA = totalActiveISA * calc.level7.value;
												totalActiveSubs += totalActiveISA * subPerIsa;
												var infinityCompensation = (totalActiveISA  + totalActiveSubs) * avgSubscriptionCost * _infinityPercent;
												//alert (infinityCompensation);
												infinityBonus += infinityCompensation;
												//alert ('Total Active ISAs = ' + totalActiveISA);
												//alert ('Total Active Subs = ' + totalActiveSubs);
												//var _totISAsPerLevel = subPerIsa * currentVal;
												//var _totActiveSub = (currentVal * subPerIsa) + _totISAsPerLevel;
												//_infinityTotal += _totActiveSub;
												//currentVal = _totISAsPerLevel;
												
											}
											//_infinityTotal += totalActive;
											//_totalPaidInfinity = _infinityTotal * _infinityPercent * _avgLicensePerCustomer;
										}
										
									}
									else
										clearAllPastPoint(7);
								}
								else
									clearAllPastPoint(6);								
							}
							else
								clearAllPastPoint(5);								
						}
						else
							clearAllPastPoint(4);

					}
					else
						clearAllPastPoint(3);
					
				}
				else

					clearAllPastPoint(2);					
			}
			else
			{
				clearAllPastPoint(1);
				sum = avgSubscriptionCost * level1CommRate * subPerIsa;
			}
		}
		else
		{
			alert ("Please enter the Number of subscriptions per ISA");
		}
		//alert ('Total Active ISAs = ' + totalActiveISA);
		//alert ('Total Active Subs = ' + totalActiveSubs);
		changeText("total", '<b>' + formatCurrency(sum) + '</b>');
		if (totalActiveSubs >= 2250)
			changeText("infinity_total", '<b>' + formatCurrency(infinityBonus) + '</b>');
		else
		{
			changeText("infinity_total", '<b>n/a</b>');
			_totalPaidInfinity = 0;
		}
		changeText("grand_total", '<b>' + formatCurrency(sum + infinityBonus) + '</b>');
		infinityBonus = 0;
		//changeText("grand_total", '<b>' + formatCurrency(sum) + '</b>');
		
	}
	//alert (sum);
	return false;
}

function changeText(_name, _value)
{
	//	var x = document.getElementById(_name);
	if(document.all && !document.getElementById)
	{
		document.all._name.innerHTML = _value;
		//document.getElementById(_name).innerHTML = _value;
	}
	else if (document.getElementById)
	{
		//alert (_name);
		document.getElementById(_name).innerHTML = _value;
	}
	//x.innerHTML = _value;
}

function validateMaximums ()
{
	return true;
	var i = 1;
	var valid = true;
	for (i=1; i < 9; i++)
	{
		var maxVal = eval ('_level' + i + 'Max');
		var val = eval ('document.calculator.level' + i + '.value');
		if (val > maxVal) {
			valid = false;
			alert ('The maximum for level '+ i + ' is ' + maxVal);
			eval ('document.calculator.level' + i + '.value = \'\'');
			eval ('document.calculator.level' + i + '.focus()');
		}
	}
	return valid;
}


function isnum(objEvent)
{
  var iKeyCode = objEvent.keyCode;
  if(!iKeyCode)iKeyCode = objEvent.which
  if(iKeyCode>=48 && iKeyCode<=57)return true;
  acckeys = [8,9,46,37,39]
  for (var i = 0; i < acckeys.length; i++)
     if (iKeyCode==acckeys[i])return true;
  return false;
}

function formatCurrency (num)
{
//	num = Math.round (num);
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + '.' + cents);
}

function clearAllPastPoint (num)
{
	for (i=num; i < 8; i++)
	{
		//443-1063
		//changeText ('level' + i + 'Isa', '0');
		changeText ('level' + i + 'IsaPay', '0.00');
		eval ('document.calculator.level' + i + '.value=\'\'');
		
	}
}