PageSourceSearch

https://www.rgg-news.co.il/wp-content/themes/sahifa/js/search.js

js rgg-news.co.il collected 2026-09-25 01:16:54 UTC 15,010 bytes, 447 lines download raw bytes

1(function($) {
2
3    $.fn.extend({
4        ajaxyLiveSearch: function(options, arg) {
5            if (options && typeof(options) == 'object') {
6                options = $.extend( {}, $.ajaxyLiveSearch.defaults, options );
7            }
8			else {
9				options = $.ajaxyLiveSearch.defaults;
10			}
11            // this creates a plugin for each element in
12            // the selector or runs the function once per
13            // selector.  To have it do so for just the
14            // first element (once), return false after
15            // creating the plugin to stop the each iteration 
16			if(this.is("input")){
17				this.each(function() {
18					new $.ajaxyLiveSearch.load(this, options, arg );
19				});
20				return;
21			}
22        }
23    });
24
25    $.ajaxyLiveSearch = {
26		element: null,
27		timeout: null,
28		options: null,
29		load: function( elem, options, arg ) {
30				this.element = elem;
31				this.timeout = null;
32				this.options = options;
33				if($(elem).val() == "") {
34					$(elem).val(options.text);
35				}
36				$(elem).attr('autocomplete', 'off');
37				if($('#live-search_sb').length == 0){
38					$('body').append('<div id="live-search_sb" class="live-search_sb" style="position:absolute;display:none;width:'+ options.width + 'px;z-index:9999">'+
39											'<div class="live-search_sb_cont">' +
40												'<div class="live-search_sb_top"></div>' +
41												'<div id="live-search_results" style="width:100%">' +
42													'<div id="live-search_val" ></div>' +
43													'<div id="live-search_more"></div>' +
44												'</div>' +
45												'<div class="live-search_sb_bottom"></div>' +
46											'</div>' +
47										'</div>');
48				}
49				$.ajaxyLiveSearch.loadEvents(this);
50			},
51		loadResults: function(object) {
52			options = object.options;
53			elem = object.element;
54			window.sf_lastElement = elem;
55			if(jQuery(elem).val() != "")
56			{
57				jQuery("body").data("live-search_results", null);
58				var loading  = 	"<li class=\"live-search_lnk live-search_more live-search_selected\">"+
59					"<a id=\"live-search_loading\" href=\"" + options.searchUrl.replace('%s', encodeURI(jQuery(elem).val())) + "\"><i class=\"fa fa-spinner fa-spin\"></i>"+
60					"</a>"+
61				"</li>";
62				jQuery("#live-search_val").html("<ul>"+loading+"</ul>");
63				var pos = this.bounds(elem, options);
64				var containerPos = this.bounds('.top-nav .container' , options);
65				if(!pos) {
66					jQuery("#live-search_sb").hide();
67					return false;
68				}
69				if(Math.ceil(containerPos.left) + parseInt(options.width, 10) > jQuery(window).width()) {
70					jQuery("#live-search_sb").css('width', jQuery(window).width() - containerPos.left - 20);
71				}
72				if( jQuery( 'body' ).hasClass( "rtl" ) ) {
73					jQuery("#live-search_sb").css({top:pos.bottom, right:containerPos.right});
74				}else{
75					jQuery("#live-search_sb").css({top:pos.bottom, right:containerPos.left});
76				}
77				jQuery("#live-search_sb").show();
78				
79				var data = { action: "ajaxy_sf", sf_value: jQuery(elem).val(), search:options.search};
80				if(options.ajaxData){
81					data = window[options.ajaxData](data);
82				}
83				if(options.search) {
84					var mresults = options.search.split(',');
85					var results = [];
86					var m = "";
87					var s = 0;
88
89					var c = [];
90					for(var kindex in mresults){
91						var dm = mresults[kindex].split(":");
92						if(dm.length == 2) {
93							if(dm[1].indexOf(jQuery(elem).val()) == 0) {
94								results[results.length] = mresults[kindex];
95							}
96						}else if(dm.length == 1){
97							if(mresults[kindex].indexOf(jQuery(elem).val()) == 0) {
98								results[results.length] = mresults[kindex];
99							}
100						}
101					}
102					
103					c = $.ajaxyLiveSearch.htmlArrayResults(results);
104					m += c[0];
105					s += c[1];
106					
107					var sf_selected = "";
108					if(s == 0)
109					{
110						sf_selected = " live-search_selected";
111					}
112					m += "<li class=\"live-search_lnk live-search_more" + sf_selected + "\">{total} "+ tie.lang_results_found +"</li>";
113					
114					m = m.replace(/{search_value_escaped}/g, jQuery(elem).val());
115					m = m.replace(/{search_url_escaped}/g, options.searchUrl.replace('%s', encodeURI(jQuery(elem).val())));
116					m = m.replace(/{search_value}/g, jQuery(elem).val());
117					m = m.replace(/{total}/g, s);
118					
119					jQuery("body").data("live-search_results", results);
120					
121					if(s > 0)
122					{
123						jQuery("#live-search_val").html("<ul>"+m+"</ul>");
124					}
125					else
126					{
127						jQuery("#live-search_val").html("<ul>"+m+"</ul>");
128					}
129					$.ajaxyLiveSearch.loadLiveEvents(object);
130					jQuery("#live-search_sb").show();
131				}else{
132					jQuery.post(options.ajaxUrl, data, function(resp) { 
133						var results = eval("("+ resp + ")");
134						var m = "";
135						var s = 0;
136						for(var mindex in results)
137						{
138							var c = [];
139							for(var kindex in results[mindex]){
140								c = $.ajaxyLiveSearch.htmlResults(results[mindex][kindex], mindex, kindex);
141								m += c[0];
142								s += c[1];
143							}
144						}
145						
146						
147						
148						var sf_selected = "";
149						if(s == 0)
150						{
151							sf_selected = " live-search_selected";
152							m += "<li class=\"live-search_lnk live-search_more\">"+ tie.lang_no_results +"</li>";
153
154						}else{
155							if(!options.callback) {
156								m += "<li class=\"live-search_lnk live-search_more\">" + sf_templates + "</li>";
157							}
158							m = m.replace(/{search_value_escaped}/g, jQuery(elem).val());
159							m = m.replace(/{search_url_escaped}/g, options.searchUrl.replace('%s', encodeURI(jQuery(elem).val())));
160							//m = m.replace(/{search_value}/g, jQuery(elem).val());
161							//m = m.replace(/{total}/g, s);
162						}	
163						jQuery("body").data("live-search_results", results);
164						
165						if(s > 0)
166						{
167							jQuery("#live-search_val").html('<ul class="live-search_main">'+m+'</ul>');
168						}
169						else
170						{
171							jQuery("#live-search_val").html('<ul class="live-search_main">'+m+'</ul>');
172						}
173						$.ajaxyLiveSearch.loadLiveEvents(object);
174						jQuery("#live-search_sb").show();
175					});
176				}
177			 }
178			 else
179			 {
180				jQuery("#live-search_sb").hide();
181			 }
182		},
183		bounds: function (elem, options) {
184			var offset = jQuery(elem).offset();
185			if(offset) {
186				return {top: offset.top, left: offset.left + options.leftOffset, bottom: offset.top +  jQuery(elem).innerHeight() + options.topOffset, right: offset.left - jQuery('#live-search_sb').innerWidth() + jQuery(elem).innerWidth()};			
187			}
188		},
189		htmlResults: function (results, type, array_index){
190			var m = "";
191			var s = 0;	
192			if(typeof(results) != "undefined")
193			{
194				if(results.all.length > 0)
195				{
196					m += "<li class=\"live-search_header\">" + results.title + "</li><li><div class=\"live-search_result_container\"><ul>";
197					for(var i = 0; i < results.all.length; i ++)
198					{
199						s ++;
200						m += "<li result-type='object' index-type='" + type + "' index-array='" + array_index + "' index='" + i + "' class=\"live-search_lnk "+results.class_name +"\">"+  $.ajaxyLiveSearch.replaceResults(results.all[i], results.template) + "</li>";
201					}
202					m += "</ul></div></li>";
203				}
204			}
205			return new Array(m, s);
206		},
207		htmlArrayResults: function (results){
208			var m = "";
209			var s = 0;	
210			if(typeof(results) != "undefined")
211			{
212				if(results.length > 0)
213				{
214					m += "<li><div class=\"live-search_result_container\"><ul>";
215					for(var i = 0; i < results.length; i ++)
216					{
217						var md = results[i].split(':');
218						var title = "";
219						if(md.length == 2) {
220							title = md[1];
221						}else{
222							title = results[i];
223						}
224						s ++;
225						m += "<li result-type='array' index='" + i + "' class=\"live-search_lnk live-search_category\"><a href='javascript:;'>" + title + "</a></li>";
226					}
227					m += "</ul></div></li>";
228				}
229			}
230			return new Array(m, s);
231		},
232		replaceResults: function (results, template){
233			for(var s in results)
234			{
235				template = template.replace(new RegExp("{"+s+"}", "g"), results[s]);
236			}
237			return template;
238		},
239		loadLiveEvents: function(object){
240			var d = {object: object};
241			jQuery("#live-search_val li.live-search_lnk").mouseover(function(){
242				jQuery(".live-search_lnk").each(function() { jQuery(this).attr("class",jQuery(this).attr("class").replace(" live-search_selected" , "")); });
243				jQuery(this).attr("class", jQuery(this).attr("class") + " live-search_selected");
244			});
245			if(d.object.options.callback)
246			{
247				jQuery("#live-search_val li.live-search_lnk").click(function(event){
248					try{
249						window[d.object.options.callback](d.object, this);
250					}catch(e){
251						alert(e);
252					}
253					return false;
254				});
255			}
256		},
257		loadEvents: function(object){
258			var d = {object: object};
259			jQuery(document).click(function(){ jQuery("#live-search_sb").hide(); });
260			jQuery(window).resize(function(){ 
261				var pos = $.ajaxyLiveSearch.bounds(window.sf_lastElement, d.object.options);
262				if(pos) {
263					jQuery("#live-search_sb").css({top:pos.bottom, left:pos.left});
264				}
265			});
266			
267			
268			jQuery(object.element).keyup(function(event){
269				if(event.keyCode != "38" && event.keyCode != "40" && event.keyCode != "13" && event.keyCode != "27" && event.keyCode != "39" && event.keyCode != "37")
270				{
271					var ajaxyObject = d.object;
272					if(ajaxyObject.timeout != null)
273					{
274						clearTimeout(ajaxyObject.timeout);
275					}
276					jQuery(ajaxyObject.element).attr("class", jQuery(ajaxyObject.element).attr("class").replace(" live-search_focused", "") + " live-search_focused");
277					//$.ajaxyLiveSearch.loadResults(d.object.element, d.object.options);
278					var l = {object:d.object};
279					ajaxyObject.timeout = setTimeout(function() { jQuery.ajaxyLiveSearch.loadResults(l.object); }, d.object.options.delay);
280				}
281			});	
282			jQuery(window).keydown(function(event){
283				if(jQuery("#live-search_sb").css("display") != "none" && jQuery("#live-search_sb").css("display") != "undefined" && jQuery("#live-search_sb").length > 0)
284				{
285					if(event.keyCode == "38" || event.keyCode == "40")
286					{
287						if(jQuery.browser.webkit)
288						{
289							jQuery("#live-search_sb").focus();
290						}
291						var s_item = null;
292						var after_s_item = null;
293						var s_sel = false;
294						var all_items = jQuery("#live-search_val li.live-search_lnk");
295						var s_found = false;
296						event.stopPropagation();
297						event.preventDefault();
298						for(var i = 0; i < all_items.length; i++)
299						{
300							if(jQuery(all_items[i]).attr("class").indexOf("live-search_selected") >= 0 && s_found == false)
301							{
302								s_sel = true;
303								if(i < all_items.length - 1 && event.keyCode == "40")
304								{
305									jQuery(all_items[i]).attr("class",jQuery(all_items[i]).attr("class").replace(" live-search_selected", ""));
306									jQuery(all_items[i+1]).attr("class", jQuery(all_items[i+1]).attr("class")+ " live-search_selected");
307									i = i+1;
308									s_found = true;
309								}
310								else if(i > 0 && event.keyCode == "38")
311								{
312									jQuery(all_items[i]).attr("class",jQuery(all_items[i]).attr("class").replace(" live-search_selected", ""));
313									jQuery(all_items[i-1]).attr("class", jQuery(all_items[i-1]).attr("class")+ " live-search_selected");
314									i = i+1;
315									s_found = true;
316								}
317							}
318							else
319							{
320								jQuery(all_items[i]).attr("class",jQuery(all_items[i]).attr("class").replace(" live-search_selected", ""));
321							}
322						}
323						if(s_sel == false)
324						{
325							if(all_items.length > 0)
326							{
327								jQuery(all_items[0]).attr("class", jQuery(all_items[0]).attr("class")+ " live-search_selected");
328							}
329						}
330						//jQuery(window).unbind("keypress");
331
332					}
333					else if(event.keyCode == 27)
334					{
335						jQuery("#live-search_sb").hide();
336					}
337					else if(event.keyCode == 13)
338					{
339						var b = jQuery("#live-search_val li.live-search_selected a").attr("href");
340						if(typeof(b) != 'undefined' && b != '')
341						{
342							if(d.object.options.callback){
343								d.object.options.callback(this);
344							}else{
345								window.location.href = b;
346							}
347							return false;
348						}
349						else
350						{
351							if(d.object.options.callback){
352								d.object.options.callback(this);
353							}
354							else if(d.object.element != null){
355								window.location.href = sf_url.replace('%s', encodeURI(jQuery(d.object).val()));
356							}
357							return false;
358						}
359					}
360				}
361			});
362			jQuery(object.element).focus(function (){
363				if(jQuery(this).val() == d.object.options.text){
364					jQuery(this).val('');
365					jQuery(this).attr('class', jQuery(this).attr('class') + ' live-search_focused');
366				}
367				if(d.object.options.expand > 0){
368					jQuery(d.object.element).animate({width:d.object.options.iwidth});
369				}
370			});
371			jQuery(object.element).blur(function () {
372				if(jQuery(this).val() == ''){
373					jQuery(this).val(d.object.options.text);
374					jQuery(this).attr('class', jQuery(this).attr('class').replace(/ sf_focused/g, ''));
375				}
376				if(d.object.options.expand > 0){
377					jQuery(d.object.element).animate({width:d.object.options.expand});
378				}
379			});
380		}
381	};
382    $.ajaxyLiveSearch.defaults = {
383       delay:500, 
384	   leftOffset: 0,
385	   topOffset: 5,
386	   text: "Search For",
387	   iwidth: 180,
388	   width: 315,
389	   ajaxUrl: "",
390	   ajaxData: false, //function to extend data sent to server
391	   searchUrl: "",
392	   expand: false,
393	   callback: false,
394	   search: false
395    };
396
397})(jQuery);
398
399
400function sf_addItem(search, title, name, name_type, value) {
401	var items = jQuery(search).find('.live-search_ajaxy-selective-item');
402	var exists = false;
403
404	var key = "";
405	var md = value.split(':');
406	if(md.length == 2) {
407		key = md[0];
408	}else{
409		key = value;
410	}
411	if(items.length > 0) {
412		for(var i = 0; i < items.length; i ++) {
413			if(jQuery(items[i]).find('input.live-search_ajaxy-selective-close-hidden').val() == key){
414				exists = true;
415				break;
416			}
417		}
418	}
419	if(exists) {
420		jQuery(search).find(".live-search_ajaxy-selective-input").val("");
421		jQuery('#live-search_sb').hide();
422		return;
423	}
424	var mds = title.split(':');
425	if(mds.length == 2) {
426		title = md[1];
427	}
428	var added_item = jQuery('<span class="live-search_ajaxy-selective-item">' + title + '<a class="live-search_ajaxy-selective-close">X</a><input class="live-search_ajaxy-selective-close-hidden" type="hidden" name="' + name + '" value="' + key + '" /></span>');
429	if(items.length <= 0){
430		jQuery(search).prepend(added_item);
431	}else{
432		added_item.insertAfter(items[items.length - 1]);
433	}
434	added_item.click(function() {
435		jQuery(this).remove();
436	});
437	var input = jQuery(search).find(".live-search_ajaxy-selective-input");
438	if(input) {
439		input.val("");
440		if(name_type != 'array') {
441			input.css('visibility', 'hidden');
442		}else{
443			input.focus();
444		}
445	}
446	jQuery('#live-search_sb').hide();
447}

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.