
/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


var BASE_URL = $("#BASE_URL").val();
var DOMAIN_NAME = $("#DOMAIN_NAME").val();

$(document).ready(function () {
    itemsInCart();
});



function isEmail(email) {
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return regex.test(email);
}


jQuery(document).ready(function ($) {
    //if you change this breakpoint in the style.css file (or _layout.scss if you use SASS), don't forget to update this value as well
    var $L = 1200,
            $menu_navigation = $('#main-nav'),
            $cart_trigger = $('#cd-cart-trigger'),
            $cart_trigger = $('.cd-cart-trigger'),
            $hamburger_icon = $('#cd-hamburger-menu'),
            $lateral_cart = $('#cd-cart'),
            $shadow_layer = $('#cd-shadow-layer');

    //open lateral menu on mobile
    $hamburger_icon.on('click', function (event) {
        event.preventDefault();
        //close cart panel (if it's open)
        $lateral_cart.removeClass('speed-in');
        toggle_panel_visibility($menu_navigation, $shadow_layer, $('body'));
    });

    //open cart
    $cart_trigger.on('click', function (event) {
        event.preventDefault();
        //close lateral menu (if it's open)
        $menu_navigation.removeClass('speed-in');
        toggle_panel_visibility($lateral_cart, $shadow_layer, $('body'));
    });

    //close lateral cart or lateral menu
    $shadow_layer.on('click', function () {
        $lateral_cart.removeClass('speed-in');
        $menu_navigation.removeClass('speed-in');
        $shadow_layer.removeClass('is-visible');
        $('body').removeClass('overflow-hidden');
    });

    //move #main-navigation inside header on laptop
    //insert #main-navigation after header on mobile
    move_navigation($menu_navigation, $L);
    $(window).on('resize', function () {
        move_navigation($menu_navigation, $L);

        if ($(window).width() >= $L && $menu_navigation.hasClass('speed-in')) {
            $menu_navigation.removeClass('speed-in');
            $shadow_layer.removeClass('is-visible');
            $('body').removeClass('overflow-hidden');
        }

    });
});

function toggle_panel_visibility($lateral_panel, $background_layer, $body) {
    if ($lateral_panel.hasClass('speed-in')) {
        $lateral_panel.removeClass('speed-in');
        $background_layer.removeClass('is-visible');
        $body.removeClass('overflow-hidden');
    } else {
        $lateral_panel.addClass('speed-in');
        $background_layer.addClass('is-visible');
        $body.addClass('overflow-hidden');
    }
}

function move_navigation($navigation, $MQ) {
    if ($(window).width() >= $MQ) {
        $navigation.detach();
        $navigation.appendTo('header');
    } else {
        $navigation.detach();
        $navigation.insertAfter('header');
    }
}

function closeRightSidebar() {
    $("#cd-cart").removeClass("speed-in");
    $("#cd-shadow-layer").removeClass("is-visible");
}

function itemsInCart() {
    $.post(BASE_URL + "/application/ajax/shop/itemsInCart.php", {
    }, function (data, status) {
        if (status == "success") {
            $(".cart-sidebar-container").html(data);
        }
    });
}

function shop_add_to_cart(ProductUUID, Button) {

    var Color = $("#Color :selected").val(); 
    var Quantity = $("#ProductQuantity").val();

    if(Button == "ProductList"){
        Quantity = 1;
    }
    
    if (Quantity == "0" || Quantity == "") {
        Quantity = 1;
    }

	 $.post(BASE_URL + "/shop_check_quantity", {
        ProductUUID: ProductUUID
    }, function (data, status) {
        if (status == "success") {
			
			//console.log(data);
			//return;
			
			if(data === "0"){
				
				openProductDemand(ProductUUID);
				
				
			} else {
				
				$.post(BASE_URL + "/shop_add_to_cart", {
					ProductUUID: ProductUUID,
					Color: Color,
					Quantity: Quantity
				}, function (data, status) {
					if (status == "success") {
						var n = JSON.parse(data);
						itemsInCart();
						$("#cd-cart").addClass("speed-in");
						$("#cd-shadow-layer").addClass("is-visible");
					}
				});
						
			}
			
			
//            var n = JSON.parse(data);
//            itemsInCart();
//            $("#cd-cart").addClass("speed-in");
//            $("#cd-shadow-layer").addClass("is-visible");
        }
    });

}


