/* * YaCy Portalsearch * * @author Stefan Förster (apfelmaennchen) * @version 1.1 * * @requires jquery-1.6.1 * @requires jquery-ui-1.8.13 * @requires jquery-query-2.1.7 * @requires jquery.form-2.73 * @requires jquery.field-0.9.2.min * * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * * Date: 19-MAY-2011 * */ function statuscheck() { if(load_status < 5) { return; } else { window.clearInterval(loading); yrun(); } } $(document).ready(function() { ynavigators = new Array(); $.ajaxSetup({ timeout: 5000, cache: true }) // apply default properties ycurr = ''; startRecord = 0; maximumRecords = 10; submit = false; yconf = $.extend({ url : '', 'global' : false, theme : 'start', title : 'YaCy Search Widget', logo : yconf.url + '/yacy/ui/img/yacy-logo.png', link : 'http://yacy.net', width : 640, height : 640, position : [150,50], modal : false, resizable: true, show : '', hide : '', load_js : true, load_css : true }, yconf); $('
').appendTo("#yacylivesearch"); if(yconf.load_css) { var style1 = yconf.url + '/portalsearch/yacy-portalsearch.css'; var style2 = yconf.url + '/jquery/themes/'+yconf.theme+'/jquery-ui-1.8.16.custom.css'; var style3 = yconf.url + '/jquery/css/jquery-ui-combobox.css'; var head = document.getElementsByTagName('head')[0]; $(document.createElement('link')) .attr({type:'text/css', href: style1, rel:'stylesheet', media:'screen'}) .appendTo(head); $(document.createElement('link')) .attr({type:'text/css', href: style2, rel:'stylesheet', media:'screen'}) .appendTo(head); $(document.createElement('link')) .attr({type:'text/css', href: style3, rel:'stylesheet', media:'screen'}) .appendTo(head); } load_status = 0; loading = window.setInterval("statuscheck()", 200); if(yconf.load_js) { var script1 = yconf.url + '/jquery/js/jquery.query-2.1.7.js'; var script2 = yconf.url + '/jquery/js/jquery.form-2.73.js'; var script3 = yconf.url + '/jquery/js/jquery.field-0.9.2.min.js'; var script4 = yconf.url + '/jquery/js/jquery-ui-1.8.16.custom.min.js'; var script5 = yconf.url + '/jquery/js/jquery-ui-combobox.js'; $.getScript(script1, function(){ load_status++; }); $.getScript(script2, function(){ load_status++; }); $.getScript(script3, function(){ load_status++; }); $.getScript(script4, function(){ load_status++; }); $.getScript(script5, function(){ load_status++; }); } else { yrun(); } }); function yrun() { $.extend($.ui.accordion.defaults, { autoHeight: false, clearStyle: true, collapsible: true, header: "h3" }); maximumRecords = parseInt($("#ysearch input[name='maximumRecords']").getValue()); $("#ypopup").dialog({ autoOpen: false, height: yconf.height, width: yconf.width, minWidth: yconf.width, position: yconf.position, modal: yconf.modal, resizable: yconf.resizable, title: yconf.title, show: yconf.show, hide: yconf.hide, drag: function(event, ui) { var position = $("#ypopup").parent(".ui-dialog").position(); var left = $("#ypopup").parent(".ui-dialog").width()+5+position.left; $("#yside").dialog('option', 'position', [left,position.top+32]); }, dragStop: function(event, ui) { var position = $("#ypopup").parent(".ui-dialog").position(); var left = $("#ypopup").parent(".ui-dialog").width()+5+position.left; $("#yside").dialog('option', 'position', [left,position.top+32]); }, resizeStop: function(event, ui) { var position = $("#ypopup").parent(".ui-dialog").position(); var height = $("#ypopup").parent(".ui-dialog").height()-55; var left = $("#ypopup").parent(".ui-dialog").width()+5+position.left; $("#yside").dialog('option', 'height', height); $("#yside").dialog('option', 'position', [left,position.top+32]); }, close: function(event, ui) { $("#yquery").setValue(''); $("#yside").dialog('destroy'); $('#yside').remove(); }, open: function(event, ui) { $('').insertAfter("#ypopup").parent(".ui-dialog-content"); var position = $("#ypopup").parent(".ui-dialog").position(); $("#yside").dialog({ title: 'Navigation', autoOpen: false, draggable: false, resizable: false, width: 220, height: $("#ypopup").parent(".ui-dialog").height()-55, minHeight: $("#ypopup").parent(".ui-dialog").height()-55, show: 'slide', hide: 'slide', position : [position.left+$("#ypopup").parent(".ui-dialog").width()+5,position.top+32], open: function(event, ui) { $('div.ui-widget-shadow').remove(); $('#ypopup').dialog( 'moveToTop' ); } }); $('.ui-widget-shadow').remove(); $('div[aria-labelledby="ui-dialog-title-yside"] div.ui-dialog-titlebar').remove(); $("#ypopup").bind("scroll", function(e){ p1 = $("#ypopup h3 :last").position().top; if(p1-$("#ypopup").dialog( "option", "height" ) < 0) { startRecord = startRecord + maximumRecords; yacysearch(submit, false); } }); } }); $('#ysearch').keyup(function(e) { if(e.which == 27) { // ESC $("#ypopup").dialog('close'); $("#yquery").setValue(""); } else if(e.which == 39) { // Right startRecord = startRecord + maximumRecords; yacysearch(submit, false); } if(ycurr == $("#yquery").getValue()) { return false; } if ($("#yquery").getValue() == '') { if($("#ypopup").dialog('isOpen')) $("#ypopup").dialog('close'); } else { ycurr = $("#yquery").getValue(); if(!submit) yacysearch(false, true); else submit = false; } return false; }); $('#ysearch').submit(function() { submit = true; ycurr = $("#yquery").getValue(); if (!$("#ypopup").dialog('isOpen')) $("#ypopup").dialog('open'); else if ($("#yside").dialog('isOpen')) $("#yside").dialog('close'); $("#yquery").focus(); yacysearch(yconf.global, true); return false; }); } function yacysearch(global, clear) { var url = yconf.url + '/yacysearch.json?callback=?' if(clear) { $('#ypopup').empty(); var loading = "Current search terms: "+searchTerms+"
" var desc = "Sorry, this should not have happened - please try again!
"; $(title+desc+url).appendTo("#ypopup"); } }); $.getJSON(url, param, function(json, status) { if (json[0]) data = json[0]; else data = json; var searchTerms = data.channels[0].searchTerms; if(ycurr.replace(/ /g,"+") != searchTerms) { return false; } if(clear) { $('#ypopup').empty(); } var total = data.channels[0].totalResults; if(global) var result = 'global'; else var result = 'local'; var count = 0; $.each ( data.channels[0].items, function(i,item) { if (item) { var favicon = ""; var title = ""+item.description+"
"; var date = ""+item.pubDate.substring(0,16); var size = " | "+item.sizename+"
"; $(title+desc+url+date+size).appendTo("#ypopup"); } count++; } ); if(count == 0) { if (clear) $('#ypopup').empty(); var favicon = ""; var title = "Current search terms: "+searchTerms+"
" var desc = "You could restate your search or release some navigators...
"; $(title+desc+url).appendTo("#ypopup"); } if(clear) { $('#yside').empty(); var query = unescape($("#yquery").getValue()); var yglobal = "local"; var sel_date = ""; var sel_relev = ""; var sel_local = ""; var sel_global = ""; if(query.indexOf("/date") != -1) sel_date = 'checked="checked"'; else sel_relev = 'checked="checked"'; if(global) { sel_global = 'checked="checked"'; yglobal = "global"; } else sel_local = 'checked="checked"'; var ylogo = ""; var ymsg= "Total "+yglobal+" results: "+total; $(""+ylogo+" | "+ymsg+" |
Get results: | ';
var radio2 = 'Sort by: |