// :: calc.lib.js

// :: Servicefunktion "Listensuche"

function list_search(x,idx_list,val_list){
 for(var id=0;id<idx_list.length && x>idx_list[id];id++){}
 if (x>idx_list[id])
  id++
 return val_list[id];
}

var dl_preis
var auto_preis
var auto_plz
var fahrkosten
var auto_plz1
var zielort
var gewicht
var zustellkosten
var alter
//var hubraum
var zoll_preis
var gesamt
var auto_preis_error
var auto_plz_error
var auto_plz1_error
//var auto_hubraum_error
var gew_text

var form_name="x"
var x=new Array();
var l=new Array();

// :: Formeln und Koeffiziente

function anfahrt_formel(x){
 var r=Math.round(x*2*.45);
 return r<100?100:r;
}

function dienstleistung_formel(x){
 return x<5000
  ?440
  :Math.round((x-5000) / 45 + 440);
}

function zoll_formel(alter, hubraum) {
   if (alter == 3) return 0;
   var k = (alter == 1) ? list_search(hubraum, zoll_koeff_idx2, zoll_koeff2) : list_search(hubraum,zoll_koeff_idx, zoll_koeff);
   return Math.round(k * hubraum);
}

// 3 bis 5 Jahre alt
var zoll_koeff_idx = [1000,1500,1800,2300,3000]
var zoll_koeff = [1.5,1.7,2.5,2.7,3,3.6]
// mehr als 5 Jahre alt
var zoll_koeff_idx2 = [1000,1500,1800,2300,3000]
var zoll_koeff2 = [3,3.2, 3.5, 4.8, 5, 5.7]

var stadt=new Array;
 stadt["_gewicht"]=[1.1,1.4,1.6,1.8];
 stadt["almaty"]=[1220,1290,1380,1480,1550];
 stadt["bischkek"]=[1230,1330,1420,1500,1600];
 stadt["duschanbe"]=[1400,1500,1610,1700,1800];
 stadt["karaganda"]=[1130,1190,1290,1360,1500];
 stadt["tschimkent"]=[1190,1250,1380,1470,1550];
 stadt["pavlodar"]=[1150,1250,1300,1340,1500];
 stadt["kzilorda"]=[1120,1180,1260,1320,1550];
 stadt["kostanai"]=[1100,1200,1250,1290,1500];
 stadt["semipalatinsk"]=[1140,1200,1280,1350,1550];
 stadt["petropavlovsk"]=[1180,1250,1320,1550,1700];
 stadt["kokschetau"]=[1130,1190,1290,1390,1600];

// ------------ ------------ ------------ ------------

// :: Calculator Logik

function zoll_calc(){
 var a=alter.value
 var hr=hubraum.value
 if (isNaN(hr)){
  auto_hubraum_error.data="bitte nur Ziffern eintragen"
  out("zoll",0)
  zoll_preis.value=""
  return
 }
 else{
  auto_hubraum_error.data=" "
  var ret=zoll_formel(a,hr)
  out("zoll",ret)
  zoll_preis.value=ret+" EUR"
 }
}

function zustellung_calc(){
 var plz=auto_plz1.value;

 var x=zielort.value
 if (x<0){
  gewicht.disabled=true
  gew_text.style.color="black";
  out("z_kosten",0)
  zustellkosten.value="";
        return;
 }



 if (isNaN(plz)){
  auto_plz1_error.data="bitte nur Ziffern eintragen"
  zustellkosten.value=" "
  out("z_kosten",0)
  return;
 }
 if (plz.length<2){
  auto_plz1_error.data=" "
  zustellkosten.value=" "
  out("z_kosten",0)
  return;
 }

 if (isNaN(x)){
  if (gewicht.disabled){
   gewicht.disabled=false
   gew_text.style.color="red";
  }
  x=list_search(gewicht.value,stadt["_gewicht"],stadt[x])
 }
 else{
  gewicht.disabled=true
  gew_text.style.color="black";
 }
 var lub_plz=new Number(plz.substr(0,2))
 auto_plz_error.data=" ";
 var ret=new Number(l[lub_plz])+new Number(x);
 out("z_kosten",ret)
 zustellkosten.value=ret+" EUR";
}

function fahrkosten_calc(){
 var iv_text=auto_plz.value;
 var iv=new Number(iv_text);
 if(iv_text.length == 5){
  var val=x[iv];
  if (val == undefined){
   auto_plz_error.data="PLZ unbekannt";
   fahrkosten.value=''
   out("f_kosten",0)
  }
  else{
   auto_plz_error.data=" ";
   var ret=anfahrt_formel(val)
   out("f_kosten",ret);
   fahrkosten.value=ret+" EUR"
  }
 }
 else{
  auto_plz_error.data=" ";
  fahrkosten.value=''
  out("f_kosten",0);
 }
}

function dl_calc(){
 var inp=new Number(auto_preis.value);

 if(isNaN(inp)){
  auto_preis_error.data='Bitte, tragen Sie nur Ziffern ein';
  dl_preis.value=""
  out("dl_preis",0)
  return ;
 }
 else{
  auto_preis_error.data=' ';
  var ret=inp?dienstleistung_formel(inp):0
  out("dl_preis",ret);
  dl_preis.value=ret+" EUR"
 }
}

// :: Gesamtsumme

var daten=new Array;

function out(k,v){
 daten[k]=v
 var sum=0
 for (var x in daten)
  sum+=daten[x]
 if (! isNaN(auto_preis.value))
  sum+=Number(auto_preis.value)
 gesamt.value=sum+" EUR"
}