PageSourceSearch

https://www.tierrasdelcid.es/include/funciones.js?1790287200

js tierrasdelcid.es collected 2026-10-02 12:40:31 UTC 24,274 bytes, 639 lines download raw bytes

1var $j = jQuery.noConflict();
2
3function adaptarFormulario(idf){
4	
5	var options = { 
6        beforeSubmit:  function(arr, $form, options) { 
7			jQuery('#form' + idf + ' .firma').each(function () {
8				jQuery(this).data('saveSignature')();
9			});
10			
11			if(jQuery("#form"+idf+" .o").filter(function(index) { return jQuery(this).val()==""; }).length>0){
12				jQuery("#form"+idf+" .o").filter(function(index) { return jQuery(this).val()==""; }).first().focus();
13				sweetAlert("","Debes rellenar los campos obligatorios * antes de enviar","info");
14				return false;
15			} else if(jQuery("#form"+idf+" input:checkbox.o:not(:checked)").filter(function(index) { return !jQuery(this).is(":checked"); }).length>0){
16				sweetAlert("","Debes activar las casillas obligatorias * antes de enviar","info");
17				return false;
18			} else if(jQuery("#form"+idf+" input:file").filter(function(index) { return !checkFileSize(jQuery(this).attr('id'),5000000); }).length>0){
19				sweetAlert("","Tamaño de archivo demasiado grande, no puede superar 5MB","info");
20				return false;
21			} else if(document.getElementById('g-recaptcha-response'+idf).value==''){
22				sweetAlert("","Fallo de seguridad, no se puede enviar.","error");
23				return false;  
24			} else {
25				
26				if(confirm("¿Enviar formulario?")){
27					jQuery("#form"+idf+" .benviar").attr("disabled",true);
28					jQuery("#form"+idf+" .benviar").val("Enviando ...");
29				} else return false;
30				
31			}
32			// return false to cancel submit                  
33		},
34        success: function(data, statusText, xhr, $form) { 
35            if(data.error!=""){
36                sweetAlert("ERROR",data.error,"error");
37				grecaptcha.enterprise.execute('6LfT0qUeAAAAAHjps_iyLbtGLJv778h-fMVYgnRu', {action: 'send'}).then(function(token) { jQuery('#g-recaptcha-response'+idf).val(token); });
38            } else {
39                if(data.url!="" && data.url!=null){
40                    document.location.href=data.url;
41                } else {
42					grecaptcha.enterprise.execute('6LfT0qUeAAAAAHjps_iyLbtGLJv778h-fMVYgnRu', {action: 'send'}).then(function(token) { jQuery('#g-recaptcha-response'+idf).val(token); });
43                    if(typeof successSubmit == 'function'){
44                        successSubmit(data.text);
45                    } else {
46                        sweetAlert(data.text);
47                    }
48                }
49            }
50            //jQuery('#seguridad'+idf+'_img').attr('src','/include/securimage/securimage_show.php?'+Math.random()+'&f='+idf+'&fcod='+jQuery('#fsecurecod'+idf).val());
51            //jQuery('#seguridad'+idf).val("");
52			jQuery("#form"+idf+" .benviar").attr("disabled",false);
53			jQuery("#form"+idf+" .benviar").val("Enviar");
54		},
55        clearForm: false,        // clear all form fields after successful submit 
56        resetForm: false,        // reset the form after successful submit 
57        dataType: 'json',
58		error: function (xhr, ajaxOptions, thrownError) {
59		sweetAlert(xhr.status,thrownError);
60      }
61
62    }; 
63	
64	jQuery("#form"+idf).ajaxForm(options);
65	jQuery("#form"+idf+" .chkShowCond").click(function(e) {
66        jQuery("#chkCond"+jQuery(this).attr('idc')).toggle(100);
67		return false;
68    });
69	
70	jQuery("#form"+idf+" .img-upload").each(function(index, element) {
71		jQuery("input",this).change(function(evt){
72			if(!checkFileExtension(jQuery(this).attr('id'),Array(".jpg",".gif",".png"))) sweetAlert("Formato incorrecto","Elige un archivo JPG, PNG o GIF","info");
73			else if(!checkFileSize(jQuery(this).attr('id'),8000000)) sweetAlert("Demasiado grande","El archivo seleccionado es demasiado grande. No puede superar 8MB.","info");
74			else {
75				var reader = new FileReader();
76				var label = jQuery("label",jQuery(this).parent());
77				reader.onload = function(ev) {
78					var image = ev.target.result;
79					label.css('background-image', 'url("'+image+'")');
80				};
81				var file = evt.target.files[0];
82				reader.readAsDataURL(file);
83			}
84		});	
85    });
86	
87	jQuery("#form"+idf+" .campo.fecha input").each(function(index, element) {
88		jQuery(this).datepicker({ language: 'es' });
89    });
90	
91	jQuery('#form' + idf + ' .firma').each(function () {
92		const $firma = jQuery(this);
93		const $canvas = $firma.find('canvas');
94		const ctx = $canvas[0].getContext('2d');
95		const $input = $firma.find('input[type="hidden"]');
96		let drawing = false;
97
98		function resizeCanvas() {
99			const width = $canvas.width();
100			const height = $canvas.height();
101			$canvas[0].width = width;
102			$canvas[0].height = height;
103		}
104
105		resizeCanvas();
106		jQuery(window).on('resize', resizeCanvas);
107
108		function getPos(e) {
109			const rect = $canvas[0].getBoundingClientRect();
110			const x = e.type.startsWith('touch') ? e.originalEvent.touches[0].clientX : e.clientX;
111			const y = e.type.startsWith('touch') ? e.originalEvent.touches[0].clientY : e.clientY;
112			return {
113				x: x - rect.left,
114				y: y - rect.top
115			};
116		}
117
118		$canvas.on('mousedown touchstart', function (e) {
119			e.preventDefault();
120			drawing = true;
121			const pos = getPos(e);
122			ctx.beginPath();
123			ctx.moveTo(pos.x, pos.y);
124		});
125
126		$canvas.on('mousemove touchmove', function (e) {
127			if (!drawing) return;
128			e.preventDefault();
129			const pos = getPos(e);
130			ctx.lineTo(pos.x, pos.y);
131			ctx.stroke();
132		});
133
134		jQuery(document).on('mouseup touchend', function () {
135			drawing = false;
136		});
137
138		$firma.find('.borrar').on('click', function () {
139			ctx.clearRect(0, 0, $canvas[0].width, $canvas[0].height);
140		});
141
142		$firma.data('saveSignature', function () {
143			$input.val($canvas[0].toDataURL());
144		});
145	});
146}
147
148function cadenaLimpia(cad){
149	cad = String(cad==null?"":cad);
150	// Misma normalización que FG_limpia en PHP: una tilde combinada (texto pegado desde Mac) pasa a un solo carácter
151	if(cad.normalize) cad = cad.normalize('NFC');
152	cad = strtr(cad,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
153	cad = cad.toLowerCase();
154	cad = cad.replace(/([^a-z0-9]+)/g,'-');
155	cad = cad.replace(/-{2,}/g,'-');
156	cad = cad.replace(/-$/g,'');
157	cad = cad.replace(/^-/g,'');
158	return cad;
159}
160
161function calendarioDia(cal,f,d,m){
162	jQuery(".calendar .detalles_d_"+cal).fadeOut(250);
163	jQuery(".calendar .detalles_fila_"+cal).slideUp(250);
164	jQuery(".calendar .dia").removeClass('act');
165	jQuery(".calendar #dia"+d+"_"+m+"_"+cal).addClass('act');
166	jQuery(".calendar #detalles_d"+d+"_"+cal).fadeIn(250);
167	jQuery(".calendar #detalles_fila"+f+"_"+m+"_"+cal).slideDown(250);
168}
169
170function calendarioMes(id,c,cal,m){
171	jQuery("#cmm"+cal+" .load").fadeIn(150);
172	
173	jQuery.ajax({
174		url: '/ajax/calendario.php?'+(Math.random()*100)+"&id="+id+"&cod="+c+"&m="+m+"&cal="+cal,
175		dataType:"json",
176		success: function (data){ 
177			jQuery("#cmm"+cal).replaceWith(data.html);
178			jQuery("#cmm"+cal+" .load").fadeOut(150);
179		},
180		error: function(){ sweetAlert("ERROR","","error"); }
181	});
182	
183}
184
185var callisp=0;
186function calListado(id,c,i,cml){
187	jQuery("#cml"+cml+" .haymas").replaceWith("<div class='loading' style='text-align:center; margin:20px 0px;'><img src='/images/loading.gif'></div>");
188	jQuery.ajax({
189		url: '/ajax/calendario.eventos.php?'+(Math.random()*100)+"&id="+id+"&cod="+c+"&idioma="+i+"&cml="+cml+"&p="+(callisp+1),
190		success: function (data){ jQuery("#cml"+cml+" .loading").replaceWith(data); callisp++; },
191		error: function(){ sweetAlert("ERROR","","error"); }
192	});
193}
194
195
196
197
198function checkFileExtension(id,exts){
199	extension = (document.getElementById(id).value.substring(document.getElementById(id).value.lastIndexOf("."))).toLowerCase();
200	ok = false; 
201	for (var i = 0; i < exts.length; i++) { 
202		if (exts[i] == extension) { 
203		ok = true; 
204		break; 
205		} 
206	} 
207	return ok;
208}
209
210function checkFileSize(id,maxsize) {
211    var input, file;
212    if (!window.FileReader) return true; 
213	
214    input = document.getElementById(id);
215    if(!input) return true;
216    else if (!input.files) return true;
217    else if (!input.files[0]) return true;
218    else return (input.files[0].size<=maxsize);
219}
220
221function e(url){ enlaceSelf(url); }
222
223function enlace(url){
224	window.open(url, "_blank");
225}
226
227function enlaceSelf(url){
228	document.location.href = url;
229}
230
231function firmasNuevaOpinionShow(fid){
232	jQuery("#tOpiniones"+fid+" .form .button").hide();
233	jQuery("#tOpiniones"+fid+" .form .formulario").slideToggle(300);
234}
235
236function firmasNuevaOpinionHide(fid){
237	jQuery("#tOpiniones"+fid+" .form .formulario").slideToggle(300,null,function(){
238		jQuery("#tOpiniones"+fid+" .form .button").slideToggle(50);
239	});
240}
241
242function fotoZoom(id){
243	jQuery("#zoomfoto").remove();
244	jQuery("body").append("<div id='zoomfoto'><div class='close' onclick='fotoZoomClose();'></div><div class='imgbefore'></div><img onclick='' src='"+jQuery("#img"+id).attr('srczoom')+"'></div>");
245}
246
247function fotoZoomClose(){
248	jQuery("#zoomfoto").remove();	
249}
250
251function fSubMenu(idm){
252	if(jQuery(document).width()>480){
253		if(jQuery("#ulsubmenu"+idm).is(':visible')){
254			jQuery("#li"+idm).removeClass('over');
255		} else {
256			jQuery("#ulmenu > li[id!='li"+idm+"']").removeClass('over');
257			//jQuery("#menu a.concont[seid!='"+idm+"']").attr('despl','0');
258			jQuery("#li"+idm).addClass('over');
259		}
260	}
261}
262
263function generaMenu(){
264	if(jQuery("#ulmenu > li").length>1){
265		jQuery("#menu").append("<div id='menumovil'><select id='selectmenu'></select></div>");
266		jQuery("#ulmenu > li").each(function(index, element) {
267			var txt = jQuery("> a",this).html();
268			var url = jQuery("> a",this).attr('href');
269			if(url!="#"){
270				jQuery("#menumovil select").append("<option "+(jQuery(this).hasClass('actual')?"selected":"")+" onclick='document.location.href=\""+url+"\"'>"+txt+"</option>");
271			} else {
272				if(!jQuery(this).hasClass('concont')) jQuery("#menumovil select").append("<option disabled>"+txt+"</option>");
273			}
274			jQuery(".ulsubmenu li",this).each(function(index, element) {
275				var txt = jQuery("> a",this).html();
276				var url = jQuery("> a",this).attr('href');
277				jQuery("#menumovil select").append("<option "+(jQuery(this).hasClass('actual')?"selected":"")+" onclick='document.location.href=\""+url+"\"'>"+(jQuery(this).hasClass('main')?"":"&nbsp;&bull;&nbsp;")+txt+"</option>");
278			});
279		});
280		jQuery("#selectmenu").change(function(e) {
281			jQuery("option:selected",this).click();
282		});
283	}
284}
285
286function generaMenu2(){
287	if(jQuery("#ulmenu > li").length>1){
288		jQuery("#menu").append("<div id='menumovil' class='menu2'><a class='showMenuM' href='#'></a><ul class='main' style='display:none;'></ul></div>");
289		
290		jQuery("#menumovil .main").html(generaMenuMUL());
291		
292		jQuery("#menumovil .showMenuM").click(function(e) {
293			jQuery("#menumovil .main").slideToggle(300);
294		});
295	}
296}
297
298function generaMenu3(){
299	if(jQuery("#ulmenu > li").length>1){
300		jQuery("#menu").append("<div id='menumovil' class='menu3'><a class='showMenuM' href='#'></a><div class='slide'><div class='c1'><div class='cerrardiv'><a class='showMenuM cerrar'></a></div><ul class='main'></ul></div><div class='c2'></div></div></div>");
301		
302		jQuery("#menumovil .main").html(generaMenuMUL());
303		jQuery("#menumovil .showMenuM, #menumovil .c2").click(function(e) {
304			if(jQuery("#menumovil .slide").hasClass('expand')){
305				jQuery("#menumovil .slide").animate({"left": "-100%"}, 200);
306				jQuery("#menumovil .slide").removeClass('expand');
307			} else { 
308				jQuery("#menumovil .slide").animate({"left": "0px"}, 200);
309				jQuery("#menumovil .slide").addClass('expand');
310			}
311		});
312	}
313}
314
315function generaMenuMUL(){
316	var htmlmain = "";
317	jQuery("#ulmenu > li").each(function(index, element) {
318		var txt = jQuery("> a",this).html();
319		var url = jQuery("> a",this).attr('href');
320		var click = jQuery("> a",this).attr('onclick');
321		var sb = "";
322		if(url!="#") htmlmain+= "<li "+(jQuery(this).hasClass('actual')?"class='actual'":"")+"><a href='"+url+"'>"+txt+"</a>";
323		else {
324			if(jQuery(this).hasClass('concont')){
325				var primero = jQuery(".ulsubmenu li",this).first();
326				txt = jQuery("> a",primero).html();
327				url = jQuery("> a",primero).attr('href');
328				if(url!="#"){
329					htmlmain+= "<li "+(jQuery(this).hasClass('actual')?"class='actual'":"")+"><a href='"+url+"'>"+txt+"</a>";
330					sb = url;
331				}
332			} else {
333				htmlmain+= "<li class='disabled'><a href='#' onclick='"+click+"; return false;'>"+txt+"</a>";
334			}
335		}
336		
337		if(jQuery(".ulsubmenu li",this).length){
338			htmlmain+= "<ul class='sub'>";
339			jQuery(".ulsubmenu li",this).each(function(index, element) {
340				var txt = jQuery("> a",this).html();
341				var url = jQuery("> a",this).attr('href');
342				if(url!=sb) htmlmain+= "<li "+(jQuery(this).hasClass('actual')?"class='actual'":"")+"><a href='"+url+"'>"+txt+"</a></li>";
343			});
344			htmlmain+= "</ul>";
345		}
346		
347		htmlmain+= "</li>";
348	});
349	return htmlmain;
350}
351
352function goBack() { window.history.back(); }
353
354var confadein = false;
355jQuery(document).ready(function(e) {
356    jQuery(window).scroll(function(){ scrollWindow(); }); 
357	jQuery('.scrollup').click(function(){ jQuery("html, body").animate({ scrollTop: 0 }, 600); return false; });
358	if(jQuery(".fadein").length){ confadein = true; checkFadeIn(); }
359});
360
361function checkFadeIn(){
362	var sc = jQuery(window).scrollTop();
363	var he = jQuery(window).height();
364	
365	jQuery(".fadein").each(function(index, element) {
366		var arriba = jQuery(this).offset().top;
367		var abajo = arriba+jQuery(this).height();
368		var medio = sc+(Math.round(he/2));
369		var cuarto = Math.round(he/4);
370		if(Math.abs(medio-arriba)<cuarto || Math.abs(medio-abajo)<cuarto){
371			jQuery(this).animate({opacity:1, filter:"alpha(opacity=100)"},1500);
372			jQuery(this).removeClass("fadein");
373		}
374    });
375}
376
377var menumstl = 1;
378var menufix = 0;
379//var menumfix = 0;
380jQuery(window).load(function(e) {
381	
382	if(menumstl==1) generaMenu();
383	else if(menumstl==2) generaMenu2();
384	else if(menumstl==3) generaMenu3();
385	
386	jQuery("#bk2").prepend("<div id='mrgtop'></div>");
387	
388	/*jQuery(document).bind("contextmenu",function(e){
389        if(e.target.nodeName == 'IMG'){
390            //context menu attempt on top of an image element
391            return false;
392        }
393    });*/
394	
395});
396
397function scrollWindow(){
398	if (jQuery(this).scrollTop() > 100) jQuery('.scrollup, .fixbtn').fadeIn(); else jQuery('.scrollup, .fixbtn').fadeOut();
399	
400	scrolltop = jQuery(window).scrollTop();
401	
402	if(scrolltop>50) jQuery('#barcont').addClass('scroll');
403	else jQuery('#barcont').removeClass('scroll');
404	
405	if(confadein) checkFadeIn();
406}
407
408function manejoErroresAjax (obj, nerror, error){
409	sweetAlert("ERROR DE AJAX", error, "error");
410}
411
412function levent(id,c,i,p){
413	jQuery("#bmaseve").replaceWith("<div class='loading' id='eveloading' style='text-align:center; margin:20px 0px;'><img src='/images/loading.gif'></div>");
414	jQuery.ajax({
415		url: '/ajax/eventos.php?'+(Math.random()*100)+"&id="+id+"&cod="+c+"&idioma="+i+"&p="+p,
416		success: function (data){ jQuery("#eveloading").replaceWith(data); },
417		error: function(){ sweetAlert("ERROR","","error"); }
418	});
419}
420
421var pupnor=1;
422function lpubliNor(id,c,i,cat,ord){
423	jQuery("#loadMoreN").replaceWith("<div class='loading' id='publoading' style='text-align:center; margin:20px 0px;'><img src='/images/loading.gif'></div>");
424	jQuery.ajax({
425		url: '/ajax/publicaciones.php?'+(Math.random()*100)+"&id="+id+"&cod="+c+"&idioma="+i+"&cat="+cat+"&ord="+ord+"&p="+(pupnor+1),
426		success: function (data){ jQuery("#publoading").replaceWith(data); pupnor++; },
427		error: function(){ sweetAlert("ERROR","","error"); }
428	});
429}
430
431var pupdes=1;
432function lpubliDes(id,c,i,cat,ord){
433	jQuery("#loadMoreD").replaceWith("<div class='loading' id='publoadingdes' style='text-align:center; margin:20px 0px;'><img src='/images/loading.gif'></div>");
434	jQuery.ajax({
435		url: '/ajax/publicaciones.des.php?'+(Math.random()*100)+"&id="+id+"&cod="+c+"&idioma="+i+"&cat="+cat+"&ord="+ord+"&p="+(pupdes+1),
436		success: function (data){ jQuery("#publoadingdes").replaceWith(data); pupdes++; },
437		error: function(){ sweetAlert("ERROR","","error"); }
438	});
439}
440
441function lfirmas(id,c,idf){
442	jQuery("#loadMoreFirmas"+idf).replaceWith("<div class='loading' id='firloading' style='text-align:center; margin:20px 0px;'><img src='/images/loading.gif'></div>");
443	jQuery.ajax({
444		url: '/ajax/firmas.php?'+(Math.random()*100)+"&idf="+idf+"&id="+id+"&cod="+c+"&p="+(eval("pfir"+idf)+1),
445		success: function (data){ jQuery("#firloading").replaceWith(data); eval("pfir"+idf+"++"); lfirmasFotos(); },
446		error: function(){ sweetAlert("ERROR","","error"); }
447	});
448}
449
450function lfirmasFotos(){
451	jQuery('.photolist').each( function() {
452		var pic = jQuery(this), getItems = function() { var items = []; pic.find('a').each(function() { var href   = jQuery(this).attr('href'), size   = jQuery(this).data('size').split('x'), width  = size[0], height = size[1]; var item = { src : href, w : width, h : height }
453
454					items.push(item);
455				});
456				return items;
457			}
458
459		var items = getItems();
460
461		var pswp = jQuery('.pswp')[0];
462		pic.on('click', 'figure', function(event) { event.preventDefault(); var index = jQuery(this).index(); var options = { index: index, bgOpacity: 0.7, showHideOpacity: true}
463			var lightBox = new PhotoSwipe(pswp, PhotoSwipeUI_Default, items, options);
464			lightBox.init();
465		});
466
467	});
468}
469
470function loadJSDelay(ruta){
471	var body = document.getElementsByTagName('body')[0]; 
472	var se1 = document.createElement('script');
473	se1.src = ruta;
474	body.appendChild(se1);
475}
476
477function tabs(t){
478	jQuery("#"+t+" li").each(function(index, element) {
479		jQuery(this).click(function(e) {
480       		id = jQuery(this).attr("id");
481            jQuery("#"+t+" li").removeClass('act');
482            jQuery("#"+id).addClass('act');
483            jQuery(".tab_"+t).css('display','none');
484            jQuery("#"+t+"_"+id).css('display','block');
485       		clk = jQuery(this).attr("click");
486			eval(clk);
487        });
488    });
489}
490
491function scrollToId(id){
492	var pos = jQuery("#"+id).offset().top;
493	jQuery('html, body').animate({ scrollTop: pos }, 800);
494}
495
496function setScrollTo(id,margin){
497	var pos = jQuery("#"+id).offset().top - margin;// + $j("body").scrollTop() - 150;
498	jQuery('html, body').animate({ scrollTop: pos }, 800);
499}
500
501function strtr(str, from, to) {
502  var fr = '', i = 0, j = 0, lenStr = 0, lenFrom = 0, tmpStrictForIn = false, fromTypeStr = '', toTypeStr = '', istr = '';
503  var tmpFrom = [];
504  var tmpTo = [];
505  var ret = '';
506  var match = false;
507  if (typeof from === 'object') {
508    tmpStrictForIn = this.ini_set('phpjs.strictForIn', false); // Not thread-safe; temporarily set to true
509    from = this.krsort(from);
510    this.ini_set('phpjs.strictForIn', tmpStrictForIn);
511    for (fr in from) {
512      if (from.hasOwnProperty(fr)) {
513        tmpFrom.push(fr);
514        tmpTo.push(from[fr]);
515      }
516    }
517    from = tmpFrom; to = tmpTo;
518  }
519
520  lenStr = str.length;
521  lenFrom = from.length;
522  fromTypeStr = typeof from === 'string';
523  toTypeStr = typeof to === 'string';
524
525  for (i = 0; i < lenStr; i++) {
526    match = false;
527    if (fromTypeStr) {
528      istr = str.charAt(i);
529      for (j = 0; j < lenFrom; j++) {
530        if (istr == from.charAt(j)) {
531          match = true; break;
532        }
533      }
534    } else {
535      for (j = 0; j < lenFrom; j++) {
536        if (str.substr(i, from[j].length) == from[j]) {
537          match = true; i = (i + from[j].length) - 1; break;
538        }
539      }
540    }
541    if (match) { ret += toTypeStr ? to.charAt(j) : to[j];
542    } else { ret += str.charAt(i); }
543  }
544  return ret;
545}
546
547function FG_movil() {
548  var check = false;
549  (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);
550  return check;
551}
552
553/* EFECTOS */
554
555(function(){
556  const supportsIO = 'IntersectionObserver' in window;
557  const isReduced  = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
558  const DEFAULTS   = { rootMargin:'0px 0px -10% 0px', threshold:0.1 };
559
560  function setupElement(el, effect="fade", delay=0, duration=600, once=true){
561    el.classList.add("os-init", "os-" + effect);
562    if (!isReduced) {
563      el.style.transition = `opacity ${duration}ms ease, transform ${duration}ms ease, filter ${duration}ms ease`;
564      if (delay) el.style.transitionDelay = `${delay}ms`;
565    }
566    el.dataset.osOnce = once;
567  }
568
569  function reveal(el){
570    el.classList.add("os-in");
571    el.classList.remove("os-init");
572    if (el.dataset.osOnce === "true") el.dataset.__osDone = "1";
573  }
574
575  function hide(el){
576    if (el.dataset.osOnce === "false" && !el.dataset.__osDone) {
577      el.classList.remove("os-in");
578      el.classList.add("os-init");
579    }
580  }
581
582  window.crearEfecto = function(selector, efecto="fade", opts={}){
583    const $els = jQuery(selector);   // <- jQuery en lugar de $
584    if ($els.length === 0) return console.warn("No se encontró:", selector);
585
586    const delay    = opts.delay    || 0;
587    const duration = opts.duration || 600;
588    const once     = opts.once !== undefined ? opts.once : true;
589
590    $els.each(function(){
591      const el = this;
592      setupElement(el, efecto, delay, duration, once);
593
594      if (isReduced){ reveal(el); return; }
595      if (!supportsIO){ reveal(el); return; }
596
597      const io = new IntersectionObserver((entries) => {
598        entries.forEach(entry => {
599          if (entry.isIntersecting) reveal(entry.target);
600          else hide(entry.target);
601        });
602      }, DEFAULTS);
603
604      io.observe(el);
605    });
606  };
607})();
608
609
610// Botón "Copiar enlace" de los botones de compartir (FG_redesSociales).
611// Copia la URL al portapapeles y muestra un aviso breve junto al botón.
612function FGcompartirCopiar(a){
613	var url = a.getAttribute("data-url") || window.location.href;
614	var listo = function(){
615		var aviso = document.createElement("span");
616		aviso.className = "rs-copiado";
617		aviso.textContent = a.getAttribute("data-ok") || "Enlace copiado";
618		a.parentNode.insertBefore(aviso, a.nextSibling);
619		setTimeout(function(){ if(aviso.parentNode) aviso.parentNode.removeChild(aviso); }, 2000);
620	};
621	if(navigator.clipboard && window.isSecureContext){
622		navigator.clipboard.writeText(url).then(listo, function(){ FGcompartirCopiarViejo(url, listo); });
623	} else {
624		FGcompartirCopiarViejo(url, listo);
625	}
626	return false;
627}
628
629// Alternativa para navegadores sin API de portapapeles o páginas sin https
630function FGcompartirCopiarViejo(url, listo){
631	var ta = document.createElement("textarea");
632	ta.value = url;
633	ta.setAttribute("readonly", "");
634	ta.style.position = "fixed"; ta.style.left = "-9999px";
635	document.body.appendChild(ta);
636	ta.select();
637	try { if(document.execCommand("copy")) listo(); } catch(e){}
638	document.body.removeChild(ta);
639}

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.