//
// Choice of multiple search engines // Autor: Jakob Voss // Version: 0.3.2 // Published as Public Domain // Map of search engines and some OpenSearch-based fields var searchEngines = { mediawiki: { ShortName: "Interne Suche", Template: "/w/index.php?title=Special:Search&search={searchTerms}&fulltext=1" }, 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&mkt=de-AR" } }; 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"; // get current search terms and hide current form if (typeof currentId != 'undefined') { var form = document.getElementById("searchengineForm-" + currentId); var inputField = searchEngines[currentId].searchTermsField; searchTerms = form.elements[ inputField ].value; form.style.display = "none"; } if (typeof searchTerms == 'undefined') searchTerms = ''; // copy value to selected form and show selected form var form = document.getElementById("searchengineForm-" + selectedId); var inputField = searchEngines[selectedId].searchTermsField; form.elements[ inputField ].value = searchTerms; form.style.display = "block"; } addOnloadHook( function() { if (typeof SpecialSearchEnhanced2Disabled != 'undefined') return; if (wgPageName != "Spezial:Suche") return; var mainNode = document.getElementById("search"); if (!mainNode) return; function SearchForm(id, engine) { var form = document.createElement("form"); form.method = "get"; var p = engine.Template.indexOf('?'); var params = engine.Template.substr(p+1); form.action = engine.Template.substr(0,p); form.id = "searchengineForm-" + id; var span = document.createElement("span"); var l = ("" + params).split("&"); for (var i in l) { var p = l[i].split("="); var pValue = p[1]; var input = document.createElement("input"); input.name = p[0]; if (pValue == "{language}") pValue = "de"; if (pValue == "{searchTerms}") { input.type = "text"; input.setAttribute("style","margin-left: 25%; width: 50%;"); engine.searchTermsField = i; } else { input.type = "hidden"; input.value = pValue; } form.appendChild(input); } var submit = document.createElement("input"); submit.type = "submit"; submit.value = "Wikipedia durchsuchen"; form.appendChild(submit); form.style.display = "none"; return form; } // selected search engine var firstEngine = "mediawiki"; var choices = document.createElement("form"); choices.setAttribute("id","searchengineChoices"); choices.style.textAlign = "center"; // get current search value and remove existing search form var lsearchbox = document.getElementById("lsearchbox"); var initValue = lsearchbox.value; while (mainNode.firstChild) mainNode.removeChild(mainNode.firstChild); // 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, onFocus: "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( SearchForm(id, engine) ); } mainNode.appendChild(choices); changeSearchEngine(firstEngine, initValue); }); //