var sf_current_id = 0; jQuery(document).click(function(){ jQuery("#sf_sb").hide(); }); jQuery(document).ready(function(){ jQuery(".sf_input").focus(function (){ if(jQuery(this).val() == sf_defaultText){ jQuery(this).val(''); jQuery(this).attr('class', jQuery(this).attr('class') + ' sf_focused'); if(sf_expand){ jQuery("#" + jQuery(this).attr('container') + " .sf_search").animate({width:sf_width}); } } }); jQuery(".sf_input").blur(function () { if(jQuery(this).val() == ''){ jQuery(this).val(sf_defaultText); jQuery(this).attr('class', jQuery(this).attr('class').replace(/ sf_focused/g, '')); if(sf_expand){ jQuery("#" + jQuery(this).attr('container') + " .sf_search").animate({width:sf_expand}); } } }); }); function sf_get_results(id) { sf_current_id = id; jQuery("#" + id + " .sf_input").attr('autocomplete', 'off'); if(jQuery('#sf_sb').length == 0){ jQuery('body').append(''); } if(jQuery("#" + id + " .sf_input").val() != "") { var loading = "
  • "+ ""+ ""+ "
  • "; jQuery("#sf_val").html(""); var pos = false; if(jQuery("#sf_search").length > 0){ pos = jQuery("#sf_search").offset(); jQuery("#sf_sb").css({top:pos.top + jQuery("#sf_search").innerHeight(), left:pos.left}); jQuery("#sf_sb").show(); } else if(jQuery("#" + id + " .sf_input").length > 0){ pos = jQuery("#" + id + " .sf_input").offset(); jQuery("#sf_sb").css({top:pos.top + jQuery("#" + id + " .sf_input").innerHeight(), left:pos.left}); jQuery("#sf_sb").show(); } var data = { action: "ajaxy_sf", sf_value: jQuery("#" + id + " .sf_input").val()}; jQuery.post(sf_ajaxurl, data, function(resp) { var results = eval("("+ resp + ")"); var m = ""; var s = 0; if(typeof(results.order) != "undefined") { for(var mindex in results.order) { var c = sf_load(results[mindex]); m += c[0]; s += c[1]; } } var sf_selected = ""; if(s == 0) { sf_selected = " sf_selected"; } m += "
  • " + sf_templates + "
  • "; m = m.replace(/{search_value_escaped}/g, jQuery("#" + id + " .sf_input").val()); m = m.replace(/{search_url_escaped}/g, sf_url.replace('%s', escape(jQuery("#" + id + " .sf_input").val()))); m = m.replace(/{search_value}/g, jQuery("#" + id + " .sf_input").val()); m = m.replace(/{total}/g, s); if(s > 0) { jQuery("#sf_val").html(""); } else { jQuery("#sf_val").html(""); } sf_load_events(); jQuery("#sf_sb").show(); }); } else { jQuery("#sf_sb").hide(); } } function sf_load_events() { jQuery("#sf_val li.sf_lnk").mouseover(function(){ jQuery(".sf_lnk").each(function() { jQuery(this).attr("class",jQuery(this).attr("class").replace(" sf_selected" , "")); }); jQuery(this).attr("class", jQuery(this).attr("class") + " sf_selected"); }); } function sf_replace_results(results, template) { for(var s in results) { template = template.replace(new RegExp("{"+s+"}", "g"), results[s]); } return template; } function sf_load(results) { var m = ""; var s = 0; if(typeof(results) != "undefined") { if(results.all.length > 0) { m += "
  • " + results.title + "
  • "; for(var i in results.all) { s ++; m += "
  • "+ sf_replace_results(results.all[i], results.template) + "
  • "; } } } return new Array(m, s); } jQuery(window).keydown(function(event){ if(jQuery("#sf_sb").css("display") != "none" && jQuery("#sf_sb").css("display") != "undefined" && jQuery("#sf_sb").length > 0) { if(event.keyCode == "38" || event.keyCode == "40") { if(jQuery.browser.webkit) { jQuery("#sf_sb").focus(); } var s_item = null; var after_s_item = null; var s_sel = false; var all_items = jQuery("#sf_val li.sf_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("sf_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(" sf_selected", "")); jQuery(all_items[i+1]).attr("class", jQuery(all_items[i+1]).attr("class")+ " sf_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(" sf_selected", "")); jQuery(all_items[i-1]).attr("class", jQuery(all_items[i-1]).attr("class")+ " sf_selected"); i = i+1; s_found = true; } } else { jQuery(all_items[i]).attr("class",jQuery(all_items[i]).attr("class").replace(" sf_selected", "")); } } if(s_sel == false) { if(all_items.length > 0) { jQuery(all_items[0]).attr("class", jQuery(all_items[0]).attr("class")+ " sf_selected"); } } //jQuery(window).unbind("keypress"); } else if(event.keyCode == 27) { jQuery("#sf_sb").hide(); } else if(event.keyCode == 13) { var b = jQuery("#sf_val li.sf_selected a").attr("href"); if(typeof(b) != 'undefined' && b != '') { window.location.href = b; return false; } else { if(sf_current_id > 0){ window.location.href = sf_url.replace('%s', escape(jQuery("#" + sf_current_id + " .sf_input").val())); } return false; } } } });