/* XSearch Engine v5.2			*/
/* developed by P.Bestebroer		*/
/* http://www.dynamic-core.net	 	*/
/* Modifié, corrigé et amélioré		*/
/* pour le site www.dcdj.fr.st		*/
/* par Benoît DODAIN			*/

function trecords()	{	this.index=(trecords.count++)
				this.image=''
				this.nom=''
				this.description=''
				this.keywords=''
				return this		}

trecords.prototype.set=function(image,nom,description,keywords)
{	this.image=image
	this.nom=nom
	this.description=description
	this.keywords=keywords	}

trecords.prototype.searchstring=function()
{	return this.image+' '+this.nom+' '+this.description+' '+this.keywords	}

trecords.prototype.count=0

function add(image,nom,description,keywords)
{	al=records.length
	records[al]=new trecords()
	records[al].set(image,nom,description,keywords)	}

records = new Array()
finds=0
sites=0
version="5.2 www.dcdj.fr.st"
andresult=false
SortResults=true
display_start=0
displast=6

function qsort(f, l)	// Non utilisée, cause une erreur "stack-overflow" dans les bases de données importantes
	{	var a=f
		var b=l
		var s
		var m = results[(a+b)>>1].val
		while (a<=b)
		{	while (results[a].val>m)
			{	a++	}
			while (m>results[b].val)
			{	b--	}
			if (a<=b)
			{	s=results[a]
				results[a]=results[b]
				results[b]=s
				a++
				b--
			}
		}
		if (f<b)
		this.qsort(f, b)
		if (a<l)
		this.qsort(a, l)
	}

function bsort()
	{	for (var i=results.length-1; i>=0; i--)
		{	for (var j=i; j>=0; j--)
			{	if (results[i].val>results[j].val)
				{	s=results[i]
					results[i]=results[j]
					results[j]=s
				}
			}	
		}
	}

function searchAll(keyword)
{	var timeA=new Date()
	var nw=0
	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_dcdj.css">')
	Addbody()

	if (keyword.length>50)
	keyword=keyword.substring(0,60)+"..."

	results=new Array()
	for (q=0; q<records.length; q++)	{	results[q]=new Array()
							results[q].rec=q
							results[q].val=0	}

	for (nw=0; nw<keywords.length; nw+=1)
	search(keywords[nw])
	if (andresult)
	{	for (a=0; a<results.length; a+=1)
		{	if (results[a].val>0)
			{	if (results[a].val<=(total_keywords-1)<<1)	{	results[a].val=0
											sites-=1		}
			}
		}
	}
	if (SortResults && keywords!='[all]')
	bsort()

	// Création de la page de résultats
	// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

	displast=display_start
	displast+=12
	if (displast>sites)
	displast=sites

	var timeB=new Date()

	if (finds==0)	{	display_start=-1; displast=0	}
	document.write("<center><h3>Résultat(s) <strong>"+(display_start+1)+"-"+(displast)+"</strong> sur <strong>"+sites+"</strong> pour <strong>"+keyword+"</strong>.<br>Votre recherche a pris <strong>"+((timeB-timeA)/1000)+"</strong> secondes.</h3></center>")

//	if (displast>sites && finds!=0)
//	displast=sites+1

	if (finds==0)	{	document.write("Votre recherche - <strong>"+keyword+"</strong> - n'a abouti à aucun résultat.</p>"+
					"<li>Vérifiez l'orthographe des mots,</li>"+
					"<li>Assurez vous qu'ils comptent plus de 2 lettres,</li>"+
					"<li>Utilisez d'autres mots,</li>"+
					"<li>N'oubliez pas les majuscules et les accents.</li> </span>"+"</p>")
				DisplayXSearch()
				document.close()
				return		}

q2=display_start
q3=displast
for (q=display_start; q<q3; q++)
{	if (results[q].val>0)
	{	rc=results[q].rec
		document.write("<center><table border='0' width='500'><tr><td valign='center'>"+records[rc].image+"</td><td width='100%' valign='center' style='border-right-style: solid; border-bottom-style: solid'> <span class='xtitle'>"+records[rc].nom+" </span><br><br> <span class='xresult'>"+records[rc].description+" </span></td></tr></table></center>")
	q2++
	}
}

if (finds>12)
{	document.write("<br>")
	pages=Math.round(finds/12)
	if (finds%12<6)
	pages++

	// Création des liens entre les pages
	// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

	paramstring=searchname+"?keywords="+keyword+"&and="+andresult+"&sort="+SortResults

	document.write("<center><img src='../medias/images/yeux.gif' width='604' height='12'><br> <span class='xsmall'>")

	if (display_start>0)
	document.write("<a href='"+paramstring+"&disp="+(display_start-12)+"'>Page précédente</a>&nbsp&nbsp|")
	else
	document.write("Page précédente&nbsp&nbsp|")

	for (i=1; i<=pages; i+=1)
	{	if ((((i-1)*12)+1)<=sites)
		document.write(" &nbsp<a href='"+paramstring+"&disp="+(((i-1)*12))+"'>"+i+"</a>&nbsp ")	}

	if (displast<sites)
	document.write("|&nbsp&nbsp<a href='"+paramstring+"&disp="+(displast)+"'>Page suivante</a>")
	else
	document.write("|&nbsp Page suivante")

	document.write(" </span></center>")
	}
DisplayXSearch()
document.close()
}

