function estimativaInterfaceDev(valor) {
	if(valor == "Simples")
		return 0.5;
	if (valor == 'Media')
		return 1;
	if (valor == "Complexa")
		return 2;
	return 0;
}
function estimativaDadosDev(valor) {
	if(valor == "Simples")
		return 0.5;
	if (valor == 'Media')
		return 1;
	if (valor == "Complexa")
		return 2;
	return 0;
}
function estimativaRelatorioDev(valor) {
	if(valor == "Simples")
		return 0.5;
	if (valor == 'Media')
		return 3;
	if (valor == "Complexa")
		return 5;
	return 0;
}
function estimativaRegrasDev(valor) {
	if(valor == "Simples")
		return 2;
	if (valor == 'Media')
		return 3;
	if (valor == "Complexa")
		return 5;
	return 0;
}
function estimativaTabelasDev(valor) {
	if(valor == "Simples")
		return 0.5;
	if (valor == 'Media')
		return 1;
	if (valor == "Complexa")
		return 2;
	return 0;
}
function estimativaInterfaceTestes(valor) {
	if(valor == "Simples")
		return 0.25;
	if (valor == 'Media')
		return 0.5;
	if (valor == "Complexa")
		return 1;
	return 0;
}
function estimativaDadosTestes(valor) {
	if(valor == "Simples")
		return 0.25;
	if (valor == 'Media')
		return 5;
	if (valor == "Complexa")
		return 0.8;
	return 0;
}
function estimativaRelatorioTestes(valor) {
	if(valor == "Simples")
		return 0.25;
	if (valor == 'Media')
		return 0.5;
	if (valor == "Complexa")
		return 0.7;
	return 0;
}
function estimativaRegrasTestes(valor) {
	if(valor == "Simples")
		return 1;
	if (valor == 'Media')
		return 1.5;
	if (valor == "Complexa")
		return 2;
	return 0;
}
function estimativaTabelasTestes(valor) {
	if(valor == "Simples")
		return 0.25;
	if (valor == 'Media')
		return 0.5;
	if (valor == "Complexa")
		return 0.8;
	return 0;
}
function estimativaDev(row,hot) {
	var Esforco = (
		estimativaInterfaceDev(hot.getDataAtCell(row,1)) +
		estimativaDadosDev(hot.getDataAtCell(row,3)) +
		estimativaRelatorioDev(hot.getDataAtCell(row,5)) +
		estimativaRegrasDev(hot.getDataAtCell(row,7)) +
		estimativaTabelasDev(hot.getDataAtCell(row,9))
	);
	var EnvironmentDimension = 2;
	var Coeficiente = 2;
	return estimativa(row,hot,Esforco,EnvironmentDimension,Coeficiente);
}
function estimativaTestes(row,hot) {
	var Esforco = (
		estimativaInterfaceTestes(hot.getDataAtCell(row,2)) +
		estimativaDadosTestes(hot.getDataAtCell(row,4)) +
		estimativaRelatorioTestes(hot.getDataAtCell(row,6)) +
		estimativaRegrasTestes(hot.getDataAtCell(row,8)) +
		estimativaTabelasTestes(hot.getDataAtCell(row,10))
	);
	var EnvironmentDimension = 1.5;
	var Coeficiente = 1.5;
	return estimativa(row,hot,Esforco,EnvironmentDimension,Coeficiente);
}
function estimativa(row,hot,Esforco,EnvironmentDimension,Coeficiente) {

	var EsforcoAjustado = Esforco * Coeficiente;
	
	var EsforcoComEd = EsforcoAjustado * EnvironmentDimension / 12;

	var PontosAjustados = 0;
	if(EsforcoComEd % 1 > 0 && EsforcoComEd % 1 < 0.5) {
		PontosAjustados = EsforcoComEd - EsforcoComEd % 1;
	} else if(EsforcoComEd % 1 > 0.5) {
		PontosAjustados = EsforcoComEd + (1 - EsforcoComEd % 1);
	} else {
		PontosAjustados = EsforcoComEd;
	}

	var TempoMinutos = EsforcoComEd * EnvironmentDimension * 60;
	var horas = Math.floor( TempoMinutos / 60);          
    var minutos = Math.round(TempoMinutos % 60, 0);
    var TempoFormatado = horas.padDigit()+':'+minutos.padDigit();
	/*console.log({ 'Esforco':Esforco, 'EsforcoAjustado':EsforcoAjustado, 'EsforcoComEd':EsforcoComEd, 'PontosAjustados':PontosAjustados, 'TempoMinutos':TempoMinutos, 'TempoFormatado':TempoFormatado, 'horas': horas, 'minutos': minutos });*/

	return TempoFormatado;
}
Number.prototype.padDigit = function () {
    return (this < 10) ? '0' + this : this;
}
function calculaEstimativasTotal(instance, id, type) {
	var t1 = '00:00';
	var mins = 0;
	var hrs = 0;
	var rows = instance.countRows();
	var row = 0;
	while(row < rows) {
		var t2 = t1.split(':')
	    var t3 = (type == 'dev') ? estimativaDev(row, instance).split(':') : estimativaTestes(row, instance).split(':');
	    mins = Number(t2[1]) + Number(t3[1]);
	    minhrs = Math.floor(parseInt(mins / 60));
	    hrs = Number(t2[0]) + Number(t3[0]) + minhrs;
	    mins = mins % 60;
	    t1 = hrs.padDigit() + ':' + mins.padDigit();
	    row++;
	};
	$('#'+id).html(t1);
}
function EstimativasDesenvolvimentoRenderer(instance, td, row, col, prop, value, cellProperties) {
    td.innerHTML = estimativaDev(row, instance);
    td.style.color = 'red';
    calculaEstimativasTotal(instance, 'estimativa-desenvolvimento', 'dev');
    /*setDataAtRowProp(row, prop, 11, 'loadData');*/
}
function EstimativasTestesRenderer(instance, td, row, col, prop, value, cellProperties) {
	Handsontable.renderers.TextRenderer.apply(this, arguments);
    td.innerHTML = estimativaTestes(row, instance);
    td.style.color = 'red';
    calculaEstimativasTotal(instance, 'estimativa-testes', 'testes');
    /*setDataAtRowProp(row, 'EST_TEMPO_TESTES', 12, 'loadData');*/
}