function shop_remove_product(ID) {
    $.post(BASE_URL + "/shop_remove_product", {
        ID: ID,
    }, function (data, status) {
        if (status == "success") {
            var n = JSON.parse(data);
            var TotalPrice = n.TotalPrice;
            var EmptyStatus = n.EmptyStatus;
            var ShopType = n.ShopType;

            $("#TotalPriceText").html(TotalPrice);
            $("#SingleProduct_" + ID).slideUp();
            //$("#NavProduct_" + ID).slideUp();

            if (EmptyStatus == "true") {
                //location.href = BASE_URL + "/prazna-kosarica";
                itemsInCart();
            }

        }
    });
}


function shop_change_quantity(ID, QuantityInput) {
    var Quantity;
    var QuantityStep;

    if (QuantityInput == "input") {
        QuantityStep = $("#" + ID).val();
        if (!$.isNumeric(QuantityStep) || QuantityStep < 1) {
            Quantity = 1;
            $("#" + ID).val(1);
        } else {
            Quantity = QuantityStep;
        }
    } else {
        Quantity = QuantityInput;
    }

    $.post(BASE_URL + "/shop_change_quantity", {
        ID: ID,
        Quantity: Quantity,
    }, function (data, status) {
        if (status == "success") {
            var n = JSON.parse(data);
            var TotalPrice = n.TotalPrice;
            var Price = n.Price;

            //$("#ProductTotalLabel_" + ID).html(Price);
            $("#TotalPriceText").html(TotalPrice);
            //$("#TotalPriceLabel2").html(TotalPrice);

        }
    });
}

function quantityValidation() {
    
    var Quantity = $(".singleQuantity").val();
    if ($.isNumeric(Quantity)) {
        if (Quantity <= 1) {
            $(".singleQuantity").val(1);
        }
    } else {
        $(".singleQuantity").val(1);
    }

}

function checkBasicData(OrderUUID) {
    var Status1;
    var Status2;

    $('input.requiredInput').each(function () {
        if (!$(this).val()) {
            Status1 = 0;
            $(this).addClass("requiredInputCheck");
        } else {
            $(this).removeClass("requiredInputCheck");
        }
    });

    if ($('#RememberMe').is(":checked"))
    {
        var RememberMe = 1;
    }else {
        var RememberMe = 0;
    }
    
    var Email = $("#Email").val();
    if (!isEmail(Email)) {
        Status2 = 0;
    } else {
        Status2 = 1;
    }

    if (Status1 != "0" && Status2 != "0") {
        $("#SectionBasicImg").show();
        $("#SectionBasic .faq-section__title").removeClass("active");
        $("#SectionBasic .faq-section__content").slideUp(400);
        $("#SectionBasic .faq-section__title i").removeClass("faq-section__opened").addClass("faq-section__closed");
        $("#SectionDelivery .faq-section__title").addClass("active");
        $("#SectionDelivery .faq-section__content").slideDown(400);
        $("#SectionDelivery .faq-section__title i").removeClass("faq-section__closed").addClass("faq-section__opened");

        var BasicData = []
        $('#BasicDataForm input').each(
                function (index) {
                    var input = $(this);
                    BasicData.push(input.val());
                }
        );

        $.post(BASE_URL + "/shop_cart_step_1", {
            BasicData: BasicData,
            OrderUUID: OrderUUID,
            RememberMe : RememberMe
        }, function (data, status) {
            if (status == "success") {
                $("#EditUserBasicBox").html(data);
                $("#EditUserBasicBox").show();
                $("#AddUserBasicBox").hide();
                $("#Step1").val("1");
            }
        });
    }
}


