function SetHide(elementId, hide) {
    eval('document.getElementById(\'' + elementId + '\').className = ' + (hide ? '\'hid\'' : '\'cmon\''));
}

function GetXmlHttpObject(handler) {
    var objXMLHttp=null
    if (window.XMLHttpRequest) {
        objXMLHttp=new XMLHttpRequest()
    }
    else if (window.ActiveXObject) {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    return objXMLHttp
}

function basicUpdate(client) {
    var url;
    xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert ("Browser does not support HTTP Request");
        return;
    }
    url = "/ajax/_basic.php?client=" + client + "&random=" + Math.random();
    xmlHttp.onreadystatechange = basicChanged;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);	
}

function basicChanged() {
    var basics;
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
        basics = document.getElementById("basics");
        if (basics != null) {
            basics.innerHTML = xmlHttp.responseText;
        }
        FormChange();		
    }
		
}
var def;
function citiesUpdate(region) {
	def = 1;
    var url;
    xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert ("Browser does not support HTTP Request");
        return;
    }
    url = "/ajax/_cities.php?region=" + region + "&random=" + Math.random();
    xmlHttp.onreadystatechange = citiesChanged;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);		
}

function citiesChanged() {
    var basics;
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
        basics = document.getElementById("cities");
        if (basics != null) {
            basics.innerHTML = xmlHttp.responseText;
        }
        FormChange();
    }
}

function FormChange() {
  //собственник ТС
  var property = document.calc.property.value;

  var isPhys = (property == 2);
  SetHide('sect2lab1', isPhys);
  SetHide('sect2lab2', !isPhys);
  document.calc.age.disabled = isPhys;
  document.calc.drivercount[0].disabled = isPhys;
  document.calc.drivercount[1].disabled = isPhys;
  SetHide('step4', isPhys);
  SetHide('step5', isPhys);
  document.calc.period.disabled = isPhys;

  //базовая ставка
  var base = document.calc.type.value;
  if (property == 2 && base == 1980) {
  	base = 2375;
  } else if (base == 395 || base == 810 || base == 3050) {
  	document.calc.age.disabled = true;
  } else {
  	document.calc.times0.disabled = false;
  }
  if (base == 1980 || base == 2375 || base == 2965) {
  	document.calc.power.disabled = false;
  } else {
  	document.calc.power.disabled = true;
  }
	
  //региональный коэффициент
  var city = document.calc.city;
  if (def==1)  var reg = city.options[city.selectedIndex].value / 100;
  else citiesUpdate(0);  
  
  //для тракторов свой региональный коэффициент
  if (base == 12150 || base == 3050) {
    if (reg >= 0.5 && reg < 1)	{
	  reg = 0.5;
	}
    if (reg >= 1 && reg < 1.4)	{
	  reg = 0.8;
	}
	if (reg >= 1.4 && reg < 2) {
	  reg = 1;
	}
	if (reg == 2) {
	  reg = 1.2;
	}
	base /= 10;
  }

  //Возраст и стаж водителя
  if (property == 2) {
  	var age = 1;
  } else {
  	var age = document.calc.age.value / 100;
  }

  //Ограничение на число водителей
  var drvcount = 1;
  if ((document.calc.drivercount[1].checked && property == 1) || property == 2) {
    SetHide('step5', true);
  	document.calc.age.disabled = true;
    drvcount *= 1.8;
	age = 1;
  } else {
    SetHide('step5', isPhys);
  	document.calc.age.disabled = false;
  }

  //Мощность двигателя
  var power = document.calc.power.value / 10;

  //Срок страхования
  var atime = 1;
  var isUsing = !document.calc.time.checked;

  SetHide('step8', !isUsing);
  SetHide('step9', !isUsing);
  SetHide('step10', !isUsing || document.calc.times0.value == 1);
  SetHide('step11', !isUsing);
  document.calc.period.disabled = !isUsing;
  var period = 1;
  if (isUsing) {
    //Период использования ТС
    if (property == 1) {
  	  period = document.calc.period.value / 100;
    }
  } else {
	atime = 0.2;
    reg = 1;
  }

  //Коэффициент КБМ
  //var hclass = document.calc.class.value / 100;
  var hclass = GetKBM() / 100;

  var failkoef = document.calc.failure.checked ? 1.5 : 1;

  //Всего
  if (atime == 1) {
	var k = period;
  } else if (base == 395 || base == 810 || base == 305) {
	var k = 1;
  } else {
	var k = atime;
	hclass = 1;
  }
  if (base != 395 && base != 810 && base != 305) {
    k *= age * drvcount * hclass;
	if (base == 2375 || base == 1980 || base == 2965) {
	  k *= power;
	}
  }
  //document.calc.kkk.value = k;
  k = Math.min(k, 3);

//  document.calc.total.value =
  document.getElementById('total').value = Math.floor(base * reg * k * failkoef * 100) / 100;
  return true;
}

function GetKBM() {
  var kbmM = 295;
  var kbm = [230, 155, 140, 100, 95, 90, 85, 80, 75, 70, 65, 60, 55, 50];
  var kmbArr = new Array();
  kmbArr[0]  = [1,  null, null, null, null];
  kmbArr[1]  = [2,  null, null, null, null];
  kmbArr[2]  = [3,     1,  null, null, null];
  kmbArr[3]  = [4,     1,  null, null, null];
  kmbArr[4]  = [5,     2,     1,  null, null];
  kmbArr[5]  = [6,     3,     1,  null, null];
  kmbArr[6]  = [7,     4,     2,  null, null];
  kmbArr[7]  = [8,     4,     2,  null, null];
  kmbArr[8]  = [9,     5,     2,  null, null];
  kmbArr[9]  = [10,    5,     2,     1,  null];
  kmbArr[10] = [11,    6,     3,     1,  null];
  kmbArr[11] = [12,    6,     3,     1,  null];
  kmbArr[12] = [13,    6,     3,     1,  null];
  kmbArr[13] = [13,    7,     3,     1,  null];
  var times = document.calc.times0.value;
  var res = 100;

  if (times > 1) {
    res = document.calc.kbm.value;
    if (res == 0) {
      var idx = 3;
      for (i = 1; i < times; i++) {
        var ctrl = document.getElementById('times'+i+'_src');
        var paied = ctrl.value;
//        alert("Проход " + i + " платежей " + paied);
        idx = kmbArr[idx][paied];
        res = idx == null ? kbmM : kbm[idx];
//        alert("КБМ " + res + " следующий индекс " + idx);
      }
    }
  }
  return res;
}

function KBMChange() {
  var times = document.calc.times0.value;
  SetHide('step10', times == 1);
  for (i = 1; i < 9; i++) {
    var show = document.calc.kbm.value == 0 && i < times;
    SetHide('times' + i + 'box', !show);
  }

  FormChange();
}


