var _location;
var fp_location;
var _current_membercode;
$(document).ready(function(){
    
    _location = new FPLocation();
    var col = new Array("at_shop","at_pickup","at_delivery","at_time","at_delivery_lat","at_delivery_lon","delivery_address");
    fp_location = new TableAction("fp_location","boba","fp_location",col);
    fp_location.preInitMap=function(element){
        var lat = Number(this.get("at_delivery_lat"));
        var lon = Number(this.get("at_delivery_lon"));
        var addr = this.get("at_delivery_address");
        if(lat==0 || lon==0){
            return;
        }
        _sgps.setClickMarkerEnabled(false);
        _sgps.setZoom(4);
        _sgps.setPosition(lat,lon,addr);
        _sgps.setTitle('');
        _sgps.setPlaceHolder("Type your address");
    };

    $("#fp_location_name, #fp_location_at_pickup_car_brand, #fp_location_at_pickup_car_description, #fp_location_at_shop_table, #coupon_code").on("click",function(){
        virtual_text(this);
    });

    $("#fp_location_phone").on("click",function(){
        virtual_phone(this);
    });

    $("#fp_location_at_pickup_car").on("change",function(){
        if($(this).val()=="1"){
            $("#fp_location_at_pickup_car_brand").prop('disabled', false);
            $("#fp_location_at_pickup_car_description").prop('disabled', false);
            $(".fp_location_at_pickup_car_brand").show();
            $(".fp_location_at_pickup_car_description").show();
        }else{
            $("#fp_location_at_pickup_car_brand").val("");
            $("#fp_location_at_pickup_car_description").val("");
            $("#fp_location_at_pickup_car_brand").prop('disabled', true);
            $("#fp_location_at_pickup_car_description").prop('disabled', true);
            $(".fp_location_at_pickup_car_brand").hide();
            $(".fp_location_at_pickup_car_description").hide();
        }
    });
    fp_location.opening_trigger = function(){

    }
    fp_location.selected = function(json){
        fp_location.set("at_delivery_lat",json['latitude']);
        fp_location.set("at_delivery_lon",json['longitude']);
        fp_location.set("at_delivery_address",json['address']);
        fp_location.set("at_delivery_distance",distance);   
        
        let location_lat = Number($("#location_lat").val());
        let location_lon = Number($("#location_lon").val());
        let location_max_mile = $("#location_max_mile").val();
        let location_per_mil = $("#location_per_mil").val();
        let location_warning_title = $("#location_warning_title").val();
        let location_warning_content = $("#location_warning_content").val();
        var price = 0;
        var distance = 0;
        
        var boba_start_lat = Number($("#fp_location_boba_start_lat").val());
        var boba_start_lon = Number($("#fp_location_boba_start_lon").val());
        

        _sgps.route_direction(location_lat,location_lon,Number(json['latitude']),Number(json['longitude']),function(sdistance){
            console.log(boba_start_lat);
            console.log(boba_start_lon);
            console.log(location_lat);
            console.log(location_lon);
            console.log(sdistance);
            console.log("DARI GOOGLE "+sdistance);
            distance = Number(sdistance.replace(" mi",""));

            console.log("REMOVE MI "+distance);

            if(location_max_mile!=0){
                //distance = haversine(location_lat,location_lon,Number(json['latitude']),Number(json['longitude']),true);
                if(distance>location_max_mile){
                    alert(location_warning_title+" \n"+location_warning_content);
                    return;
                }else{
                    showLoading();
                    dx = fp_location.getRegulerData();
                    dx['action'] = "get_delivery_price_uber";
                    dx['longitude'] = json['longitude'];
                    dx['latitude'] =json['latitude'];
                    dx['address'] =json['address'];
                    dx['phone'] =$("#fp_location_phone").val();
                    dx['total'] = getSubTotal();
                    $.post("",dx,function(res){
                        let px = getContent(res);
                        if(px.status=="1"){
                            fp_location.set("at_delivery_uber_quote_id",px.id_quote);
                            price = px.fee/100;
                            fp_location.set("at_delivery_price",price.toFixed(2));
                            if(px.fee>0){     
                                var total_price = Number(getSubTotal());
                                var discount_delivery = Math.floor(total_price/5);
                                price = price - discount_delivery;
                                var fredeliv = 4;
                                    if(distance>2){
                                        fredeliv = fredeliv*5 + (distance - 2)*5;
                                    }else{
                                        fredeliv = fredeliv*5;
                                    }
                                    var newprice = fredeliv - total_price;
                                    setTimeout(function(){
                                        showFullWarning("Free Delivery "+distance.toFixed(2)+" miles ($"+price.toFixed(2)+")","You're just $"+newprice.toFixed(2)+" away from free delivery! Add more items or continue with our low delivery fee of $"+price.toFixed(2),"normal_model","<a href='#' onclick='hideWarning()' class='btn btn-danger'>Ok</a>",true)
                                    },2000);
                                }else{
                                    price=0;
                                    setTimeout(function(){
                                        showFullWarning("Free Delivery","Congratulation you get Free Delivery","normal_model","<a href='#' onclick='hideWarning()' class='btn btn-danger'>Ok</a>",true)
                                    },2000);

                            }
                            fp_location.set("at_delivery_price",price.toFixed(2));
                            AT_DELIVERY_PRICE  = Number(price.toFixed(2));
                            reload_cart();
                        }else{
                            fp_location.set("at_delivery_uber_quote_id","");
                            fp_location.set("at_delivery_price","0");
                            smis_alert("Problem",px.msg,"alert-danger");
                            fp_location.set("at_delivery_price",0);
                            AT_DELIVERY_PRICE  = 0;
                            reload_cart();
                        }
                        dismissLoading();
                    });
                }
            }
        });
    }

    fp_location.pick_loc = function(elm,e){
        console.log(elm);
        this.set("at_shop",0);
        this.set("at_pickup",0);
        this.set("at_delivery",0);
        $("#pick-shop, #pick-delivery").removeClass("active");

        
        $(".location-header div").removeClass("active");
        $(".at-shop, .at-pickup, .at-delivery").hide(); //todo disabled when ready
        $(".at-shop, .at-pickup, .at-delivery").removeClass("active");
        $(".at-"+elm).show();

        if(elm=="pickup"){

            if($("#fp_location_at_pickup_car").val()=="1"){
                $(".fp_location_at_pickup_car_brand").show();
                $(".fp_location_at_pickup_car_description").show();
            }else{
                $(".fp_location_at_pickup_car_brand").hide();
                $(".fp_location_at_pickup_car_description").hide();
            }
        }else if(elm=='shop'){
            $(".fp_location_at_time label").html("Desire Pickup Time");
        }else if(elm=="delivery"){
            $(".fp_location_at_time label").html("Desire Delivery Time");
        }

        $(e).addClass("active");
        this.set("at_"+elm,1);

        
        var d = {
            page:"boba",
            action:"get_schedule_time",
            at_shop:$("#fp_location_at_shop").val(),
            at_delivery:$("#fp_location_at_delivery").val(),
            at_pickup:$("#fp_location_at_pickup").val()
        }
        $('#fp_location_at_time').val('');
        if($("#fp_location_at_delivery").val()=="1"){
            $("#fp_location_at_time").attr("placeholder","40 Mins  or Asap");
        }else{
            $("#fp_location_at_time").attr("placeholder","10 Mins  or Asap");
        }
        $.post("",d,function(res){
            var j = getContent(res);
            if(j!=null){
                mdtimepicker('#fp_location_at_time', 'setMinTime', j.start);
                mdtimepicker('#fp_location_at_time', 'setMaxTime', j.end);
            }
        });
    }

    $("#fp_location_phone").mask("(000) 000-0000");
    $('#fp_location_phone').keypress(function(event){
        if(event.which != 8 && isNaN(String.fromCharCode(event.which))){
            event.preventDefault(); //stop character from entering input
        }
    });
});