function cart_check_step_1() {
    var Status1;
    var Status2;
    var Status3;

    $('input.requiredInput').each(function () {
        if (!$(this).val()) {
            Status1 = 0;
            $(this).addClass("requiredInputCheck");
        } else {
            $(this).removeClass("requiredInputCheck");
        }
    });

    if ($("#PrivacyPolicy").is(":checked")) {
        Status2 = 1;
        $("#PrivacyPolicyLabel").removeClass("requiredCheckbox");
    } else {
        $("#PrivacyPolicyLabel").addClass("requiredCheckbox");
        Status2 = 0;
    }

    var Email = $("#Email").val();

    if (!isEmail(Email)) {
        Status3 = 0;
    } else {
        Status3 = 1;
    }

    if (Status1 == "0" || Status2 == "0" || Status3 == "0") {
        return false;
    } else {
        return true;
    }

}



function showDifferentAddress(e) {
    $("#DifferentAddressBox").toggle("show");
    if ($(e).is(":checked")) {
        $("#FirstnameDifferent").removeClass("requiredInput");
        $("#LastnameDifferent").removeClass("requiredInput");
        $("#AddressDifferent").removeClass("requiredInput");
        $("#PostNumberDifferent").removeClass("requiredInput");
        $("#PostDifferent").removeClass("requiredInput");
        $("#EmailDifferent").removeClass("requiredInput");
        $("#PhoneDifferent").removeClass("requiredInput");
    } else {
        $("#FirstnameDifferent").addClass("requiredInput");
        $("#LastnameDifferent").addClass("requiredInput");
        $("#AddressDifferent").addClass("requiredInput");
        $("#PostNumberDifferent").addClass("requiredInput");
        $("#PostDifferent").addClass("requiredInput");
        $("#EmailDifferent").addClass("requiredInput");
        $("#PhoneDifferent").addClass("requiredInput");
    }

}

function number_format(number, decimals, dec_point, thousands_sep) {
    // Strip all characters but numerical ones.
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
            prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
            sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
            dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
            s = '',
            toFixedFix = function (n, prec) {
                var k = Math.pow(10, prec);
                return '' + Math.round(n * k) / k;
            };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}



function cart_change_delivery(OrderUUID) {
    var DeliveryType = $("#DeliveryType").val();
    var DeliveryTypePrice = DeliveryType.split('-')[1];
    var DeliveryTypeID = DeliveryType.split('-')[0];

    var TotalPrice = parseFloat($("#TotalPrice").val());
    var Price = parseFloat(DeliveryTypePrice);
    var Discount = parseFloat($("#PromocodePrice").val());
    var NewTotal = TotalPrice + Price;

    $("#TotalPriceLabel2").html(number_format(NewTotal, 2, ",", "."));
    $("#OrderFinalPrice").val(number_format(NewTotal, 2, ".", ","));
    $("#DeliveryID").val(DeliveryTypeID);
    $("#DeliveryLabel").html(number_format(DeliveryTypePrice, 2, ",", "."));

    if (Discount != '' || Discount != '0.00') {
        var WithDiscount = NewTotal - Discount;
        $("#TotalPriceWithPromocodeLabel").html(number_format(WithDiscount, 2, ",", "."));
    }

    $.post(BASE_URL + "/shop_change_delivery", {
        OrderUUID: OrderUUID,
        DeliveryTypeID: DeliveryTypeID,
        DeliveryTypePrice: DeliveryTypePrice
    }, function (data, status) {
        if (status == "success") {
            $("#SectionDeliveryImg").show();
            $("#SectionDelivery .faq-section__title").removeClass("active");
            $("#SectionDelivery .faq-section__content").slideUp(400);
            $("#SectionDelivery .faq-section__title i").removeClass("faq-section__opened").addClass("faq-section__closed");
            $("#SectionPayment .faq-section__title").addClass("active");
            $("#SectionPayment .faq-section__content").slideDown(400);
            $("#SectionPayment .faq-section__title i").removeClass("faq-section__closed").addClass("faq-section__opened");
//            $("#EditDeliveryBox").show();
//            $("#AddDeliveryBox").hide();
//            $("#EditDeliveryBox").html(data);
        }
    });

}

