document.onkeyup = changeEvent;

function around(n, precision)
{
 var s = new String(n*100/100);
 var s1 = new String(Math.floor(n));
 return parseFloat(s.substr(0, s1.length + 1 + precision))
}

function changeEvent(e)
{
 var el = (typeof event !== 'undefined') ? event.srcElement : e.target;
 if (el.form.name == 'calc')
 {
  var frm = el.form;
  var i;
  var walls = 0;
  var floors = 0;
  var ceilings = 0;
  var ckWalls = 0;
  var ckFloor = 0;
  var ckCeiling = 0;
  var c25 = 0;

  for (i = 0; i < frm.elements.length; i++)
  {
   var objName = new String(frm.elements[i].id);

   if ((objName == 'area') || (objName == 'height') || (objName.substr(0, 6) == 'walls_') || (objName.substr(0, 6) == 'floor_') || (objName.substr(0, 8) == 'ceiling_'))
   {
    var value1 = new String(frm.elements[i].value);
    frm.elements[i].value = value1.replace(",", ".");
    var value = (parseFloat(frm.elements[i].value) == frm.elements[i].value) ? frm.elements[i].value : 0;
    if (document.getElementById('k_' + objName))
     var k = document.getElementById('k_' + objName).value;
    var ck = around(value/100 * k, 4);
   }
   
   if (objName.substr(0, 6) == 'walls_')
   {
    ckWalls += parseFloat(ck);
    walls += parseFloat(value);
    if (walls > 100)
    {
     alert('Сумма процентов не может быть больше 100!');
     frm.elements[i].value = 0;
     walls -= parseFloat(value);
     changeEvent(e);
    }
   }
   
   if (objName.substr(0, 6) == 'floor_')
   {
    ckFloor += parseFloat(ck);
    floors += parseFloat(value);
    if (floors > 100)
    {
     alert('Сумма процентов не может быть больше 100!');
     frm.elements[i].value = 0;
     floors -= parseFloat(value);
     changeEvent(e);
    }
   }
   
   if (objName.substr(0, 8) == 'ceiling_')
   {
    ckCeiling += parseFloat(ck);
    ceilings += parseFloat(value);
    
    if (ceilings > 100)
    {
     alert('Сумма процентов не может быть больше 100!');
     frm.elements[i].value = 0;
     ceilings -= parseFloat(value);
     changeEvent(e);
    }
    
    if (objName.substr(8, 1) == '5')
     c25 = around(value/100, 2);
   }
  }
  
  document.getElementById('wallsVerify').value = walls;
  document.getElementById('floorVerify').value = floors;
  document.getElementById('ceilingVerify').value = ceilings;
  
  var startCost = document.getElementById('startCost').value;
  var roughMaterial = document.getElementById('roughMaterial').value;
  var height = document.getElementById('height').value;
  var aarea = document.getElementById('area').value;
  var wcCount = document.getElementById('wcCount').value;
  
  var finishCost = around(startCost * ((height - 2.6)/44 + 1) * ckWalls * ckFloor * ckCeiling * (wcCount/95 + 1), 7);
  
  document.getElementById('finishCost').innerHTML = finishCost;
  document.getElementById('worksCost').innerHTML = around(finishCost * aarea, 2);
  document.getElementById('roughCost').innerHTML = around((aarea * roughMaterial * ((height - 2.6)/44 + 1)) + (10 * (1 - c25) * aarea), 2);
 }
 return true;
}
