var perioadaMax = 0;

function obiect(id)
{
	if (document.getElementById(id)) return document.getElementById(id);
}

function show(objectName)
{
	if (document.getElementById(objectName)) document.getElementById(objectName).style.display='block';
}

function hide(objectName)
{
	if (document.getElementById(objectName)) document.getElementById(objectName).style.display='none';
}

function showHide(divID) 
{
	document.getElementById(divID).style.display == 'none' ? document.getElementById(divID).style.display = 'block' : document.getElementById(divID).style.display = 'none';
}

function roundDecimals(original_number, decimals) 
{
	var result1 = original_number * Math.pow(10, decimals)
	var result2 = Math.round(result1)
	var result3 = result2 / Math.pow(10, decimals)
	return (result3)
}

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 calculeaza()
{
	categorie = obiect('categorie').selectedIndex;
	dobanda = obiect('dobanda').value;
	valoarea = obiect('valoarea').value;
	perioada = obiect('perioada').value;
	avans = obiect('avans').value;
	reziduala = obiect('reziduala').value;
	if (categorie == 0)
	{
		hide('rezultat');
		alert('Trebuie selectata categoria pentru calcul!');
	}
	else
	{
		err = '';
		if (dobanda == '') err += ' - dobanda;\n';
		else if (!IsNumeric(dobanda) || dobanda <= 0 || dobanda >= 100) err += ' - dobanda trebuie sa contina doar cifre (numar real pozitiv mai mic ca 100);\n';
		if (perioada == '') err += ' - perioada;\n';
		else if (!IsNumeric(perioada) || perioada < 12 || perioada > perioadaMax) err += ' - perioada trebuie sa fie intre 12 si '+perioadaMax+' luni;\n';
		if (valoarea == '') err += ' - valoarea;\n';
		else if (!IsNumeric(valoarea) || valoarea < 0) err += ' - valoarea trebuie sa contina doar cifre (numar natural);\n';
		if (perioada == '') err += ' - perioada;\n';
		if (!IsNumeric(avans)) err += ' - avansul trebuie sa contina numai cifre (numar natural);\n';
		else if (avans < 10 || avans > 50) err += ' - avansul trebuie sa fie intre 10% si 50%;\n';
		if (!IsNumeric(reziduala)) err += ' - valoarea reziduala trebuie sa contina numai cifre (numar natural);\n';
		else if (reziduala < 0 || reziduala > 20) err += ' - valoarea reziduala nu poate depasi 20% (numar natural);\n';
		if (err == '')
		{
			vAvans = (avans*valoarea)/100;
			vReziduala = (reziduala*valoarea)/100;
			vFinala = valoarea-vAvans-vReziduala;
			rata = (vFinala*((dobanda/100)/12))/(1-Math.pow(1+((dobanda/100)/12),-perioada));
			obiect('rezultat').innerHTML = 'Rata lunara '+roundDecimals(rata,2)+' EURO';
		}
		else alert('Va rugam sa completati urmatoarele campuri:\n\n'+err);
	}
}

function dv(optiune, caz)
{
	if (caz == 'incarcata') selectata = obiect('categorie')[optiune].value;
	else selectata = optiune.value;
	switch (selectata)
	{
		case "0":
			if (obiect('banner')) show('banner');
			hide('date');
			obiect('dobanda').value = '';
			obiect('perioada').value = '';
//			resetSelect('perioada');
			break;
		default:
//			resetSelect('perioada');
			detalii = selectata.split("|");
			obiect('dobanda').value = detalii[2];
			obiect('perioada').value = 12;
			perioadaMax = detalii[1];
//			i = 12;
//			while (i<=detalii[1])
//			{
//				insertOption('perioada', i, i);
//				i += 12;
//			}
			if (obiect('banner')) hide('banner');
			show('date');
			break;
	}
}

function preSelect(get)
{
	if (get != '' && IsNumeric(get) && obiect('categorie')[get])
	{
		selectOption('categorie', get);
		dv(get, 'incarcata');
	}
	else hide('date');
}

function insertOption(sId, txt, val)
{
	select = obiect(sId);
	var opt = document.createElement('OPTION');
	opt.text = txt;
	opt.value = val;
	try 
	{
		select.add(opt, null);
	}
  	catch(ex) 
  	{
    	select.add(opt);
	}
}

function resetSelect(sId)
{
	select = obiect(sId);
	for (i=select.length-1;i>=0;i--) 
	{
		select.remove(i);
	}
}

function selectOption(sId, index)
{
	select = obiect(sId);
	select[index].selected = 1;
}
