When you say Google, are you talking about the Google Search Appliance (GSA)?
Assuming that is the case: You seem to have done quite a lot of work with XSLT, so in my opinion the easiest way to do thes is have your usercontrol call the XML API for the GSA with the relevant query, and simply transform the response with XSLT. This prevents you from having to recompile the control when you need layout changes, and you can publish the XSLT from Tridion.
I use the following XSLT to generate the search results on this page http://medicine.yale.edu/search.aspx?q=test&x=0&y=0&site=YSM_School_of_Medicine
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:param name="SITE_CATALOG"/>
<xsl:param name="SITE_NAME"/>
<xsl:param name="MAX_PAGES_IN_NAVIGATION">10</xsl:param>
<xsl:param name="TOTALNUMBER" select="/GSP/RES/M"/>
<xsl:param name="QUERY" select="/GSP/PARAM[@name='q']/@value"/>
<xsl:param name="SEARCHED_SITE_CATALOG" select="/GSP/PARAM[@name='site']/@value"/>
<xsl:template match="/">
<xsl:variable name="STARTNUMBER" select="/GSP/RES/@SN"/>
<xsl:variable name="ENDNUMBER" select="/GSP/RES/@EN"/>
<xsl:variable name="TIMER" select="/GSP/TM"/>
<!--begin search results -->
<div class="google-search-form bordered-box shaded-f5 padded-20">
<xsl:call-template name="WriteSearchForm"/>
</div>
<xsl:if test="/GSP/Spelling">
<p>Did you mean <a href="?q={/GSP/Spelling/Suggestion/@q}&site={/GSP/PARAM[@name='site']/@value}">
<xsl:value-of select="/GSP/Spelling/Suggestion/@q"/>
</a>?</p>
</xsl:if>
<div id="search-results-pagination">
<xsl:for-each select="/GSP/RES/R">
<xsl:choose>
<xsl:when test="@L='2'">
<div class="grouped-search-result">
<h4>
<a href="{U}">
<xsl:value-of select="T" disable-output-escaping="yes"/>
</a>
</h4>
<p class="search-result-body">
<xsl:value-of select="S" disable-output-escaping="yes"/>
</p>
<p class="gray95">
<span class="green">
<xsl:choose>
<xsl:when test="string-length(U) > 88">
<xsl:value-of select="substring(U, 0, 88)"/>...
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="U"/>
</xsl:otherwise>
</xsl:choose>
</span>
</p>
<p>
<a href="?as_sitesearch={HN/@U}&q={$QUERY}&site={$SITE_CATALOG}" class="more-results-link">
[ <span>
More results from <xsl:value-of select="HN/@U"/>
</span> ]
</a>
</p>
</div>
</xsl:when>
<xsl:otherwise>
<div class="pagination-element search-result">
<h4><a href="{U}">
<xsl:call-template name="WriteMimeTypeIndicator">
<xsl:with-param name="RESULT" select="."/>
</xsl:call-template>
<xsl:value-of select="T" disable-output-escaping="yes"/>
</a></h4>
<p class="search-result-body">
<xsl:value-of select="S" disable-output-escaping="yes"/>
</p>
<p>
<span class="green">
<xsl:choose>
<xsl:when test="string-length(U) > 92">
<xsl:value-of select="substring(U, 0, 92)"/>...
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="U"/>
</xsl:otherwise>
</xsl:choose>
</span> - <xsl:value-of select="HAS/C/@SZ"/>
</p>
</div>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</div>
<hr class="dashed" />
<xsl:call-template name="WritePageNavigation"/>
<!--<div id="pagination-controls" class="pagination-controls float-rt"></div>-->
<!-- end pagination-controls -->
<div class="results-footer-notes">
<p class="small-gray95">Note: This search service may return results that are not approved by Yale University, or results that may not reflect the official views of Yale University.</p>
</div>
<div class="clear"></div>
<div class="google-search-form bordered-box shaded-f5 padded-20 big-margin-top">
<xsl:call-template name="WriteSearchForm"/>
</div>
<!-- end search results -->
</xsl:template>
<xsl:template name="WritePageNavigation">
<xsl:variable name="RESULTS_ON_THIS_PAGE" select="count(/GSP/RES/R)"/>
<xsl:variable name="TOTAL_RESULT_COUNT" select="/GSP/RES/M"/>
<xsl:variable name="TOTAL_PAGES" select="ceiling($TOTAL_RESULT_COUNT div $RESULTS_ON_THIS_PAGE)"/>
<xsl:variable name="CURRENT_PAGE" select="floor((/GSP/RES/@SN) div $RESULTS_ON_THIS_PAGE) + 1"/>
<xsl:variable name="START_RESULT" select="/GSP/RES/@SN"/>
<!--
Results On This Page: <xsl:value-of select="$RESULTS_ON_THIS_PAGE"/>
<br/>
Total Results: <xsl:value-of select="$TOTAL_RESULT_COUNT"/>
<br/>
Total Pages: <xsl:value-of select="$TOTAL_PAGES"/>
<br/>
Current Page: <xsl:value-of select="$CURRENT_PAGE"/>
<br/>
Start Result: <xsl:value-of select="$START_RESULT"/>
<br/>
Start Navigation Page: <xsl:value-of select="$CURRENT_PAGE - ($MAX_PAGES_IN_NAVIGATION div 2)"/>
-->
<xsl:if test="$TOTAL_PAGES > 1">
<ul class="google-search-pagination">
<xsl:if test="$CURRENT_PAGE > 1">
<li class="pagination-previous">
<a href="?q={/GSP/PARAM[@name='q']/@value}&start={($CURRENT_PAGE - 2)*$RESULTS_ON_THIS_PAGE}&site={/GSP/PARAM[@name='site']/@value}">Previous</a>
</li>
</xsl:if>
<xsl:call-template name="WritePaging">
<xsl:with-param name="CURRENT_PAGE" select="$CURRENT_PAGE"/>
<xsl:with-param name="NEXT_PAGE_START" select="$RESULTS_ON_THIS_PAGE + 1"/>
<xsl:with-param name="TOTAL_RESULTS" select="$TOTAL_RESULT_COUNT"/>
<xsl:with-param name="RESULTS_ON_PAGE" select="$RESULTS_ON_THIS_PAGE"/>
<xsl:with-param name="START_PAGE">
<xsl:choose>
<xsl:when test="($CURRENT_PAGE - ($MAX_PAGES_IN_NAVIGATION div 2)) > 0">
<xsl:value-of select="$CURRENT_PAGE - ($MAX_PAGES_IN_NAVIGATION div 2)"/>
</xsl:when>
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="END_PAGE">
<xsl:choose>
<xsl:when test="($CURRENT_PAGE - ($MAX_PAGES_IN_NAVIGATION div 2)) > 0">
<xsl:value-of select="$MAX_PAGES_IN_NAVIGATION + $CURRENT_PAGE - floor($MAX_PAGES_IN_NAVIGATION div 2) - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$MAX_PAGES_IN_NAVIGATION"/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
<li class="pagination-next">
<a href="?q={/GSP/PARAM[@name='q']/@value}&start={($CURRENT_PAGE)*$RESULTS_ON_THIS_PAGE}&site={/GSP/PARAM[@name='site']/@value}">Next</a>
</li>
</ul>
</xsl:if>
</xsl:template>
<xsl:template name="WritePaging">
<xsl:param name="NEXT_PAGE_START"/>
<xsl:param name="RESULTS_ON_PAGE"/>
<xsl:param name="TOTAL_RESULTS"/>
<xsl:param name="CURRENT_PAGE"/>
<xsl:param name="START_PAGE"/>
<xsl:param name="END_PAGE"/>
<!--
NEXT_PAGE_START: <xsl:value-of select="$NEXT_PAGE_START"/><br/>
RESULTS_ON_PAGE: <xsl:value-of select="$RESULTS_ON_PAGE"/><br/>
TOTAL_RESULTS: <xsl:value-of select="$TOTAL_RESULTS"/><br/>
CURRENT_PAGE: <xsl:value-of select="$CURRENT_PAGE"/><br/>
START_PAGE: <xsl:value-of select="$START_PAGE"/><br/>
END_PAGE: <xsl:value-of select="$END_PAGE"/><br/>
-->
<li>
<xsl:if test="$CURRENT_PAGE = $START_PAGE">
<xsl:attribute name="class">selected</xsl:attribute>
<a href="#">
<xsl:value-of select="$START_PAGE"/>
</a>
</xsl:if>
<xsl:if test="$CURRENT_PAGE != $START_PAGE">
<a href="?q={/GSP/PARAM[@name='q']/@value}&start={($START_PAGE - 1)*$RESULTS_ON_PAGE}&site={/GSP/PARAM[@name='site']/@value}">
<xsl:value-of select="$START_PAGE"/>
</a>
</xsl:if>
</li>
<xsl:if test="$START_PAGE < $END_PAGE">
<xsl:if test="$NEXT_PAGE_START < $TOTAL_RESULTS">
<xsl:call-template name="WritePaging">
<xsl:with-param name="NEXT_PAGE_START" select="$NEXT_PAGE_START + $RESULTS_ON_PAGE"/>
<xsl:with-param name="TOTAL_RESULTS" select="$TOTAL_RESULTS"/>
<xsl:with-param name="RESULTS_ON_PAGE" select="$RESULTS_ON_PAGE"/>
<xsl:with-param name="START_PAGE" select="$START_PAGE + 1"/>
<xsl:with-param name="CURRENT_PAGE" select="$CURRENT_PAGE"/>
<xsl:with-param name="END_PAGE" select="$END_PAGE"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template name="WriteSearchForm">
<form name="gs" method="GET" action="#">
<p class="wrapper">
<input type="text" name="q" maxlength="256" value="{$QUERY}" class="google-search-keywords"/>
<select name="site" class="google-search-site">
<option value="{$SITE_CATALOG}">
<xsl:if test="$SEARCHED_SITE_CATALOG = $SITE_CATALOG">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
<xsl:value-of select="$SITE_NAME" disable-output-escaping="yes"/>
</option>
<option value="Yale_University">---------------</option>
<option value="YSM_School_of_Medicine">
<xsl:if test="$SEARCHED_SITE_CATALOG = 'YSM_School_of_Medicine'">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
School of Medicine
</option>
<option value="Yale_Medical_Group">
<xsl:if test="$SEARCHED_SITE_CATALOG = 'Yale_Medical_Group'">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
Yale Medical Group
</option>
<option value="Yale_New_Haven_Hospital">
<xsl:if test="$SEARCHED_SITE_CATALOG = 'Yale_New_Haven_Hospital'">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
Yale-New Haven Hospital
</option>
<option value="Medical_Center">
<xsl:if test="$SEARCHED_SITE_CATALOG = 'Medical_Center'">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
Medical Center (all)
</option>
<option value="Medical_Library">
<xsl:if test="$SEARCHED_SITE_CATALOG = 'Medical_Library'">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
Medical Library
</option>
<option value="Yale_University">---------------</option>
<option value="Yale_Libraries">
<xsl:if test="$SEARCHED_SITE_CATALOG = 'Yale_Libraries'">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
Yale Libraries
</option>
<option value="Finance_and_Administration">
<xsl:if test="$SEARCHED_SITE_CATALOG = 'Finance_and_Administration'">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
Finance & Admin
</option>
<option value="Human_Resources">
<xsl:if test="$SEARCHED_SITE_CATALOG = 'Human_Resources'">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
Human Resources
</option>
<option value="ITS">
<xsl:if test="$SEARCHED_SITE_CATALOG = 'ITS'">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
Information Technology
</option>
<option value="Yale_University">
<xsl:if test="$SEARCHED_SITE_CATALOG = 'Yale_University'">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
Yale University
</option>
</select>
<button type="submit" value="submit" class="google-search-button theme-background">
<img src="/files/images/button_search_icon_translucent_sm.png" />Google Search
</button>
</p>
<p class="no-space-bottom float-rt" style="margin-right:50px;">
<a href="http://www.yale.edu/its/web/search/tips.html" class="search-tips">
<img src="/files/images/icon_question.gif" alt="" style="vertical-align:middle" /> Search Tips
</a>
</p>
<p class="no-space-bottom gray95">
Results <span class="green">
<xsl:value-of select="/GSP/RES/@SN"/>
</span> - <span class="green">
<xsl:value-of select="/GSP/RES/@EN"/>
</span> of about <span class="green"><xsl:value-of select="$TOTALNUMBER"/></span> for <strong><xsl:value-of select="$QUERY"/></strong>
</p>
</form>
</xsl:template>
<xsl:template name="WriteMimeTypeIndicator">
<xsl:param name="RESULT"/>
<xsl:choose>
<xsl:when test="not($RESULT/@MIME)"></xsl:when>
<xsl:when test="$RESULT/@MIME = 'application/msword'">[DOC] </xsl:when>
<xsl:when test="$RESULT/@MIME = 'application/octet-stream'">TEST OPTIONS</xsl:when>
<xsl:when test="$RESULT/@MIME = 'application/pdf'">[PDF] </xsl:when>
<xsl:otherwise>TODO:<xsl:value-of select="$RESULT/@MIME"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>