//
// Choice of multiple search engines // Autor: Jakob Voss, Guillaume // Version: 0.3.8 // Published as Public Domain // Map of search engines and some OpenSearch-based fields var searchEngines = { mediawiki: { ShortName: "Interne Suche", Template: "/w/index.php?search={searchTerms}" }, globalwpsearch: { ShortName: "Global WP", Template: "http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?timeout=120&search={searchTerms}" }, google: { ShortName: "Google", Template: "http://www.google.com/search?as_sitesearch=de.wikipedia.org&hl={language}&q={searchTerms}" }, wikiwix: { ShortName: "Wikiwix", Template: "http://de.wikiwix.com/index.php?action={searchTerms}&lang={language}" }, webde: { ShortName: "Web.de", Template: "http://wiki.suche.web.de/wiki/?su={searchTerms}&wmc=suche@home.suche@wiki" }, yahoo: { ShortName: "Yahoo!", Template: "http://de.search.yahoo.com/search?p={searchTerms}&vs=de.wikipedia.org" }, wlive: { ShortName: "Windows Live", Template: "http://search.live.com/results.aspx?q={searchTerms}&q1=site:http://de.wikipedia.org" } }; function changeSearchEngine(selectedId, searchTerms) { var currentId = document.getElementById("searchengineChoices").currentChoice; if (selectedId == currentId) return; // select document.getElementById("searchengineChoices").currentChoice = selectedId; var radio = document.getElementById('searchengineRadio-' + selectedId); radio.checked = "checked"; var engine = searchEngines[selectedId]; var p = engine.Template.indexOf('?'); var params = engine.Template.substr(p+1); var form; if (document.forms["search"]) { form = document.forms["search"]; } else { form = document.getElementById("powersearch"); } form.setAttribute("action", engine.Template.substr(0,p)); var l = ("" + params).split("&"); for (var i in l) { var p = l[i].split("="); var pValue = p[1]; if (pValue == "{language}") { } else if (pValue == "{searchTerms}") { var input; if (document.forms["search"]) { input = document.getElementById("searchText"); } else { input = document.getElementById("powerSearchText"); } input.name = p[0]; } else { var input = document.getElementById("searchengineextraparam"); input.name = p[0]; input.value = pValue; } } } function externalSearchEngines() { if (typeof SpecialSearchEnhanced2Disabled != 'undefined') return; if (wgPageName != "Spezial:Suche") return; var mainNode; if (document.forms["search"]) { mainNode = document.forms["search"]; } else { mainNode = document.getElementById("powersearch"); if (!mainNode) return; var mainNode = mainNode.lastChild; if (!mainNode) return; while(mainNode.nodeType == 3) { mainNode = mainNode.previousSibling; } } // selected search engine var firstEngine = "mediawiki"; var choices = document.createElement("div"); choices.setAttribute("id","searchengineChoices"); choices.style.textAlign = "center"; // get current search value and remove existing search form var lsearchbox = document.getElementById("powerSearchText"); var initValue = lsearchbox.value; // create search forms and choice var space = ""; for (var id in searchEngines) { var engine = searchEngines[id]; if (space) choices.appendChild(space); space = document.createTextNode(" "); var attr = { type: "radio", name: "searchengineselect", value: id, onClick: "changeSearchEngine(this.value)", id: "searchengineRadio-"+id }; var html = ""; var span = document.createElement("span"); span.innerHTML = html; choices.appendChild( span ); var label = document.createElement("label"); label.htmlFor = "searchengineRadio-"+id; label.appendChild( document.createTextNode( engine.ShortName ) ); choices.appendChild( label ); } mainNode.appendChild(choices); var input = document.createElement("input"); input.id = "searchengineextraparam"; input.type = "hidden"; mainNode.appendChild(input); changeSearchEngine(firstEngine, initValue); } addOnloadHook(externalSearchEngines);