function celkem() {
    suma = 0;
    $('span[id^="cena"]').each(function() {
        parsed = parseInt(this.innerText);
        if(!isNaN(parsed)) { 
            suma += parsed;
        }
     });
    return suma;
}

function to_num(amount) {
    if(isNaN(amount)) amount = 0;
    return amount;
}

function metraz(amount) {
    return to_num(amount) + ' m';
}

function plochaz(amount) {
    return to_num(amount) + ' m<sup>2</sup>';
}

function kusaz(amount) {
    return to_num(amount) + ' ks';
}

function kc(amount) {
    return to_num(amount) + ' Kč';
}

function fl(str) {
    var value = typeof str == 'object' ? str.val() : str;
    return parseFloat(value.replace(',','.')) || 0;
}

function roofing(args) {
    this.args = args;
}

function plocha_trojuhelniku(a,b,c) {
    s = (a + b + c) / 2;
    return Math.sqrt(s*(s-a)*(s-b)*(s-c));
}

function plocha_obdelniku(a,b) {
    return a*b;
}

function plocha_lichobezniku(a,b,c,d) {
    a2 = Math.pow(a,2);
    b2 = Math.pow(b,2);
    c2 = Math.pow(c,2);
    d2 = Math.pow(d,2);
    e2 = Math.pow(a-c,2);
    ret =  (a+c);
    ret = ret * Math.sqrt(4*b2*e2 - Math.pow(e2 + b2 - d2,2));
    return Math.abs(ret / (4*(a-c)));
}

roofing.prototype.plocha = function() {
    return this.args.plocha;
}

roofing.prototype.obvod = function() {
    return this.args.obvod;
}

roofing.prototype.pocet_tasek = function() {
    return Math.ceil(this.args.plocha * 2.15 * 1.1);
};

roofing.prototype.pocet_hrebenacu = function() {
    return Math.ceil(this.args.delka_hrebenacu / 0.37);
};

roofing.prototype.pocet_okapovych_lemu = function() {
    return Math.ceil(this.args.delka_okapovych_lemu / 1.29);
};

roofing.prototype.pocet_opravnych_sad = function() {
    return Math.ceil(this.pocet_tasek() / 400);
};

roofing.prototype.pocet_uzlabnich_plechu = function() {
    return Math.ceil(this.args.e / 1.26);
};

roofing.prototype.cena_opravnych_sad = function() {
    return (this.pocet_opravnych_sad() * 150) + ' Kč';
};


roofing.prototype.pocet_hrebikovych_svitku = function() {
    return Math.ceil((this.pocet_tasek() * 4) / 325);
};

roofing.prototype.pocet_zavetrnych_list = function() {
    return Math.ceil(this.args.delka_zavetrnych_list / 1.11);
};

roofing.prototype.pocet_kratkych_zavetrnych_list = function() {
    return Math.ceil(this.args.delka_zavetrnych_list / 0.367);
};

roofing.prototype.pocet_vetracich_tasek = function () {
    return Math.ceil(this.args.delka_vetracich_tasek / 1.26 / 2);
}



roofing.prototype.cena_tasek = function() {
    return (this.pocet_tasek() * 225);
};

roofing.prototype.cena_hrebenacu = function() {
    return (this.pocet_hrebenacu() * 165);
};

roofing.prototype.cena_okapovych_lemu = function() {
    return (this.pocet_okapovych_lemu() * 250);
};

roofing.prototype.cena_opravnych_sad = function() {
    return (this.pocet_opravnych_sad() * 150);
};

roofing.prototype.cena_hrebikovych_svitku = function() {
    return (this.pocet_hrebikovych_svitku() * 500);
};

roofing.prototype.cena_zavetrnych_list = function() {
    return (this.pocet_zavetrnych_list() * 275);
};

roofing.prototype.cena_kratkych_zavetrnych_list = function() {
    return (this.pocet_kratkych_zavetrnych_list() * 149);
};

