function getProcs() {
	return document.calculator.procs.value;	
}

function getFrames() {
	return document.calculator.frames.value;
}

function getAvgFrameTimeInHours() {
	var timeUnit =  document.calculator.timeUnit.value;
	switch (timeUnit) {
	case "sec" :
		return document.calculator.time.value /	3600;
		break;
	case "min" :
		return document.calculator.time.value /	60;
		break;
	case "hour" :
		return document.calculator.time.value;
		break;
	}
}

function getRenderTime() {
	var tFrames = getFrames();
	var fTime = getAvgFrameTimeInHours();
	var procs = getProcs();
	return tFrames * fTime * procs;
}

function getSoftware() {
	return document.calculator.software.value;
}

function getSoftwareRatio() {
	var software = getSoftware();
	var ratio;
	if (software == "default") {
		ratio = 1;
	} else if (software == "mentalRay") {
		ratio = 1.25;
	} 
	return ratio;
}

function getPackage() {
	return document.calculator.package.value;	
}

function getPriority() {
	return document.calculator.priority.value;
}

function estimate (cPrice,pCredits,pPrice) {
	var remCredits;
	var estCost;	
	var priority = getPriority();
	var renderTime = getRenderTime();
	var swRatio = getSoftwareRatio();
	var reqCredits = renderTime * swRatio;
	if (priority == "low") {
		reqCredits = Math.ceil(reqCredits / 2);
	}
	
	if (reqCredits < 1) reqCredits = 1;
	if (reqCredits > pCredits) {
		remCredits = 0;
		estCost = (reqCredits - pCredits) * cPrice + pPrice;
		printEst (cPrice,estCost,renderTime,reqCredits,remCredits);
	}else {
		remCredits = pCredits - reqCredits;
		estCost = pPrice;
		printEst (cPrice,estCost,renderTime,reqCredits,remCredits);
	}
}

function printEst (cPrice,estCost,renderTime,reqCredits,remCredits) {	
	var minTime = Math.ceil(renderTime / 192);
	var maxTime = Math.ceil(renderTime / 72);
	var priority = getPriority();
	var m = (renderTime - parseInt(renderTime)) * 60;
	var s = (m - parseInt(m)) * 60;
	if (Math.round(s) >= 60) {
		s = 0;
		m = m + 1;
		if (Math.round(m) >= 60) {
			m = 0;
			renderTime = renderTime + 1;
		}
	}			
	document.getElementById('cpuTime').innerHTML = parseInt(renderTime) + "h " + parseInt(m) + "m " + parseInt(s) + "s";	

	// update cpu hourly rate
	document.getElementById('creditPrice').innerHTML = "$" + cPrice.toFixed(2);
	
	// update render time
	if (priority == "low") 
	{
		document.getElementById('rTime').innerHTML = "NA";
	}
	else if (minTime == maxTime) {
			document.getElementById('rTime').innerHTML = minTime + " hour";
	}
	else
	{
		document.getElementById('rTime').innerHTML = minTime + " to " + maxTime + " hours";
	}
	
	// update estimated cost
	document.getElementById('total').innerHTML = "$" + estCost.toFixed(2);
	
	// update credits required
	document.getElementById('creditsReq').innerHTML = reqCredits.toFixed(0);

	// update credits remaining
	document.getElementById('creditsLeft').innerHTML = remCredits.toFixed(0);
}


function updateCalculator() {		
	var package = getPackage();	

	switch (package) {
		case "pack1" :
			estimate(1.32,375,495.00);
			break;
		case "pack2" :
			estimate(1.24,800,995.00);
			break;
		case "pack3" :
			estimate(1.00,2495,2495.00);
			break;
		case "pack4" :
			estimate(0.75,6700,4995.00);
			break;
		case "pack5" :
			estimate(0.50,20000,9995.00);
			break;
		default :
			estimate(1.50,0,0.00);
			break;
	}    
}

function textBubbles(bubble) {
	switch(bubble) {
		case "frames" :
			;
		case "time" :
			;
		case "procs" :
			;
		case "software" :
			;
		case "package" :
			;
	}
}