function cart_add_promocode(OrderUUID) {
    var DeliveryID = $("#DeliveryID").val();
    var Promocode = $("#Promocode").val();

    if (Promocode == "") {
        $("#CartAddPromocodeBoxError").slideDown().delay(2000).slideUp();
    } else {
        $("#CartAddPromocodeBoxError").slideUp();
    }

    if (Promocode != "") {
        $.post(BASE_URL + "/cart_add_promocode", {
            OrderUUID: OrderUUID,
            DeliveryID: DeliveryID,
            Promocode: Promocode
        }, function (data, status) {
            if (status == "success") {
                var n = JSON.parse(data);
                var FinalPrice = n.FinalPrice;
                var PromocodeStatus = n.PromocodeStatus;
                var Discount = n.Discount;

                if (PromocodeStatus == "1") {
                    $("#CartAddPromocodeBoxError").slideUp();
                    $("#TotalPriceWithPromocodeLabel").html(FinalPrice);
                    $("#PromocodeBox").show();
                    $("#TotalSumBox").addClass("promocodeActive");
                    $("#PromocodeTitleLabel").html(Promocode);
                    $("#PromocodePrice").val(Discount);
                    $("#Promocode").val("");
                } else {
                    $("#CartAddPromocodeBoxError").slideDown().delay(2000).slideUp();
                }
            }
        });
    }
}

function cart_change_payment() {
    var PaymentType = $("input[name='PaymentType']:checked").val();
    $(".payment-radio-box").slideUp();
    $("#PaymentBox_" + PaymentType).slideDown();

    if (PaymentType == "CC") {
        $(".creditCardBox").slideDown();
    } else {
        $(".creditCardBox").slideUp();
    }
}

function cart_check_step_2() {
    var PaymentType = $("input[name='PaymentType']:checked").val();

    if (PaymentType == "COD" || PaymentType == "TRR") {
        $.post(BASE_URL + "/shop-cart-step-2", {
            PaymentType: PaymentType,
        }, function (data, status) {
            if (status == "success") {
                location.href = BASE_URL + "/shop-cart-success";
            }
        });
    } else {
        return false;
    }
}


//function send_contract_withdrawal() {
//    var Status1;
//    var Status2;
//    var Email = $("#Email").val();
//    var Firstname = $("#Firstname").val();
//    var Lastname = $("#Lastname").val();
//    var Phone = $("#Phone").val();
//    var OrderNumber = $("#OrderNumber").val();
//    var Body = $("#Body").val();
//
//    $('input.requiredInput').each(function () {
//        if (!$(this).val()) {
//            Status1 = 0;
//            $(this).addClass("requiredInputCheck");
//        } else {
//            $(this).removeClass("requiredInputCheck");
//        }
//    });
//
//    if (!isEmail(Email)) {
//        Status2 = 0;
//    } else {
//        Status2 = 1;
//    }
//
//    if (Status1 != "0" || Status2 != "0") {
//        $.post(BASE_URL + "/send_contract_withdrawal", {
//            Email: Email,
//            Firstname: Firstname,
//            Lastname: Lastname,
//            Phone: Phone,
//            OrderNumber: OrderNumber,
//            Body: Body
//        }, function (data, status) {
//            if (status == "success") {
//                $("#Email").val("");
//                $("#Firstname").val("");
//                $("#Lastname").val("");
//                $("#Phone").val("");
//                $("#OrderNumber").val("");
//                $("#Body").html('');
//                $("#CartAddContractBox").slideDown().delay(2000).slideUp();
//            }
//        });
//    }
//}

