/*
    ** external JavaScript-functions **
    by Axel Hahn * http://www.axel-hahn.de/

    Feel free to use and modify this code for your own page.
	
	
	open search engine to search content within your domain
	So you don't need to create a full text search for a
	smaller website
	
	
	usage:
	(1) include this script in header
		<script src="/[path]/externalsearch.js" type="text/javascript"></script>

	(2) add js code in html body:
		<script>
			writeForm();
		</script>
	
	----------------------------------------------------------------------
	history:
	2009-04-04  first public version
*/


// ----------------------------------------------------------------------
// CONFIG
// ----------------------------------------------------------------------

	// -- searchengines - %s is used as placeholder for searchterm
	var host=window.location.host; var i=-1; var searchengines=new Array();
	i++; searchengines[i]=new Array("Ask",    "http://de.ask.com/web?q=%s+site%3A"+host+"&sm=adv&advl=de&dm=lang&qsrc=66&o=0&l=dir");
	i++; searchengines[i]=new Array("Google", "http://www.google.de/search?q=%s+site:"+host);
	i++; searchengines[i]=new Array("Bing",    "http://www.bing.com/results.aspx?q=%s+site%3A"+host+"&mkt=de-de");
	i++; searchengines[i]=new Array("Yahoo",  "http://de.search.yahoo.com/search?n=10&ei=UTF-8&va_vt=any&vo_vt=any&ve_vt=any&vp_vt=any&vd=all&vf=all&vm=p&fl=0&fr=yfp-t-501&p=%s&vs="+host);

	// -- constants:
	var lang = new Object();
	lang["searchterms"]           = "Begriff(e)";
	lang["prefered_searchengine"] = "bevorzugte Suchmaschine";
	lang["option_searchengine"]   = "Bitte Suchmaschine wählen";
	lang["hint_enterSearchterm"]  = "Bitte geben Sie einen Suchbegriff ein und wählen Sie eine Suchmaschine aus.";
	lang["search"]                = "Suchen";


// ----------------------------------------------------------------------
// FUNCTIONS
// ----------------------------------------------------------------------

// writeForm()
// public; creates the searchform
function writeExternalSearchForm() {
	var sHtml='<form name="searchform" action="" method="GET">'
		+ '<br> ' + lang["searchterms"] + ': '
		+'<input name="query" id="query" value="" type="text" size=50 maxlength="200" '
		+'	style="font-size:130%;"'
		+'	onkeyup="updateExternalSearchForm();"'
		+'	><input type="hidden" name="searchtarget" id="searchtarget" value="" size=60 ><br>'
		+'	<br>'
		+lang["prefered_searchengine"] +'<br>'
		+'<SELECT name="sbsearchengine" id="sbsearchengine" '
		+'	onchange="updateExternalSearchForm();"'
		+'	>'
		+'    <OPTION value="">'+lang["option_searchengine"]+'</OPTION>'
	for (i=0; i<searchengines.length; i++) sHtml+='<OPTION value="'+searchengines[i][1]+'" >'+searchengines[i][0]+'</option>';
	sHtml+=''
		+'</SELECT>'
		+'<br>'
		+'<br>'
		+'<div id="msgNoInput">'+lang["hint_enterSearchterm"]+'</div>'
		+'<div id="divSearchbutton" style="visibility:hidden;">'
		+'	<a href="" id="searchtarget2" class="lnkexternsearch"'
		+'		style="border:1px solid #ccc; padding: 5px; text-decoration:none;"'
		+'		onclick="return externalSearch();"'
		+'		>'+lang["search"]+'</a><br>'
		+'	<br>'
		+'</div>'
		+'</form>'
	
	document.write(sHtml);
	setLastValues();
	updateExternalSearchForm();
}

// ----------------------------------------------------------------------
// FUNCTIONS (internal)
// ----------------------------------------------------------------------

// updateExternalSearchForm()
// internal; update formfields from cookie values
function updateExternalSearchForm() {

	sUrl=document.getElementById('sbsearchengine').value;
	sSearch=document.getElementById('query').value;
	
	if (sSearch && sUrl) {
		createCookie("sLastExternalSearch", sSearch,30);
		createCookie("sLastExternalEngine", sUrl,30);
		document.getElementById('msgNoInput').style.visibility="hidden";
		document.getElementById('divSearchbutton').style.visibility="visible";
	} else {
		document.getElementById('msgNoInput').style.visibility="visible";
		document.getElementById('divSearchbutton').style.visibility="hidden";
	}
	sUrl = sUrl.replace(/\%s/g, encodeURI(sSearch));

	document.getElementById('searchtarget').value=sUrl;
	document.getElementById('searchtarget2').href=sUrl;

}

// externalSearch()
// returns true if searchterm and search engine have been selected.
function externalSearch() {
	return document.getElementById('msgNoInput').style.visibility=="hidden";
}

// setLastValues()
// internal; save current searchterm and selected search engine in cookies
function setLastValues() {
	var sLastExternalSearch=readCookie("sLastExternalSearch");
	var sLastExternalEngine=readCookie("sLastExternalEngine");
	if (sLastExternalEngine) document.getElementById('sbsearchengine').value=sLastExternalEngine;
	if (sLastExternalSearch) document.getElementById('query').value=sLastExternalSearch;
} 

// ----------------------------------------------------------------------