// Tipue 2.1.1
//
//Tipue Copyright (C) 2002-2005 Tri-State Consultants
//Tipue is released under the GNU General Public License


// ---------- script properties ----------


var results_location = 'results.html'; //page to display results
var results_per_page = 10;
var xml = 0;
var xml_data = "tip_data.xml"
var include_num = 0;
var include_url = 0;
var bold_query = 0;
var bold_title = 0;
var bold_header = 0;
var bold_footer = 1;
var include_images = 0;
var image_height = 0;
var image_width = 0;


// ---------- string properties ----------


var s_1 = 'Your search did not match any documents.<p>Make sure all keywords are spelled correctly.<br>Try different or more general keywords.';
var s_2 = 'Previous';
var s_3 = 'Next';
var s_4 = 'to';
var s_5 = 'of';
var s_6 = 'for';
var s_7 = '<p>Search powered by open source <a href="http://www.tipue.com" target="_blank">Tipue</a></p>';


// ---------- end of properties ----------

//var dit = "";

//var tid = "";
//alert(window.location.search);
//var tid = window.location.search;


//var fo = new Array(0);
//tid = tid.substring(1, tid.length);
//list = tid.split("&");
//for (i=0; i <= list.length - 1; i++)
//{
	//fot = list[i].split("="); 
	//fo.splice(fo.length, 2, fot[0], fot[1]);
//}
//for (i=0; i <= fo.length - 1; i++)
//{
	//fo[i] = fo[i].replace(/\+/g," ");
	//fo[i] = unescape(fo[i]);
//}
//var dit = fo[1];
var dit ;
//alert(tip_Form.d.value + " " + dit);
//var tn = fo[3];
var tn = 0;
var od = dit;
var nr = results_per_page;
tn = parseInt(tn);
var nc = 0;
var nd2 = 0;
var tr = new Array();
var rt = new Array();
var co = 0;
var tm = 0;
var pageCounter = 0;


function setCounter(countNumber){
	if(countNumber == 1010) tn += 10;
	else if(countNumber == 10101){ tn -= 10;}
	else tn = countNumber;
	//alert(countNumber);
	//alert(tn);
}

var nud = false;
if (dit == '' || dit == ' ') nud = true;

if (xml == 1) //if using xml to store data, not for this site :)
{
	var s = new Array();
	if (window.ActiveXObject)
	{
		var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
		xmldoc.async = false;
		xmldoc.onreadystatechange = function ()
		{
			if (xmldoc.readyState == 4) get_xml();
		}
	}
	else if (document.implementation && document.implementation.createDocument)
	{
		var xmldoc = document.implementation.createDocument("", "", null);
		xmldoc.async = false;
		xmldoc.onload = get_xml;
	}
	xmldoc.load(xml_data);
}

function get_xml() //Also ignore this since no xml is used
{
	if (xml == 1)
	{
		var pages = xmldoc.getElementsByTagName("page");
		for (var c = 0; c < pages.length; c++) {
			var rs = pages[c];
			var es0 = rs.getElementsByTagName("title")[0].firstChild.data;
			var es1 = rs.getElementsByTagName("url")[0].firstChild.data;
			var es2 = rs.getElementsByTagName("text")[0].firstChild.data;
			var es3 = rs.getElementsByTagName("content")[0].firstChild.data;
			if (rs.getElementsByTagName("open").length > 0) var es4 = rs.getElementsByTagName("open")[0].firstChild.data; else var es4 = '0';
			if (rs.getElementsByTagName("rank").length > 0) var es5 = rs.getElementsByTagName("rank")[0].firstChild.data; else var es5 = '0';
			if (rs.getElementsByTagName("image").length > 0) var es6 = rs.getElementsByTagName("image")[0].firstChild.data; else var es6 = '';
			s[c] = es0 + '^' + es1 + '^' + es2 + '^' + es3 + '^' + es4 + '^' + es5 + '^' + es6;
		}
	}
}

