/* style art */

var searchname = 'en.html';

var usebannercode = true;

var ButtonCode = "<img src='searchbutton.gif' border=0>";

function templateBody()
{
	document.write('<html><head><title>XSearch</title><link href="css/css.css" rel="stylesheet" type="text/css"></head><body><Center><table border=0 width=400><tr><td>');
}

function templateEnd()
{
	document.write('</td></tr></table></center></body></html>');
}

function bannerCode()
{
}


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

var finds =0;
var sites =0;
var version = "v5.0"
var andresult = false;
var SortResults = true;
var display_start = 1;	
var displast = 10;

function searchAll(keyword)
{
	var timeA=new Date();
	var nw=1;
	finds=0;
	sites=0;

	var x = parseIt(keyword);
	if(x == -1)	return;
	total_keywords=x;

	document.open();
	document.clear();
	document.write('<link rel="stylesheet" href="xsearch.css">');
	AddBody();

	if (keyword.length>50) keyword=keyword.substring(0,60)+"...";

	results=new makeArray(records_count,1);
	order=new makeArray(records_count,1);
	for (q=1; q<=results.length; q++){
		results[q]=0;
		order[q]=q;
	}

	data=new makeRecordLinks(records_count);

	while(keywords[nw].length > 1)
	{
		search(data,keywords[nw]);
		nw++;
	} 

	if (andresult)
	{
		for (a=1; a<=results.length; a+=1)
		{
			if (results[a]>0)
			{
				if (results[a]<=(total_keywords-1)*2)
				{
					results[a]=0;
					sites-=1;
				}
			}
		}
	}

	var temp =0;

	if ((SortResults==true)&&(keywords!='[all]'))
	{
	 	for (a=results.length; a>=2; a-=1)
		{
			for (b=1; b<a; b+=1)
			{
				if (results[order[a]]>results[order[b]])
				{
					temp=order[b];
					order[b]=order[a];
					order[a]=temp;
				}
			}
		}
	} else {
		b=0;
	 	for (a=results.length; a>=2; a-=1)
		{
			if (results[a]>0)
			{
				order[b]=a;
				b++
			}
		}
	}

	// Now we build the output page
	displast=display_start+10;
	if (displast>sites) displast=sites+1;

	var timeB=new Date();

	document.write("<center><h3>Showing results <b>"+display_start+"-"+(displast-1)+"</b> of <b>"+sites+"</b> for <b>"+keyword+"</b>. Search took <b>"+((timeB-timeA)/1000)+"</b> seconds.</h3></center>");

	if (finds==0)
	{
		document.write("<h3><font color=green>no hits on <b>''"+keyword+"''</b></font></h3>"+
						"<p>Your search - <b>"+keyword+"</b> - did not match any documents in this database.</p>"+
						"<LI>Make sure all words are spelled correctly.</li>"+
						"<LI>Try using fewer words.</li>"+
						"<LI>Try using more general keywords.</li>"+
						"<LI>Try different keywords.</li></span>"+
						"</p>");
			
		DisplayXSearch();
		document.close();
		return
	}

	q2=display_start;
	q3=displast;
	for (q=display_start; q<q3;)
	{
		if (results[order[q]]>0)
		{
			document.write("<span class='xtitle'>"+data[order[q]].v1+"</span><br>");
			x1=v1[order[q]].indexOf('http://')+7;
			if (x1==6) x1=v1[order[q]].indexOf('href=')+5;
			x2=v1[order[q]].indexOf('>');
			if (x1>0 && x2>0)
			{
				tmp=v1[order[q]].substring(x1,x2);
				x2=tmp.indexOf(' ');
				if (x2>0) tmp=tmp.substring(0,x2);
				if (tmp.substring(0,1)=="'") tmp=tmp.substring(1,tmp.length-1);
				if (tmp.substring(0,1)=='"') tmp=tmp.substring(1,tmp.length-1);
				document.write("<table border=0 width=500><tr><td><span class='xresult'>"+v3[order[q]]+"</span></td></tr></table><span class='xlocation'>"+tmp+"</span><br><br>");
			}
			q2++;
   		}
		q+=1;
	}

	if (finds>10)
	{
		document.write("<BR>");
		pages=Math.round(finds/10);
		if (finds%10<6)	pages++;

		// Create the parameter string
		paramstring=searchname+"?keywords="+keyword+"&and="+andresult+"&sort="+SortResults;

		document.write("<center><span class='xsmall'>");
		if (display_start>1) document.write("<a href='"+paramstring+"&disp="+(display_start-10)+"'>previous page</a>");

		document.write("&nbsp;&nbsp;&nbsp;");

		for (i=1; i<=pages;){
			if ((((i-1)*10)+1)<=sites) {
				document.write("<a href='"+paramstring+"&disp="+(((i-1)*10)+1)+"'>"+i+"</a>&nbsp&nbsp ");
			}
			i++;
		}

		document.write("&nbsp;&nbsp;&nbsp;");

		if (displast<=sites) document.write("<a href='"+paramstring+"&disp="+(displast)+"'>Next page</a>");
		document.write("</span></center>");
	}

	DisplayXSearch();
	document.close();
}

