( function($) { $.fn.extend( { ajaxyLiveSearch : function(options, arg) { if (options && typeof (options) == 'object') { options = $.extend( {}, $.ajaxyLiveSearch.defaults, options); } else { options = $.ajaxyLiveSearch.defaults; } if (this.is("input")) { this.each( function() { new $.ajaxyLiveSearch.load(this, options, arg); }); return; } } }); $.fn.outerHTMLForm = function() { return jQuery('
').append(this.eq(0).clone()).html(); }; $.ajaxyLiveSearch = { element : null, timeout : null, options : null, load : function(elem, options, arg) { this.element = elem; this.timeout = null; this.options = options; if ($(elem).val() == "") { $(elem).val(options.text); } $(elem).attr('autocomplete', 'off'); if ($('#live-search_sb').length == 0) { $('body') .append( ''); } $.ajaxyLiveSearch.loadEvents(this); }, loadResults : function(object) { console.log ('load results'); console.log (object); options = object.options; elem = object.element; window.sf_lastElement = elem; if (jQuery(elem).val() != "") { jQuery("body").data("live-search_results", null); var loading = "
  • " + "" + "" + "
  • "; jQuery("#live-search_val").html(""); var pos = this.bounds(elem, options); var containerPos = this.bounds('.top-nav .container', options); if (!pos) { jQuery("#live-search_sb").hide(); return false; } if (Math.ceil(containerPos.left) + parseInt(options.width, 10) > jQuery( window).width()) { jQuery("#live-search_sb").css('width', jQuery(window).width() - containerPos.left - 20); } if (jQuery('body').hasClass("rtl")) { jQuery("#live-search_sb").css( { top : pos.bottom, right : containerPos.right }); } else { jQuery("#live-search_sb").css( { top : pos.bottom, right : containerPos.left }); } jQuery("#live-search_sb").show(); var data = { action : "SearchView", query : jQuery(elem).val() + '*', search : options.search }; if (options.ajaxData) { data = window[options.ajaxData](data); } if (options.search) { // s-a apasat enter - se vor afisa datele in portlet-ul principal jQuery("#live-search_sb").hide(); jQuery.get( options.ajaxUrl, data, function (resp) { var m = ""; var results = $(resp).filter('form').find('a'); for (var i = 0; i < results.length; i++) { m += "
  • "+results[i].innerHTML +"
  • "; } var strValoare = jQuery(sf_input).val().toLowerCase ().indexOf ('cautare') ? jQuery(sf_input).val() : jQuery(sf_input_mobile).val(); jQuery(".content h1").html("Cautare dupa "" + strValoare + """); jQuery('.content .post-inner').html (m); jQuery(".slide-out-close").click(); jQuery('html, body').animate({ scrollTop: jQuery(".content").first().offset().top }); } ); } else { // cautare pe masura ce se introduce textul jQuery.get( options.ajaxUrl, data, function(resp) { var m = ""; var results = jQuery(resp).filter('form').find('a'); var lngth = results.length < 10 ? results.length : 10; for (var i = 0; i < results.length; i++){ m += ""; } m += "
  • Cautare dupa "" + jQuery(elem).val() + ""'); jQuery('.content .post-inner').html(jQuery('#live-search_val').html()); jQuery('.content .post-inner .live-search_item').show();\">Vezi toate rezultatele
  • "; jQuery("#live-search_val").html(""); }); } } else { jQuery("#live-search_sb").hide(); } }, bounds : function(elem, options) { var offset = jQuery(elem).offset(); if (offset) { 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() }; } }, htmlResults : function(results, type, array_index) { var m = ""; var s = 0; if (typeof (results) != "undefined") { console.log(results.length) if (results.all.length > 0) { m += "
  • " + results.title + "
    • "; for ( var i = 0; i < results.all.length; i++) { s++; m += "
    • " + jQuery.ajaxyLiveSearch.replaceResults( results.all[i], results.template) + "
    • "; } m += "
  • "; } } return new Array(m, s); }, htmlArrayResults : function(results) { var m = ""; var s = 0; if (typeof (results) != "undefined") { if (results.length > 0) { m += "
    • "; for ( var i = 0; i < results.length; i++) { var md = results[i]; var title = ""; if (md.length == 2) { title = md[1]; } else { title = results[i]; } s++; m += "
    • " + title + "
    • "; } m += "
  • "; } } return new Array(m, s); }, replaceResults : function(results, template) { for ( var s in results) { template = template.replace(new RegExp("{" + s + "}", "g"), results[s]); } return template; }, loadLiveEvents : function(object) { var d = { object : object }; jQuery("#live-search_val li.live-search_lnk").mouseover( function() { jQuery(".live-search_lnk").each( function() { jQuery(this).attr( "class", jQuery(this) .attr("class") .replace(" live-search_selected", "") ); }); jQuery(this).attr( "class", jQuery(this).attr("class") + " live-search_selected"); } ); if (d.object.options.callback) { jQuery("#live-search_val li.live-search_lnk").click( function(event) { try { window[d.object.options.callback](d.object, this); } catch (e) { alert(e); } return false; } ); } }, loadEvents : function(object) { var d = { object : object }; jQuery(document).click( function() { jQuery("#live-search_sb").hide(); }); jQuery(window).resize( function() { var pos = jQuery.ajaxyLiveSearch.bounds( window.sf_lastElement, d.object.options); if (pos) { jQuery("#live-search_sb").css( { top : pos.bottom, left : pos.left }); } }); jQuery(object.element).keyup( function(event) { if (event.keyCode != "38" && event.keyCode != "40" && event.keyCode != "13" && event.keyCode != "27" && event.keyCode != "39" && event.keyCode != "37") { var ajaxyObject = d.object; if (ajaxyObject.timeout != null) { clearTimeout(ajaxyObject.timeout); } if (ajaxyObject.options.search) return false; jQuery(ajaxyObject.element).attr( "class", jQuery(ajaxyObject.element).attr("class").replace(" live-search_focused", "") + " live-search_focused" ); // jQuery.ajaxyLiveSearch.loadResults(d.object.element, // d.object.options); var l = { object : d.object }; ajaxyObject.timeout = setTimeout( function() { jQuery.ajaxyLiveSearch.loadResults(l.object); }, d.object.options.delay); } if (event.keyCode == "13") { var ajaxyObject = d.object; if (ajaxyObject.timeout != null) { clearTimeout(ajaxyObject.timeout); } ajaxyObject.options.search = true; jQuery.ajaxyLiveSearch.loadResults (ajaxyObject); } }); jQuery(window) .keydown( function(event) { if (jQuery("#live-search_sb").css("display") != "none" && jQuery("#live-search_sb").css( "display") != "undefined" && jQuery("#live-search_sb").length > 0) { if (event.keyCode == "38" || event.keyCode == "40") { if (jQuery.browser.webkit) { jQuery("#live-search_sb").focus(); } var s_item = null; var after_s_item = null; var s_sel = false; var all_items = jQuery("#live-search_val li.live-search_lnk"); var s_found = false; event.stopPropagation(); event.preventDefault(); for ( var i = 0; i < all_items.length; i++) { if (jQuery(all_items[i]).attr( "class").indexOf( "live-search_selected") >= 0 && s_found == false) { s_sel = true; if (i < all_items.length - 1 && event.keyCode == "40") { jQuery(all_items[i]) .attr( "class", jQuery( all_items[i]) .attr( "class") .replace( " live-search_selected", "")); jQuery(all_items[i + 1]) .attr( "class", jQuery( all_items[i + 1]) .attr( "class") + " live-search_selected"); i = i + 1; s_found = true; } else if (i > 0 && event.keyCode == "38") { jQuery(all_items[i]) .attr( "class", jQuery( all_items[i]) .attr( "class") .replace( " live-search_selected", "")); jQuery(all_items[i - 1]) .attr( "class", jQuery( all_items[i - 1]) .attr( "class") + " live-search_selected"); i = i + 1; s_found = true; } } else { jQuery(all_items[i]) .attr( "class", jQuery( all_items[i]) .attr( "class") .replace( " live-search_selected", "")); } } if (s_sel == false) { if (all_items.length > 0) { jQuery(all_items[0]) .attr( "class", jQuery( all_items[0]) .attr( "class") + " live-search_selected"); } } // jQuery(window).unbind("keypress"); } else if (event.keyCode == 27) { jQuery("#live-search_sb").hide(); } else if (event.keyCode == 13) { var b = jQuery( "#live-search_val li.live-search_selected a") .attr("href"); if (typeof (b) != 'undefined' && b != '') { if (d.object.options.callback) { d.object.options.callback(this); } else { window.location.href = b; } return false; } else { if (d.object.options.callback) { d.object.options.callback(this); } else if (d.object.element != null) { window.location.href = sf_url .replace( '%s', encodeURI(jQuery( d.object) .val())); } return false; } } } }); jQuery(object.element) .focus( function() { if (jQuery(this).val() == d.object.options.text) { jQuery(this).val(''); jQuery(this) .attr( 'class', jQuery(this).attr('class') + ' live-search_focused'); } if (d.object.options.expand > 0) { jQuery(d.object.element).animate( { width : d.object.options.iwidth }); } }); jQuery(object.element).blur( function() { if (jQuery(this).val() == '') { jQuery(this).val(d.object.options.text); jQuery(this).attr( 'class', jQuery(this).attr('class').replace( / sf_focused/g, '')); } if (d.object.options.expand > 0) { jQuery(d.object.element).animate( { width : d.object.options.expand }); } }); } }; jQuery.ajaxyLiveSearch.defaults = { delay : 500, leftOffset : 0, topOffset : 5, text : "Search For", iwidth : 180, width : 315, ajaxUrl : "", ajaxData : false, // function to extend data sent to server searchUrl : "", expand : false, callback : false, search : false }; })(jQuery); function sf_addItem(search, title, name, name_type, value) { var items = jQuery(search).find('.live-search_ajaxy-selective-item'); var exists = false; var key = ""; var md = value.split(':'); if (md.length == 2) { key = md[0]; } else { key = value; } if (items.length > 0) { for ( var i = 0; i < items.length; i++) { if (jQuery(items[i]).find( 'input.live-search_ajaxy-selective-close-hidden').val() == key) { exists = true; break; } } } if (exists) { jQuery(search).find(".live-search_ajaxy-selective-input").val(""); jQuery('#live-search_sb').hide(); return; } var mds = title.split(':'); if (mds.length == 2) { title = md[1]; } var added_item = jQuery('' + title + 'X'); if (items.length <= 0) { jQuery(search).prepend(added_item); } else { added_item.insertAfter(items[items.length - 1]); } added_item.click( function() { jQuery(this).remove(); }); var input = jQuery(search).find(".live-search_ajaxy-selective-input"); if (input) { input.val(""); if (name_type != 'array') { input.css('visibility', 'hidden'); } else { input.focus(); } } jQuery('#live-search_sb').hide(); }