llc_group_name = new Array ();
llc_group_terms = new Array ();
llc_group_msum  = new Array ();
llc_group_mcred = new Array ();

llc_group = new Array ();
llc_term  = new Array ();
llc_avans = new Array ();
llc_aizd  = new Array ();
llc_rate  = new Array ();
llc_kontr = new Array ();

llc_str = new Array ();
llc_inarray = new Array ();

function select_val (item, iform, ielem) {
  document.forms[iform].elements[ielem].value = item.options[item.selectedIndex].value;
}

function normalise_number (val)
{
  val = Math.round (val * 100) / 100;
//alert (val);
  if  (val == parseInt (val)) { val += ".00"; }
  else if (parseInt(parseFloat (val) * 10) == (parseFloat (val) * 10)) { val += "0"; }
  return val;
}

function normalise_rate(sum)
{
    sum = sum * 1;
    if  (sum == parseInt (sum)) { sum += ".00"; }
    else if (parseInt(parseFloat (sum) * 10) == (parseFloat (sum) * 10)) { sum += "0"; }
	return sum;
}

function trimLeft(str) {
  return str.replace(/^\s+/, '');
}

function trimRight(str) {
  return str.replace(/\s+$/, '');
}

function trim(str) {
  return trimRight(trimLeft(str));
}

function trimSpaces(str) {
  return str.replace(/\s{2,}/g, ' ');
}

function IntToStr(i)
{
	i = Math.round(i*100)/100;
	s = new String(i);
	if (s.indexOf(".")==-1) s = s + ".00";
	else if (s.indexOf(".")==(s.length - 2)) s = s + "0";
	return s;
}

function roundEx(x, dgt)
{
	var p, n;
	p = Math.floor(Math.pow(10,dgt));
	(x>0) ? n = Math.floor(x) : n = Math.ceil(x);
	return(n + Math.round((x-n)*p)/p);
}

function llc_set_group () {
   	obj = document.forms[llc_form].elements['igroup_sel'];
    obj.options.length=0;

	for(i=0;i<llc_group_name.length;i++){
	  obj.options[i] = new Option(llc_group_name[i], i);
	}
}

function llc_set_term () {
   	obj = document.forms[llc_form].elements['iterm_sel'];
	old_val = obj.options[obj.selectedIndex].value;
    obj.options.length=0;
    tmp_group = document.forms[llc_form].elements['igroup'].value;

	arr_terms = llc_group_terms[tmp_group].split('|');
	for (i = 0; i < arr_terms.length; i++) {
		tmpflag = (old_val == arr_terms[i]);
		obj.options[i] = new Option(arr_terms[i], arr_terms[i], false, tmpflag);
	}
}

function llc_change_group (obj) {
	select_val(obj, llc_form, 'igroup');
	tmp_group = document.forms[llc_form].elements['igroup'].value;
    document.forms[llc_form].elements['igroup_msum'].value = llc_group_msum[tmp_group];
    document.forms[llc_form].elements['igroup_mcred'].value = llc_group_mcred[tmp_group];
    llc_set_term ();
	llc_change_term (document.forms[llc_form].elements['iterm_sel']);
}

function llc_change_term (obj) {
	select_val(obj, llc_form, 'iterm');
    tmp_group = document.forms[llc_form].elements['igroup'].value;
    tmp_term = document.forms[llc_form].elements['iterm'].value;

    for (i = 0; i <= llc_group.length; i++)
	{
	   if (llc_group[i] == tmp_group && llc_term[i] == tmp_term)
	   {
          document.forms[llc_form].elements['irate'].value  = normalise_rate (llc_rate[i]);
          document.forms[llc_form].elements['iminavans'].value = normalise_rate (llc_avans[i]);
          document.forms[llc_form].elements['iaizd'].value  = normalise_rate (llc_aizd[i]);
          document.forms[llc_form].elements['ikontr'].value = normalise_rate (llc_kontr[i]);
	   }
    }

    llc_empty();
}