function Cat()
{
	document.open();
	document.clear();
	document.write('<link rel="stylesheet" href="xsearch.css">');
	AddBody();
	DisplayXSearch();
	document.close();
}


function makeArray(n,vartype) {
	this.length = n;
	for (var k = 1; k <= n; k++) {
		if (vartype==0){
			this[k] = "";
		} else {
			this[k] = 0;
		}
	}
	return this;
}               

function stripInput(key)
{
	while(key.substring(0,1) == ","  || key.substring(0,1) == " " ) key = key.substring(1,key.length);
	while(key.substring(key.length-1,key.length) == "," || key.substring(key.length-1,key.length) == " ") key = key.substring(0,key.length-1);
	return key;
}

function parseIt(key) {
	key = stripInput(key)+" ";
	var y = 1;

	while(key.indexOf(" ") > 0)
	{
		if (key.substring(0,1)=='"')
		{
			var pos=key.indexOf('"',2);
			keywords[y]=key.substring(1,pos);
			keywords[y]=stripInput(keywords[y]);
			y++;
			key=key.substring(pos+1,key.length);
		} else {
			var pos=key.indexOf(' AND ');
			if ((pos>0) && (key.indexOf(' ')>=pos))
			{
				pos=key.indexOf(' ',pos+5);
				keywords[y]=key.substring(0,pos);
				keywords[y]=stripInput(keywords[y]);
				y++;
				key=key.substring(pos+1,key.length);
				if (key.substring(0,4)=='AND ')
				{
					pos=keywords[y-1].indexOf(' ')+5;
					key=keywords[y-1].substring(pos,keywords[y-1].length)+' '+key;
				}
			} else {
		  		var pos=key.indexOf(' OR ');
		  		if ((pos>0) && (key.indexOf(' ')>=pos))
				{
					pos=key.indexOf(' ');
					keywords[y]=key.substring(0,pos);
					keywords[y]=stripInput(keywords[y]);
					if (keywords[y]!=keywords[y-1])	y++;
					key=key.substring(pos+1,key.length);
					pos=key.indexOf('OR ');
					key=key.substring(pos+3,key.length);
					pos=key.indexOf(' ');
					keywords[y]=key.substring(0,pos);
					keywords[y]=stripInput(keywords[y]);
					y++;
					key=key.substring(pos+1,key.length);
					if (key.substring(0,3)=='OR ') key=keywords[y-1]+' '+key;
				} else {
					var pos = key.indexOf(" ");
					keywords[y]=key.substring(0,pos);
					keywords[y] = stripInput(keywords[y]); 
					y++;
					if(y > 50) return -1
					key=key.substring(pos+1,key.length);
				}
			}
		}
	}
	return y-1;
}


var keywords = new makeArray(50,0);
var results;
var foundword;
var data;
var order;
var total_keywords;

function dataEntry ()
{
        this.v1="";
        this.v2="";
        return this;
}

function makeRecordLinks(size)
{
	this.length = size;
	for (var r=1; r<= size; r++) 
	{
           this[r] = new dataEntry();
           this[r].v1 = v1[r];
           this[r].v2 = v2[r]; 
	}
	return this;
}

function AddBody()
{
	var keytext='"'+searchname+'?keywords="+';
	var andtext='"&and="+';

	document.write('<script>function doSearch(){'+
						'searchwords=document.searchform.searchwords.value; '+
						'while (searchwords.indexOf(" ")>-1){ pos=searchwords.indexOf(" ");'+
						'searchwords=searchwords.substring(0,pos)+"+"+searchwords.substring(pos+1); }'+
						'document.location='+keytext+' searchwords+'+andtext+'"0"}'+
						'<'+'/'+'script>'
						);

	templateBody();
	//document.write("<form name='searchform' method='post' action='javascript:doSearch()'><table border='0' width='100%'><tr><td align='center'><font face='Arial, Helvetica, sans-serif' size='3'><input name='searchwords' type='text' size='30'>&nbsp;&nbsp;<a href='javascript:doSearch()'>"+ButtonCode+"</a></font></td></tr></table></form>");
	document.write("<form name='searchform' method='post' action='javascript:doSearch()'><table border='0' width='100%'><tr><td align='center'><font face='Arial, Helvetica, sans-serif' size='3'><input name='searchwords' type='text' size='30'>&nbsp;&nbsp;<a href='javascript:doSearch()' style='font-weight:bold; font-size:10pt'>Search </a></font></td></tr></table></form>");
	if (usebannercode) bannerCode();
}

function DisplayXSearch()
{
	
	templateEnd();
}

