PageSourceSearch

https://gruponovelec.com/_ui/responsive/common/js/acc.storefinder.js

js gruponovelec.com collected 2026-09-29 16:06:56 UTC 25,570 bytes, 892 lines download raw bytes

1'use strict';
2/*globals ACC, google */
3ACC.storefinder = {
4
5	_autoload: [
6		["init", $(".js-store-finder").length !== 0],
7		["bindStoreChange", $(".js-store-finder").length !== 0 && ACC.config.themName !== 'novelec'],
8		["bindStoreChangeNovelec", $(".js-store-finder").length !== 0 && ACC.config.themName === 'novelec'],
9		["bindSearch", $(".js-store-finder").length !== 0],
10		"bindPagination",
11		["novelecGroupPageStorefinder", $(".js-novelec-group-page-storefinder").length !== 0],
12		["novelecStoreListPageStorefinder", $(".js-novelec-store-list-page-storefinder").length !== 0],
13		"columnWidth"
14
15		
16	],
17	storeData:"",
18	storeId:"",
19	coords:{},
20	storeSearchData:{},
21
22	createListItemHtml: function (data,id){
23
24		var item="";
25
26		if(ACC.config.themName !== 'novelec'){
27			item+='<li class="list__entry">';
28			item+='<input type="radio" name="storeNamePost" value="'+data.displayName+'" id="store-filder-entry-'+id+'" class="js-store-finder-input" data-id="'+id+'">';
29			item+='<label for="store-filder-entry-'+id+'" class="js-select-store-label">';
30			item+='<span class="entry__info">';
31			item+='<span class="entry__name">'+data.displayName.split("-")[0] +'</span>';
32			item+='<span class="entry__address">'+data.line1+' '+data.line2+'</span>';
33			item+='<span class="entry__city">'+data.town+'</span>';
34			item+='</span>';
35			item+='<span class="entry__distance">';
36			item+='<span>'+data.formattedDistance+'</span>';
37			item+='</span>';
38			item+='</label>';
39			item+='</li>';
40		}else {
41			item+='<li class="list__entry">';
42			item+='<input type="radio" name="storeNamePost" value="'+data.displayName+'" id="store-filder-entry-'+id+'" class="js-store-finder-input" data-id="'+id+'">';
43			item+='<label for="store-filder-entry-'+id+'" class="js-select-store-label">';
44			item+='<span class="entry__info">';
45			item+='<span class="entry__name">'+data.displayName.split("-")[0] +'</span>';
46			item+='<span class="entry__city">'+data.town+'</span>';
47			item+='<span class="entry__address">'+data.line1+' '+data.line2+'</span>';
48			item+='</span>';
49			item+='<span class="entry__distance">';
50			item+='<span>'+data.formattedDistance+'</span>';
51			item+='</span>';
52			item+='</label>';
53			item+='</li>';
54		}
55		
56		return item;
57	},
58
59	refreshNavigation: function (){
60		var listitems = "";
61		var data = ACC.storefinder.storeData;
62		
63		if(data){
64			for(var i = 0;i < data["data"].length;i++){
65				listitems += ACC.storefinder.createListItemHtml(data["data"][i],i);
66			}
67	
68			$(".js-store-finder-navigation-list").html(listitems);
69	
70			// select the first store
71			var firstInput= $(".js-store-finder-input")[0];
72			$(firstInput).click();
73		}
74
75
76		var page = ACC.storefinder.storeSearchData.page;
77		$(".js-store-finder-pager-item-from").html(page*10+1);
78
79		var to = ((page*10+10)>ACC.storefinder.storeData.total)? ACC.storefinder.storeData.total : page*10+10 ;
80		$(".js-store-finder-pager-item-to").html(to);
81		$(".js-store-finder-pager-item-all").html(ACC.storefinder.storeData.total);
82		$(".js-store-finder").removeClass("show-store");
83
84	},
85
86
87	bindPagination:function ()
88	{
89
90
91		
92		$(document).on("click",".js-store-finder-details-back",function(e){
93			e.preventDefault();
94			
95			$(".js-store-finder").removeClass("show-store");
96			
97		});
98		
99
100
101
102		$(document).on("click",".js-store-finder-pager-prev",function(e){
103			e.preventDefault();
104			var page = ACC.storefinder.storeSearchData.page;
105			ACC.storefinder.getStoreData(page-1);
106			checkStatus(page-1);
107		});
108
109		$(document).on("click",".js-store-finder-pager-next",function(e){
110			e.preventDefault();
111			var page = ACC.storefinder.storeSearchData.page;
112			ACC.storefinder.getStoreData(page+1);
113			checkStatus(page+1);
114		});
115
116		function checkStatus(page){
117			if(page===0){
118				$(".js-store-finder-pager-prev").attr("disabled","disabled");
119			}else{
120				$(".js-store-finder-pager-prev").removeAttr("disabled");
121			}
122			
123			if(page == Math.floor(ACC.storefinder.storeData.total/10)){
124				$(".js-store-finder-pager-next").attr("disabled","disabled");
125			}else{
126				$(".js-store-finder-pager-next").removeAttr("disabled");
127			}
128		}
129
130	},
131
132
133	bindStoreChange:function()
134	{
135		$(document).on("change",".js-store-finder-input",function(e){
136			e.preventDefault();
137
138			var storeData=ACC.storefinder.storeData["data"];
139
140			var storeId=$(this).data("id");
141
142			var $ele = $(".js-store-finder-details");
143			
144			var $openele = $ele.find(".js-store-openings");
145			$openele.html('');
146
147			$.each(storeData[storeId],function(key,value){
148				if(key=="image"){
149					if(value!==""){
150						$ele.find(".js-store-image").html('<img src="'+value+'" alt="" />');
151					}else{
152						$ele.find(".js-store-image").html('');
153					}
154				}else if(key=="image1" && value!==""){
155						$ele.find(".js-store-image").append('<img class="secondStoreFinderImg" src="'+value+'" alt="" />');
156				}else if(key=="productcode"){
157					$ele.find(".js-store-productcode").val(value);
158				}else if(key=="openings"){					
159					if(value!==""){
160						var $oele = $ele.find(".js-store-"+key);
161						var openings = "";
162						$.each(value,function(key2,value2){
163							openings += "<dt>"+key2+"</dt>";
164							openings += "<dd>"+value2+"</dd>";
165						});
166
167						$oele.html(openings);
168
169					}else{
170						var $oele = $ele.find(".js-store-"+key);
171						$oele.html('');
172					}
173
174				}
175				else if(key=="festivos"){
176					if(value!==""){
177						var $oele = $ele.find(".js-store-"+key);
178						var festivos = value;
179						$oele.html(festivos);
180
181					}else{
182						var $oele = $ele.find(".js-store-"+key);
183						$oele.html('');
184					}
185
186				}
187				else if(key=="specialOpenings"){}
188				else if(key=="features"){
189					var features="";
190					$.each(value,function(key2,value2){
191						features += "<li>"+value2+"</li>";
192					});
193
194					$ele.find(".js-store-"+key).html(features);
195
196				}
197				else{
198					if(value!==""){
199						$ele.find(".js-store-"+key).html(value);
200					}else{
201						$ele.find(".js-store-"+key).html('');
202					}
203				}
204
205			});
206
207
208			ACC.storefinder.storeId = storeData[storeId];
209			ACC.storefinder.initGoogleMap();
210
211		});
212
213		$(document).on("click",".js-select-store-label",function(){
214			$(".js-store-finder").addClass("show-store");
215		});
216
217		$(document).on("click",".js-back-to-storelist",function(){
218			$(".js-store-finder").removeClass("show-store");
219		});
220
221	},
222
223
224
225	initGoogleMap:function(){
226
227		if($(".js-store-finder-map").length > 0){
228			ACC.global.addGoogleMapsApi("ACC.storefinder.loadGoogleMap");
229		}
230	},
231 
232	loadGoogleMap: function(){
233
234		var storeInformation = ACC.storefinder.storeId;
235
236		if($(".js-store-finder-map").length > 0)
237		{			
238			$(".js-store-finder-map").attr("id","store-finder-map");
239			var centerPoint = new google.maps.LatLng(storeInformation["latitude"], storeInformation["longitude"]);
240			
241			var mapOptions = {
242				zoom: 14,
243				zoomControl: true,
244				panControl: true,
245				streetViewControl: false,
246				mapTypeId: google.maps.MapTypeId.ROADMAP,
247				center: centerPoint
248			};
249			
250			var map = new google.maps.Map(document.getElementById("store-finder-map"), mapOptions);
251			
252			var marker = new google.maps.Marker({
253				position: new google.maps.LatLng(storeInformation["latitude"], storeInformation["longitude"]),
254				map: map,
255				title: storeInformation["name"],
256				icon: "https://maps.google.com/mapfiles/marker" + 'A' + ".png"
257			});
258
259			if(ACC.config.themName === 'novelec'){
260				marker.icon = ACC.config.themeResourcePath + '/images/map-marker.png';
261			}
262
263			var infowindow = new google.maps.InfoWindow({
264				content: storeInformation["name"],
265				disableAutoPan: true
266			});
267			google.maps.event.addListener(marker, 'click', function (){
268				infowindow.open(map, marker);
269			});
270		}
271		
272	},
273
274
275	bindSearch:function(){
276
277		$(document).on("submit",'#storeFinderForm', function(e){
278			e.preventDefault();
279			var q = $(".js-store-finder-search-input").val();
280
281			if(q.length>0){
282				ACC.storefinder.getInitStoreData(q);
283			}else{
284				if($(".js-storefinder-alert").length<1){
285					var emptySearchMessage = $(".btn-primary").data("searchEmpty");
286					emptySearchMessage = 'Verifique que haya ingresado un código postal o nombre de lugar válido.';
287					$(".js-store-finder").hide();
288					$("#storeFinder").before('<div class="js-storefinder-alert alert alert-danger alert-dismissable" ><button class="close" type="button" data-dismiss="alert" aria-hidden="true">×</button>' + emptySearchMessage + '</div>');
289				}
290			}
291		});
292
293
294		$(".js-store-finder").hide();
295		$(document).on("click",'#findStoresNearMe', function(e){
296			e.preventDefault();
297			ACC.storefinder.getInitStoreData(null,ACC.storefinder.coords.latitude,ACC.storefinder.coords.longitude);
298		});
299
300
301	},
302
303
304	getStoreData: function(page){
305		ACC.storefinder.storeSearchData.page = page;
306		var url= $(".js-store-finder").data("url");
307		$.ajax({
308			url: url,
309			data: ACC.storefinder.storeSearchData,
310			type: "get",
311			success: function (response){
312				if (response.includes('<!DOCTYPE html>')) {
313					$(".store__finder--navigation-list, .store__finder--pagination").hide();
314					$('.store__finder--panel .store__finder--navigation').append('<div class="noResults"><p>No se encontraron resultados para esta b&uacute;squeda</p></div>');
315
316				}else{
317					$(".store__finder--navigation-list, .store__finder--pagination").show();
318					if($('.noResults').length > 0){
319						$('.noResults').remove();
320					}
321					ACC.storefinder.storeData = $.parseJSON(response);
322					ACC.storefinder.refreshNavigation();
323					if(ACC.storefinder.storeData.total < 10){
324						$(".js-store-finder-pager-next").attr("disabled","disabled");
325					}
326				}
327			}
328		});
329	},
330
331	getInitStoreData: function(q,latitude,longitude){
332		$(".alert").remove();
333		var data ={
334			"q":"" ,
335			"page":0
336		};
337		if(q !== null){
338			data.q = q;
339		}
340
341		if(latitude !== null){
342			data.latitude = latitude;
343		}
344
345		if(longitude !== null){
346			data.longitude = longitude;
347		}
348
349		ACC.storefinder.storeSearchData = data;
350		ACC.storefinder.getStoreData(data.page);
351		$(".js-store-finder").show();
352		$(".js-store-finder-pager-prev").attr("disabled","disabled");
353		$(".js-store-finder-pager-next").removeAttr("disabled");
354	},
355
356	init:function(){
357		$("#findStoresNearMe").attr("disabled","disabled");
358		if(navigator.geolocation){
359			navigator.geolocation.getCurrentPosition(
360				function (position){
361					ACC.storefinder.coords = position.coords;
362					$('#findStoresNearMe').removeAttr("disabled");
363				},
364				function (error)
365				{
366					console.log("An error occurred... The error code and message are: " + error.code + "/" 
366+ error.message);
367				}
368			);
369		}
370	},
371
372	bindStoreChangeNovelec:function()
373	{
374
375		$(document).on("change",".js-store-finder-input",function(e){
376			e.preventDefault();
377
378			var storeData=ACC.storefinder.storeData["data"];
379
380			var storeId=$(this).data("id");
381
382			var $ele = $(".js-store-finder-details").not('.js-store-finder-details--cloned');
383			
384			var $openele = $ele.find(".js-store-openings");
385			$openele.html('');
386
387			$.each(storeData[storeId],function(key,value){
388				if(key=="image"){
389					if(value!==""){
390						$ele.find(".js-store-image").html('<img src="'+value+'" alt="" />');
391					}else{
392						$ele.find(".js-store-image").html('');
393					}
394				}else if(key=="image1" && value!==""){
395						$ele.find(".js-store-image").append('<img class="secondStoreFinderImg" src="'+value+'" alt="" />');
396				}else if(key=="productcode"){
397					$ele.find(".js-store-productcode").val(value);
398				}
399				else if(key=="displayName"){
400					$ele.find(".js-store-"+key).html(value.split("-")[0]);	
401				}
402				else if(key=="openings"){					
403					if(value!==""){
404						var $oele = $ele.find(".js-store-"+key);
405						var openings = "";
406						$.each(value,function(key2,value2){
407							openings += "<dt>"+key2+"</dt>";
408							openings += "<dd>"+value2+"</dd>";
409						});
410
411						$oele.html(openings);
412
413					}else{
414						var $oele = $ele.find(".js-store-"+key);
415						$oele.html('');
416					}
417
418				}
419				else if(key=="festivos"){
420					if(value!==""){
421						var $oele = $ele.find(".js-store-"+key);
422						var festivos = value;
423
424						$oele.html(festivos);
425
426					}else{
427						var $oele = $ele.find(".js-store-"+key);
428						$oele.html('');
429					}
430				}
431				else if (key=="ggMUrl") {
432					if (value!==""){
433						$ele.find(".js-novelec-store-list-page-storefinder__url").attr('href', value);
434						console.log(value);
435						
436					} else {
437						$ele.find(".js-novelec-store-list-page-storefinder__url").attr('href','');
438					}
439				}
440				else if (key=="url_detail") {
441					if (value!==""){
442						$ele.find(".js-novelec-store-list-page-storefinder__url_detail").attr('href', value);
443						console.log(value);
444						
445					} else {
446						$ele.find(".js-novelec-store-list-page-storefinder__url_detail").attr('href','');
447					}
448				}
449				else if(key=="specialOpenings"){}
450				else if(key=="features"){
451					var features="";
452					$.each(value,function(key2,value2){
453						features += "<li>"+value2+"</li>";
454					});
455
456					$ele.find(".js-store-"+key).html(features);
457
458				}else if (key=="selfService") {
459					if(value){
460						$ele.find(".js-store-" + key).show();
461					}else{
462						$ele.find(".js-store-" + key).hide();
463					}
464				}else if (key=="genericInfo") {
465					if(value !== ""){
466						$ele.find(".js-store-"+key).html(value);
467						$ele.find(".glyphicon-info-sign").show();
468						$ele.find(".js-store-"+key).show();
469					}else{
470						$ele.find(".js-store-"+key).hide();
471						$ele.find(".glyphicon-info-sign").hide();
472					}
473				}else if(key=="mail"){
474					if(value!==""){
475						$ele.find(".js-store-"+key).attr('href', "mailto:"+value);
476						$ele.find(".js-store-"+key).attr('title', value);
477						$ele.find(".js-store-"+key).text(value);
478						$ele.find(".js-store-"+key).show();
479						$ele.find(".glyphicon-envelope").show();
480					}else{
481						$ele.find(".js-store-"+key).hide();
482						$ele.find(".glyphicon-envelope").hide();
483					}
484				}else if(key=="phone"){
485					if(value!==""){
486						$ele.find(".js-store-"+key).attr('href', "tel:"+value.replace("Telf: ",""));
487						$ele.find(".js-store-"+key).attr('title', value);
488						$ele.find(".js-store-"+key).text(value);
489						$ele.find(".js-store-"+key).show();
490						$ele.find(".glyphicon-earphone").show();
491					}else{
492						$ele.find(".js-store-"+key).hide();
493						$ele.find(".glyphicon-earphone").hide();
494					}
495				}
496				else{
497					if(value!==""){
498							$ele.find(".js-store-"+key).html(value);
499						}
500					else{
501						$ele.find(".js-store-"+key).html('');
502					}
503				}
504			});
505
506			$('.js-store-finder-details--cloned').remove();
507
508			if($(window).width() < 1024){
509				$(this).parent().append($ele.clone().addClass('js-store-finder-details--cloned'));
510			}
511			
512
513
514			ACC.storefinder.storeId = storeData[storeId];
515			ACC.storefinder.initGoogleMap();
516
517		});
518
519		$(document).on("click",".js-select-store-label",function(){
520			$(".js-store-finder").addClass("show-store");
521		});
522
523		$(document).on("click",".js-back-to-storelist",function(){
524			$(".js-store-finder").removeClass("show-store");
525		});
526
527	},
528
529	novelecGroupPageStorefinder:function(){
530		var getPosition = function (options) {
531		  return new Promise(function (resolve, reject) {
532		    navigator.geolocation.getCurrentPosition(resolve, reject, options);
533		  });
534		};
535
536		var getStores = function(position) {
537			var url= $(".js-novelec-group-page-storefinder").data("url");
538			return $.ajax({
539				url: url,
540				data: {
541					q : '',
542					show: 'All',
543					short: 'asc',
544					latitude : position.coords.latitude,
545					longitude : position.coords.longitude
546				},
547				type: "get"
548			});
549		};
550		getPosition()
551			.then(function(position){
552				getStores(position)
553				.then(function(response){
554					ACC.storefinder.storeList = $.parseJSON(response);
555					ACC.global.addGoogleMapsApi("ACC.storefinder.novelecGroupPageStorefinderInitMap");
556				});
557			})
558			.catch(function(err){
559				var position = {
560					coords : {
561						latitude: 0,
562						longitude: 0
563					}
564				};
565				getStores(position)
566				.then(function(response){
567					ACC.storefinder.storeList = $.parseJSON(response);
568					ACC.global.addGoogleMapsApi("ACC.storefinder.novelecGroupPageStorefinderInitMap");
569				});
570				console.error(err.message);
571
572				//$(".js-store-finder-map").append($('div').text('Por favor'))
573			});
574
575
576	},
577	novelecGroupPageStorefinderInitMap : function(){
578		var $container = $('.js-novelec-group-page-storefinder');
579		$(".js-store-finder-map").attr("id","store-finder-map");
580		var map;
581		var storeSearchData = ACC.storefinder.storeList.data;	
582		var centerPoint = new google.maps.LatLng(storeSearchData[0].latitude, storeSearchData[0].longitude);
583		var mapOptions = {
584			zoom: 14,
585			zoomControl: true,
586			mapTypeControl: false,
587			scaleControl: false,
588			streetViewControl: false,
589			rotateControl: false,
590			fullscreenControl: false,
591			mapTypeId: google.maps.MapTypeId.ROADMAP,
592			center: centerPoint
593		};
594
595		var $selectStore = $('.js-novelec-group-page-storefinder__select');
596		$selectStore.on('change',function(){
597			var shop = storeSearchData[this.value];
598        	var latLng = new google.maps.LatLng(shop.latitude, shop.longitude);
599        	marker.setPosition( latLng );
600    		map.panTo( latLng );
601    		buildDetail(shop);
602		});
603		map = new google.maps.Map(document.getElementById("store-finder-map"), mapOptions);
604
605		var marker = new google.maps.Marker({
606			map: map,
607			position: centerPoint,
608			icon: ACC.config.themeResourcePath + '/images/map-marker.png'
609		});
610
611		$selectStore.html('');
612		storeSearchData.forEach(function(element,  index) {   
613			// LL000534012-111
614            //$selectStore.append($("<option>").attr('value',index).attr('selected', index === 0).text(element.displayName ? element.displayName : element.name));
615			var aux = element.displayName ? element.displayName.split("-")[0] : element.name;
616			var aux2 = aux.replace("&#039;","'");
617			
618            $selectStore.append($("<option>").attr('value',index).attr('selected', index === 0).text(aux2));			
619        });
620        $selectStore.prop('disabled', false);
621        buildDetail(storeSearchData[0]);
622
623        function buildDetail(shop){
624        	$.each(shop, function(i, val) {
625        		
626				console.log(i, val);
627				var itemClass = '.js-novelec-group-page-storefinder__'+i;
628				var $element = $container.find(itemClass);
629				$element.find(".js-store-openings").html('');
630				if (i == 'image')
631				{
632					var $img = $element.find('img');
633					if($img.length !== 0){
634						$img.attr('src', shop.image);
635					}else {
636						$element.append($("<img>").attr('src', shop.image));
637					}
638				}else if(i=="image1" && val!==""){
639					var $img = $element.find('img');
640					if($img.length !== 0){
641						$img.attr('src', val);
642					}else {
643						$element.append('<img src="'+val+'" alt="" />');
644					}
645				} else if (i == 'url'){
646					$element.attr('href', shop.ggMUrl);
647				}else if (i == 'url_detail'){
648					$element.attr('href', shop.url_detail);
649				}else if (i == 'displayName'){
650					$element.html(val.split("-")[0]);
651				} else if (i == 'openings'){
652					if(val!==""){
653						var $subelement = $element.find(".js-store-"+i);
654						var openings = "";
655						$.each(val,function(key2,value2){
656							openings += "<dt>"+key2+"</dt>";
657							openings += "<dd>"+value2+"</dd>";
658						});
659						$subelement.html(openings);
660
661					}else{
662						var $subelement = $element.find(".js-store-"+i);
663						$subelement.html('');
664					}
665
666				}else if (i == 'festivos'){
667					if(val!==""){
668						var $subelement = $element.find(".js-store-"+i);			
669						var festivos = val;		
670						$subelement.html(festivos);
671					}else{
672						var $subelement = $element.find(".js-store-"+i);
673						$subelement.html('');
674					}
675				}else if (i == "selfService") {
676					if(val){
677						$container.find(".js-store-"+i).show();
678					}else{
679						$container.find(".js-store-"+i).hide();
680					}
681				}else if (i == "genericInfo") {
682					if(val !== ""){
683						$element.text(val);
684						$container.find(".glyphicon-info-sign").show();
685						$container.find(".js-store-"+i).show();
686					}else{
687						$container.find(".js-store-"+i).hide();
688					}
689				}else if(i=="mail"){
690					if(val!==""){
691						$element.attr('href', "mailto:"+val);
692						$element.attr('title', val);
693						$element.text(val);
694						$container.find(".glyphicon-envelope").show();
695						$element.show();
696					}else{
697						$element.hide();
698						$container.find(".glyphicon-envelope").hide();
699					}
700				}else if(i=="phone"){
701					if(val!==""){
702						$element.attr('href', "tel:"+val.replace("Telf: "),"");
703						$element.attr('title', val);
704						$element.text(val);
705						$element.show();
706						$container.find(".glyphicon-earphone").show();
707					}else{
708						$element.hide();
709						$container.find(".glyphicon-earphone").hide();
710					}
711				}else {
712					// LL000534012-111
713					//$element.text(val);
714					var aux = val.replace("&#039;","'");					
715					$element.text(aux);
716				}
717			});
718        }
719
720	},
721	novelecStoreListPageStorefinder:function(){
722		var getPosition = function (options) {
723		  return new Promise(function (resolve, reject) {
724		    navigator.geolocation.getCurrentPosition(resolve, reject, options);
725		  });
726		};
727
728		var getStores = function(position) {
729			var url= $(".js-novelec-store-list-page-storefinder").data("url");
730			return $.ajax({
731				url: url,
732				data: {
733					q : '',
734					show: 'All',
735					short: 'asc',
736					latitude : position.coords.latitude,
737					longitude : position.coords.longitude
738				},
739				type: "get"
740			});
741		};
742		getPosition()
743			.then(function(position){
744				getStores(position)
745				.then(function(response){
746					ACC.storefinder.storeList = $.parseJSON(response);
747					ACC.global.addGoogleMapsApi("ACC.storefinder.novelecStoreListPageStorefinderInitMap");
748				});
749			})
750			.catch(function(err){
751				var position = {
752					coords : {
753						latitude: 0,
754						longitude: 0
755					}
756				};
757				getStores(position)
758				.then(function(response){
759					ACC.storefinder.storeList = $.parseJSON(response);
760					ACC.global.addGoogleMapsApi("ACC.storefinder.novelecStoreListPageStorefinderInitMap");
761				});
762				console.error(err.message);
763
764				//$(".js-store-finder-map").append($('div').text('Por favor'))
765			});
766
767	},
768	novelecStoreListPageStorefinderInitMap : function(){
769		var $container = $('.js-novelec-store-list-page-storefinder');
770		$(".js-store-finder-map").attr("id","store-finder-map");
771		var map;
772		var storeSearchData = ACC.storefinder.storeList.data;	
773		var centerPoint = new google.maps.LatLng(storeSearchData[0].latitude, storeSearchData[0].longitude);
774		var mapOptions = {
775			zoom: 14,
776			zoomControl: true,
777			mapTypeControl: false,
778			scaleControl: false,
779			streetViewControl: false,
780			rotateControl: false,
781			fullscreenControl: false,
782			mapTypeId: google.maps.MapTypeId.ROADMAP,
783			center: centerPoint
784		};
785
786		var $inputStore = $('.js-select-store-input');
787		$inputStore.on('change',function(){
788			var shop = storeSearchData[this.value];
789        	var latLng = new google.maps.LatLng(shop.latitude, shop.longitude);
790        	marker.setPosition( latLng );
791    		map.panTo( latLng );
792    		buildDetail(shop);
793		});
794
795		map = new google.maps.Map(document.getElementById("store-finder-map"), mapOptions);
796
797		var marker = new google.maps.Marker({
798			map: map,
799			position: centerPoint,
800			icon: ACC.config.themeResourcePath + '/images/map-marker.png'
801		});
802		
803        buildDetail(storeSearchData[0]);
804
805        function buildDetail(shop){
806        	$.each(shop, function(i, val) {
807				console.log(i, val);
808				var itemClass = '.js-novelec-store-list-page-storefinder__'+i;
809				var $element = $container.find(itemClass);
810				$element.find(".js-store-openings").html('');
811				if (i == 'image')
812				{
813					var $img = $element.find('img');
814					if($img.length !== 0){
815						$img.attr('src', shop.image);
816					}else {
817						$element.append($("<img>").attr('src', shop.image));
818					}
819				}else if(i=="image1" && val!==""){
820					$element.append('<img src="'+val+'" alt="" />');
821				} else if (i == 'url'){
822					$element.attr('href', shop.ggMUrl);
823				} else if (i == 'url_detail'){
824					$element.attr('href', shop.url_detail);
825				} else if (i == 'openings'){
826					if(val!==""){
827						var $subelement = $element.find(".js-store-"+i);
828						var openings = "";
829						$.each(val,function(key2,value2){
830							openings += "<dt>"+key2+"</dt>";
831							openings += "<dd>"+value2+"</dd>";
832						});
833						$subelement.html(openings);
834
835					}else{
836						var $subelement = $element.find(".js-store-"+i);
837						$subelement.html('');
838					}
839
840				}else if(i=="festivos"){
841					if(val!==""){
842						var $subelement = $element.find(".js-store-"+i);
843						
844						var festivos = val;					
845						
846						$subelement.html(festivos);
847					}else{
848						var $subelement = $element.find(".js-store-"+i);
849						$subelement.html('');
850					}
851
852				}else if(i=="mail"){
853					if(val!==""){
854						$element.attr('href', "mailto:"+val);
855						$element.attr('title', val);
856						$element.text(val);
857						$container.find(".glyphicon-envelope").show();
858						$element.show();
859					}else{
860						$element.hide();
861						$container.find(".glyphicon-envelope").hide();
862					}
863				}else if(i=="phone"){
864					if(val!==""){
865						$element.attr('href', "tel:"+val.replace("Telf: ",""));
866						$element.attr('title', val);
867						$element.text(val);
868						$container.find(".glyphicon-earphone").show();
869						$element.show();
870					}else{
871						$element.hide();
872						$container.find(".glyphicon-earphone").hide();
873					}
874				} else {
875					// LL000534012-111
876					//$element.text(val);
877					if (typeof val === 'string'){
878						var aux = val.replace("&#039;","'");					
879						$element.text(aux);
880					}
881				}
882			});
883        }
884
885	},
886
887	   columnWidth: function () {
888        if (jQuery('.stores-list').children('li').length > 100){
889            jQuery('.stores-list').css('column-width', '300px');
890        }
891    }
892};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.