roofing.prototype.cena_vetracich_tasek = function() {
    return (this.pocet_vetracich_tasek() * 850);
};

roofing.prototype.cena_uzlabnich_plechu = function() { 
    return (this.pocet_uzlabnich_plechu() * 436);
};
// UGLY JS ###

$(function() {
  if($("#pultova").length > 0) {
    $("#a").jStepper({minValue:0, maxValue:5000});
    $("#b").jStepper({minValue:0, maxValue:5000});
    
    $('.sensitive').bind('keyup', function() {
      var a = fl($('#a')), b = fl($('#b')),
          r = new roofing({
          a: a,
          b: b,
          delka_okapovych_lemu: a,
          delka_zavetrnych_list: b,
          plocha: a * b,
          obvod: 2 * (a + b)
        });

      $('#plocha').html(plochaz(r.plocha()));
      $('#obvod').html(metraz(r.obvod()));
      $('#pocet_tasek').html(kusaz(r.pocet_tasek()));
      $('#cena_tasek').html(kc(r.cena_tasek()));    
      $('#pocet_okapovych_lemu').html(kusaz(r.pocet_okapovych_lemu()));
      $('#cena_okapovych_lemu').html(kc(r.cena_okapovych_lemu()));    
      $('#pocet_hrebikovych_svitku').html(kusaz(r.pocet_hrebikovych_svitku()));
      $('#cena_hrebikovych_svitku').html(kc(r.cena_hrebikovych_svitku()));    
      $('#pocet_opravnych_sad').html(kusaz(r.pocet_opravnych_sad()));
      $('#cena_opravnych_sad').html(kc(r.cena_opravnych_sad()));    
      $('#pocet_l_zavetrnych_list').html(kusaz(r.pocet_zavetrnych_list()));
      $('#cena_l_zavetrnych_list').html(kc(r.cena_zavetrnych_list()));
      $('#pocet_r_zavetrnych_list').html(kusaz(r.pocet_zavetrnych_list()));
      $('#cena_r_zavetrnych_list').html(kc(r.cena_zavetrnych_list()));
      
      $('#celkem').html(kc(celkem()));
      
    }).trigger('keyup');
  } else if($("#sedlova").length > 0) {
    $("#a").jStepper({minValue:0, maxValue:5000});
    $("#b1").jStepper({minValue:0, maxValue:5000});
    $("#b2").jStepper({minValue:0, maxValue:5000});  
    $("#c").jStepper({minValue:0, maxValue:5000});
      
    $('.sensitive').bind('keyup', function() {
      var a = fl($('#a')), b1 = fl($('#b1')), b2 = fl($('#b2')),
          c = fl($('#c')),
          r = new roofing({
          a:  a,
          b1: b1,
          b2: b2,
          c:  c,
          delka_hrebenacu: a,
          delka_okapovych_lemu: a*2,
          delka_zavetrnych_list: b1+b2,
          delka_vetracich_tasek: a*2,
          plocha: plocha_obdelniku(b1,a) + plocha_obdelniku(b2,a),
          obvod: 2 * (a + c)
        });

      $('#plocha').html(plochaz(r.plocha()));
      $('#obvod').html(metraz(r.obvod()));
      $('#pocet_tasek').html(kusaz(r.pocet_tasek()));    
      $('#pocet_hrebenacu').html(kusaz(r.pocet_hrebenacu()));
      $('#pocet_okapovych_lemu').html(kusaz(r.pocet_okapovych_lemu()));
      $('#pocet_hrebikovych_svitku').html(kusaz(r.pocet_hrebikovych_svitku()));
      $('#pocet_opravnych_sad').html(kusaz(r.pocet_opravnych_sad()));
      $('#pocet_l_zavetrnych_list').html(kusaz(r.pocet_zavetrnych_list()));
      $('#pocet_r_zavetrnych_list').html(kusaz(r.pocet_zavetrnych_list()));
      $('#pocet_l_kratkych_zavetrnych_list').html(kusaz(r.pocet_kratkych_zavetrnych_list()));
      $('#pocet_r_kratkych_zavetrnych_list').html(kusaz(r.pocet_kratkych_zavetrnych_list()));    
      $('#pocet_vetracich_tasek').html(kusaz(r.pocet_vetracich_tasek()));    

      $('#cena_tasek').html(kc(r.cena_tasek()));    
      $('#cena_hrebenacu').html(kc(r.cena_hrebenacu()));
      $('#cena_okapovych_lemu').html(kc(r.cena_okapovych_lemu()));
      $('#cena_hrebikovych_svitku').html(kc(r.cena_hrebikovych_svitku()));
      $('#cena_opravnych_sad').html(kc(r.cena_opravnych_sad()));
      $('#cena_l_zavetrnych_list').html(kc(r.cena_zavetrnych_list()));
      $('#cena_r_zavetrnych_list').html(kc(r.cena_zavetrnych_list()));
      $('#cena_l_kratkych_zavetrnych_list').html(kc(r.cena_kratkych_zavetrnych_list()));
      $('#cena_r_kratkych_zavetrnych_list').html(kc(r.cena_kratkych_zavetrnych_list()));    
      $('#cena_vetracich_tasek').html(kc(r.cena_vetracich_tasek()));    
      
      $('#celkem').html(kc(celkem()));
     
    }).trigger('keyup');  
  } else if($("#valbova").length > 0) {
    $("#a").jStepper({minValue:0, maxValue:5000});
    $("#b1").jStepper({minValue:0, maxValue:5000});
    $("#b2").jStepper({minValue:0, maxValue:5000});  
    $("#c").jStepper({minValue:0, maxValue:5000});
    $("#d").jStepper({minValue:0, maxValue:5000});
      
    $('.sensitive').bind('keyup', function() {
      var a = fl($('#a')), b1 = fl($('#b1')), b2 = fl($('#b2')),
          c = fl($('#c')), d = fl($('#d')),
          r = new roofing({
          delka_hrebenacu: d + 2*b1 + 2*b2,
          delka_okapovych_lemu: 2 * (a+c),
          delka_zavetrnych_list: b1+b2,
          delka_vetracich_tasek: d,
          plocha: Math.ceil(2*plocha_trojuhelniku(b1,b2,c) + plocha_lichobezniku(a,b1,d,b1) + plocha_lichobezniku(a,b2,d,b2)),
          obvod: 2 * (a + c)
        });

      $('#plocha').html(plochaz(r.plocha()));
      $('#obvod').html(metraz(r.obvod()));

      $('#pocet_tasek').html(kusaz(r.pocet_tasek()));
      $('#pocet_hrebenacu').html(kusaz(r.pocet_hrebenacu()));
      $('#pocet_okapovych_lemu').html(kusaz(r.pocet_okapovych_lemu()));
      $('#pocet_hrebikovych_svitku').html(kusaz(r.pocet_hrebikovych_svitku()));
      $('#pocet_opravnych_sad').html(kusaz(r.pocet_opravnych_sad()));
      $('#pocet_vetracich_tasek').html(kusaz(r.pocet_vetracich_tasek()));    
    
      $('#cena_tasek').html(kc(r.cena_tasek()));
      $('#cena_hrebenacu').html(kc(r.cena_hrebenacu()));
      $('#cena_okapovych_lemu').html(kc(r.cena_okapovych_lemu()));
      $('#cena_hrebikovych_svitku').html(kc(r.cena_hrebikovych_svitku()));
      $('#cena_opravnych_sad').html(kc(r.cena_opravnych_sad()));
      $('#cena_vetracich_tasek').html(kc(r.cena_vetracich_tasek()));    
      
      $('#celkem').html(kc(celkem()));
    }).trigger('keyup');  
  } else if($("#sedlova_l").length > 0) {
    $("#a1").jStepper({minValue:0, maxValue:5000});
    $("#a2").jStepper({minValue:0, maxValue:5000});  
    $("#b1").jStepper({minValue:0, maxValue:5000});
    $("#b2").jStepper({minValue:0, maxValue:5000});  
    $("#b3").jStepper({minValue:0, maxValue:5000});  
    $("#b4").jStepper({minValue:0, maxValue:5000});      
    $("#c1").jStepper({minValue:0, maxValue:5000});
    $("#c2").jStepper({minValue:0, maxValue:5000});  
    $("#d1").jStepper({minValue:0, maxValue:5000});
    $("#d2").jStepper({minValue:0, maxValue:5000});
    $("#e").jStepper({minValue:0, maxValue:5000});  
    $("#f").jStepper({minValue:0, maxValue:5000});    
      
    $('.sensitive').bind('keyup', function() {
      var a1 = fl($('#a1')), a2 = fl($('#a2')),
          b1 = fl($('#b1')), b2 = fl($('#b2')),
          b3 = fl($('#b3')), b4 = fl($('#b4')),
          c1 = fl($('#c1')), c2 = fl($('#c2')),
          d1 = fl($('#d1')), d2 = fl($('#d2')),
          e = fl($('#e')), f = fl($('#f')),        
          r = new roofing({
	    e: e,
            delka_hrebenacu: d1 + d2 + f  ,
            delka_okapovych_lemu: 2*(a1 + a2) + c1 + c2,
            delka_zavetrnych_list: b1+b2+b3+b4,
            delka_vetracich_tasek: d1+d2,
            plocha: Math.floor(plocha_lichobezniku(a1,e,d1,b1) + plocha_lichobezniku(a2,b3,d2,e) +
                    plocha_lichobezniku(a1+c2,b2,d1,f) + plocha_lichobezniku(a2 + c1,f,d2,b4)), 
            obvod: 2 * (a1 + a2 + c1 + c2)
          });
          
        $('#plocha').html(plochaz(r.plocha()));
        $('#pocet_tasek').html(kusaz(r.pocet_tasek()));
        $('#pocet_hrebenacu').html(kusaz(r.pocet_hrebenacu()));
        $('#pocet_okapovych_lemu').html(kusaz(r.pocet_okapovych_lemu()));
        $('#pocet_hrebikovych_svitku').html(kusaz(r.pocet_hrebikovych_svitku()));
        $('#pocet_l_zavetrnych_list').html(kusaz(Math.floor((b1+b2) / 1.11)));
        $('#pocet_r_zavetrnych_list').html(kusaz(Math.floor((b3+b4) / 1.11)));
        $('#pocet_opravnych_sad').html(kusaz(r.pocet_opravnych_sad()));
        $('#pocet_vetracich_tasek').html(kusaz(r.pocet_vetracich_tasek()));
        $('#pocet_uzlabnich_plechu').html(kusaz(r.pocet_uzlabnich_plechu()));
    
        $('#cena_tasek').html(kc(r.cena_tasek()));    
        $('#cena_hrebenacu').html(kc(r.cena_hrebenacu()));    
        $('#cena_okapovych_lemu').html(kc(r.cena_okapovych_lemu()));    
        $('#cena_hrebikovych_svitku').html(kc(r.cena_hrebikovych_svitku()));
        $('#cena_l_zavetrnych_list').html(kc(Math.floor((((b1+b2) / 1.11) * 275))));
        $('#cena_r_zavetrnych_list').html(kc(Math.floor((((b3+b4) / 1.11) * 275))));    
        $('#cena_opravnych_sad').html(kc(r.cena_opravnych_sad()));    
        $('#cena_vetracich_tasek').html(kc(r.cena_vetracich_tasek()));    
        $('#cena_uzlabnich_plechu').html(kc(r.cena_uzlabnich_plechu()));
            
        $('#celkem').html(kc(celkem()));
                
      }).trigger('keyup');  
  } else if($("#valbova_l").length > 0) {
    $("#a1").jStepper({minValue:0, maxValue:5000});
    $("#a2").jStepper({minValue:0, maxValue:5000});  
    $("#b1").jStepper({minValue:0, maxValue:5000});
    $("#b2").jStepper({minValue:0, maxValue:5000});  
    $("#b3").jStepper({minValue:0, maxValue:5000});  
    $("#b4").jStepper({minValue:0, maxValue:5000});      
    $("#c1").jStepper({minValue:0, maxValue:5000});
    $("#c2").jStepper({minValue:0, maxValue:5000});  
    $("#d1").jStepper({minValue:0, maxValue:5000});
    $("#d2").jStepper({minValue:0, maxValue:5000});
    $("#e").jStepper({minValue:0, maxValue:5000});  
    $("#f").jStepper({minValue:0, maxValue:5000});
    $("#v").jStepper({minValue:0, maxValue:5000});
      
    $('.sensitive').bind('keyup', function() {
      var a1 = fl($('#a1')), a2 = fl($('#a2')),
          b1 = fl($('#b1')), b2 = fl($('#b2')),
          b3 = fl($('#b3')), b4 = fl($('#b4')),
          c1 = fl($('#c1')), c2 = fl($('#c2')),
          d1 = fl($('#d1')), d2 = fl($('#d2')),
          e = fl($('#e')), f = fl($('#f')),
          v = fl($('#v')),        
          r = new roofing({
          e: e,
          delka_hrebenacu: d1 + d2  + b1 + b2 + b3 + b4,
          delka_okapovych_lemu: 2 * (a1 + a2 + c1 + c2),
          delka_zavetrnych_list: b1+b2+b3+b4,
          delka_vetracich_tasek: d1+d2,
          plocha: Math.floor(plocha_trojuhelniku(c1,b1,b2) + plocha_trojuhelniku(c2,b3,b4) + 
                  plocha_obdelniku(a1,v) + plocha_obdelniku(a2,v) +
                  plocha_lichobezniku(a1+c2,b2,d1,f) + plocha_lichobezniku(a2 + c1,f,d2,b4)), 
          obvod: 2 * (a1 + a2 + c1 + c2)
        });

      $('#plocha').html(plochaz(r.plocha()));
      
      $('#pocet_tasek').html(kusaz(r.pocet_tasek()));
      $('#pocet_hrebenacu').html(kusaz(r.pocet_hrebenacu()));
      $('#pocet_okapovych_lemu').html(kusaz(r.pocet_okapovych_lemu()));
      $('#pocet_hrebikovych_svitku').html(kusaz(r.pocet_hrebikovych_svitku()));
      $('#pocet_opravnych_sad').html(kusaz(r.pocet_opravnych_sad()));
      $('#pocet_vetracich_tasek').html(kusaz(r.pocet_vetracich_tasek()));
      $('#pocet_uzlabnich_plechu').html(kusaz(r.pocet_uzlabnich_plechu()));
      
      $('#cena_tasek').html(kc(r.cena_tasek()));
      $('#cena_hrebenacu').html(kc(r.cena_hrebenacu()));
      $('#cena_okapovych_lemu').html(kc(r.cena_okapovych_lemu()));
      $('#cena_hrebikovych_svitku').html(kc(r.cena_hrebikovych_svitku()));
      $('#cena_opravnych_sad').html(kc(r.cena_opravnych_sad()));
      $('#cena_vetracich_tasek').html(kc(r.cena_vetracich_tasek()));  
      $('#cena_uzlabnich_plechu').html(kc(r.cena_uzlabnich_plechu()));  
      
      $('#celkem').html(kc(celkem()));
      
    }).trigger('keyup');  
  }
});

