//prototype is includes too, we have to use jQuery namespace
jQuery(document).ready(function() {
    KCalc.init();
});

var KCalc = {
    counter: 0,
    is24V: false,
    batteries: 1,
    result: [
        [1, "955 01"],
        [61, "955 51"],
        [73, "956 01"],
        [81, "957 51"],
        [101, "959 01"],
        [116, "960 51"],
        [131, "963 51"],
        [181, "968 01"],
        [230, "968 01"]
    ],

    init: function() {
        KCalc.addLine(7);
        jQuery("#k-add").click(function() { KCalc.addLine(); });
        jQuery("#result-H").keyup(KCalc.blurr);
        jQuery("#result-H, .calc-watt, .calc-volt").keypress(KCalc.checkForNumbers);
    },
    
    addLine: function(amount) {
        if (!amount) amount = 1;
        for (var i = 0; i < amount; ++i) {
            KCalc.counter++;
            jQuery("#form-list").append(KCalc.addLineItem(KCalc.counter));
            jQuery(".calc-watt, .calc-volt").keyup(KCalc.blurr);
            jQuery(".calc-volt").change(KCalc.blurr);
            jQuery(".calc-volt").change(KCalc.adjustVolt);
        }
    },
    
    addLineItem: function(i) {
        return('<div class="col-1 l"><input type="text" id="verbraucher-' + i + '" /></div><div class="col-2 l"><input type="text" class="calc-watt" id="watt-' + i + '" /></div><div class="col-3 l">:</div><div class="col-4 l"><select class="calc-volt" id="volt-' + i + '"><option value="12">12</option><option value="24">24</option></select></div><div class="col-5 l">=</div><div class="col-6 l"><input type="text" id="ampere-' + i + '" class="calc-ampere" readonly="readonly" /></div><div class="c"></div>');
    },
    
    blurr: function() {
        var id = KCalc.getID(jQuery(this));
        
        var result = parseInt(jQuery("#watt-" + id).val()) / parseInt(jQuery("#volt-" + id).val());
        jQuery("#ampere-" + id).val(!isNaN(result) ? KCalc.roundNumber(result) : 0);
        
        KCalc.calcSum();
    },
    
    adjustVolt: function() {
        var currentValue = jQuery(this).val();
        KCalc.is24V = currentValue == "24" ? true : false;
        jQuery(".calc-volt").val(currentValue);
        
        KCalc.calcSum();
    },
    
    calcSum: function() {
        var result = 0;
        jQuery(".calc-ampere").each(function() {
            if (jQuery(this).val()) {
                result = result + parseFloat(jQuery(this).val());
            }
        });

        jQuery("#result-A").val(KCalc.roundNumber(result));
        KCalc.calcAh();
    },
    
    calcAh: function() {
        KCalc.batteries = 1;
        jQuery(".k-battery, #result-2bat, #result-24v, #result-info h2").hide();
        jQuery("#result-B").html("");

        result = parseInt(jQuery("#result-A").val()) * parseInt(jQuery("#result-H").val()) * 1.7;
        result = !isNaN(result) ? KCalc.roundNumber(result) : "";
        var battery = [];
        var numb = parseInt(result);
        if (numb) {
            //while (numb > 230) {
            //    if (numb > 230) {
            //        battery.push(KCalc.result[8][1]);
            //        numb = numb - 230;
            //        KCalc.batteries++;
            //    } else {
            //        break;
            //    }
            //}
            if (numb > 230) {
                jQuery("#result-2bat").show();
            } else {
                jQuery("#result-info h2").show();
                battery.push(KCalc.findBattery(numb));
                for (var i in battery) {
                    if (typeof battery[i] == "string") { //prototype.js madness
                        jQuery("#bat-" + battery[i].replace(/ /g, "_")).show();
                        if (KCalc.is24V) {
                            jQuery("#result-B").html("<div>Energy Bull " + battery[i] + "</div>" + jQuery("#result-B").html());
                            jQuery("#result-B").html("<div>Energy Bull " + battery[i] + "</div>" + jQuery("#result-B").html());
                        } else {
                            jQuery("#result-B").html("<div>Energy Bull " + battery[i] + "</div>" + jQuery("#result-B").html());
                        }
                    }
                }
            }
            if (KCalc.is24V) {
                jQuery("#result-24v").show();
            }
            jQuery("#result-G").val(result + " Ah");
            jQuery("#result-info").show();
        }
    },
    
    findBattery: function(val) {
        var result;
        for (var i = 0; i < KCalc.result.length; i++) {
            if (val > KCalc.result[i][0]) {
                result = KCalc.result[i][1];
            }
        }
        return (result);
    },
    
    checkForNumbers: function(e) {
        var charCode = (e.which) ? e.which : event.keyCode
        if (charCode > 31 && (charCode < 48 || charCode > 57)) {
            return false;
        }        
        return true;
    },
    
    roundNumber: function(val) {
        return (Math.round(val * 100) / 100);
    },

    getID: function(obj) {
        return(obj.attr("id").split("-")[1]);
    }
}

