<!-- begin string replace function. 

     and here I thought I was done with recursion after 
     I finished my COMP210 final.-->

<xsl:template name="replace">
	<xsl:param name="string" select="''" />
   	<xsl:param name="search" select="/.." />
   	<xsl:param name="replace" select="/.." />

   	<xsl:choose>
	      	<xsl:when test="not($string)" />
	      	<xsl:when test="not($search)">
	        	<xsl:value-of select="$string" />
	      	</xsl:when>
		<xsl:when test="contains($string, $search)">
			<xsl:call-template name="inner_replace">
		            <xsl:with-param 
				name="in_string" 
				select="$string"/>
		            <xsl:with-param 
				name="in_search" 
				select="$search"/>
	     		    <xsl:with-param 
				name="in_replace" 
				select="$replace"/>
		        </xsl:call-template>

		</xsl:when>
		<xsl:otherwise>
			<xsl:value-of select="$string" />
		</xsl:otherwise>
	</xsl:choose>
	
</xsl:template>


<xsl:template name="inner_replace">
	<xsl:param name="in_string" select="''" />
   	<xsl:param name="in_search" select="/.." />
   	<xsl:param name="in_replace" select="/.." />

   	<xsl:choose>
	<xsl:when test="contains($in_string, $in_search)">
		
		<xsl:value-of 
			select="substring-before($in_string, $in_search)"/>
		<xsl:value-of select="$in_replace"/>
		<xsl:call-template name="inner_replace">
	            <xsl:with-param 
			name="in_string" 
			select="substring-after($in_string, $in_search)"/>
	            <xsl:with-param 
			name="in_search" 
			select="$in_search"/>
     		    <xsl:with-param 
			name="in_replace" 
			select="$in_replace"/>
	        </xsl:call-template>
		
	</xsl:when>
	<xsl:otherwise>
		<xsl:value-of select="$in_string" />
	</xsl:otherwise>
	</xsl:choose>
	
</xsl:template>
