﻿//
// TimeLine Script Javascript File
//

var NewPlace = {}; NewPlace.name = 'NONE';
var NewPlaceAction = function () { };
var NewApt;
var placeSearch;
var autocomplete;
var autocompletePopUp;

function pfInitializeMapAutoFill() {

    try {

        autocomplete = new google.maps.places.Autocomplete((document.getElementById('AddressTextLine')), {
            types: ['address'],
            componentRestrictions: { country: 'us' }
            //bounds: defaultBounds
        });
        autocomplete.setFields(['address_components', 'geometry', 'icon', 'name', 'types']);
        google.maps.event.addListener(autocomplete, 'place_changed', function () { fillInAddress(); });

        autocompletePopUp = new google.maps.places.Autocomplete((document.getElementById('PopAddressTextLine')), {
            types: ['address'],
            componentRestrictions: { country: 'us' }
            //bounds: defaultBounds
        });
        autocompletePopUp.setFields(['address_components', 'geometry', 'icon', 'name', 'types']);
        google.maps.event.addListener(autocompletePopUp, 'place_changed', function () { fillInAddressPopUp(); });


    } catch (err) {
        alert('pfInitializeMapAutoFill:Error:' + err);
    }

}

function pfGeolocate() {
    try {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(function (position) {
                var geolocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
                var circle = new google.maps.Circle({
                    center: geolocation,
                    radius: position.coords.accuracy
                });
                autocomplete.setBounds(circle.getBounds());
            });
        }
    } catch (err) {
        alert('pfGeolocate:Error:' + err);
    }
}


function pfPopGeolocate() {

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function (position) {
            var geolocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
            var circle = new google.maps.Circle({
                center: geolocation,
                radius: position.coords.accuracy
            });
            autocompletePopUp.setBounds(circle.getBounds());
        });
    }
}


function pfPopUpdateAddress() {
    NewPlace = $('#PopAddressTextLine').val();
    $("#pfModalAddress").modal('hide');
    pfUpdateSettings('manualplace')
}


function fillInAddress() {
    // Process search results here
    // Send 'place' object to PF server for parsing
    // If it contains 'name', then google it
    // If it contains 'address_conponents', then process the google result
    // If it is legitimate, it will be saved to the current order address 
    // Options:   GotoPage: MyOrder unless function provided
    NewPlace = autocomplete.getPlace();
    //NewApt = '';
    //console.log(JSON.stringify(NewPlace));
    pfUpdateSettings('place');
}


function fillInAddressPopUp() {
    NewPlace = autocompletePopUp.getPlace();
    $('#pfModalAddress').modal('hide');
    pfUpdateSettings('place');

        
    //var componentForm = {
    //    street_number: 'short_name',
    //    route: 'long_name',
    //    locality: 'long_name',
    //    administrative_area_level_1: 'short_name',
    //    country: 'long_name',
    //    postal_code: 'short_name'
    //};

    // Get each component of the address from the place details
    // and fill the corresponding field on the form.
    //alert("Z:" + JSON.stringify(NewPlace.address_components));
    //for (var i = 0; i < NewPlace.address_components.length; i++) {
    //    var addressType = NewPlace.address_components[i].types[0];
    //    if (componentForm[addressType]) {
    //        var val = NewPlace.address_components[i][componentForm[addressType]];
    //        if (addressType == 'postal_code') {
    //            $("#pfZipCode").val(val);
    //        } else if (addressType == 'locality') {
    //            $("#pfCity").val(val);
    //        } else if (addressType == 'administrative_area_level_1') {
    //            $("#pfState").val(val);
    //        }
    //    }
    //}
}


$("input#autocompletePopUp").focusin(function () {
    try {
        $(document).keypress(function (e) {
            if (e.which == 13) {
                var firstResult = $(".pac-container .pac-item:first").text();
                var geocoder = new google.maps.Geocoder();
                geocoder.geocode({ "address": firstResult }, function (results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        $("#autocompletePopUp").val(firstResult);
                        $('#pfModalAddress').modal('hide');
                        NewPlaceAction();
                    }
                });
            }
        });
    } catch (err) {
        alert('input#autocompletePopUp:Error:' + err);
    }
});


$("input#autocomplete").focusin(function () {
    try {
        $(document).keypress(function (e) {
            if (e.which == 13) {
                var firstResult = $(".pac-container .pac-item:first").text();
                var geocoder = new google.maps.Geocoder();
                geocoder.geocode({ "address": firstResult }, function (results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        $("#autocomplete").val(firstResult);
                        fillInAddress();
                        NewPlaceAction();
                    }
                });
            }
        });
    } catch (err) {
        alert('input#autocomplete:Error:' + err);
    }
});


function pfEditAddress() {
    if (pfHotelID > 0) {
        pfAppleSpinOn('Loading');
        pfPost({
            type: "POST", url: pfUrl, dataType: 'json',
            data: '{"OPERATION":"LOADHOTEL" , "NEEDITEM":"' + pfNeedItem + '"}',
            error: function (request, status, error) {
                pfAppleSpinOff();
                var jsonError = jQuery.parseJSON(request.responseText);
                alert('ERROR: ' + jsonError.ERROR);
                $('#pfModalHotel').modal('hide');
            },
            success: function (data) {
                pfAppleSpinOff(); var x = data.HOTEL;
                $('#pfModalHotelInfo').html('<b>' + x.HOTELNAME + '</b><br>' + x.ADDRESSLINE1 + '<br>' + x.ADDRESSLINE2);
                $('#pfHotelRoom').val(x.HOTELROOM); $('#pfHotelPhone').val(x.HOTELPHONE);
                try { $('#pfHotelFirstName').val(x.HOTELFIRSTNAME); $('#pfHotelLastName').val(x.HOTELLASTNAME); $('#pfHotelEmail').val(x.HOTELEMAIL); }
                catch (err) { }
                $('#pfModalHotel').modal();
            }
        });
    } else if (pfCustomerStatus !== 'LoggedIn') {
        $('#pfAddressOfferLogin').show();
        $('#pfAddressListSection').hide();
        $('#pfModalAddress').modal();

    } else {
        $('#pfAddressOfferLogin').hide();
        $('#pfAddressListSection').show();
        $('#pfModalAddress').modal();
        pfAppleSpinOn('Loading');
        pfPost({
            type: "POST", url: pfUrl, dataType: 'json',
            data: '{"OPERATION":"LOADADDRESS" , "NEEDITEM":"' + pfNeedItem + '"}',
            error: function (request, status, error) {
                pfAppleSpinOff();
                var jsonError = jQuery.parseJSON(request.responseText);
                pfalert('ERROR: ' + jsonError.ERROR);
                $('#pfModalAddress').modal('hide');
            },
            success: function (data) {
                pfAppleSpinOff();
                var temp = '';
                NewPlace = {};
                var x = data.ADDRESS.ADDRESS
                //$('#pfFullAddress').val(x.STREET);
                pfPopulateAddressList(data.ADDRESS);
            }
        });
    }
}


