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

// расчет сумм на обмен
function AmountChange(form, dir) {
  var idx = form.srcID.value + "777" + form.dstID.value;
  form.id.value = idx;
  if(kurs[idx] == null) {
    document.getElementById("Kurs").innerHTML = "<font style='font-size: 11px;color:red;'><b> " + mNoDirection + " </b></font>";
    form.confirm_btn.disabled = true;
    return;
  }
  else {
    form.confirm_btn.disabled = false;
  }
  aid = kurs[idx]['aid'];
  src_kurs = kurs[idx]['src'];
  dst_kurs = kurs[idx]['dst'];
  min_admcomis = kurs[idx]['mincomis'];
  max_admcomis = kurs[idx]['maxcomis'];
  fix_admcomis = kurs[idx]['fixcomis'];
  limit = kurs[idx]['limit'];
  typ = kurs[idx]['typ'];
  cam = kurs[idx]['cam'];
  admcomis = kurs[idx]['comis'];
  var src_amount = form.SRC_AMOUNT.value;
  var dst_amount = form.DST_AMOUNT.value;
  var ssys_comis = sysComis[form.srcID.value];
  var smin_comm = minComis[form.srcID.value];
  var smax_comm = maxComis[form.srcID.value];
  var sfix_comis = fixComis[form.srcID.value];
  var sys_comis = sysComis[form.dstID.value];
  var min_comm = minComis[form.dstID.value];
  var max_comm = maxComis[form.dstID.value];
  var fix_comm = fixComis[form.dstID.value];

  if(typ == '2') {
	document.getElementById("cour").style.display = ""; 
  	document.getElementById("Coursm").innerHTML = "<b>" + cam + "</b> ";
  }else{
	document.getElementById("cour").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(Discount != '0') {
    disc_amount = MyCeil(Math.ceil(adm_comis*(Discount / 100)*100-0.0000001)/100, 10);
    document.getElementById("Discnt").innerHTML = "<b>" + MyCeil(disc_amount, 2) + "</b> (" + Discount + "%) " + ValName[form.dstID.value];
    adm_comis =  MyCeil(adm_comis - disc_amount, 10);
    }
    document.getElementById("oComis").innerHTML = "<b>" + MyCeil(adm_comis, 2) + "</b> (" + admcomis + "%) " + ValName[form.dstID.value];
    dst_amount = MyCeil(dst_amount - adm_comis, 10);
    if(fix_comm!='0.00') {
       document.getElementById("Comis").innerHTML = "<b>" + fix_comm + "</b> (" + sys_comis + "%) " + ValName[form.dstID.value];
       dst_amount = MyCeil(dst_amount - fix_comm, 2);
    }else{
       document.getElementById("Comis").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 + "%) " + ValName[form.dstID.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.DST_AMOUNT.value = dst_amount;
  }
  else {
    amount = dst_amount;
    if(fix_comm!='0.00') {
       src_amount = MyCeil(dst_amount-(-fix_comm), 10);
       document.getElementById("Comis").innerHTML = "<b>" + fix_comm + "</b> (" + sys_comis + "%) " + ValName[form.dstID.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("Comis").innerHTML = "<b>" + MyCeil(Math.min(Math.max(dst_amount*100/(100-sys_comis)-dst_amount, min_comm), max_comm), 2) + "</b> (" + sys_comis + "%) " + ValName[form.dstID.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(Discount != '0') {
    disc_amount = MyCeil(adm_comis*100/(100-Discount)-adm_comis, 10);
    document.getElementById("Discnt").innerHTML = "<b>" + MyCeil(disc_amount, 2) + "</b> (" + Discount + "%) " + ValName[form.dstID.value];
    adm_comis =  MyCeil(adm_comis-disc_amount, 10);
    }
    src_amount = MyCeil(src_amount-(-adm_comis), 10);
    document.getElementById("oComis").innerHTML = "<b>" + MyCeil(adm_comis, 2) + "</b> (" + admcomis + "%) " + ValName[form.dstID.value];
    src_amount = MyCeil(src_amount * src_kurs / dst_kurs, 2);
    form.SRC_AMOUNT.value = src_amount;
  }
  document.getElementById("Kurs").innerHTML = mRate + " <b>" + FormatNumber(src_kurs, 4) + "</b> " + ValName[form.srcID.value] + " > <b>" + FormatNumber(dst_kurs, 4) + "</b> " + ValName[form.dstID.value];
  document.getElementById("Reserve").innerHTML = "<b>" + Reserve[form.dstID.value] + "</b> " + ValName[form.dstID.value];
  document.getElementById("Minimum").innerHTML = "<b>" + minAmt[form.srcID.value] + "</b> " + ValName[form.srcID.value];
  document.getElementById("Maximum").innerHTML = "<b>" + maxAmt[form.srcID.value] + "</b> " + ValName[form.srcID.value];
  document.getElementById("Limit").innerHTML = "<b>" + limit + "</b> " + ValName[form.dstID.value];
  if(sfix_comis!='0.00') {
     document.getElementById("fComis").innerHTML = "<b>" + sfix_comis + "</b> (" + ssys_comis + "%) " + ValName[form.srcID.value];
  }else{
     document.getElementById("fComis").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 + "%) " + ValName[form.srcID.value];
  }
}

// проверка введенных в форму данных
function CheckForm(form) {
  var idx = form.srcID.value + "777" + form.dstID.value;
  if(form.SRC_AMOUNT.value <= '0') {
    alert(zeroErrAmt);
    form.SRC_AMOUNT.focus();
    return false;
  }
  if(form.DST_AMOUNT.value <= '0') {
    alert(zeroErrAmt);
    form.DST_AMOUNT.focus();
    return false;
  }
  if(minAmt[eval(form.srcID.value)] > form.SRC_AMOUNT.value) {
    alert(minErrAmt + minAmt[eval(form.srcID.value)] + " " + ValName[eval(form.srcID.value)] + ".");
    form.SRC_AMOUNT.focus();
    return false;
  }
  if(maxAmt[eval(form.srcID.value)] < form.SRC_AMOUNT.value) {
    alert(maxErrAmt + maxAmt[eval(form.srcID.value)] + " " + ValName[eval(form.srcID.value)] + ".");
    form.SRC_AMOUNT.focus();
    return false;
  }
  if(Reserve[eval(form.dstID.value)] < form.DST_AMOUNT.value) {
    alert(resErrAmt + Reserve[eval(form.dstID.value)] + " " + ValName[eval(form.dstID.value)] + ".");
    form.DST_AMOUNT.focus();
    return false;
  }
  if(kurs[idx]['limit'] != '0') { if(kurs[idx]['limit'] < form.DST_AMOUNT.value) {
    alert(maxErrAmt + kurs[idx]['limit'] + " " + ValName[eval(form.dstID.value)] + ".");
    form.DST_AMOUNT.focus();
    return false;
  }}
  if(form.DST_ACCOUNT.value == '') {
    alert(noAccount);
    form.DST_ACCOUNT.focus();
    return false;
  }
  if(form.EMAIL.value == '') {
    alert(noEmail);
    form.EMAIL.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;
}
