// definicion de variables

var minuto_conversor = 40;		// costo del minuto todo destino para conversores
var minuto_lyric_caro = 18;		// costo del minuto traficado por lyric, con total mayor a 4000 minutos
var minuto_lyric_medio = 15;		// costo del minuto traficado por lyric, con total mayor a 8.000 minutos
var minuto_lyric_barato = 12;    // costo del minito traficado por lyric, con total mayor a 12.000 minutos

var minutos_cliente = 0;		// minutos mensuales que habla el cliente
var cuenta_cliente = 0;         // total de la cuenta que paga el cliente
var costo_minuto_cliente = 0    // costo por minuto que paga el cliente.

var temp1 = 0;
var temp2 = 0;

var myStr=new String('');
var minuto_lyric = 12;
var ahorro = 1;
var plata_ahorrada = 1;
var max_minutes_lyric = 15000;	// maxima cantidad de minutos traficables por un lyric.
var qty = 0;
var minutes_aux = 0;


function isThousands(position) {
	if (Math.floor(position/3)*3==position) return true;
	return false;
	}

function formatMoney (theNumber,theCurrency,theThousands,theDecimal) {
	var theDecimalDigits = 	Math.round((theNumber*100)-(Math.floor(theNumber)*100));
	theDecimalDigits= ""+ (theDecimalDigits + "0").substring(0,0);
	theNumber = ""+Math.floor(theNumber);
	var theOutput = theCurrency;
	for (x=0; x<theNumber.length; x++) {
		theOutput += theNumber.substring(x,x+1);
		if (isThousands(theNumber.length-x-1) && (theNumber.length-x-1 !=0)) {
			theOutput += theThousands;
		}
	}
	theOutput += theDecimal + theDecimalDigits;
	return theOutput;
}




//*** helper functions ***
//given: Erlongs rho, and Capacity / Num of Lines
function isEmpty(textfield)
{ 
	if (textfield.value=="") {return true}
	else {return false}
}

//*** validar validar prob ***
function validar_campo(textProb)
{
	if ((parseFloat(textProb.value) != textProb.value) ) {
		textProb.value = "";
		return false;
	}
	return true;
}


function costoMinutoLyric(minutes)
{
var aux = 0;

	
	qty = 1 + Math.floor(minutes / (max_minutes_lyric+1));
	minutes_aux = minutes / qty;
	if(minutes_aux < 6000) {
		minuto_lyric = minuto_lyric_caro;
		return true;
		}
	else if(minutes_aux < 10000) {
		minuto_lyric = minuto_lyric_medio;
		return true;
	}
	else{
		minuto_lyric = minuto_lyric_barato;
		return true;
	}
	return false;
}


function clearFields()
{
	with (document.calculador_ahorro){
		TXT_minutos.value = "";
		TXT_cuenta_mes.value = "";
		CHK_conversor.checked = false;
		TXT_ahorro_calculado.value = "";
	}
}

// *** calculate functions for the form ***
// given: arrival rate, service rate, probability of turn away.
// calculate capacity / number of lines      (for table 3)
function calcAhorro()
{
	
	with (document.calculador_ahorro) {
			
		// chequeamos que se haya llenado los campos de minutos y plata gastada
		if (isEmpty(TXT_minutos) && isEmpty(TXT_cuenta_mes)) {
			alert('Debe completar A LO MENOS alguno de los campos de texto requeridos.');
			return false;
		}
		// comprobamos los rangos de los equipos sean v‡lidos
		if(validar_campo(TXT_minutos) && validar_campo(TXT_cuenta_mes)  ) {
			//alert('minutos y cuenta validada');
			minutos_cliente = TXT_minutos.value;
			cuenta_cliente = TXT_cuenta_mes.value;
			// como tenemos los minutos y la cuenta del cliente, podemos estimar directamente el
			// costo promedio por minuto que esta pagandp
			costo_minuto_cliente = cuenta_cliente / minutos_cliente;
			// ahora, segun el nivel de trafico, se asigna un costo estimado del valor por minuto
			// que el cliente estaria pagando con lyric
		} // si se valida la cuenta y los minutos estan vacios
		else if(validar_campo(TXT_cuenta_mes)) {
			if(isEmpty(TXT_minutos)) {
				//solo contamos con la cuenta mensual y el flag de conversores,
				cuenta_cliente = TXT_cuenta_mes.value;
				if(cuenta_cliente >=150000) {
					costo_minuto_cliente = 40 * (2 - CHK_conversor.checked);
					minutos_cliente = cuenta_cliente / costo_minuto_cliente;
				} else {
					alert('La cuenta mensual debe ser superior a 150.000 pesos');
					TXT_cuenta_mes.value="";
					TXT_minutos.value="";
					return false;
				}
			}
			else {
				alert('Verifique que los numeros ingresados esten correctos. No use separadores de miles.')
				TXT_cuenta_mes.value="";
				TXT_minutos.value="";
				return false;
			}
		} //si se validan los minutos, y la plata est‡ vacia...
		else if(validar_campo(TXT_minutos)) {
			if(isEmpty(TXT_cuenta_mes)) {
				// esta vez solo contamos con los minutos...
				minutos_cliente = TXT_minutos.value;
				if(minutos_cliente >= 3000) {
					costo_minuto_cliente = 40 * (2 - CHK_conversor.checked);
					cuenta_cliente = minutos_cliente * costo_minuto_cliente;		
				} else {
					alert('La cuenta mensual debe ser superior a 3.000 minutos');
					TXT_cuenta_mes.value="";
					TXT_minutos.value="";
					return false;
				}
			}
			else {
				alert('Verifique que los numeros ingresados esten correctos. No use separadores de miles.')
				TXT_cuenta_mes.value="";
				TXT_minutos.value="";
				return false;
			}
		}
		else {
			alert('Verifique que los numeros ingresados esten correctos. No use separadores de miles.')
			TXT_cuenta_mes.value="";
			TXT_minutos.value="";
			return false;
		}
		// segun el nivel de minutaje del cliente, estimamos el costo del minuto promedio del lyric
		costoMinutoLyric(minutos_cliente);
		// el nivel de ahorro se calcula en base al costo por minuto
		ahorro = (1 - ((minuto_lyric * minutos_cliente) / cuenta_cliente))*100; // en porcentaje
		plata_ahorrada = formatMoney(minutos_cliente * (costo_minuto_cliente - minuto_lyric),'$','.',' '); // en plata
		// se fija un decimal en la aproximacion y se devuelve al formulario de la pagina web
		myStr = plata_ahorrada + ' (' + ahorro.toFixed(0)  + ' %)'; //+ ' cuenta cliente: ' + cuenta_cliente + ' minuto cliente: ' + minutos_cliente + ' CxM: ' + costo_minuto_cliente;
		TXT_ahorro_calculado.value = myStr;
		return true;
		
	}
}