function llc_empty() {
	document.getElementById("llc_firstpay").innerHTML = '0.00';
	document.getElementById("llc_everymonth").innerHTML = '0.00';
	if (llc_gpl_flag == 1) { document.getElementById("llc_gpl").innerHTML = '0.00'; }
}

function llc_init() {

	if (llc_gpl_flag == 1) { document.getElementById("llc_gpl_td").style.display = "block"; document.getElementById("llc_gpl_td2").style.display = "block"; document.getElementById("llc_gpl_td3").style.display = "block"; }
	llc_set_group ();
	llc_change_group (obj);
}

function llc_calc() {

	igroup = document.forms[llc_form].elements['igroup'].value;
	iterm = document.forms[llc_form].elements['iterm'].value;
	iprice = document.forms[llc_form].elements['iprice'].value;
	iavans = document.forms[llc_form].elements['iavans'].value;

	igroup_msum = document.forms[llc_form].elements['igroup_msum'].value;
	igroup_mcred = document.forms[llc_form].elements['igroup_mcred'].value;
	irate = document.forms[llc_form].elements['irate'].value;
	iminavans = document.forms[llc_form].elements['iminavans'].value;
	iaizd = document.forms[llc_form].elements['iaizd'].value;
	ikontr = document.forms[llc_form].elements['ikontr'].value;

    llc_empty();

	/* <-- proverki */
	tmp_avans = (iminavans * 1.0) + (iaizd * 1.0);
	if ((iprice * 1.0) < 35) {
		window.alert(llc_str[0]);
	} else if ((iprice * 1.0) > (igroup_msum * 1.0)) {
		window.alert(llc_str[1] + igroup_msum + ' Ls');
	} else if (iprice - (iprice * iavans / 100) > igroup_mcred) {
		window.alert(llc_str[2] + IntToStr((iprice - igroup_mcred)/iprice*100) + ' %');
	} else if ((iavans / 100) < (tmp_avans / 100)) {		window.alert(llc_str[2] + IntToStr(tmp_avans) + ' %');
	} else {
	/* --> proverki */

	    avans_ls = iprice * ((iavans - iaizd) / 100);
	    aizd_ls_all = iprice * (iaizd / 100);
	    kred_sum_lig = iprice - avans_ls;
	    kred_sum_real = iprice - avans_ls - aizd_ls_all;
	    month_rate = (irate / 100) / 12;
	    kontr_ls = iprice * (ikontr / 100);

		out_firstpay = iprice * (iavans / 100);
	    out_everymonth = ( kred_sum_lig * month_rate*Math.pow(1+month_rate, iterm)/(Math.pow(1+month_rate, iterm)-1) ) + kontr_ls;

		tot_sum = 0; max_prc = 1; min_prc = 0; cur_prc = 0.5; delta = 0;
		i = 0;
		while ((kred_sum_real != tot_sum) && (i < 1000)) {
			i++;
			tot_sum = 0;
			j = 0;
			for (j = 1; j <= iterm; j++) {
				tot_sum = tot_sum + (out_everymonth / Math.pow(1+cur_prc, j));
			}

	        if (kred_sum_real < tot_sum) {
	        	min_prc = cur_prc;
	        	if (max_prc != 0) {
					delta = (max_prc - min_prc) / 2;
				} else {
					delta = cur_prc / 2;
	        	}
	        } else if (kred_sum_real > tot_sum) {
				max_prc = cur_prc;
				delta = - (max_prc - min_prc) / 2;
	        }

			cur_prc = cur_prc + delta;
		}

	    if (iprice <= 0.0) {
	    	out_gpl = 0;
	    } else {
	    	out_gpl = Math.pow(1 + cur_prc, 12) - 1;
	    }

		document.getElementById("llc_firstpay").innerHTML = IntToStr(out_firstpay);
		document.getElementById("llc_everymonth").innerHTML = IntToStr(out_everymonth);
		if (llc_gpl_flag == 1) { document.getElementById("llc_gpl").innerHTML = IntToStr(out_gpl * 100); }
	}

    return true;
}

