/** * NOTICE OF LICENSE * * This source file is subject to a commercial license from Common-Services Co., Ltd. * Use, copy, modification or distribution of this source file without written * license agreement from the SARL SMC is strictly forbidden. * In order to obtain a license, please contact us: contact@common-services.com * ........................................................................... * INFORMATION SUR LA LICENCE D'UTILISATION * * L'utilisation de ce fichier source est soumise a une licence commerciale * concedee par la societe Common-Services Co., Ltd. * Toute utilisation, reproduction, modification ou distribution du present * fichier source sans contrat de licence ecrit de la part de la Common-Services Co. Ltd. est * expressement interdite. * Pour obtenir une licence, veuillez contacter Common-Services Co., Ltd. a l'adresse: contact@common-services.com * ........................................................................... * * @package So Colissimo Flexibilite * @author Alexandre D. * @copyright Copyright (c) 2011-2015 Common Services Co Ltd - 90/25 Sukhumvit 81 - 10260 Bangkok - Thailand * @license Commercial license * Support by mail : support.soflexibilite@common-services.com */ $(document).ready(function () { /* * CHANGE PHONE */ $('#sf_modify_phone').click(function () { var change_phone = prompt('Nouveau numéro de téléphone :'); change_phone = change_phone.split(' ').join('').replace(/\D/g, ''); $.ajax({ type: 'POST', url: $('#soflexibilite_save_info_commande_url').val(), dataType: 'json', data: { email: null, phone: change_phone, infoDelivery: null, cart: $('#soflexibilite_id_cart').val() }, success: function (data) { //window.console && console.log(data); if (data.status === true) { $('#sf_phone').text(betterPhoneNumber(change_phone)); typeof showSuccessMessage === 'function' && showSuccessMessage('Le numéro de téléphone a été changé avec succès !') } else { //window.console && console.log('Error', data); } }, error: function (er) { //window.console && console.log(er); var error_msg = 'Une erreur est survenue lors du changement de téléphone...'; typeof showErrorMessage === 'function' ? showErrorMessage(error_msg) : alert(error_msg); } }); }); function betterPhoneNumber(nb) { var prefix = ''; var prefix_length = 0; var ret_nb = ''; if (nb.match(/^((\+)33)/i)) { prefix = '+33 (0)'; prefix_length = 3; } else if (nb.match(/^((00)33)/i)) { prefix = '0033 (0)'; prefix_length = 4; } else if (nb.match(/^((\+)32)/i)) { prefix = '+32 (0)'; prefix_length = 3; } else if (nb.match(/^((00)32)/i)) { prefix = '0032 (0)'; prefix_length = 4; } if (prefix.length) { nb = nb.substr(prefix_length); } nb = nb.split('').reverse().join(''); var length = nb.length; for (i = 0; i < length; i += 1) { if (i % 2 === 0) { ret_nb += ' '; } ret_nb += nb[i]; } ret_nb = ret_nb.split('').reverse().join(''); return (prefix + ret_nb); } /* * CHANGE DELIVERY POINT */ $('.soflexibilite_overlay').click(function () { $('.soflexibilite_overlay').fadeOut('fast', function () { $('#so_box').fadeOut('slow'); setTimeout(resetOverlay, 300); }); }); $('#sf_address').keypress(function (e) { if (e.keyCode === 13) { e.preventDefault(); $('#sf_lookup_address').click(); } }); $('#sf_modify_relay').click(function () { $('.soflexibilite_overlay').fadeIn('fast', function () { $('#so_box').fadeIn(1000); if (typeof (sf_map) !== 'undefined' && sf_map !== null) { google.maps.event.trigger(sf_map, 'resize'); sf_map.fitBounds(sf_bounds); } }); }); var sf_customer_address = $('#sf_address').val(); var soflex_image_url = $('#sf_panel').find('img[alt="Colissimo"]').attr('src').split('img/')[0] + 'img/'; var sf_customer_lat = null; var sf_customer_lng = null; var sf_map = null; var sf_map_zoom = 14; var sf_map_options = null; var sf_customer_house = null; var sf_markers = []; var sf_info_windows = []; var sf_bounds = null; var search_address_parameters = []; var sf_mapping_relay_marker = []; var sf_icon_home = new google.maps.MarkerImage( soflex_image_url + 'home.png', null, null, null, new google.maps.Size(32, 32) ); var sf_icon_relay = new google.maps.MarkerImage( soflex_image_url + 'picto.png', null, null, null, new google.maps.Size(32, 32) ); if (typeof google.maps === 'object') { try { var geocoder = new google.maps.Geocoder(); } catch (e) { window.console && console.log('Erreur GeoCODER', e); alert($('#geocoder_failed').val()); } geocoder.geocode({'address': sf_customer_address, 'region': 'FR'}, function (results, status) { /*if (window.console) { console.log('Address : ' + sf_customer_address || 'N/A'); if (results[0]) console.log('Google Map Api value : ' + results[0].geometry.location_type); }*/ if (status === google.maps.GeocoderStatus.OK) { sf_customer_lat = parseFloat(results[0].geometry.location.lat()); sf_customer_lng = parseFloat(results[0].geometry.location.lng()); } /*else if (window.console) window.console && console.log('google.maps.GeocoderStatus != OK', status, results);*/ $.ajax({ type: 'POST', url: $('#soflexibilite_point_list_url').val(), dataType: 'json', data: { adresseRecherche: $('#sf_address1').text(), address: $('#sf_address1').text(), postcode: $('#sf_postcode').text(), city: $('#sf_city').text(), country: $('#sf_iso_country').val() }, success: function (data) { //window.console && console.log(data); if (data.status === true) { sf_bounds = new google.maps.LatLngBounds(); sf_latlng = new google.maps.LatLng(sf_customer_lat, sf_customer_lng); sf_map_options = { zoom: sf_map_zoom, center: sf_latlng, mapTypeId: google.maps.MapTypeId.ROADMAP, styles: (typeof(sf_map_style) === 'object') ? sf_map_style : null }; sf_map = new google.maps.Map(document.getElementById('sf_map'), sf_map_options); sf_relay_control_div = document.createElement('div'); setControlRelay(sf_relay_control_div); sf_relay_control_div.index = 1; sf_map.controls[google.maps.ControlPosition.LEFT_TOP].push(sf_relay_control_div); sf_customer_house = new google.maps.Marker({ map: sf_map, position: new google.maps.LatLng(sf_customer_lat, sf_customer_lng), icon: sf_icon_home }); sf_bounds.extend(sf_customer_house.position); fillPR(data.points, data.horaires, data.fermetures); } }, error: function (er) { /*if (window.console) console.log('Erreur geocoder.geocode()', er);*/ } }); }); function setControlRelay(controlDiv) { // Set CSS for the control center border. var controlCenterMap = document.createElement('div'); controlCenterMap.style.backgroundColor = '#fff'; controlCenterMap.style.border = '2px solid #fff'; controlCenterMap.style.borderRadius = '3px'; controlCenterMap.style.boxShadow = '0 2px 6px rgba(0,0,0,.3)'; controlCenterMap.style.cursor = 'pointer'; controlCenterMap.style.margin = '10px'; controlCenterMap.style.textAlign = 'left'; //controlCenterMap.title = 'Recentrer la carte et les points de retrait'; controlDiv.appendChild(controlCenterMap); // Set CSS for the control BPR interior. var controlBPRText = document.createElement('div'); controlBPRText.style.color = 'rgb(0, 0, 0)'; controlBPRText.style.fontFamily = 'Roboto, Arial, sans-serif'; controlBPRText.style.fontSize = '11px'; controlBPRText.style.padding = '8px'; controlBPRText.innerHTML = 'Bureau de poste'; controlBPRText.id = 'sf_filter_bpr'; controlCenterMap.appendChild(controlBPRText); // Set CSS for the control A2P interior. var controlA2PText = document.createElement('div'); controlA2PText.style.color = 'rgb(0, 0, 0)'; controlA2PText.style.fontFamily = 'Roboto, Arial, sans-serif'; controlA2PText.style.fontSize = '11px'; controlA2PText.style.padding = '8px'; controlA2PText.innerHTML = 'PickUp Station'; controlA2PText.id = 'sf_filter_a2p'; controlCenterMap.appendChild(controlA2PText); // Setup the click event listeners $('#so_box').delegate('#sf_filter_bpr, #sf_filter_a2p', 'click', function () { var mode = $(this).attr('id').split('_')[2].toUpperCase(); if ($(this).hasClass('sf_active')) { $('#sf_filter_bpr, #sf_filter_a2p').removeClass('sf_active'); for (var x in sf_markers) { sf_markers[x].setMap(sf_map); } } else { $('#sf_filter_bpr, #sf_filter_a2p').removeClass('sf_active'); $(this).addClass('sf_active'); for (var x in sf_markers) { if (sf_mapping_relay_marker[x] == mode) { sf_markers[x].setMap(sf_map); } else { sf_markers[x].setMap(null); } } } closeSFInfoWindows(); }); } function fillPR(points, horaires, fermetures) { deleteMarkers(); $.each(points, function (p, point) { //var point_div = $('#model-points').clone().appendTo('div#points').attr('id', 'PR' + p).attr('class', point.typeDePoint); var distance = null; var position = new google.maps.LatLng(point.coordGeolocalisationLatitude, point.coordGeolocalisationLongitude); sf_mapping_relay_marker[p] = in_array(point.typeDePoint, ['BPR', 'BDP', 'CDI']) ? 'BPR' : 'A2P'; if (point.distanceEnMetre < 1000) distance = '(env ' + point.distanceEnMetre + 'm)'; else distance = '(env ' + (point.distanceEnMetre / 1000).toFixed(2) + 'Km)'; // Markers sf_markers[p] = new google.maps.Marker({ map: sf_map, position: position, icon: sf_icon_relay }); sf_bounds.extend(sf_markers[p].position); google.maps.event.addListener(sf_markers[p], 'click', function () { closeSFInfoWindows(); sf_info_windows[p].open(sf_map, sf_markers[p]); if ($('#information-pr').is(':visible')) { $('.infoButton').click(); } }); // Info windows var content_string = '
' + '' + point.nom + '' + distance + '

' + point.adresse1 + '
' + point.codePostal + ', ' + point.localite + '
' + point.libellePays + '

' + 'Horaires :

'; content_string += ''; var horaires_ws = { lundi: point.horairesOuvertureLundi, mardi: point.horairesOuvertureMardi, mercredi: point.horairesOuvertureMercredi, jeudi: point.horairesOuvertureJeudi, vendredi: point.horairesOuvertureVendredi, samedi: point.horairesOuvertureSamedi, dimance: point.horairesOuvertureDimanche }; for (var day in horaires_ws) { horaires_ws[day] = horaires_ws[day].split(' '); if (horaires_ws[day][0] === '00:00-00:00' && horaires_ws[day][1] === '00:00-00:00') { horaires_ws[day][0] = 'Fermé'; horaires_ws[day][1] = ''; } else { if (horaires_ws[day][0] === '00:00-00:00') { horaires_ws[day][0] = ''; } if (horaires_ws[day][1] === '00:00-00:00') { horaires_ws[day][1] = ''; } } content_string += ''; } content_string += '
' + day.charAt(0).toUpperCase() + day.slice(1) + ' :   ' + horaires_ws[day][0] + '' + horaires_ws[day][1] + '


'; if (fermetures[p] === 'disabled') { content_string += 'Fermé'; } else { content_string += ''; } sf_info_windows[p] = new google.maps.InfoWindow({ content: content_string, maxWidth: 500 }); // Close when clic on map google.maps.event.addListener(sf_map, 'click', function () { sf_info_windows[p].close(); }); }); } $('#sf_lookup_address').click(function () { $('#sf_address').addClass('sf_loading'); var adresse_de_recherche = $('#sf_address').val().toUpperCase(); adresse_de_recherche = adresse_de_recherche.split('FRANCE').length > 1 ? adresse_de_recherche.split('FRANCE')[0] + 'FRANCE' : adresse_de_recherche; //window.console && window.console.log('Adresse de recherche : ' + adresse_de_recherche); geocoder.geocode({'address': adresse_de_recherche, 'region': 'fr'}, function (results, status) { if (status === google.maps.GeocoderStatus.OK) { sf_customer_lat = parseFloat(results[0].geometry.location.lat()); sf_customer_lng = parseFloat(results[0].geometry.location.lng()); codeLatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng()); setTimeout(function () { $.ajax({ type: 'POST', url: $('#soflexibilite_point_list_url').val(), dataType: 'json', data: { adresseRecherche: adresse_de_recherche, address: search_address_parameters['address'], postcode: search_address_parameters['postcode'], city: search_address_parameters['city'], country: search_address_parameters['country'] }, success: function (data) { $('#sf_address').removeClass('sf_loading'); //window.console && console.log(data); if (typeof (data) === 'undefined' || data === null || typeof (data.points) === 'undefined' || data.points === null || data.points.length === 0) $('#gmap').text('Une erreur est survenue.'); $('#sf_map *').length <= 1 && (sf_map = new google.maps.Map(document.getElementById('sf_map'), sf_map_options)); if (data.status === true) { sf_bounds = new google.maps.LatLngBounds(); sf_bounds.extend(new google.maps.LatLng(sf_customer_lat, sf_customer_lng)); sf_customer_house && sf_customer_house.setMap(null); sf_customer_house = new google.maps.Marker({ map: sf_map, position: new google.maps.LatLng(sf_customer_lat, sf_customer_lng), icon: sf_icon_home }); fillPR(data.points, data.horaires, data.fermetures); setLocationGeoCode(sf_customer_lat, sf_customer_lng); } }, error: function (e) { $('#sf_address').removeClass('sf_loading'); //window.console && console.log('error recherche adresse', e); } }); }, 800); } else { $('#sf_address').removeClass('sf_loading'); $('#gmap').html('

L\'adresse recherchée est incorrecte.

'); //window.console && console.log('google.maps.GeocoderStatus != OK', results, status); } }); }); function selectPoint(id) { //window.console && console.log('selectPoint : ' + id); $('.so-infoWindow').parent().find('img.float-right').show(); $.ajax({ type: 'POST', url: $('#soflexibilite_change_pickup_url').val(), dataType: 'json', data: { id_pickup: id, id_customer: id_customer, id_order: id_order, id_cart: $('#soflexibilite_id_cart').val() }, success: function (data) { $('.so-infoWindow').parent().find('img.float-right').hide(); //window.console && console.log(data, 'SelectPoint Succeed'); if (data.status) { window.location.reload(); } else { alert('Une erreur est survenue lors de l\'enregistrement du point de retrait, contactez le webmaster de la boutique.\n\n' + data.responseText); } }, error: function (er) { $('.so-infoWindow').parent().find('img.float-right').hide(); alert('Une erreur est survenue lors de l\'enregistrement du point de retrait, contacter le webmaster de la boutique.'); //window.console && console.log('une erreur sur selectpoint ! ' + er.debug, er); } }); } $('#sf_map').delegate('button.float-right', 'click', function () { var id_point = $(this).parent().find('.so-infoWindow').attr('rel'); selectPoint(id_point); }); function setLocationGeoCode(lat, lng) { google.maps.event.trigger(sf_map, 'resize'); sf_map.fitBounds(sf_bounds); } function closeSFInfoWindows() { for (var x in sf_info_windows) if (typeof (sf_info_windows[x]) === 'object') sf_info_windows[x].close(); } function resetOverlay() { if (typeof (infoWindow) !== 'undefined' && infoWindow !== null) for (var x in infoWindow) if (typeof (infoWindow[x]) === 'object') infoWindow[x].close(); } function deleteMarkers() { for (var x in sf_markers) if (typeof (sf_markers[x]) === 'object') sf_markers[x].setMap(null); sf_markers = []; } function codeLatLng(lat, lng) { var latlng = new google.maps.LatLng(lat, lng); geocoder.geocode({'latLng': latlng, 'region': 'fr'}, function (res, stat) { if (stat === google.maps.GeocoderStatus.OK) { if (res[0]) { var elt = res[0].address_components; var i = null; for (i in elt) { if (elt[i].types[0] === 'postal_code' || elt[i].types[0] === 'postal_code_prefix') search_address_parameters['postcode'] = elt[i].long_name; else if (elt[i].types[0] === 'locality') search_address_parameters['city'] = elt[i].long_name; else if (elt[i].types[0] === 'route') search_address_parameters['address'] = elt[i].long_name; else if (elt[i].types[0] === 'country') search_address_parameters['country'] = elt[i].short_name; } } } else { /*window.console && console.log(res, stat); alert("Erreur de geolocalisation: " + stat);*/ } }); } } else { $('#sf_modify_relay').hide(); } });