function changeBasicData() {
    $("#EditUserBasicBox").hide();
    $("#AddUserBasicBox").show();
}

function changeDeliveryData() {
    $("#EditDeliveryBox").hide();
    $("#AddDeliveryBox").show();
}

function shop_complete_order(OrderUUID) {
    var Status1;
    
    if ($("#PrivacyPolicy").is(":checked")) {
        Status1 = 1;
        $("#PrivacyPolicyLabel").removeClass("requiredCheckbox");
    } else {
        $("#PrivacyPolicyLabel").addClass("requiredCheckbox");
        Status1 = 0;
    }
    
    var PaymentType = $("input[name='PaymentType']:checked").val();
    var RememberMe = $('#RememberMe').val();
    
    if (Status1 == "1") {
        $.post(BASE_URL + "/check_finale_step", {
            OrderUUID: OrderUUID,
        }, function (data, status) {
            if (status == "success") {
                if (data == "true") {
                    if (PaymentType == "TRR" || PaymentType == "COD") {
                        $("#CompleteOrderError").slideUp();
                        $.post(BASE_URL + "/shop_complete_order", {
                            OrderUUID: OrderUUID,
                            PaymentType: PaymentType
                        }, function (data, status) {
                            if (status == "success") {
                                location.href = data;
                            }
                        });
                    } else if (PaymentType == "CC") {
                        $("#CompleteOrderError").slideUp();
                        event.preventDefault();

                        var Firstname = $("#Firstname").val();
                        var Lastname = $("#Lastname").val();
                        var Name = Firstname + " " + Lastname;
                        var Email = $("#Email").val();
                        var Currency = $("#Currency").val();
                        var Amount = (parseFloat($("#OrderFinalPrice").val())) * 100;
                        // Disable the button until we have Stripe set up on the page
                        document.querySelector(".StripeSubmitButton").disabled = true;
                        $("#LoadingCard").show();
                        var userCards = $('#UserCards option:selected').val();
                        var user_payment_method = {card: card};
                        var user_payment_method_id = $("#UserPaymentMethodID").val();

                        if (userCards === "1" && user_payment_method_id !== "") {
                            user_payment_method = user_payment_method_id;
                        }

                        $.post(BASE_URL + "/stripe-create-payment-intent", {
                            OrderUUID: OrderUUID,
                            Currency: "eur",
                            Amount: Amount,
                            Name: Name,
                            Email: Email
                        }, function (data, status) {
                            if (status == "success") {
                                var n = JSON.parse(data);
                                var clientSecret = n.clientSecret;
                                // Initiate the payment.
                                // If authentication is required, confirmCardPayment will automatically display a modal
                                stripeCreateForm
                                        .confirmCardPayment(clientSecret, {
                                            payment_method: user_payment_method
                                        })
                                        .then(function (result) {
                                            if (result.error) {
                                                //console.log(result);
                                                console.log("error");
                                                // Show error to your customer
                                                //showError(result.error.message);
                                                $("#card-errors").html(result.error.message);
                                                document.querySelector(".StripeSubmitButton").disabled = false;
                                                $("#LoadingCard").hide();

                                            } else {
                                                console.log("success-step2");
                                                // The payment has been processed!
                                                orderCompleted(result);
                                            }
                                            //console.log(result);
                                        });
                            }
                        });
                    } else {
                        $("#CompleteOrderError").slideUp();
                    }
                }else{
                    $("#CompleteOrderError").slideDown().delay(3000).slideUp();
                }
            }
        });
    } else {
        $("#CompleteOrderError").slideDown().delay(2000).slideUp();
    }
}

function openLoginModal() {
    $('#loginModal').toggleClass('is-visible');
    
}
function closeLoginModal() {
    $('#loginModal').toggleClass('is-visible');
}

function openDemandModal() {
    $('#demandModal').toggleClass('is-visible');
    
}
function closeDemandModal() {
    $('#demandModal').toggleClass('is-visible');
}