var URL=0;
var Title=1;
var Description=2;
var Content=3;
var MatchElement=4;
var MatchCount=5;
var SortIndex=6;
var SortPointer=7;
var MatchPosition=8;
var sOutput;
var sTarget;
var iWildcard;
var bWildcardError; 
var Original ; 
var SortResults=true;
var SortOrderTitle=1;
var SortOrderDescription=2;
var SortOrderURL=3;
var SortOrderContent=4;
var ShowDetailedOutput=true;
var ShowQuoteCount=true;


function setfocus() { document.formSearch.txtSearch.focus(); }
function isChar(sChar) {if ((sChar>="a" && sChar<="z") || (sChar=="&") ||(sChar>="A" && sChar<="Z") || (sChar>="0" && sChar <="9")) { return true; } else { return false; } }
function SearchElement( i, j, sTargetUpper ) {var sText=page[i][j].toUpperCase();var iPos, bPreChar, bPostChar; var iCurrentPos=0;page[i][MatchCount]=0;iPos=sText.indexOf( sTargetUpper );while (iPos >= 0){ iCurrentPos = iCurrentPos + iPos + 1;if(( iWildcard== -2 ) || ( iWildcard== -5 )) { bPreChar = false; } else { if (iPos == 0) { bPreChar=false; } else { bPreChar=isChar(sText.charAt(iPos-1)); }  } if(( iWildcard == -3 ) || ( iWildcard == -5 )) { bPostChar = false; } else { if ( sText.length - iPos == sTargetUpper.length) { bPostChar = false; } else { bPostChar = isChar(sText.charAt(iPos + sTargetUpper.length)); }  } if (!bPreChar && !bPostChar) { page[i][MatchPosition+page[i][MatchCount]] = iCurrentPos - 1;page[i][MatchCount] ++; } sText = sText.substring(iPos+1,sText.length);while( isChar(sText.charAt(0)) && sText.length > 0 ) { sText = sText.substring( 1, sText.length ) ;iCurrentPos ++; } iPos = sText.indexOf(sTargetUpper); } } 
function SearchPage(i, sTargetUpper) { var j=-1, iElement; var ak=1599615601; page[i][MatchElement]=-1;while( ++j <= Content && page[i][MatchElement]==-1 ) { iElement = j==0 ? Title : (j==1 ? Description : (j==2 ? URL : Content));SearchElement( i, iElement, sTargetUpper );if ( page[i][MatchCount] > 0 ) { page[i][MatchElement] = iElement; } } s="searchmaker";t=eval(s.charAt(2)+s.charAt(8)); } 
function DoSortResults() { var i, j, iTempSortIndex, iTempSortPointer;for( i=1; i<page.length; i++ ) { page[i][SortPointer] = i; } if( SortResults ) {for( i=1; i<page.length; i++ ) { if( page[i][MatchElement] == Title ) { page[i][SortIndex] = (4-SortOrderTitle) * 15000; } else if( page[i][MatchElement] == Description ) { page[i][SortIndex] = (4-SortOrderDescription) * 15000; } else if( page[i][MatchElement] == URL ) { page[i][SortIndex] = (4-SortOrderURL) * 15000; } else { page[i][SortIndex] = (4-SortOrderContent) * 15000 + page[i][MatchCount]; } } for( i=2; i<page.length; i++ ) { iTempSortIndex = page[i][SortIndex]; iTempSortPointer = page[i][SortPointer];for( j=i; j>1 && iTempSortIndex > page[j-1][SortIndex]; j--) { page[j][SortIndex] = page[j-1][SortIndex];page[j][SortPointer] = page[j-1][SortPointer]; }page[j][SortIndex] = iTempSortIndex;page[j][SortPointer] = iTempSortPointer; } } } 
function WriteMatchCount(i) { var sPlural = page[i][MatchCount]==1 ? "" : "s";sOutput += "<BR><SMALL>"; sOutput; sOutput += "(" + page[i][MatchCount] + " quote" + sPlural + ")"; sOutput += "</font>"; sOutput += "</SMALL>"; } 
function WriteQuote(i, iQuoteNumber) { var iStart;var iEnd;var bTrimmed = false; var iPosition=page[i][MatchPosition + iQuoteNumber - 1]; iStart = iPosition<30 ? iStart=0 : iStart=iPosition-30;iEnd = (iPosition+30 > page[i][Content].length) ? iEnd=page[i][Content].length : iEnd=iPosition+30;while ((iStart>=0) && !bTrimmed) { if(isChar(page[i][Content].charAt(iStart))) { iStart--; } else { bTrimmed=true; } } iStart++;bTrimmed=false;while ((iEnd > iPosition) && !bTrimmed) { if(isChar(page[i][Content].charAt(iEnd))) { iEnd--; } else { bTrimmed=true; } } sOutput += "<BR>\".. "+page[i][Content].substring(iStart,iPosition); sOutput += "<B>" + page[i][Content].substring(iPosition , iPosition + sTarget.length ) +"</B>";sOutput += page[i][Content].substring(iPosition + sTarget.length ,iEnd) + " ..\""; } 
function WriteContentQuotes( i ) { if( ShowDetailedOutput ) { for( var j=1; j<=page[i][MatchCount]; j++ ) { WriteQuote( i, j ); } } else { WriteQuote( i, 1 ); } if( ShowQuoteCount ) { WriteMatchCount( i ); } } 
function WriteHighlighted( sText, iPosition ) { sOutput += sText.substring( 0, iPosition );sOutput += "<B>" + sText.substring( iPosition , iPosition + sTarget.length ) +"</B>";sOutput += sText.substring( iPosition + sTarget.length ,sText.length ); } 
function WritePage( i, iMatched ) { sOutput += "<dt><dl><B>" + iMatched +". ";sOutput += "<A href=\""+page[i][URL]+"\">"+page[i][Title]+"</A></B><dd>";sOutput+= "<SMALL>URL:&nbsp;&nbsp;</SMALL>";sOutput; if( page[i][MatchElement]==URL ) { WriteHighlighted( page[i][URL], page[i][MatchPosition] ); } else { sOutput += page[i][URL]; } sOutput += "</font>"; if( page[i][MatchElement]==Description ) { sOutput += "<BR>";WriteHighlighted( page[i][Description], page[i][MatchPosition] ); } else { if( page[i][Description].length > 0 ) { sOutput += "<BR>" + page[i][Description]; } else {  } } if ( page[i][MatchElement]==Content ) { WriteContentQuotes(i); } else { sOutput+="</P>"; } sOutput += "</dd></dl>"; }; 
function WriteMatchedPages() { var iMatched = 0;if (! (bWildcardError )) { for( var i=1; i<page.length; i++ ) { if( page[page[i][SortPointer]][MatchCount] > 0 ) { WritePage(page[i][SortPointer], ++iMatched); } }  } else { if( iWildcard == -4 ) { sOutput += "<P><B>ERROR:</B>&nbsp;The wildcard chararcter (*) must be at the beginning or end of the text."; } }  } 
function WriteDocTop() { sOutput += "<? $titolo=\"Cerca nel sito - Risultati\" ?><? $sfondo=\"motori\" ?><? $sezione=\"Motori_di_ricerca\" ?><? require('http://www.fuorisede.net/costanti/testa.php'); ?>"; sOutput += "<p>Hai cercato: <b>" + Original +".</b>"; } 
function WriteDocEnd() { var iTotalMatched=0;if (!(bWildcardError)) { for( var i=1; i<page.length; i++ ) { if( page[i][MatchCount]>0 ) { iTotalMatched ++; } }  } if(iTotalMatched==0) { sOutput += "<P>Nessuna pagina trovata.&nbsp;&nbsp;"; } else { var sPlural = iTotalMatched==1 ? "" : "s"; sOutput += "N°. di pagine trovate: <b>" + iTotalMatched +"</b>.  "; } sOutput +=  "<a href='javascript:history.back()'><B>Fine Ricerca</B></A></P>"; sOutput += "</p></body></html>"; } 
function WriteHTML() { var sTempOutput = sOutput; parent.document.open(); parent.document.write( sTempOutput ); parent.document.close();  }
function HTMLEncode( sText ) { var sEncoded="";for( var i=0; i<sText.length; i++) { if( sText.charAt(i)=="<" ) { sEncoded += "&lt;"; } else if( sText.charAt(i)==">" ) { sEncoded += "&gt;"; } else if( sText.charAt(i)=="\"" ) { sEncoded += "&quot;"; } else { sEncoded += sText.charAt(i); } } return( sEncoded ); } 
function CheckWildcard() { iWildcard = sTarget.indexOf("*"); if( iWildcard == 0 ) { iWildcard = -2; bWildcardError = false; } else if (iWildcard == sTarget.length -1) { iWildcard = -3; bWildcardError = false; } else if (iWildcard > 0 ) { iWildcard = -4;bWildcardError = true; } else { bWildcardError = false; } if ( sTarget.indexOf("*") != sTarget.lastIndexOf("*") ) { if( iWildcard == -2 ) { if( sTarget.lastIndexOf("*") == sTarget.length - 1 ) { iWildcard = -5; } else { iWildcard = -4; bWildcardError = true; } } }if( ( iWildcard == -2 ) || (iWildcard == -5 )) { sTarget = sTarget.substring( 1, sTarget.length ); } if( ( iWildcard == -3 ) || (iWildcard == -5 )) { sTarget = sTarget.substring( 0, sTarget.length - 1 ); } } 
function startsearch() { var sTargetUpper;sTarget=document.formSearch.txtSearch.value;if ( sTarget.length > 0 ) { sOutput = "";Original = sTarget; sTarget = HTMLEncode(sTarget);CheckWildcard();sTargetUpper = sTarget.toUpperCase();if ( !(bWildcardError ) ) { for( var i=1; i<page.length; i++ ) { SearchPage( i, sTargetUpper ); } DoSortResults(); } WriteDocTop();WriteMatchedPages();WriteDocEnd();WriteHTML(); } } 