function Cat()	{	document.open()
			document.clear()
			document.write('<link rel="stylesheet" href="xsearch_dcdj.css">')
			Addbody()
			DisplayXSearch()
			document.close()	}

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=0
	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 Array()
var results

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>')
	document.write("<form name='searchform' method='post' action='javascript:doSearch()'><table border='0' align='center'><tr><td align='center' width='300'><input name='searchwords' type='text' size='26'>&nbsp;&nbsp;<a href='javascript:doSearch()'><img src='../medias/images/recherche.gif' border='0'></a></td></tr></table></form>")
}

function DisplayXSearch()
{	// Ces lignes peuvent être supprimées, mais s'il vous plait, n'ajoutez pas des choses du type Copyright par <votre nom ici> car c'est interdit,
	// et si vous voulez déplacer ou changer ces lignes, assurez-vous qu'il y a toujours un lien renvoyant vers www.dynamic-core.net pour que les personnes voulant obtenir de l'aide
	// ou télécharger la dernière version de ce moteur de recherche GRATUIT, puissent le faire...
	// Merci.
	document.write("<br><font face='Verdana, Arial, Helvetica, sans-serif' size='2' weight='normal' color='#6f6f6f'><center>Powered by <a target='_blank' href=http://www.dynamic-core.net>XSearch 5.2</a> - Free Javascript SearchEngine<br>"+"Modifié, corrigé et amélioré pour l'occasion.</center></font>")
}

function search(keyword)
{	var hit=0
	var addcomplete=0

	for (q=0; q<records.length; q++)
	{	addcomplete=0
		search_parm=" "+records[q].searchstring()+" "
		search_parm=search_parm.toLowerCase()

		if (keyword.indexOf(' AND ')>0)
		{	firstword=keyword.substring(0,keyword.indexOf(' ')).toLowerCase()
			lastword=keyword.substring(keyword.indexOf(' AND ')+5,keyword.length).toLowerCase()
			if ((search_parm.indexOf(" "+firstword+" ") != -1) && (search_parm.indexOf(" "+lastword+" ")!= -1 ))
			{	hit++
				finds++
				if(hit<2)	{	if (results[q].val==0)
							sites++
							results[q].val+=2	}
			}
		}
		else
		{	keyword=keyword.toLowerCase()
			if ((search_parm.indexOf(" "+keyword+" ") != -1) ||(keyword=="[all]"))
			{	hit++
				finds++
				if(hit<2)	{	if (results[q].val==0)
							sites++
							results[q].val+=2	} 
			}
			else
			{	// recherche de partie de mots (ex. recherche:share trouve:SHAREware)
				if (search_parm.indexOf(keyword) != -1)
				{	hit++
					finds++
					if(hit < 2)
					{	if (results[q].val==0)
						sites++
						results[q].val+=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].val+=1	}
				}
			}
		}
		hit=0
	} 
}                                       

var searchwords = ''
var newload = true

function initXsearch()	{	if (searchwords!='')
				searchAll(searchwords)
				else
				if (newload)
				Cat()			}

function tparams()
{	parameters=document.location.search
	parameters=unescape(parameters.substring(1,parameters.length)+'&')

	this.params=new Array()
	i=0
	while (parameters.indexOf('&',0)!=-1)
	{	al=this.params.length
		this.params[al]=new Array()

		tmp=parameters.substring(0,parameters.indexOf('&',0))
		parameters=parameters.substring(parameters.indexOf('&',0)+1)

		if (tmp.indexOf('=')!=-1)	{	this.params[al].command=tmp.substring(0,tmp.indexOf('='))
							this.params[al].value=tmp.substring(tmp.indexOf('=')+1)		}
		else				{	this.params[al].command=tmp
							this.params[al].value=''					}
	}
	return this
}
tparams.prototype.getValue=function(param)	{	value=''
							param=param.toLowerCase()
							al=this.params.length
							for (var i=0; i<al; i+=1)
							if (this.params[i].command==param)
							value=this.params[i].value
							return value							}

params=new tparams()
if (params.getValue('keywords')!='')		{	searchwords=params.getValue('keywords')
							origsearchwords=searchwords
							while (searchwords.indexOf('+')>-1)
							{	pos=searchwords.indexOf('+')
								searchwords=searchwords.substring(0,pos)+' '+searchwords.substring(pos+1)}
						}
if (params.getValue('sort')!='')
if (params.getValue('sort')=='0' || params.getValue('sort')=='false')
SortResults=false
else
SortResults=true

if (params.getValue('and')!='')
if (params.getValue('and')=='0' || params.getValue('and')=='false')
andresult=false
else
andresult=true

if (params.getValue('disp')!='')
display_start=parseInt(params.getValue('disp'))
