// изменение направления обмена
function eValChange(form, direct) {
  var esrcID = eval(form.esrcID.value);
  var edstID = eval(form.edstID.value);
  // вычисляем суммы для обмена
  if( direct == 'src' ) { eAmountChange (form, 'dst'); }
  if( direct == 'dst' ) { eAmountChange (form, 'src'); }
}

// расчет сумм на обмен
function eAmountChange(form, dir) {
  var idx = form.esrcID.value + "777" + form.edstID.value;
  form.id.value = idx;
  if(ekurs[idx] == null) {
    document.getElementById("eKurs").innerHTML = "<font style='font-size: 11px;color:red;'><b> " + emNoDirection + " </b></font>";
    form.confirm_btn.disabled = true;
    return;
  }
  else {
    form.confirm_btn.disabled = false;
  }
  src_kurs = ekurs[idx]['src'];
  dst_kurs = ekurs[idx]['dst'];
  admcomis = ekurs[idx]['comis'];
  min_admcomis = ekurs[idx]['mincomis'];
  max_admcomis = ekurs[idx]['maxcomis'];
  fix_admcomis = ekurs[idx]['fixcomis'];
  limit = ekurs[idx]['limit'];
  typ = ekurs[idx]['typ'];
  cam = ekurs[idx]['cam'];
  var src_amount = form.eSRC_AMOUNT.value;
  var dst_amount = form.eDST_AMOUNT.value;
  var ssys_comis = esysComis[form.esrcID.value];
  var smin_comm = eminComis[form.esrcID.value];
  var smax_comm = emaxComis[form.esrcID.value];
  var sfix_comis = efixComis[form.esrcID.value];
  var sys_comis = esysComis[form.edstID.value];
  var min_comm = eminComis[form.edstID.value];
  var max_comm = emaxComis[form.edstID.value];
  var fix_comm = efixComis[form.edstID.value];

  if(typ == '2') {
	document.getElementById("ecour").style.display = ""; 
  	document.getElementById("eCoursm").innerHTML = "<b>" + cam + "</b> ";
  }else{
	document.getElementById("ecour").style.display = "none"; 
  }

  if(dir == 'src') {
    amount = src_amount;
    dst_amount = MyCeil(src_amount * dst_kurs / src_kurs, 10);

for ( var i in incomises )
{
    if(incomises[i]['aid']==aid) { 
        if(dst_amount > incomises[i]['famount'] && incomises[i]['tamount'] > dst_amount || incomises[i]['tamount'] == dst_amount) {
            admcomis = incomises[i]['comis'];
        }
    }
} 

    if(fix_admcomis!='0.00') {
    adm_comis = fix_admcomis;
    }else{
    adm_comis = MyCeil(Math.ceil(Math.min(Math.max(dst_amount*(admcomis / 100)*100-0.0000001, (min_admcomis)*100-0.0000001), (max_admcomis)*100-0.0000001))/100, 10);
    }
    if(eDiscount != '0') {
    disc_amount = MyCeil(Math.ceil(adm_comis*(eDiscount / 100)*100-0.0000001)/100, 10);
    document.getElementById("eDiscnt").innerHTML = "<b>" + MyCeil(disc_amount, 2) + "</b> (" + eDiscount + "%) " + eValName[form.edstID.value];
    adm_comis =  MyCeil(adm_comis - disc_amount, 10);
    }
    document.getElementById("eoComis").innerHTML = "<b>" + MyCeil(adm_comis, 2) + "</b> (" + admcomis + "%) " + eValName[form.edstID.value];
    dst_amount = MyCeil(dst_amount - adm_comis, 10);
    if(fix_comm!='0.00') {
    document.getElementById("eComis").innerHTML = "<b>" + fix_comm + "</b> (" + sys_comis + "%) " + eValName[form.edstID.value];
    dst_amount = MyCeil(dst_amount - fix_comm, 2);
    }else{
    document.getElementById("eComis").innerHTML = "<b>" + Math.ceil(Math.min(Math.max(dst_amount*(sys_comis / 100)*100-0.0000001, (min_comm)*100-0.0000001), (max_comm)*100-0.0000001))/100 + "</b> (" + sys_comis + "%) " + eValName[form.edstID.value];
    dst_amount = MyCeil(dst_amount - (Math.ceil(Math.min(Math.max(dst_amount*(sys_comis / 100)*100-0.0000001, (min_comm)*100-0.0000001), (max_comm)*100-0.0000001))/100), 2);
    }
    form.eDST_AMOUNT.value = dst_amount;
  }
  else {
    amount = dst_amount;
    if(fix_comm!='0.00') {
       src_amount = MyCeil(dst_amount-(-fix_comm), 10);
       document.getElementById("eComis").innerHTML = "<b>" + fix_comm + "</b> (" + sys_comis + "%) " + eValName[form.edstID.value];
    }else{
       src_amount = MyCeil(dst_amount-(-Math.min(Math.max(dst_amount*100/(100-sys_comis)-dst_amount, min_comm), max_comm)), 10);
       document.getElementById("eComis").innerHTML = "<b>" + MyCeil(Math.min(Math.max(dst_amount*100/(100-sys_comis)-dst_amount, min_comm), max_comm), 2) + "</b> (" + sys_comis + "%) " + eValName[form.edstID.value];
    }

for ( var i in incomises )
{
    if(incomises[i]['aid']==aid) { 
        if(src_amount > incomises[i]['famount'] && incomises[i]['tamount'] > src_amount || incomises[i]['tamount'] == src_amount) {
            admcomis = incomises[i]['comis'];
        }
    }
} 

    if(fix_admcomis!='0.00') {
    adm_comis = fix_admcomis;
    }else{
    adm_comis = MyCeil(Math.min(Math.max(src_amount*100/(100-admcomis)-src_amount, min_admcomis), max_admcomis), 10);
    }
    if(eDiscount != '0') {
    disc_amount = MyCeil(adm_comis*100/(100-eDiscount)-adm_comis, 10);
    document.getElementById("eDiscnt").innerHTML = "<b>" + MyCeil(disc_amount, 2) + "</b> (" + eDiscount + "%) " + eValName[form.edstID.value];
    adm_comis =  MyCeil(adm_comis-disc_amount, 10);
    }
    src_amount = MyCeil(src_amount-(-adm_comis), 10);
    document.getElementById("eoComis").innerHTML = "<b>" + MyCeil(adm_comis, 2) + "</b> (" + admcomis + "%) " + eValName[form.edstID.value];
    src_amount = MyCeil(src_amount * src_kurs / dst_kurs, 2);
    form.eSRC_AMOUNT.value = src_amount;
  }
  document.getElementById("eKurs").innerHTML = emRate + " <b>" + FormatNumber(src_kurs, 4) + "</b> " + eValName[form.esrcID.value] + " > <b>" + FormatNumber(dst_kurs, 4) + "</b> " + eValName[form.edstID.value];
  document.getElementById("eReserve").innerHTML = "<b>" + eReserve[form.edstID.value] + "</b> " + eValName[form.edstID.value];
  document.getElementById("eMinimum").innerHTML = "<b>" + eminAmt[form.esrcID.value] + "</b> " + eValName[form.esrcID.value];
  document.getElementById("eMaximum").innerHTML = "<b>" + emaxAmt[form.esrcID.value] + "</b> " + eValName[form.esrcID.value];
  document.getElementById("eLimit").innerHTML = "<b>" + limit + "</b> " + eValName[form.edstID.value];
  if(sfix_comis!='0.00') {
     document.getElementById("efComis").innerHTML = "<b>" + sfix_comis + "</b> (" + ssys_comis + "%) " + eValName[form.esrcID.value];
  }else{
     document.getElementById("efComis").innerHTML = "<b>" + MyCeil(src_amount-(-Math.ceil(Math.min(Math.max(src_amount*(ssys_comis / 100)*100-0.0000001, (smin_comm)*100-0.0000001), (smax_comm)*100-0.0000001))/100), 2) + "</b> (" + ssys_comis + "%) " + eValName[form.esrcID.value];
  }
}