function search(records, keyword)
{
	var hit=0;
	var addcomplete=0;
	
	for (q=1; q<=records.length; q++) {
	addcomplete=0;
	search_parm=records[q].v2.toLowerCase()+" "+v3[q].toLowerCase();
	
	if (keyword.indexOf(' AND ')>0)
	{
		firstword=keyword.substring(0,keyword.indexOf(' '));
		lastword=keyword.substring(keyword.indexOf(' AND ')+5,keyword.length);
		if ((search_parm.indexOf(" "+firstword+" ") != -1) && (search_parm.indexOf(" "+lastword+" ")!= -1 ))
		{
			hit++;
			finds++;
			if(hit < 2)
			{ 
				if (results[q]==0) sites++;
				results[q] +=2;
			} 
		}
	} else {
		keyword=keyword.toLowerCase();
		if ((search_parm.indexOf(" "+keyword+" ") != -1) ||(keyword=="[all]"))
		{
			hit++;
			finds++;
			if(hit<2)
			{ 
				if (results[q]==0) sites++;
				results[q]+=2;
			} 
		} else {
			// check for a half hit (ie. search:share find:SHAREware)
			if (search_parm.indexOf(keyword) != -1)
			{
				hit++;
				finds++;
				if(hit < 2)
				{
					if (results[q]==0) sites++;
					results[q]+=1;
					x=search_parm.indexOf(keyword)+keyword.length;
					pos=search_parm.substring(1,x-keyword.length);
					while (pos.indexOf(" ")!=-1)
					{
						y=pos.indexOf(" ");
						pos=pos.substring(y+1,pos.length);
					}
					if (pos.length<=2) addcomplete++;

					pos=search_parm.substring(x,search_parm.length);
					fullresult=search_parm.substring(x,x+pos.indexOf(" "));
					
					if (fullresult.length<=2) addcomplete++;
					if (addcomplete>1) results[q]+=1;
				}
			}
		}
	}
	hit=0;
	} 
}                                       

var searchwords = '';
var newload = true;

function countParams(text)
{
	pos=-1;
	tmp = "";
	if (text=='') return 0;
	text=text+'&';
	i=0;
	while (text.length>0)
	{
		pos=text.indexOf('&',0);
		tmp=text.substring(pos+1);
		text=tmp;
		i++;
	}
	return i;
}	

function getCommand(text,val)
{
	pos=-2;
	tmp = "";
	text=text+'&';
		
	for (i=0; i<=val;)
	{
		pos2=pos+2;
		pos=text.indexOf('&',pos2);
		tmp=text.substring(pos,pos2-1);
		i++;
	}
	text=tmp;
	pos=text.indexOf('=',0);
	if (pos!=-1) tmp=text.substring(pos,0);
	tmp=tmp.toLowerCase();
	return tmp;
}

function getValues(text,val)
{
	pos=-2;
	tmp = "";
	text=text+'&';
	for (i=0; i<=val;)
	{
		pos2=pos+2;
		pos=text.indexOf('&',pos2);
		tmp=text.substring(pos,pos2-1);
		i++;
	}
	text=tmp;
	pos2=text.indexOf('=',0)+1;
	if (pos2!=-1)
	{
		tmp=text.substring(pos2);
	} else { 
		tmp='' 
	}
	
	pos=-2;
	text=tmp;	
	if (text.indexOf('%20')>0)
	{
		pos=text.indexOf('%20',0);
		tmp=text.substring(0,pos2-4)+' '+text.substring(pos2-1,text.length);
		text=tmp;
	}
	return tmp;
}		

function initXsearch()
{
	if (searchwords!='')
	{
		searchAll(searchwords);
	} else {
		if (newload) Cat();
	}
}

function doParamStuff(findw)
{
	Myparams=countParams(findw);
	if (Myparams>0)
	{
		for (cnt=0; cnt<Myparams;)
		{
			tempw=getCommand(findw,cnt);
			tempv=getValues(findw,cnt);

			if (tempw=='keywords')
			{
				searchwords=getValues(findw,cnt);
				origsearchwords=searchwords;
				while (searchwords.indexOf('+')>-1)
				{
					pos=searchwords.indexOf('+');
					searchwords=searchwords.substring(0,pos)+' '+searchwords.substring(pos+1);
				}
			}
			if (tempw=='sort')
			{
				if ((tempv=='0')||(tempv=='false'))
				{
					SortResults=false;
				} else {
					SortResults=true;
				}
			}
					
			if (tempw=='and')
			{
				if ((tempv=='1')||(tempv=='true'))
				{
					andresult=true;
				} else {
					andresult=false;
				}
			}

			if (tempw=='disp') display_start=parseInt(tempv);
			cnt +=1;
		}
	}
}

findw=document.location.search;
findw="&"+findw.substring(1,findw.length);

while (findw.indexOf('%20')>0)
{
	pos2=findw.indexOf('%20',0);
	tmp=findw.substring(0,pos2)+' '+findw.substring(pos2+3,findw.length);
	findw=tmp;
}

doParamStuff(findw);

