Find-in-page script
              By Mark Wilton-Jones 11-12/10/2002

Please see http://www.howtocreate.co.uk/jslibs/ for details and a demo of this script
Please see http://www.howtocreate.co.uk/jslibs/termsOfUse.html for terms of use

To use:

Inbetween the <head> tags, put:

	<script src="PATH TO SCRIPT/findinpage.js" type="text/javascript" language="javascript1.2"></script>

Wherever you want to put a find in page form, put:

if( ( document.body && document.body.createTextRange ) || window.find ) {
	document.write( '<form action="" onSubmit="searchForText( this.elements[0].value, window ); return false;">'+
		'<input type="text" size="15"> <input type="submit" value="Find in Page"></form>' );

Recent versions of Mozilla/Firefox will only find the first result due to a selection
problem when clicking the button. To avoid this bug, put the search form in an iframe,
and make it search the 'window.parent' page.

function searchForText( toFind, frameToSearch ) {
	if( !toFind ) { window.alert( 'You have not entered any text to search for' ); return; }
	if( frameToSearch.focus ) { frameToSearch.focus(); }
	if( window.find ) {
		//Netscape compatible browsers provide the window.find method
		if( document.layers ) {
			//Against the JS spec, Netscape 4 will produce errors if too many arguments are given
			var ifFound = frameToSearch.find( toFind, false, false );
		} else {
			var ifFound = frameToSearch.find( toFind, false, false, true, false, true, false );
	} else if( frameToSearch.document.body && frameToSearch.document.body.createTextRange ) {
		//IE or compatible use various TextRange features
		if( frameToSearch.document.selection && frameToSearch.document.selection.type != 'None' ) {
			//If some text is selected already (previous search or if they have selected it)
			//make that the text range. Then move to the end of it to search beyond it
			var theRange = frameToSearch.document.selection.createRange();
			theRange.collapse( false );
		} else {
			//If no text is selected, start from the start of the document
			var theRange = frameToSearch.document.body.createTextRange();
		//find the next occurrence of the chosen string
		var ifFound = theRange.findText( toFind );
		if( ifFound ) { theRange.select(); }
	} else {
		alert ( 'Please use your browser\'s search facility' );
	if( !ifFound ) { alert ( 'Could not find text:\n' + toFind ); }