function fp_register_pop_up(){
    QUICK_REGISTRATION = 1;
    load_menu(this,'fp-register');
    $(".location-container .bgh-footer").hide();
    $("#fp-non-orders").addClass("popup");
}

function skip_registration(){
    QUICK_REGISTRATION = 0;
    $("#next-user").show();   
    $("#fp-membership-offer").hide();
    $("#location-input-container").show();
}


function fp_login_pop_up(){
    QUICK_REGISTRATION = 1;
    load_menu(this,'fp-users');
    $(".location-container .bgh-footer").hide();
    $("#fp-non-orders").addClass("popup");
}


function scan_membership_payment(bcode){
    $("#fp_location_membership_barcode").val(bcode);
    var data = boba.getRegulerData();
    data['barcode_mebership'] = bcode;
    data['action'] = "get_membership_by_barcode";
    showLoading();
    $.post("",data,function(res){
        var json = getContent(res);
        if(json!=null){
            $("#fp_location_name").val(json.name);
            $("#fp_location_phone").val(json.phone);
            if(json.name!="" && json.phone!=""){
                $("#fp-membership-offer").hide();
            }else{
                $("#fp-membership-offer").show();
            }
        }else{
            $("#fp-membership-offer").show();
        }
        dismissLoading();
    });
}



function haversine(lat1,lon1,lat2,lon2,is_miles=false){
     var R = 6371; // km 
     //has a problem with the .toRad() method below.
     var x1 = lat2-lat1;
     var dLat = x1 * Math.PI / 180;  
     var x2 = lon2-lon1;
     var dLon = x2 * Math.PI / 180;  
     var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
                     Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * 
                     Math.sin(dLon/2) * Math.sin(dLon/2);  
     var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
     var d = R * c; 
     if(is_miles){
         d = d/1.60934;
     }
     return d;
}