//// Site's main code// 15/11/04 JM: Created


// Set up the page
function pageLoad(strLang)
{
	HighlightSearchEngines();
}


// Open a window
function wopen(sURL)
{
	var sOptions="location=no,toolbar=no,menubar=no,directories=no,status=no,scrollbars=yes,dependent=yes,resizable=yes,";
	var sTarget="";
	var a=arguments;

	if (2==a.length)
	{
		sOptions=a[1];
	}
	else if (3==a.length)
	{
		sOptions=sOptions+"width="+a[1]+",height="+a[2];
	}

	var oWnd=window.open(sURL,sTarget,sOptions);

	return false;
}


function HighlightSearchEngines()
{
	var referrer = document.referrer;
	if (!referrer)
	{
		return false;
	}
	
	var site = referrer.split('/')[2].toLowerCase();
	var queryString = referrer.split('?')[1];


	if (-1 < site.indexOf(".google."))
	{
		return HighlightSearchEngine(queryString, "q");
	}
	if (-1 < site.indexOf(".yahoo."))
	{
		return HighlightSearchEngine(queryString, "p");
	}
	if (-1 < site.indexOf(".msn."))
	{
		return HighlightSearchEngine(queryString, "q");
	}	
	if ("resources.renishaw.com" == site)
	{
		return HighlightSearchEngine(queryString, "terms");
	}
	
	return false;
}


function HighlightSearchEngine(queryString, term)
{
	var queryItems= queryString.split('&');
	var searchString = "";
	var termTest;
	
	for (var queryItemPosition = 0; queryItemPosition < queryItems.length; queryItemPosition++)
	{
		termTest = queryItems[queryItemPosition].toLowerCase();
		
		if ((term.toLowerCase() + "=") == termTest.substr(0, term.length + 1))
		{
			searchString = queryItems[queryItemPosition].substr(term.length + 1);
		}
	}

	if ("" == searchString)
	{
		return false;
	}
	
	searchString = searchString.replace(/\+/gi, " ");
	searchString = unescape(searchString);
	searchString = searchString.replace(/\"/gi, "");

	HighlightTerms(searchString, false);
	
	return true;
}

function HighlightTerms(searchText, treatAsPhrase)
{
	if (treatAsPhrase) 
	{
		searchArray = [searchText];
	}
	else 
	{
		searchArray = searchText.split(" ");
	}

	if (!document.body || "undefined" == typeof(document.body.innerHTML)) 
	{
		return false;
	}

	var bodyText = document.body.innerHTML;

	for (var searchTermPosition = 0; searchTermPosition < searchArray.length; searchTermPosition++) 
	{
		bodyText = HighlightTerm(bodyText, searchArray[searchTermPosition].toLowerCase());
	}

	document.body.innerHTML = bodyText;
}

function HighlightTerm(bodyText, term) 
{
	var startHtml = "<span class='highlight'>";
	var endHtml = "</span>";

	var replacementBody = "";
	var pagePosition = -1;
	var lcBodyText = bodyText.toLowerCase();
    
	while (bodyText.length > 0) 
	{
		pagePosition = lcBodyText.indexOf(term, pagePosition+1);

		if (pagePosition < 0) 
		{
			replacementBody += bodyText;
			bodyText = "";
		} 
		else 
		{
			if ((bodyText.lastIndexOf(">", pagePosition) >= bodyText.lastIndexOf("<", pagePosition)) && (lcBodyText.lastIndexOf("/script>", pagePosition) >= lcBodyText.lastIndexOf("<script", pagePosition)))
			{
				replacementBody += bodyText.substring(0, pagePosition) + startHtml + bodyText.substr(pagePosition, term.length) + endHtml;
				bodyText = bodyText.substr(pagePosition + term.length);
				lcBodyText = bodyText.toLowerCase();

				pagePosition = -1;
			}
		}
	}

	return replacementBody;
}