//Copyright (c) 2003 paulgrant.ca
//http://www.paulgrant.ca

function GetDomainName()
{
	var i				= 0;
	var sQueryString	= "";
	var aQSet			= window.location.search.substring(1).split("&");
	var aQPair			= null;

	for(i = 0; i < aQSet.length; i++)
	{
		aQPair = aQSet[ i ].split("=");
		if(!aQPair)
			break;

		if(aQPair[ 0 ] == "Domain")
		{
			this.sDomain = aQPair[ 1 ]
			return this.sDomain;
		}
	}

	this.sDomain = "";

	return this.sDomain;
}

function DoSearch(sDomain)
{
	if(!sDomain)
		return false;

	window.location=window.location.pathname + "?Domain=" + sDomain;

	return true;
}

function AddSearchLink(oEngine, oSearch)
{
	if((!oEngine) || (!oSearch))
		return "";

	var	i		= 0;
	var sString = "";
	var sUrl	= oEngine.sSearchPath;

	if(typeof(oSearch.sSearchPrefix) == "string")
	{
		sUrl += oSearch.sSearchPrefix + this.sDomain;
	}
	else if(typeof(oSearch.sSearchPrefix) == "object")
	{
		for(i = 0; i < oSearch.sSearchPrefix.length; i++)
			sUrl += oSearch.sSearchPrefix[ i ] + this.sDomain;
	}

	sString =
	  "<a target='_blank' href='" + sUrl + "'>"
	+ oSearch.sSearchName + "</a>";

	return sString;
}

function Show()
{
	var i		= 0;
	var j		= 0;
	var sString	= "";
	var oEngine	= null;
	var oSearch	= null;

	if(!this.sDomain)
		this.GetDomainName();

	if(!this.sDomain)
		return false;

	sString += "<table border='0' cellpadding='2' cellspacing='2'>";

	for(i = 0; i < this.aEngines.length; i++)
	{
		var oEngine	= this.aEngines[ i ];
		if(!oEngine)
			return false;

		sString += "<tr><td><a href='" + oEngine.sEngineURL + "' target='_blank'>" + oEngine.sEngineName + "</a></td><td>&nbsp; &nbsp;</td>";

		if(oEngine.sAddUrl)
			sString += "<td><a target='_blank' href='" + oEngine.sAddUrl + "'>Add</a>";
		else
			sString += "<td>&nbsp;</td>";

		for(j = 0; j < oEngine.aSearches.length; j++)
		{
			var oSearch	= oEngine.aSearches[ j ];
			if(!oSearch)
				break;

			sString += "<td>&nbsp;</td><td>" + this.AddSearchLink(oEngine, oSearch) + "</td>";
		}

		sString += "</tr>";
	}

	sString += "</table>";

	document.write(sString);

	return true;
}

function AddSearch(sEngineName, sSearchName, sSearchPrefix)
{
	var i		= 0;
	var oEngine	= null;

	for(i = 0; i < this.aEngines.length; i++)
	{
		oEngine = this.aEngines[ i ];
		if(!oEngine)
			break;

		if(oEngine.sEngineName == sEngineName)
		{
			oEngine.aSearches[ oEngine.aSearches.length ] = new SearchClass(sSearchName, sSearchPrefix);
		}
	}

	return true;
}

function AddEngine(sEngineName, sEngineURL, sSearchPath, sAddUrl)
{
	this.aEngines[ this.aEngines.length ] = new EngineClass(sEngineName, sEngineURL, sSearchPath, sAddUrl);

	return true;
}

function SearchClass(sSearchName, sSearchPrefix)
{
	this.sSearchName	= ((sSearchName) ? sSearchName : "");
	this.sSearchPrefix	= ((sSearchPrefix) ? sSearchPrefix : "");

	return this;
}

function EngineClass(sEngineName, sEngineURL, sSearchPath, sAddUrl)
{
	this.sEngineName	= ((sEngineName)	? sEngineName	: "");
	this.sEngineURL		= ((sEngineURL)		? sEngineURL	: "");
	this.sSearchPath	= ((sSearchPath)	? sSearchPath	: "");
	this.sAddUrl		= ((sAddUrl)		? sAddUrl		: "");

	this.aSearches		= new Array();

	return this;
}

function SearchEnginesClass()
{
	this.sDomain		= "";
	this.aEngines		= new Array();

	this.AE				= AddEngine;
	this.AS				= AddSearch;
	this.Show			= Show;
	this.AddSearchLink	= AddSearchLink;
	this.DoSearch		= DoSearch;
	this.GetDomainName	= GetDomainName;

	return this;
}

var oSearch = new SearchEnginesClass();

oSearch.AE("AllTheWeb",		"http://www.alltheweb.com",		"http://www.alltheweb.com?q=",						"http://www.alltheweb.com/add_url.php");
oSearch.AE("Alta Vista", 	"http://www.altavista.com",		"http://www.altavista.com/web/results?q=",			"http://addurl.altavista.com/addurl/new");
oSearch.AE("AOL Search", 	"http://www.aol.com",			"http://search.aol.com/aolcom/search?query=");
oSearch.AE("GigaBlast", 	"http://www.gigablast.com",		"http://gigablast.com/search?",						"http://gigablast.com/addurl");
oSearch.AE("Google", 		"http://www.google.ca",			"http://www.google.ca/search?q=",					"http://www.google.com/addurl.html");
//oSearch.AE("HotBot", 		"http://www.hotbot.com",		"http://www.hotbot.com/default.asp?prov=HotBot&query=");
//oSearch.AE("Lycos", 		"http://www.lycos.ca",			"http://search.lycos.ca/default.asp?query=");
oSearch.AE("MSN Search", 	"http://www.msn.com",			"http://search.msn.com/advresults.aspx?");
oSearch.AE("Yahoo", 		"http://www.yahoo.com",			"http://search.yahoo.com/search?",					"http://submit.search.yahoo.com/free/request");

oSearch.AS("AllTheWeb",		"Pages",	"url.host:");
oSearch.AS("Alta Vista",	"Pages",	"host:");
oSearch.AS("AOL Search",	"Pages",	new Array("site:", " inurl:"));
oSearch.AS("GigaBlast",		"Pages",	new Array("q=", "&site=http://www."));
oSearch.AS("Google",		"Pages",	new Array("site:", " inurl:"));
//oSearch.AS("HotBot",		"Pages",	"domain:");
//oSearch.AS("Lycos",			"Pages",	"site:");
oSearch.AS("MSN Search",	"Pages",	new Array("q=", "&adv_dom="));
oSearch.AS("Yahoo",			"Pages",	new Array("va=", "&vs="));

//oSearch.AS("Yahoo",			"Pages",	new Array("va_vt=url&va=", "&vs="));

oSearch.AS("AllTheWeb",		"Links",	"link:");
oSearch.AS("Alta Vista",	"Links",	"link:");
oSearch.AS("AOL Search",	"Links",	"link:www.");
oSearch.AS("GigaBlast",		"Links",	"q=link:www.");
oSearch.AS("Google",		"Links",	"link:www.");
//oSearch.AS("HotBot",		"Links",	"link:");
//oSearch.AS("Lycos",			"Links",	"link:");
oSearch.AS("MSN Search",	"Links",	"adv_f=lnk&q=http://www.");
//oSearch.AS("Yahoo",			"Links",	"vk=www.");

//End.
