$(document).ready(function(){
    /*
     * Global form params selectors
     */
    var totalLengthField = $("input[name='total_length']");
    var lengthSegmentsField = $("input[name='length_segments']");
    var lengthRecessingField = $("input[name='length_recessing']");
    var lengthOffsetField = $("input[name='length_offset']");
    var lengthPriceField = $("input[name='length_price']");
    var cornerField = $("input[name='corner']");
    
    var totalMotorsField = $("input[name='motors_number']");
    var totalSmallSuppliesField = $("input[name='small_supplies_number']");
    var totalLargeSuppliesField = $("input[name='large_supplies_number']");
    var motorsPriceField = $("input[name='motors_price']");

    var totalBracketsField = $("input[name='brackets_number']");
    var bracketsPriceField = $("input[name='brackets_price']");

    var totalEyeletsField = $("input[name='eyelets_number']");
    var eyeletsPriceField = $("input[name='eyelets_price']");

    var totalPriceField = $("input[name='total_price']");

    /**
     * Track shape selector
     */
    var trackShapesSelector = "select#jTrackShapesSelector";
    var trackShapeImageSelector = "img#jTrackShapeImg";

    //var lengthPriceSelector = "#jLengthPrice";

    $(trackShapesSelector).change(function() {
        var imgPath = $(trackShapesSelector + " option:selected").attr('img');
        var shapeId = $(trackShapesSelector + " option:selected").val();
        $(trackShapeImageSelector).attr("src", imgPath);

        for (var i=1; i<=5; i++) {
            if (i != shapeId) {
                $("div#shape" + i).hide();
            } else {
                $("div#shape" + i).show();
            }
        }
        //$(lengthPriceSelector).html("0.00");
    });
    $(trackShapesSelector).change();

    var pricePerCmSelector = "input[name='price_per_cm']";
    var nsbPremiumField = $("input[name='nsb_premium']");

    /**
     * Straight Curtain Rail
     */
    var Shape1_lengthSelector = "div#shape1 > input#jLength";
    var Shape1_lengthRecessSelector = "div#shape1 > input#jLengthRecessing";

    function shape1LengthPriceCalculate() {
        var pricePerCm = $(pricePerCmSelector).val();
        var length = $(Shape1_lengthSelector).val();

        lengthSegmentsField.val(length + ",0,0");

        if ($(Shape1_lengthRecessSelector).attr('checked')) {
            length -= 3.0;

            lengthRecessingField.val("AB");
        }

        var price = 0;
        if (length > 0.0) {
            price = pricePerCm * length;
        }
        price = price.toFixed(2);
        //$(lengthPriceSelector).html(price);

        totalLengthField.val(length);
        lengthPriceField.val(price);

        motorsPriceCalculate();
        bracketsPriceCalculate();
        eyeletsPriceCalculate();
    }
    $(Shape1_lengthSelector).change(function(){
        shape1LengthPriceCalculate();
    });
    $(Shape1_lengthSelector).keyup(function() {
        shape1LengthPriceCalculate();
    });
    $(Shape1_lengthRecessSelector).change(function(){
        shape1LengthPriceCalculate();
    })

    /**
     * Standard Single Bend Curtain Rail
     */
    var Shape2_lengthABSelector = "div#shape2 > input#jLengthAB";
    var Shape2_lengthBCSelector = "div#shape2 > input#jLengthBC";
    var Shape2_lengthOffsetSelector = "div#shape2 > input#jLengthOffset";
    var Shape2_lengthRecessABSelector = "div#shape2 > input#jLengthRecessingAB";
    var Shape2_lengthRecessBCSelector = "div#shape2 > input#jLengthRecessingBC";

    function shape2LengthPriceCalculate() {
        var pricePerCm = $(pricePerCmSelector).val();
        var lengthAB = $(Shape2_lengthABSelector).val();
        var lengthBC = $(Shape2_lengthBCSelector).val();
        var lengthOffset = $(Shape2_lengthOffsetSelector).val();

        lengthSegmentsField.val(lengthAB + "," + lengthBC + ",0");

        if (lengthAB == "") {
            lengthAB = 0.0;
        } else {
            lengthAB = parseFloat(lengthAB);
        }

        if (lengthBC == "") {
            lengthBC = 0.0;
        } else {
            lengthBC = parseFloat(lengthBC);
        }

        if (lengthOffset == "") {
            lengthOffset = 0.0;
        } else {
            lengthOffset = parseFloat(lengthOffset);

            lengthOffsetField.val(lengthOffset);
        }

        var length = lengthAB + lengthBC;
        if ($(Shape2_lengthRecessABSelector).attr('checked')) {
            length -= 1.5;

            lengthRecessingField.val("AB");
        }
        if ($(Shape2_lengthRecessBCSelector).attr('checked')) {
            length -= 1.5;

            if (lengthRecessingField.val() != "") {
                lengthRecessingField.val(lengthRecessingField.val() + ",BC");
            } else {
                lengthRecessingField.val("BC");
            }
        }
        length -= 2*lengthOffset;

        var price = 0.00;
        if (length > 0.0) {
            price = pricePerCm * length;
        }
        price = price.toFixed(2);
        //$(lengthPriceSelector).html(price);

        totalLengthField.val(length);
        lengthPriceField.val(price);

        motorsPriceCalculate();
        bracketsPriceCalculate();
        eyeletsPriceCalculate();
    }
    
    $(Shape2_lengthABSelector).change(function() {
        shape2LengthPriceCalculate();
    });
    $(Shape2_lengthABSelector).keyup(function() {
        shape2LengthPriceCalculate();
    });
    $(Shape2_lengthBCSelector).change(function() {
        shape2LengthPriceCalculate();
    });
    $(Shape2_lengthBCSelector).keyup(function() {
        shape2LengthPriceCalculate();
    });
    $(Shape2_lengthOffsetSelector).change(function() {
        shape2LengthPriceCalculate();
    });
    $(Shape2_lengthOffsetSelector).keyup(function() {
        shape2LengthPriceCalculate();
    });
    $(Shape2_lengthRecessABSelector).change(function() {
        shape2LengthPriceCalculate();
    })
    $(Shape2_lengthRecessBCSelector).change(function() {
        shape2LengthPriceCalculate();
    })

    /**
     * Standard Double Bend Curtain Rail
     */
    var Shape3_lengthABSelector = "div#shape3 > input#jLengthAB";
    var Shape3_lengthBCSelector = "div#shape3 > input#jLengthBC";
    var Shape3_lengthCDSelector = "div#shape3 > input#jLengthCD";
    var Shape3_lengthOffsetSelector = "div#shape3 > input#jLengthOffset";
    var Shape3_lengthRecessABSelector = "div#shape3 > input#jLengthRecessingAB";
    var Shape3_lengthRecessBCSelector = "div#shape3 > input#jLengthRecessingBC";
    var Shape3_lengthRecessCDSelector = "div#shape3 > input#jLengthRecessingCD";

    function shape3LengthPriceCalculate() {
        var pricePerCm = $(pricePerCmSelector).val();
        var lengthAB = $(Shape3_lengthABSelector).val();
        var lengthBC = $(Shape3_lengthBCSelector).val();
        var lengthCD = $(Shape3_lengthCDSelector).val();
        var lengthOffset = $(Shape3_lengthOffsetSelector).val();

        lengthSegmentsField.val(lengthAB + "," + lengthBC + "," + lengthCD);

        if (lengthAB == "") {
            lengthAB = 0.0;
        } else {
            lengthAB = parseFloat(lengthAB);
        }

        if (lengthBC == "") {
            lengthBC = 0.0;
        } else {
            lengthBC = parseFloat(lengthBC);
        }

        if (lengthCD == "") {
            lengthCD = 0.0;
        } else {
            lengthCD = parseFloat(lengthCD);
        }

        if (lengthOffset == "") {
            lengthOffset = 0.0;
        } else {
            lengthOffset = parseFloat(lengthOffset);

            lengthOffsetField.val(lengthOffset);
        }

        var length = lengthAB + lengthBC + lengthCD;
        if ($(Shape3_lengthRecessABSelector).attr('checked')) {
            length -= 1.5;

            lengthRecessingField.val("AB");
        }
        if ($(Shape3_lengthRecessBCSelector).attr('checked')) {
            length -= 1.5;

            if (lengthRecessingField.val() != "") {
                lengthRecessingField.val(lengthRecessingField.val() + ",BC");
            } else {
                lengthRecessingField.val("BC");
            }
        }
        if ($(Shape3_lengthRecessCDSelector).attr('checked')) {
            length -= 1.5;

            if (lengthRecessingField.val() != "") {
                lengthRecessingField.val(lengthRecessingField.val() + ",CD");
            } else {
                lengthRecessingField.val("CD");
            }
        }
        length -= 3*lengthOffset;

        var price = 0.00;
        if (length > 0.0) {
            price = pricePerCm * length;
        }
        price = price.toFixed(2);
        //$(lengthPriceSelector).html(price);

        totalLengthField.val(length);
        lengthPriceField.val(price);

        motorsPriceCalculate();
        bracketsPriceCalculate();
        eyeletsPriceCalculate();
    }

    $(Shape3_lengthABSelector).change(function() {
        shape3LengthPriceCalculate();
    });
    $(Shape3_lengthABSelector).keyup(function() {
        shape3LengthPriceCalculate();
    });
    $(Shape3_lengthBCSelector).change(function() {
        shape3LengthPriceCalculate();
    });
    $(Shape3_lengthBCSelector).keyup(function() {
        shape3LengthPriceCalculate();
    });
    $(Shape3_lengthCDSelector).change(function() {
        shape3LengthPriceCalculate();
    });
    $(Shape3_lengthCDSelector).keyup(function() {
        shape3LengthPriceCalculate();
    });
    $(Shape3_lengthOffsetSelector).change(function() {
        shape3LengthPriceCalculate();
    });
    $(Shape3_lengthOffsetSelector).keyup(function() {
        shape3LengthPriceCalculate();
    });
    $(Shape3_lengthRecessABSelector).change(function() {
        shape3LengthPriceCalculate();
    })
    $(Shape3_lengthRecessBCSelector).change(function() {
        shape3LengthPriceCalculate();
    })
    $(Shape3_lengthRecessCDSelector).change(function() {
        shape3LengthPriceCalculate();
    })

    /**
     * Non-Standard Single Bend Curtain Rail
     */
    var Shape4_lengthABSelector = "div#shape4 > input#jLengthAB";
    var Shape4_lengthBCSelector = "div#shape4 > input#jLengthBC";
    var Shape4_lengthOffsetSelector = "div#shape4 > input#jLengthOffset";
    var Shape4_lengthRecessABSelector = "div#shape4 > input#jLengthRecessingAB";
    var Shape4_lengthRecessBCSelector = "div#shape4 > input#jLengthRecessingBC";
    var Shape4_AngleBField = $("div#shape4 > input#angleB");

    function shape4LengthPriceCalculate() {
        var pricePerCm = $(pricePerCmSelector).val();
        var lengthAB = $(Shape4_lengthABSelector).val();
        var lengthBC = $(Shape4_lengthBCSelector).val();
        var lengthOffset = $(Shape4_lengthOffsetSelector).val();

        lengthSegmentsField.val(lengthAB + "," + lengthBC + ",0");

        if (lengthAB == "") {
            lengthAB = 0.0;
        } else {
            lengthAB = parseFloat(lengthAB);
        }

        if (lengthBC == "") {
            lengthBC = 0.0;
        } else {
            lengthBC = parseFloat(lengthBC);
        }

        if (lengthOffset == "") {
            lengthOffset = 0.0;
        } else {
            lengthOffset = parseFloat(lengthOffset);

            lengthOffsetField.val(lengthOffset);
        }

        var length = lengthAB + lengthBC;
        if ($(Shape4_lengthRecessABSelector).attr('checked')) {
            length -= 1.5;

            lengthRecessingField.val("AB");
        }
        if ($(Shape4_lengthRecessBCSelector).attr('checked')) {
            length -= 1.5;

            if (lengthRecessingField.val() != "") {
                lengthRecessingField.val(lengthRecessingField.val() + ",BC");
            } else {
                lengthRecessingField.val("BC");
            }
        }
        length -= 2*lengthOffset;

        var price = 0.00;
        if (length > 0.0) {
            price = pricePerCm * length;
        }
        price = price.toFixed(2);
        //$(lengthPriceSelector).html(price);

        var nsbPremiumPercent = parseFloat(nsbPremiumField.val()) * 0.01;
        if (nsbPremiumPercent > 0.0) {
            price*= (1 + nsbPremiumPercent);
        }
        price = price.toFixed(2);
        cornerField.val(Shape4_AngleBField.val());

        totalLengthField.val(length);
        lengthPriceField.val(price);

        motorsPriceCalculate();
        bracketsPriceCalculate();
        eyeletsPriceCalculate();
    }

    $(Shape4_lengthABSelector).change(function() {
        shape4LengthPriceCalculate();
    });
    $(Shape4_lengthABSelector).keyup(function() {
        shape4LengthPriceCalculate();
    });
    $(Shape4_lengthBCSelector).change(function() {
        shape4LengthPriceCalculate();
    });
    $(Shape4_lengthBCSelector).keyup(function() {
        shape4LengthPriceCalculate();
    });
    $(Shape4_lengthOffsetSelector).change(function() {
        shape4LengthPriceCalculate();
    });
    $(Shape4_lengthOffsetSelector).keyup(function() {
        shape4LengthPriceCalculate();
    });
    $(Shape4_lengthRecessABSelector).change(function() {
        shape4LengthPriceCalculate();
    });
    $(Shape4_lengthRecessBCSelector).change(function() {
        shape4LengthPriceCalculate();
    });
    Shape4_AngleBField.change(function() {
        shape4LengthPriceCalculate();
    });
    Shape4_AngleBField.keyup(function() {
        shape4LengthPriceCalculate();
    });

    /**
     * Non-Standard Double Bend Curtain Rail
     */
    var Shape5_lengthABSelector = "div#shape5 > input#jLengthAB";
    var Shape5_lengthBCSelector = "div#shape5 > input#jLengthBC";
    var Shape5_lengthCDSelector = "div#shape5 > input#jLengthCD";
    var Shape5_lengthOffsetSelector = "div#shape5 > input#jLengthOffset";
    var Shape5_lengthRecessABSelector = "div#shape5 > input#jLengthRecessingAB";
    var Shape5_lengthRecessBCSelector = "div#shape5 > input#jLengthRecessingBC";
    var Shape5_lengthRecessCDSelector = "div#shape5 > input#jLengthRecessingCD";
    var Shape5_AngleAField = $("div#shape5 > input#angleA");
    var Shape5_AngleBField = $("div#shape5 > input#angleB");

    function shape5LengthPriceCalculate() {
        var pricePerCm = $(pricePerCmSelector).val();
        var lengthAB = $(Shape5_lengthABSelector).val();
        var lengthBC = $(Shape5_lengthBCSelector).val();
        var lengthCD = $(Shape5_lengthCDSelector).val();
        var lengthOffset = $(Shape5_lengthOffsetSelector).val();

        lengthSegmentsField.val(lengthAB + "," + lengthBC + "," + lengthCD);

        if (lengthAB == "") {
            lengthAB = 0.0;
        } else {
            lengthAB = parseFloat(lengthAB);
        }

        if (lengthBC == "") {
            lengthBC = 0.0;
        } else {
            lengthBC = parseFloat(lengthBC);
        }

        if (lengthCD == "") {
            lengthCD = 0.0;
        } else {
            lengthCD = parseFloat(lengthCD);
        }

        if (lengthOffset == "") {
            lengthOffset = 0.0;
        } else {
            lengthOffset = parseFloat(lengthOffset);

            lengthOffsetField.val(lengthOffset);
        }

        var length = lengthAB + lengthBC + lengthCD;
        if ($(Shape5_lengthRecessABSelector).attr('checked')) {
            length -= 1.5;

            lengthRecessingField.val("AB");
        }
        if ($(Shape5_lengthRecessBCSelector).attr('checked')) {
            length -= 1.5;

            if (lengthRecessingField.val() != "") {
                lengthRecessingField.val(lengthRecessingField.val() + ",BC");
            } else {
                lengthRecessingField.val("BC");
            }
        }
        if ($(Shape5_lengthRecessCDSelector).attr('checked')) {
            length -= 1.5;

            if (lengthRecessingField.val() != "") {
                lengthRecessingField.val(lengthRecessingField.val() + ",CD");
            } else {
                lengthRecessingField.val("CD");
            }
        }
        length -= 3*lengthOffset;

        var price = 0.00;
        if (length > 0.0) {
            price = pricePerCm * length;
        }
        price = price.toFixed(2);
        //$(lengthPriceSelector).html(price);

        var nsbPremiumPercent = parseFloat(nsbPremiumField.val()) * 0.01;
        if (nsbPremiumPercent > 0.0) {
            price*= (1 + nsbPremiumPercent);
        }
        price = price.toFixed(2);
        cornerField.val(Shape5_AngleAField.val() + "," + Shape5_AngleBField.val());

        totalLengthField.val(length);
        lengthPriceField.val(price);

        motorsPriceCalculate();
        bracketsPriceCalculate();
        eyeletsPriceCalculate();
    }

    $(Shape5_lengthABSelector).change(function() {
        shape5LengthPriceCalculate();
    });
    $(Shape5_lengthABSelector).keyup(function() {
        shape5LengthPriceCalculate();
    });
    $(Shape5_lengthBCSelector).change(function() {
        shape5LengthPriceCalculate();
    });
    $(Shape5_lengthBCSelector).keyup(function() {
        shape5LengthPriceCalculate();
    });
    $(Shape5_lengthCDSelector).change(function() {
        shape5LengthPriceCalculate();
    });
    $(Shape5_lengthCDSelector).keyup(function() {
        shape5LengthPriceCalculate();
    });
    $(Shape5_lengthOffsetSelector).change(function() {
        shape5LengthPriceCalculate();
    });
    $(Shape5_lengthOffsetSelector).keyup(function() {
        shape5LengthPriceCalculate();
    });
    $(Shape5_lengthRecessABSelector).change(function() {
        shape5LengthPriceCalculate();
    });
    $(Shape5_lengthRecessBCSelector).change(function() {
        shape5LengthPriceCalculate();
    });
    $(Shape5_lengthRecessCDSelector).change(function() {
        shape5LengthPriceCalculate();
    });
    Shape5_AngleAField.change(function() {
        shape5LengthPriceCalculate();
    });
    Shape5_AngleAField.keyup(function() {
        shape5LengthPriceCalculate();
    });
    Shape5_AngleBField.change(function() {
        shape5LengthPriceCalculate();
    });
    Shape5_AngleBField.keyup(function() {
        shape5LengthPriceCalculate();
    });

    /**
     * Motors & Supplies
     */
    //var isMotored = $("input#jMotored");
    var curtainWeight = $("div#jWeight");
    //var buttonTypes = $("div#jButtonTypes");

    /**
     * Price values fields
     */
    var isMotored = $("input[name='is_motored']");

    var motorPriceField = $("input[name='motor_price']");
    var smallSupplyPriceField = $("input[name='small_supply_price']");
    var largeSupplyPriceField = $("input[name='large_supply_price']");
    var buttonTypePriceField = $("input[name='button_type_price']");

    var lengthLimitField = $("input[name='length_limit']");
    var leftWeightLimit = $("input[name='left_weight_limit']");
    var rightWeightLimit = $("input[name='right_weight_limit']");

    var weightField = $("input[name='curtains_weight']");
    var lengthContactMessage = $("div#jLengthContactUs");
    var weightContactMessage = $("div#jWeightContactUs");

    //var motorsPriceOutput = $("#jMotorsPrice");
    //var motorsLogOutput = $("div#jMotorsLog");
    
    function motorsPriceCalculate() {
        var motorsPrice = 0.00;
        var totalMotors = 0;
        var totalSmallSupplies = 0;
        var totalLargeSupplies = 0;
        var totalButtons = 0;

        if (isMotored.val() == '1') {
            var totalLength = parseFloat(totalLengthField.val());
            lengthContactMessage.hide();
            weightContactMessage.hide();
            curtainWeight.hide();
            if (totalLength < parseFloat(lengthLimitField.val())) {
                curtainWeight.show();
                weightContactMessage.hide();

                var weight = 0;
                if (parseFloat(weightField.val())) {
                    weight = parseFloat(weightField.val());
                }
                var leftWeight = parseFloat(leftWeightLimit.val());
                var rightWeight = parseFloat(rightWeightLimit.val());
                if (weight <= leftWeight) {
                    totalMotors = 1;
                    totalSmallSupplies = 1;
                    totalButtons = 1;
                } else if (weight > leftWeight && weight <= rightWeight) {
                    totalMotors = 2;
                    totalLargeSupplies = 1;
                    totalButtons = 1;
                } else {
                    weightContactMessage.show();
                }
            } else {
                curtainWeight.hide();
                lengthContactMessage.show();
            }
            motorsPrice = totalMotors * motorPriceField.val() +
                          totalSmallSupplies * smallSupplyPriceField.val() +
                          totalLargeSupplies * largeSupplyPriceField.val() +
                          totalButtons * parseFloat(buttonTypePriceField.val());
            motorsPrice = motorsPrice.toFixed(2);
        }

        totalMotorsField.val(totalMotors);
        totalSmallSuppliesField.val(totalSmallSupplies);
        totalLargeSuppliesField.val(totalLargeSupplies);
        motorsPriceField.val(motorsPrice);
        /*
        motorsPriceOutput.html(motorsPrice);

        var logHtml = "";
        if (totalMotors != 0) {
            logHtml = "<strong>" + totalMotors + "</strong> motors";
            if (totalSmallSupplies != 0) {
                if (totalLargeSupplies != 0) {
                    logHtml += ", <strong>" + totalSmallSupplies + "</strong> small supplies, <strong>" + totalLargeSupplies + "</strong> large supplies";
                } else {
                    logHtml += ", <strong>" + totalSmallSupplies + "</strong> small supplies";
                }
            } else if (totalLargeSupplies != 0) {
                logHtml += ", <strong>" + totalLargeSupplies + "</strong> large supplies";
            }
        } else {
            logHtml = "<strong>0</strong> motors";
        }
        motorsLogOutput.html(logHtml);
        */
        totalPriceCalculate();
    }
    /*isMotored.change(function() {
        motorsPriceCalculate();
    });*/
    weightField.change(function() {
        motorsPriceCalculate();
    });
    weightField.keyup(function() {
        motorsPriceCalculate();
    });
    /*buttonType.change(function() {
        motorsPriceCalculate();
    });*/
    motorsPriceCalculate();

    /**
     * Brackets & Wall brackets
     */
    var bracketsFixationField = $("input[name='brackets_fixation']");

    var ceilingBracketPriceField = $("input[name='ceiling_bracket_price']");
    var singleBracketPriceField = $("input[name='single_bracket_price']");
    var doubleBracketPriceField = $("input[name='double_bracket_price']");
    var tripleBracketPriceField = $("input[name='triple_bracket_price']");
    var distanceField = $("input[name='distance_from_wall']");

    var distanceFromWallBlock = $("div#jDistanceFromWallBlock");
    var distanceContactMessage = $("div#jDistanceContactUs");

    //var bracketsPriceOutput = $("#jBracketsPrice");
    //var bracketsLogOutput = $("#jBracketsLog");

    function bracketsPriceCalculate() {
        var bracketsPrice = 0.00;
        var totalLength = parseFloat(totalLengthField.val());
        
        var bracketsNumber = Math.round(totalLength / 30);
        if (bracketsNumber * 30 < totalLength) {
            bracketsNumber += 3;
        } else {
            bracketsNumber += 2;
        }

        var bracketPrice = parseFloat(ceilingBracketPriceField.val());

        distanceFromWallBlock.hide();
        distanceContactMessage.hide();
        if (bracketsFixationField.filter(":checked").val() == "wall") {
            var wallBracketPrice = 0.00;

            distanceFromWallBlock.show();
            var distance = 0.00;
            if (distanceField.val() != "") {
                distance = parseFloat(distanceField.val());
            }
            
            if (distance > 0 && distance < 40) {
                wallBracketPrice = parseFloat(singleBracketPriceField.val());
            } else if (distance >= 40 && distance < 130) {
                wallBracketPrice = parseFloat(doubleBracketPriceField.val());
            } else if (distance >= 130 && distance <= 200) {
                wallBracketPrice = parseFloat(tripleBracketPriceField.val());
            } else {
                bracketPrice = 0.00;
                wallBracketPrice = 0.00;
                distanceContactMessage.show();
            }

            bracketsPrice = ((bracketPrice + wallBracketPrice) * bracketsNumber).toFixed(2);
        } else {
            bracketsPrice = (bracketPrice * bracketsNumber).toFixed(2);
        }

        totalBracketsField.val(bracketsNumber);
        bracketsPriceField.val(bracketsPrice);

        //bracketsPriceOutput.html(bracketsPrice);
        //bracketsLogOutput.html("<br /><strong>" + bracketsNumber + "</strong> brackets.");

        totalPriceCalculate();
    }
    distanceField.change(function() {
        bracketsPriceCalculate();
    });
    bracketsFixationField.change(function() {
        bracketsPriceCalculate();
    });
    bracketsPriceCalculate();

    /**
     * Eyelets
     */
    var eyeletPriceField = $("input[name='eyelet_price']");

    //var eyeletsPriceOutput = $("#jEyeletsPrice");
    //var eyeletsLogOutput = $("div#jEyeletsLog");

    function eyeletsPriceCalculate() {
        var totalEyelets = 0;
        var eyeletsPrice = 0.00;

        var totalLength = parseFloat(totalLengthField.val());
        if (totalLength > 0) {
            totalEyelets = parseInt(totalLength / 10) + 5;
            eyeletsPrice = totalEyelets * parseFloat(eyeletPriceField.val());
        }
        eyeletsPrice = eyeletsPrice.toFixed(2);

        totalEyeletsField.val(totalEyelets);
        eyeletsPriceField.val(eyeletsPrice);

        //eyeletsPriceOutput.html(eyeletsPrice);
        /*
        var logHtml = "";
        if (totalEyelets != 0) {
            logHtml = "<strong>" + totalEyelets + "</strong> eyelets.";
        } else {
            logHtml = "<strong>0</strong> eyelets.";
        }
        eyeletsLogOutput.html(logHtml);
        */

        totalPriceCalculate();
    }

    /**
     * Total price
     */
    function totalPriceCalculate() {
        var totalPrice = 0.00;

        if (parseFloat(lengthPriceField.val())) {
            totalPrice += parseFloat(lengthPriceField.val());
        }
        if (parseFloat(motorsPriceField.val())) {
            totalPrice += parseFloat(motorsPriceField.val());
        }
        if (parseFloat(bracketsPriceField.val())) {
            totalPrice += parseFloat(bracketsPriceField.val());
        }
        if (parseFloat(eyeletsPriceField.val())) {
            totalPrice += parseFloat(eyeletsPriceField.val());
        }

        totalPrice = totalPrice.toFixed(2);

        totalPriceField.val(totalPrice);
        $("span#jTotalPrice").html(totalPrice);
    }

    function defineOpenCurtainSide() {
        var curtainsNumberField = $("input[name='curtains_number']");
        var openCurtainSideBlock = $("div#jOpenCurtainSide");

        var curtainsNumber = 1;
        if (curtainsNumberField.attr('type') == "radio") {
            curtainsNumber = parseInt(curtainsNumberField.filter(":checked").val());
        }

        if (curtainsNumber == 1) {
            openCurtainSideBlock.show();
        } else {
            openCurtainSideBlock.hide();
        }
    }
    $("input[name='curtains_number']").change(function() {
        defineOpenCurtainSide();
    });
    defineOpenCurtainSide();

    $("a.jBasketAdd").click(function() {
        var dataContainer = $(this).parent().prev();
        var productTypeIdField = dataContainer.find("input#product_type_id");
        var quantityField = dataContainer.find("input#quantity");

        $("input[name='product_type_id']").val(productTypeIdField.val());
        $("input[name='quantity']").val(quantityField.val());

        if (parseInt($("input[name='quantity']").val()) > 0) {
            $("form#jOrderForm").submit();
        } else {
            alert("Quantity of product items must be larger than 0");
        }
    });
});
