var cursul_euro = 3.7364;
var __vehicle_age = [0, 1, 3, 6, 9, 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 168, 180, 9999999];
var __vehicle_cmc = [0, 3, 5, 8, 10, 13, 21, 28, 33, 38, 43, 49, 55, 61, 66, 73, 79, 84, 89, 93, 95];

var __reducere	  = 0;
var __old_value   = 0;
var __cmc 		  = [	[0, 1401], [1400, 1601], [1600, 2001], [2000, 2501], [2500, 3001], [3000, 100000]	];
var __europercmc  = [
						[ 21 , 33 , 42  , 60  , 84  , 96 ],
						[ 7  , 11  , 14   , 20  , 28  , 32 ],
						[ 3.4  , 5.2  , 6.6 , 10   , 14   , 16  ],
						[ 1.3 , 2    , 2.6 , 3.8 , 5 , 6  ],
						[ 0.4  , 0.6  , 0.8 , 1.2 , 1.6 , 2  ]
					];

var CO2					= [ [0, 121], [120, 151], [150, 181], [180, 211], [210, 241], [240, 271], [270, 10000] ]
var pretPerCO2			= [ 0		, 1				, 2		, 4			, 8			, 12		, 16 ];

function calculate_taxe()
{	
	var firstdate = new Date();
	var today = new Date();
	firstdate.setFullYear(document.getElementById('firstyear').value, parseInt(document.getElementById('firstmonth').value)-1,1);

	oldness = monthsBetween(today,firstdate);
	//alert(oldness);
	tip_euros = parseInt(document.getElementById('norma').value)

	emisieCO2 = document.getElementById("co2").value;
	if ((tip_euros==3) && (tip_euros==4))
	{
		if (!(IsNumeric(emisieCO2)))
		{
			alert("Valoarea trebuie sa fie de tip numeric");
			return false;
		}
	}
	//calculate deduction rate
	if (oldness == 0)
	{
		document.getElementById("cota_reducere").value = 0;
	}
	else
	{
	for (i=0;i<__vehicle_age.length;i++)
			{
			n = i+1;
				
				if ((oldness > __vehicle_age[i]) && (oldness<= __vehicle_age[n]))
				{
					__reducere = __vehicle_cmc[i+1];
					document.getElementById("cota_reducere").value = __reducere;
					break;
				}
			}
	}
			
	cmc_nr		 = document.getElementById('capacitate').value;
	
	if (cmc_nr!="")
	{
		if (IsNumeric(cmc_nr))
		{
			__cmc_res = 0
			for (i=0;i<__cmc.length;i++)
			{
				min_e_cmc = __cmc[i][0];
				max_e_cmc = __cmc[i][1];
				if ((cmc_nr > min_e_cmc) && (cmc_nr < max_e_cmc))
					__cmc_res = i
			}
			pret_pe_cmc = __europercmc[tip_euros][__cmc_res]
			document.getElementById("cost_pe_cmc").value = pret_pe_cmc
			
			if ((tip_euros!=3) && (tip_euros!=4))
			{
				__pret_in_euro = (cmc_nr * pret_pe_cmc * (100-__reducere))/100;
				document.getElementById("nivco").value = "0";
			}
			else
			{	
				myVal = 0;
				for (i=0;i<7;i++)
				{
					if ((emisieCO2 > CO2[i][0]) && (emisieCO2 < CO2[i][1]))
						myVal = pretPerCO2[i];
				}
				document.getElementById("nivco").value = myVal;
				val1 = emisieCO2 * myVal * (30/100);
				val2 = cmc_nr * pret_pe_cmc * (70/100);
				val3 = (100-__reducere)/100;
				__pret_in_euro = (val1 + val2) * val3;
			}
			if (document.getElementById("FP").checked)
			{
				__pret_in_euro = __pret_in_euro - (__pret_in_euro * 0.25);
			}
			
			document.getElementById("preteuro").value = (__pret_in_euro).toFixed(2)
			document.getElementById("pretron").value = (__pret_in_euro * cursul_euro).toFixed(2)
	
			__old_value = cmc_nr
		}
		else
			document.getElementById('capacitate').value = __old_value
	}
}



// cmc = capacitate cilindrica





function IsNumeric(strString)
{
	var strValidChars = "0123456789";
	var strChar;
	var blnResult = true;

	if (strString.length == 0)
		return false;

	for (i = 0; i < strString.length && blnResult == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
			blnResult = false;
	}
	return blnResult;
}

function monthsBetween(thisDate, thatDate) 
{
  if (thisDate> thatDate) {
     return monthsBetween(thatDate, thisDate);
   }
  var number = 0;
  if (thatDate.getFullYear()> thisDate.getFullYear()) {
     number = number + (thatDate.getFullYear() - thisDate.getFullYear() - 1) * 12;

      } else {

      return thatDate.getMonth() - thisDate.getMonth();

      }
   if (thatDate.getMonth()> thisDate.getMonth()) {
      number = number + 12 + thatDate.getMonth() - thisDate.getMonth();
    } else {
      number = number + (12 - thisDate.getMonth()) + thatDate.getMonth();
      }
    return number;
    }