
//class searchRef

function searchRef()
{
	this.results 		= new Array();
	this.lastSearch 	= '';
	this.page 			= 0;
	this.pagesize		= 20;
	this.pages	 		= 0;
	
	this.setPanel		= srSetPanel;
	this.doSearch		= srDoSearch;
	this.fetchReport  	= srFetchReport;
	this.showReport  	 = srShowReport;
	
	this.clearResults	= srClearResults;	
	this.generateHTML	= srGenerateHTML;	
	this.addResult		= srAddResult;
	
	this.setPageCount	= srSetPageCount;
	this.firstPage		= srFirstPage;
	this.lastPage		= srLastPage;
	this.nextPage		= srNextPage;
	this.prevPage		= srPrevPage;
	
	this.setPanel( '' );
}

function srSetPanel( name ) 
{
	getobj( 'searching' ).style.display = 'none';
	getobj( 'noresults' ).style.display = 'none';
	getobj( 'results' ).style.display = 'none';
	
	if( name == 'searching'
	 || name == 'noresults'
	 || name == 'results' ) {
	 	try {
			getobj( name ).style.display = 'table-row';	
		}
		catch( e ) {
			getobj( name ).style.display = 'block';	
		}
	}
}

function srDoSearch( str )
{
	this.setPanel( 'searching' );
	if( this.lastSearch != str ) {
		this.page	 = 0;
	}
	this.lastSearch = str;
	str = escape( str );
	var js = requestJavascript( 'index.php?page=refreq&s=query&q=' + str + '&p=' + this.page );
	this.setPanel( 'noresults' );
	if( typeof js == 'string' ) {
		try {
			eval( js );
		}
		catch( e )
		{
			var str = '';
			for( i in e ) {
				str += i + ' ' + e[ i ] + '\n';	
			}
			alert( str + '\n\n' + js );
		}	
	}
	return;	
}

function srFetchReport( id )
{
	var js = requestJavascript( 'index.php?page=refreq&s=report&id='+id );
	
	if( typeof js == 'string' ) {
		try {
			eval( js );
		}
		catch( e )
		{
			var str = '';
			for( i in e ) {
				str += i + ' ' + e[ i ] + '\n';	
			}
			alert( str + '\n\n' + js );
		}	
	}
	return;	
}

function srShowReport( html )
{
	var obj = getobj( 'tdreport' );
	obj.innerHTML = html;
}

function srClearResults()
{
	this.pages	 = 0;
	this.results = new Array();
	
	var el = getobj( 'tdresults' );
	el.innerHTML = '';
}

function srSetPageCount( cnt )
{
	this.pages = cnt;
}

function srFirstPage()
{
	this.page = 0;	
	this.doSearch( this.lastSearch );
}

function srLastPage()
{
	this.page = ( this.pages - 1 ) - ( ( this.pages - 1 ) % this.pagesize );	
	this.doSearch( this.lastSearch );
}

function srNextPage()
{
	if( this.page + this.pagesize < this.pages ) 
		this.page += this.pagesize;	
	this.doSearch( this.lastSearch );
}

function srPrevPage()
{
	if( this.page - this.pagesize >= 0 ) 
		this.page -= this.pagesize;	
	this.doSearch( this.lastSearch );
}

function srAddResult( id, name )
{
	var tmp = new Array();
	tmp[ 0 ] = id;
	tmp[ 1 ] = name;
	this.results[ this.results.length ] = tmp;
}

function srGenerateHTML()
{
	var showStart = this.page + 1;
	var showEnd = this.page + this.pagesize;
	if( showEnd > this.pages ) showEnd = this.pages;
			
	var candoPrev = this.page > 0;
	var candoNext = this.page < this.pages - this.pagesize;
			
	var html = '<div id="divresults">';
	
	html += '<div id="pageOptions">';
	html += '<table width="100%"><tbody><tr>';
	html += '<td width="60">';
	if( candoPrev ) html += '<a href="javascript:sr.firstPage();" onclick="" title="First page">';
	html += '&lt;&lt; First';
	if( candoPrev ) html += '</a>';
	html += '</td>';
	html += '<td width="60">';
	if( candoPrev ) html += '<a href="javascript:sr.prevPage();" onclick="" title="Prev page">';
	html += '&lt; Prev';
	if( candoPrev ) html += '</a> ';
	html += '</td>';
	html += '<td align="center">';
	html += 'Showing: '+( showStart )+' - '+( showEnd )+' of '+( this.pages )+' results';
	html += '</td>';
	html += '<td width="60" align="right">';
	if( candoNext ) html += '<a href="javascript:sr.nextPage();" onclick="" title="Next page">';
	html += 'Next &gt;';
	if( candoNext ) html += '</a> ';
	html += '</td>';
	html += '<td width="60" align="right">';
	if( candoNext ) html += '<a href="javascript:sr.lastPage();" onclick="" title="Last page">';
	html += 'Last &gt;&gt;';
	if( candoNext ) html += '</a>';
	html += '</td>';
	html += '</tr></tbody></table>';
	html += '</div>';
	
	var cols = this.results.length;
	if( cols == 0 ) {
		return;	
	}
	if( cols < 8 ) cols = 1;
	else cols = 2;
	
	var perCol = this.results.length / cols;
	perCol = perCol - perCol % 1 + ( ( perCol % 1 > 0 ) ? 1 : 0 );
	
	for( var x=0; x<this.results.length; x++ ) {
		if( x % perCol == 0 ) {
			html += '<div class="divresults_col">';
		}
		html += '<div class="searchresult">';
		html += '<a href="javascript:sr.fetchReport('+this.results[ x ][ 0 ]+');" title="'+this.results[ x ][ 1 ]+'">'+this.results[ x ][ 1 ]+'</a>';
		html += '</div>';
		if( x % perCol == perCol - 1 || x == this.results.length - 1 ) {
			html += '</div>';
		}
	}
	
	html += '</div>';
	
	var el = getobj( 'tdresults' );
	el.innerHTML = html;
	this.setPanel( 'results' );
}
