Order = {
    // Polozky dorucovaci adresy
    deliveryAddressItems: ["id_address", "dname", "dsurname", "dcompany", "dstreet", "dtown", "dzipcode", "dcell_phone"],

    requiredDeliveryAddressItems: ["dname", "dsurname", "dstreet", "dtown", "dzipcode"],

    // Fakturacni pole
    cVals: ["name", "surname", "ICO", "DIC", "company", "street", "zipcode", "town", "id_country"],

    initAddressValidation: function () {
        ValidatorExtensions.addExtendedMethods();

        $("input[name=basket_address_submitak]").click(function () {
            if ($("#same_address").is(":checked")) {
                Order.copyAddress();
            }
        });

        // Volba stejne adresy
        if ($("#same_address").is(":checked")) {
            $("#deliveryAddress").hide();
            this.requireDeliveryAddress(false);
        }

        this.setAddressValidation();

        // Oznaceni povinnych poli hvezdickou
        ValidatorExtensions.markRequiredFields("input.required, select.required");

        $("#same_address").click(function() {
            if ($("#same_address").is(":checked")) {
                Order.requireDeliveryAddress(false);
                $("#deliveryAddress").hide(700);
            }
            else {
                Order.requireDeliveryAddress(true);
                $("#deliveryAddress").show(900);
            }
        });
    },

    // Zkopirovani adresy fakturacni do dodaci
    copyAddress: function() {
        $.each(Order.cVals, function(i, value) {
            $("#d" + value).val($("#" + value).val());
        });
    },

    // Nastaveni povinne dodaci adresy
    requireDeliveryAddress: function(isRequired){
        $(Order.requiredDeliveryAddressItems).each(function (i, elem) {
            if (isRequired) {
                $("#" + elem).addClass("required");
            }else {
                $("#" + elem).removeClass("required");
            }
        });
        
        this.setAddressValidation();
    },

    // Nastaveni validace adresy
    setAddressValidation: function() {
        $("#order").removeData("validator");
        $("#order").validate({
            errorContainer: $(".errorContainer"),
            errorElement: "span"
        });
    },

    // Inicializace souhrnu
    initSummary: function () {
        $("input[name=order_submitak_3]").click(function(evt) {
//            if (!$("#shop_terms").is(":checked")) {
//                msgBox(Dict.agreeRequired);
//                return false;
//            }
            return true;
        });
    },

    // Zmena oznameni o poctu zbyvajicich znaku k napsani
    changeRemainedCharacterCount: function (maxLength) {
        var recipientMsg = $("#recipient_msg").val();
        var remainingChars = eval(maxLength) - recipientMsg.length;

        if (remainingChars < 0) {
            msgBox(Dict.messageTooLong);
            $("#recipient_msg").val($("#recipient_msg").val().slice(0, maxLength));
        }
        else {
            $("#remaining_chars").html(remainingChars);
        }
    },

    // Overeni souhlasu s obchodnimi podminkami
    verifyAgreeWithTerms: function() {
        if (!$("#agree_with_terms").is(":checked")) {
            msgBox(Dict.agreeRequired);
            return false;
        }

        return true;
    },

    verifyCustomerOrderNumber: function() {
        var customer_order_number = $("#customer_order_code").val();
        var testPattern = new RegExp('^[0-9a-zA-Z]*$', 'g');

        if (!testPattern.test(customer_order_number))
        {
            msgBox(Dict.insertValidOrderId)
            return false;
        }

        return true;
    },

    verifyVoucher: function () {
        var useVouchers = $("#use_vouchers").is(":checked");
        var voucher_uniq_id = $("#voucher_uniq_id").val();

        if ((useVouchers == true) && (voucher_uniq_id.length != 13)) {
            msgBox(Dict.reqVoucherId);
            return false;
        }

        return true;
    },

    verifyPayment: function () {
        if ($("input[name^=id_payment_type]").length == 0) {
            return true;
        }
        else if ($("input[name^=id_payment_type] :checked").length == 0) {
            msgBox(Dict.reqPayment);
            return false;
        }

        return true;
    },

    verifyShipping: function() {
        if ($("input[name^=id_shipping_type]").length == 0) {
            return true;
        }
        else if ($("input[name^=id_shipping_type] :checked").length == 0) {
            msgBox(Dict.reqShipping);
            return false;
        }

        return true;
    },

    localGetVoucherValue: function() {
        var useVouchers = $("#use_vouchers");
        var voucherUniqId = $("#voucher_uniq_id");

        if (useVouchers.size() == 0 || voucherUniqId.size() == 0) {
            return;
        }

        var isUseVouchers = $(useVouchers).is(":checked") ? 1 : 0;
        var voucherCode = $(voucherUniqId).val();

        if (voucherCode.indexOf("'") > - 1 || voucherCode.indexOf("\"") > -1) {
            return;
        }

        $.get(url + "inc/ajax/avoucher.php",
        {
            use_voucher: isUseVouchers,
            uniq_id: voucherCode
        },
        function (data) {
            $("#voucher_value_block").html(data);
        });
    },

    enableVouchers: function () {
        var useVouchers = document.getElementById('use_vouchers');
        var usePoints = document.getElementById('use_points');
        var useDiscountCard = document.getElementById('use_discount_card');
        useVouchers.checked = true;
        useVouchers.disabled = false;
        usePoints.checked = false;
        usePoints.disabled = true;
        useDiscountCard.checked = false;
        useDiscountCard.disabled = true;
    },

    enableDiscountCards:function () {
        var useVouchers = document.getElementById('use_vouchers');
        var usePoints = document.getElementById('use_points');
        var useDiscountCard = document.getElementById('use_discount_card');
        useVouchers.checked = false;
        useVouchers.disabled = true;
        usePoints.checked = false;
        usePoints.disabled = true;
        useDiscountCard.checked = true;
        useDiscountCard.disabled = false;
    },

    enablePoints: function() {
        var useVouchers = document.getElementById('use_vouchers');
        var usePoints = document.getElementById('use_points');
        var useDiscountCard = document.getElementById('use_discount_card');
        useVouchers.checked = false;
        useVouchers.disabled = true;
        usePoints.checked = true;
        usePoints.disabled = false;
        useDiscountCard.checked = false;
        useDiscountCard.disabled = true;
    },

    disableOther: function(obj) {
        var opt = new Array('use_points', 'use_vouchers', 'use_discount_card');
        for(i = 0; i < opt.length; i++) {
            if(opt[i] != obj.id) {
                other = document.getElementById(opt[i]);
                if(other != null) {
                    other.disabled = obj.checked;
                }
            }
        }
    },

    // Zmena dorucovaci adresy
    changeDeliveryAddress: function()  {
        var idAddress = $("#select_delivery_address").val();

        if(idAddress > 0)
        {
            $.get(url + "inc/ajax/adeliveryaddress.php",
            {
                id_address: idAddress
            },
            function (data) {
                result = data.split("|");

                Order.deliveryAddressItems.each(function(i, val) {
                    $("#" + val).val(result[i])
                });
            });
        }
        else
        {
            this.deliveryAddressItems.each(function (i, val) {
                $("#" + val).val("");
            });
        }
    }
};
