<?xml version="1.0" encoding="UTF-8"?>
<!-- 
 Licensed Materials - Property of IBM
 Restricted Materials of IBM  - Modification is prohibited.

 (c) Copyright IBM Corporation 2004, 2007. All Rights Reserved. 

 Note to U.S. Government Users Restricted Rights:  Use, duplication or
 disclosure restricted by GSA ADP  Schedule Contract with IBM Corp.
-->
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:xalan="http://xml.apache.org/xalan"
	exclude-result-prefixes="xalan">
	
<xsl:output method="html" xalan:omit-meta-tag="yes" xalan:use-url-escaping="no"/>
	
<xsl:template match="/SearchResult">
	<xsl:variable name="initPageNum" select="@initPageNum"/>
	<xsl:variable name="maxPageNum" select="@maxPageNum"/>
	<xsl:variable name="nextEnabled" select="@nextEnabled"/>
	<xsl:variable name="prevEnabled" select="@prevEnabled"/>
	<xsl:variable name="nextText" select="@nextText"/>
	<xsl:variable name="prevText" select="@prevText"/>	
	<xsl:variable name="ofText" select="@ofText"/>
	<xsl:variable name="forText" select="@forText"/>	
	<xsl:variable name="imagePath" select="@imagePath"/>
	<xsl:variable name="searchString" select="@searchString"/>	
	<xsl:variable name="nextHref" select="@nextHref"/>	
	<xsl:variable name="prevHref" select="@prevHref"/>	
	<xsl:variable name="icon" select="@icon"/>	
	<table border="0" cellpadding="0" cellspacing="0" width="100%">
		<tr>
			<td align="right" nowrap="nowrap"><font size="-1">
				<br/>
				<xsl:if test="@totalHits > 0">
					<b><xsl:value-of select="@initPageNum"/></b> - <b><xsl:value-of select="@maxPageNum"/></b>
					<xsl:text> </xsl:text><xsl:value-of select="@ofText"/><xsl:text> </xsl:text>
				</xsl:if>
				<b><xsl:value-of select="@totalHits"/><xsl:text> </xsl:text><xsl:value-of select="@hitsText"/></b>
				<xsl:text> </xsl:text><xsl:value-of select="@forText"/><xsl:text> </xsl:text>
				<b><xsl:value-of select="@searchString"/></b></font>
			</td>
		</tr>
	</table>
	<xsl:for-each select="SearchHit">
		<xsl:variable name="url" select="@url"/>
		<table cellspacing="0" >
			<tr>
				<td align="right">
					<xsl:choose>
						<xsl:when test="@icon != ''">
							<img src="{$imagePath}{@icon}" alt=""/>
						</xsl:when>
						<xsl:otherwise>
							<img src="{$imagePath}searchrecord.gif" alt=""/>
						</xsl:otherwise>
					</xsl:choose>						
				</td>
				<td align="left">
					<a href="{$url}"><xsl:value-of select="@title"/></a>
				</td>
			</tr>
			<tr>
				<td align="right"></td>
				<td align="left"><xsl:value-of select="@summary"/></td>
			</tr>
		</table>
    </xsl:for-each>
    <br/>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
		<tr valign="MIDDLE">
			<xsl:if test="$prevEnabled = 'true'">
				<td align="left" nowrap="nowrap">
				<xsl:choose>
					<xsl:when test="@prevHref != ''">
						<img onclick="theApp.searchWidget.getServerPrevNextPage('{$prevHref}'); return false;" onmouseover="style.cursor='pointer';" alt="" src="{$imagePath}previous.gif"/><xsl:text> </xsl:text>
						<a href="" onclick="theApp.searchWidget.getServerPrevNextPage('{$prevHref}'); return false;"><xsl:value-of select="$prevText"/></a>
					</xsl:when>
					<xsl:otherwise>
						<img onclick="theApp.searchWidget.getAppletPrevPage(); return false;" onmouseover="style.cursor='pointer';" alt="" src="{$imagePath}previous.gif"/><xsl:text> </xsl:text>
						<a href="" onclick="theApp.searchWidget.getAppletPrevPage(); return false;"><xsl:value-of select="$prevText"/></a>
					</xsl:otherwise>
				</xsl:choose>
				</td>
			</xsl:if>
			<xsl:if test="$nextEnabled = 'true'">
				<td align="right" nowrap="nowrap">
				<xsl:choose>
					<xsl:when test="@nextHref != ''">
						<a href="" onclick="theApp.searchWidget.getServerPrevNextPage('{$nextHref}'); return false;"><xsl:value-of select="$nextText"/></a><xsl:text> </xsl:text>
						<img onclick="theApp.searchWidget.getServerPrevNextPage('{$nextHref}'); return false;" onmouseover="style.cursor='pointer';" alt="" src="{$imagePath}next.gif"/>
					</xsl:when>
					<xsl:otherwise>
						<a href="" onclick="theApp.searchWidget.getAppletNextPage(); return false;"><xsl:value-of select="$nextText"/></a><xsl:text> </xsl:text>
						<img onclick="theApp.searchWidget.getAppletNextPage(); return false;" onmouseover="style.cursor='pointer';" alt="" src="{$imagePath}next.gif"/>
					</xsl:otherwise>
				</xsl:choose>
				</td>
			</xsl:if>
		</tr>
	</table>    
</xsl:template>
</xsl:stylesheet>