function refreshSearch(){

dit = document.tip_Form.d.value;
//alert(tip_Form.d.value + " " + dit);

if (dit.charAt(0) == '"' && dit.charAt(dit.length - 1) == '"') tm = 1;
var rn = dit.search(/ or /i);
if (rn >= 0) tm = 2;
rn = dit.search(/-/i);
if (rn >= 0 && tm != 1)
{
	rn = dit.search(/ /i);
	if (rn != 0) dit = dit.replace(/-/gi, ' -');
}
rn = dit.search(/ not /i);
if (rn >= 0 && tm != 1) dit = dit.replace(/ not /gi, ' -');
rn = dit.search(/\+/i);
if (rn >= 0)
{
	rn = dit.search(/ /i);
	if (rn != 0) dit = dit.replace(/\+/gi, ' +');
}

if (tm == 0)
{
	var woin = new Array();
	dit = dit.replace(/ and /gi, ' ');
	var wt = dit.split(' ');
	for (var a = 0; a < wt.length; a++)
	{
		woin[a] = 0;
		if (wt[a].charAt(0) == '-') woin[a] = 1;
	}
	for (var a = 0; a < wt.length; a++)
	{
		wt[a] = wt[a].replace(/^\-|^\+/gi, '');
	}
	a = 0;
	for (var c = 0; c < s.length; c++) {
		var es = s[c].split('^');
		var rk = 100;
		if (es[5] == null) es[5] = '0';
		if (parseInt(es[5]) > 10) es[5] = '10';
		var pa = 0;
		var nh = 0;
		for (var i = 0; i < woin.length; i++)
		{
			if (woin[i] == 0)
			{
				nh++;
				var nt = 0;
				var pat = new RegExp(wt[i], 'i');
				rn = es[0].search(pat);
				if (rn >= 0)
				{
					rk = rk - 11;
					rk = rk - parseInt(es[5]);					
					nt = 1;
				}
				rn = es[2].search(pat);
				if (rn >= 0) {
					rk = rk - 11;
					rk = rk - parseInt(es[5]);					
					nt = 1;
				}
				rn = es[3].search(pat);
				if (rn >= 0)
				{
					rk = rk - 11;
					rk = rk - parseInt(es[5]);					
					nt = 1;
				}
				if (nt == 1) pa++;
			}
			if (woin[i] == 1)
			{
				var pat = new RegExp(wt[i], 'i');
				rn = es[0].search(pat);
				if (rn >= 0) pa = 0;
				rn = es[2].search(pat);
				if (rn >= 0) pa = 0;
				rn = es[3].search(pat);
				if (rn >= 0) pa = 0;
			}
		}
		if (pa == nh)
		{
			tr[a] = rk + '^' + s[c];
			a++;
		}
	}
	tr.sort();
	co = a;
}

if (tm == 1)
{
	dit = dit.replace(/"/gi, '');
	var a = 0;
	var pat = new RegExp(dit, 'i');
	for (var c = 0; c < s.length; c++)
	{
		var es = s[c].split('^');
		var rk = 100;
		if (es[5] == null) es[5] = '0';
		if (parseInt(es[5]) > 10) es[5] = '10';
		rn = es[0].search(pat);
		if (rn >= 0)
		{
			rk = rk - 11;
			rk = rk - parseInt(es[5]);
		}
		rn = es[2].search(pat);
		if (rn >= 0)
		{
			rk = rk - 11;
			rk = rk - parseInt(es[5]);
		}
		rn = es[3].search(pat);
		if (rn >= 0)
		{
			rk = rk - 11;
			rk = rk - parseInt(es[5]);
		}
		if (rk < 100)
		{
			tr[a] = rk + '^' + s[c];
			a++;		
		}
	}
	tr.sort();
	co = a;
}

if (tm == 2)
{
	dit = dit.replace(/ or /gi, ' ');
	var wt = dit.split(' ');
	var a = 0;
	for (var i = 0; i < wt.length; i++)
	{
		var pat = new RegExp(wt[i], 'i');
		for (var c = 0; c < s.length; c++)
		{
			var es = s[c].split('^');
			var rk = 100;
			if (es[5] == null) es[5] = '0';
			if (parseInt(es[5]) > 10) es[5] = '10';
			var pa = 0;
			var rn = es[0].search(pat);
			if (rn >= 0)
			{
				rk = rk - 11;
				rk = rk - parseInt(es[5]);		
				if (rn >= 0)
				{
					for (var e = 0; e < rt.length; e++) {
						if (s[c] == rt[e]) pa = 1;
					}
				}
			}
			rn = es[2].search(pat);
			if (rn >= 0)
			{
				rk = rk - 11;
				rk = rk - parseInt(es[5]);		
				if (rn >= 0)
				{
					for (var e = 0; e < rt.length; e++)
					{
						if (s[c] == rt[e]) pa = 1;
					}
				}
			}
			var rn = es[3].search(pat);
			if (rn >= 0)
			{
				rk = rk - 11;
				rk = rk - parseInt(es[5]);		
				if (rn >= 0)
				{
					for (var e = 0; e < rt.length; e++)
					{
						if (s[c] == rt[e]) pa = 1;
					}
				}
			}
			if (rk < 100 && pa == 0)
			{
				rt[a] = s[c];
				tr[a] = rk + '^' + s[c];
				a++;
				co++;
			}
		}
	}
	tr.sort();
}
if (nud) co = 0;
od = dit;
}
// ---------- External references ----------


function tip_query() //Display previous query in the form
{
	if (od != 'undefined' && od != null) document.tip_Form.d.value = od;
}

function tip_header() //Display number of search results
{
	var returningValue = "";
	refreshSearch();
	
	if (co > 0)
	{
		var ne = nr + tn;
		tn = parseInt(tn);
		if (ne > co) ne = co;
			returningValue += 'Results '+ (tn + 1) + ' ' + s_4 + ' ' + ne + ' ' + s_5 + ' ' + co + ' ' + s_6 + ' ';
			//document.write('Results ', tn + 1, ' ', s_4, ' ', ne, ' ', s_5, ' ', co, ' ', s_6 , ' ');
		if (bold_header == 1) 
			returningValue += '<b>' + od + '</b>';
			//document.write('<b>', od, '</b>'); 
		else 
			returningValue += '"' + od + '"';
			//document.write('"' + od + '"');
	}
	else return "No Results Found";
	return returningValue;
}

function tip_out() //display search results
{
	var innerReturn = "";
	
	
	if (co == 0)
	{
		innerReturn += s_1;
		//document.write(s_1);
		return innerReturn;
	}
	if (tn + nr > co) nd2 = co; else nd2 = tn + nr;
	for (var a = tn; a < nd2; a++)
	{
		var os = tr[a].split('^');
		if (os[5] == null) os[5] = '0';
		if (include_images == 1)
		{
			if (os[7] != null) 
			innerReturn += '<a href="'+ os[2]+ '"><img src="'+ os[7]+ '" title="'+ os[1]+ '" alt="'+ os[1]+ '" border=0 width='+ image_width+ ' height='+ image_height+ '></a><p>';
			//document.write('<a href="', os[2], '"><img src="', os[7], '" title="', os[1], '" alt="', os[1], '" border=0 width=', image_width, ' height=', image_height, '></a><p>');
		}
		if (bold_query == 1 && tm == 0)
		{
			for (var i = 0; i < wt.length; i++)
			{
				var lw = wt[i].length;
				var tw = new RegExp(wt[i], 'i');
				rn = os[3].search(tw);
				if (rn >= 0)
				{
					var o1 = os[3].slice(0, rn);
					var o2 = os[3].slice(rn, rn + lw);
					var o3 = os[3].slice(rn + lw);
					os[3] = o1 + '<b>' + o2 + '</b>' + o3; 
				}
			}
		}
		if (bold_query == 1 && tm == 1)
		{
			var lw = dit.length;
			var tw = new RegExp(dit, 'i');
			rn = os[3].search(tw);
			if (rn >= 0)
			{
				var o1 = os[3].slice(0, rn);
				var o2 = os[3].slice(rn, rn + lw);
				var o3 = os[3].slice(rn + lw);
				os[3] = o1 + '<b>' + o2 + '</b>' + o3;
			}
		}
		if (include_num == 1) 
			innerReturn += (a + 1) + '. ';
			//document.write(a + 1, '. ');
		if (os[5] == '0')
		{	
			if (bold_title == 1)
				innerReturn += '<a class="searchResults" href="#" onclick="changeStatus(' + os[2].substring(os[2].length - 4, os[2].length) + ');' + "ajaxpage('" + os[2].substring(0,os[2].length - 4) + "', 'contentarea');" + '"><b>'+ os[1] +'</b></a>';
				//document.write('<a class="searchResults" href="', os[2], '"><b>', os[1], '</b></a>'); 
			else 
				innerReturn += '<a class="searchResults" href="#" onclick="changeStatus(' + parseInt(os[2].substring(os[2].length - 4, os[2].length)) + ');' + "ajaxpage('" + os[2].substring(0,os[2].length - 4) + "', 'contentarea');" + '">'+ os[1] + '</a>';
				//document.write('<a class="searchResults" href="', os[2], '">', os[1], '</a>');
		}
		if (os[5] == '1')
		{
			if (bold_title == 1) 
				innerReturn += '<a class="searchResults" href="'+ os[2]+ '" target="_blank"><b>'+ os[1]+ '</b></a>';
				//document.write('<a class="searchResults" href="', os[2], '" target="_blank"><b>', os[1], '</b></a>'); 
			else 
				innerReturn += '<a class="searchResults" href="'+ os[2]+ '" target="_blank">'+ os[1]+ '</a>';
				//document.write('<a class="searchResults" href="', os[2], '" target="_blank">', os[1], '</a>');
		}
		if (os[5] != '0' && os[5] != '1')
		{
			if (bold_title == 1) 
				innerReturn += '<a class="searchResults" href="'+ os[2]+ '" target="'+ os[5]+ '"><b>'+ os[1]+ '</b></a>';
				//document.write('<a class="searchResults" href="', os[2], '" target="', os[5], '"><b>', os[1], '</b></a>'); 
			else 
				innerReturn += '<a class="searchResults" href="'+ os[2]+ '" target="'+ os[5]+ '">'+ os[1]+ '</a>';
				//document.write('<a class="searchResults" href="', os[2], '" target="', os[5], '">', os[1], '</a>');
		}
		if (os[3].length > 1) 
			innerReturn += '<br>'+ os[3] + '<br><br>';
			//document.write('<br>', os[3]);
		if (include_url == 1)
		{
			if (os[5] == '0') 
				innerReturn += '<br><a class="searchResults" href="'+ os[2]+ '">'+ os[2]+ '</a><p>';
				//document.write('<br><a class="searchResults" href="', os[2], '">', os[2], '</a><p>');
			if (os[5] == '1') 
				innerReturn += '<br><a class="searchResults" href="'+ os[2]+ '" target="_blank">'+ os[2]+ '</a><p>';
				//document.write('<br><a class="searchResults" href="', os[2], '" target="_blank">', os[2], '</a><p>');
			if (os[5] != '0' && os[5] != '1') 
				innerReturn += '<br><a class="searchResults" href="'+ os[2]+ '" target="'+ os[5]+ '">'+ os[2]+ '</a><p>';
				//document.write('<br><a class="searchResults" href="', os[2], '" target="', os[5], '">', os[2], '</a><p>');
		}
		else {}//document.write('<p>');
	}
	return innerReturn;
}

function tip_footer() //Navigation line
{	
	var returningFooter = "";
	
	if (co > nr)
	{
		var np = Math.ceil(co / nr);
		nc = co - (tn + nr);
		if (tn > 0) var na = Math.ceil(tn / nr) + 1; else var na = 1;
			
		if (tn > 1)
		{
			var tempos = 10101;
			returningFooter += '<a class="searchResults" href="#" onclick="setCounter(' + tempos + '); ajaxpage(\'results.html\', \'contentarea\');">'+ s_2+ '</a> &nbsp;';
			//document.write('<a class="searchResults" href="', results_location, '?d=', od, '&n=', nb, '">', i + 1, '</a> &nbsp;');
		}
			//returningFooter += '<a href="'+ results_location+ '?d='+ od+ '&n='+ (tn - nr)+ '">'+ s_2+ '</a> &nbsp;';
			//document.write('<a href="', results_location, '?d=', od, '&n=', tn - nr, '">', s_2, '</a> &nbsp;');
		if (np < 10)
		{
			for (var i = 0; i < np; i++)
			{
				var nb = nr * i;
				if (nb == tn)
				{
					if (bold_footer == 1) 
						returningFooter += '<b>'+ (i + 1)+ '</b> &nbsp;';
						//document.write('<b>', i + 1, '</b> &nbsp;'); 
					else
						returningFooter += (i + 1)+ ' &nbsp;';
						//document.write(i + 1, ' &nbsp;');
				}
				else 
				{
					var temp = (i) * 10;
					returningFooter += '<a class="searchResults" href="#" onclick="setCounter(' + temp + '); ajaxpage(\'results.html\', \'contentarea\');">'+ (i + 1)+ '</a> &nbsp;';
					//document.write('<a class="searchResults" href="', results_location, '?d=', od, '&n=', nb, '">', i + 1, '</a> &nbsp;');
				}
			}
		}
		if (np > 9)
		{
			if (na < 8)
			{
				for (var i = 0; i < 9; i++)
				{
					var nb = nr * i;
					if (nb == tn)
					{
						if (bold_footer == 1) 
							returningFooter += '<b>'+ (i + 1)+ '</b> &nbsp;';
							//document.write('<b>', i + 1, '</b> &nbsp;'); 
						else 
							returningFooter += (i + 1)+ ' &nbsp;';
							//document.write(i + 1, ' &nbsp;');
					}
					else 
					{
						var temp = (i) * 10;
						returningFooter += '<a class="searchResults" href="#" onclick="setCounter(' + temp + '); ajaxpage(\'results.html\', \'contentarea\');">'+ (i + 1)+ '</a> &nbsp;';
						//document.write('<a class="searchResults" href="', results_location, '?d=', od, '&n=', nb, '">', i + 1, '</a> &nbsp;');
					}
				}
			}
			else
			{
				var ng = na - 5;
				if (np > ng + 9) var nf = ng + 9; else nf = np; 
				for (var i = ng; i < nf; i++)
				{
					var nb = nr * i;
					if (nb == tn)
					{
						if (bold_footer == 1) 
							returningFooter += '<b>'+ (i + 1)+ '</b> &nbsp;';
							//document.write('<b>', i + 1, '</b> &nbsp;'); 
						else 
							returningFooter += (i + 1)+ ' &nbsp;';
							//document.write(i + 1, ' &nbsp;');
					}
					else 
					{
						var temp = (i) * 10;
						returningFooter += '<a class="searchResults" href="#" onclick="setCounter(' + temp + '); ajaxpage(\'results.html\', \'contentarea\');">'+ (i + 1)+ '</a> &nbsp;';
						//document.write('<a class="searchResults" href="', results_location, '?d=', od, '&n=', nb, '">', i + 1, '</a> &nbsp;');
					}
				}				
			}
		}
		if (nc > 0) 
		{
			var tempo = 1010;
			returningFooter += '<a class="searchResults" href="#" onclick="setCounter(' + tempo + '); ajaxpage(\'results.html\', \'contentarea\');">'+ s_3+ '</a> &nbsp;';
			//document.write('<a class="searchResults" href="', results_location, '?d=', od, '&n=', nb, '">', i + 1, '</a> &nbsp;');
		}
			//returningFooter += '<a class="searchResults" href="'+ results_location+ '?d='+ od+ '&n='+ (tn + nr)+ '">'+ s_3+ '</a>';
			//document.write('<a class="searchResults" href="', results_location, '?d=', od, '&n=', tn + nr, '">', s_3, '</a>');
	}
	//document.write(s_7);
	return returningFooter;
}