// проверка введенных в форму данных
function eCheckForm(form) {
  var idx = form.esrcID.value + "777" + form.edstID.value;
  if(form.eSRC_AMOUNT.value <= '0') {
    alert(ezeroErrAmt);
    form.eSRC_AMOUNT.focus();
    return false;
  }
  if(form.eDST_AMOUNT.value <= '0') {
    alert(ezeroErrAmt);
    form.eDST_AMOUNT.focus();
    return false;
  }
  if(eminAmt[eval(form.esrcID.value)] > form.eSRC_AMOUNT.value) {
    alert(eminErrAmt + eminAmt[eval(form.esrcID.value)] + " " + eValName[eval(form.esrcID.value)] + ".");
    form.eSRC_AMOUNT.focus();
    return false;
  }
  if(emaxAmt[eval(form.esrcID.value)] < form.eSRC_AMOUNT.value) {
    alert(emaxErrAmt + emaxAmt[eval(form.esrcID.value)] + " " + eValName[eval(form.esrcID.value)] + ".");
    form.eSRC_AMOUNT.focus();
    return false;
  }
  if(eReserve[eval(form.edstID.value)] < form.eDST_AMOUNT.value) {
    alert(eresErrAmt + eReserve[eval(form.edstID.value)] + " " + eValName[eval(form.edstID.value)] + ".");
    form.eDST_AMOUNT.focus();
    return false;
  }
  if(ekurs[idx]['limit'] != '0') { if(ekurs[idx]['limit'] < form.eDST_AMOUNT.value) {
    alert(emaxErrAmt + ekurs[idx]['limit'] + " " + eValName[eval(form.edstID.value)] + ".");
    form.eDST_AMOUNT.focus();
    return false;
  }}
  if(form.eDST_ACCOUNT.value == '') {
    alert(enoAccount);
    form.eDST_ACCOUNT.focus();
    return false;
  }
  if(form.eEMAIL.value == '') {
    alert(enoEmail);
    form.eEMAIL.focus();
    return false;
  }
  return true;
}

// округление с заданной точностью
function MyCeil(str, precision) {
  switch(precision) {
    case 1: return Math.round(str*10) / 10; break;
    case 2: return Math.round(str*100) / 100; break;
    case 3: return Math.round(str*1000) / 1000; break;
    case 4: return Math.round(str*10000) / 10000; break;
    default: return str; break;
  }
}

function FormatNumber(n, zn) {
  if(typeof(zn)=="undefined") return n;
  n = parseFloat(n);
  zn= parseInt(zn);
  p = Math.pow(10, zn);
  s = new String(Math.round(n*p)/p);
  if(ind=s.indexOf(".") > -1) { zn -= s.length-ind-1; } else { s += "."; }
  for(var i=0; i<zn; i++) { s += "0"; }
  return s;
}
