<%@ taglib uri="infoglue-structure" prefix="structure" %>
<%@ taglib uri="infoglue-content" prefix="content" %>
<%@ taglib uri="infoglue-common" prefix="common" %>
<%@ taglib uri="infoglue-page" prefix="page" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x" %>

<%@ page contentType="text/html; charset=UTF-8" %>

<page:pageContext id="pc"/>
<page:deliveryContext id="dc" evaluateFullPage="false"/>

<style>
<!--
	.aellipsis { display: block; }
	.highlight { font-weight: bold; }
	.activeSlot { border: 0px solid #869ab2; padding: 2px; font-weight: bold; }
	.slot { border: 0px solid #869ab2; padding: 2px; font-weight: bold; }
	.slots { border-top: 1px solid #869ab2; height: 25px; padding: 5px; }
    #searchResult p { line-height: 14px; padding-bottom: 6px;}
-->
</style>

<common:urlBuilder id="currentUrl" excludedQueryStringParameters="query,startIndex">
</common:urlBuilder>

<structure:componentPropertyValue id="omnipageServerUrl" propertyName="OmnipageServerUrl"/>

<c:set var="query" value="${param.query}"/>
<c:if test="${empty param.query}">
	<c:set var="query" value=""/>
	<c:set var="fullQuery" value=""/>
</c:if>
<c:if test="${!empty param.query}">
	<c:set var="fullQuery" value="${query} site:www.infoglue.org"/>
        <common:URLEncode id="fullQuery" value="${fullQuery}"/>
</c:if>

<c:set var="startIndex" value="${param.startIndex}"/>
<c:if test="${empty param.startIndex}">
	<c:set var="startIndex" value="0"/>
</c:if>

<c:if test="${empty omnipageServerUrl}">
	<c:set var="omnipageServerUrl" value="http://212.91.140.52:8888"/>
</c:if>

<common:import id="rawXML" url="${omnipageServerUrl}/api/search?query=${fullQuery}&index=Default&start=${startIndex}" charEncoding="utf-8"/>

<c:set var="stripper">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"/>
  <xsl:strip-space elements="*"/> <!-- optional -->
  <xsl:template match="*">
    <xsl:element name="{local-name()}">
      <xsl:copy-of select="@*"/> <!-- keep attributes -->
      <xsl:apply-templates/>
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>
</c:set>

<c:set var="strippedXML"><x:transform xml="${rawXML}" xslt="${stripper}"/></c:set>

<c:set var="xslt">
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:output method="html" encoding="iso-8859-1"/>
	<xsl:param name="currentUrl"/>
	<xsl:param name="omnipageServerUrl"/>
	
<!-- reusable replace-string function -->
 <xsl:template name="replace-string">
    <xsl:param name="text"/>
    <xsl:param name="from"/>
    <xsl:param name="to"/>

    <xsl:choose>
      <xsl:when test="contains($text, $from)">

	<xsl:variable name="before" select="substring-before($text, $from)"/>
	<xsl:variable name="after" select="substring-after($text, $from)"/>
	<xsl:variable name="prefix" select="concat($before, $to)"/>

	<xsl:value-of select="$before"/>
	<xsl:value-of select="$to"/>
        <xsl:call-template name="replace-string">
	  <xsl:with-param name="text" select="$after"/>
	  <xsl:with-param name="from" select="$from"/>
	  <xsl:with-param name="to" select="$to"/>
	</xsl:call-template>
      </xsl:when> 
      <xsl:otherwise>
        <xsl:value-of select="$text"/>  
      </xsl:otherwise>
    </xsl:choose>            
 </xsl:template>

	<xsl:template match="/">
		
		<xsl:variable name="query"><xsl:for-each select="/feed/Query"><xsl:value-of select="@searchTerms"/></xsl:for-each></xsl:variable>
		
		<xsl:variable name="strippedQuery">
		   <xsl:call-template name="replace-string">
		       <xsl:with-param name="text" select="$query"/>
		       <xsl:with-param name="from" select="’ site:www.infoglue.org’"/>
		       <xsl:with-param name="to" select="’’"/>
		   </xsl:call-template>
		</xsl:variable>

		<h2>Results for "<xsl:value-of select="$strippedQuery"/>"</h2>
		
		<xsl:for-each select="/feed/entry">
		<p>
		    <xsl:variable name="title" select="title"/>
		    <a><xsl:attribute name="href"><xsl:value-of select="id" disable-output-escaping="yes"/></xsl:attribute><xsl:value-of select="$title" disable-output-escaping="yes"/></a><xsl:text></xsl:text>
		    <br/>
			<xsl:value-of select="substring(summary,35)" disable-output-escaping="yes"/> <br/>
			<span style="color:green;"><xsl:value-of select="substring(id,0,50)" disable-output-escaping="yes"/>...</span> - 
			<xsl:for-each select="link">
				<xsl:if test="@rel = ’via’">
					<a><xsl:attribute name="href"><xsl:value-of select="$omnipageServerUrl"/><xsl:value-of select="@href" disable-output-escaping="yes"/></xsl:attribute>Cache:ad</a><xsl:text></xsl:text><br/>
				</xsl:if>
			</xsl:for-each>
		</p>
		</xsl:for-each>
		<xsl:variable name="totalResults" select="/feed/totalResults"/>
		<xsl:variable name="startIndex" select="/feed/startIndex"/>
		<xsl:variable name="itemsPerPage" select="/feed/itemsPerPage"/>
		<xsl:variable name="test" select="$startIndex div $itemsPerPage"/>
		<xsl:variable name="page" select="round($startIndex div $itemsPerPage)"/>
		<xsl:variable name="pages" select="round($totalResults div $itemsPerPage)"/>
		<!-- 
		<xsl:if test="$startIndex + $itemsPerPage >= $totalResults">
			<xsl:variable name="pages" select="page"/>
		</xsl:if>
		 -->
		
		<xsl:variable name="baseUrl"><xsl:value-of select="$currentUrl"/>?query=<xsl:value-of select="$strippedQuery"/></xsl:variable>
		<!-- 			
		Total: <xsl:value-of select="$startIndex + $itemsPerPage"/>
		Pages: <xsl:value-of select="$pages"/>
		Pages: <xsl:value-of select="$pages"/>
		Total results: <xsl:value-of select="/feed/totalResults"/><br/>
		StartIndex: <xsl:value-of select="$startIndex"/><br/>
		Items per page: <xsl:value-of select="$itemsPerPage"/><br/>
		Pages: <xsl:value-of select="$pages"/><br/>
   		Page: <xsl:value-of select="$page"/><br/>
   		Test: <xsl:value-of select="$test"/><br/>
	   	-->
	   	<p class="slots">
		<xsl:call-template name="slots">
      		<xsl:with-param name="index" select="0"/>
      		<xsl:with-param name="count" select="$pages"/>
      		<xsl:with-param name="page" select="$page"/>
      		<xsl:with-param name="itemsPerPage" select="$itemsPerPage"/>
      		<xsl:with-param name="startIndex" select="0"/>
      		<xsl:with-param name="urlBase" select="$baseUrl"/>
      		<xsl:with-param name="totalResults" select="$totalResults"/>
    	</xsl:call-template>
    	</p>
	</xsl:template>

	<xsl:template name="slots">
      	<xsl:param name="index" select="1"/>
      	<xsl:param name="count" select="2"/>
      	<xsl:param name="page" select="3"/>
      	<xsl:param name="itemsPerPage" select="4"/>
      	<xsl:param name="startIndex" select="5"/>
      	<xsl:param name="urlBase" select="6"/>
      	<xsl:param name="totalResults" select="7"/>
      			
		<xsl:choose>
			<xsl:when test="$index > 20">
				
			</xsl:when>
      		<xsl:when test="$index != $page">
				<a class="slot">
	      		<xsl:attribute name="href">
	      			<xsl:value-of select="$urlBase" disable-output-escaping="yes"/>&amp;startIndex=<xsl:value-of select="$startIndex"/>
	      		</xsl:attribute><xsl:value-of select="$index"/><!-- (<xsl:value-of select="$startIndex"/>)  -->
				</a>
			</xsl:when>
			<xsl:otherwise>
				<span class="activeSlot"><xsl:value-of select="$index"/></span>
			</xsl:otherwise>
		</xsl:choose>
		<xsl:text> </xsl:text>
		
		<xsl:if test="$index &lt; $count">
			<xsl:if test="$startIndex + 10 &lt; $totalResults">
		    	<xsl:call-template name="slots">
		         	<xsl:with-param name="index" select="$index + 1"/>
		         	<xsl:with-param name="count" select="$count"/>
		         	<xsl:with-param name="page" select="$page"/>
		         	<xsl:with-param name="itemsPerPage" select="$itemsPerPage"/>
		         	<xsl:with-param name="startIndex" select="$startIndex + 10"/>
		         	<xsl:with-param name="urlBase" select="$urlBase"/>
	      			<xsl:with-param name="totalResults" select="$totalResults"/>
		       	</xsl:call-template>
	      	</xsl:if>
      	</xsl:if>
		
	</xsl:template>
  	
</xsl:stylesheet>
</c:set>

<h1>Search the site</h1>
<form name="searchForm" action="<c:out value="${currentUrl}" escapeXml="false"/>" method="POST">
	<input type="textfield" name="query" value="<c:out value="${param.query}" escapeXml="false"/>"/>
	<input type="submit" value="Search" />
</form>
<c:if test="${!empty param.query}">
	<x:transform xml="${strippedXML}" xslt="${xslt}"><x:param name="currentUrl" value="${currentUrl}"/><x:param name="omnipageServerUrl" value="${omnipageServerUrl}"/></x:transform>
</c:if>