<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:exslt="http://exslt.org/common">

    <xsl:template name="uiDualSelect">
        <xsl:param name="itemsAvailable"/>
        <xsl:param name="itemsSelected"/>
        <xsl:param name="name"/>
        <xsl:param name="className"/>
        <xsl:param name="label"/>
        <xsl:param name="availId" select="'AvailItems'" />
        <xsl:param name="disabled" select="'false'" />

        <div>
            <xsl:attribute name="class">Select-dual <xsl:if test="$className != ''"><xsl:value-of select="$className"/></xsl:if></xsl:attribute>
            <div>
                <div class="Select-dual-label">Available <xsl:value-of select="$label"/></div>
                <select name="{$availId}" id="{$availId}" class="Select-dual-select" multiple="multiple" size="20" onDblClick="mover('add','{$availId}','{$name}')">
                    <xsl:if test="$disabled = 'true'">
                        <xsl:attribute name="disabled">disabled</xsl:attribute>
                    </xsl:if>
                    <xsl:for-each select="exslt:node-set($itemsAvailable)//mapEntry">
                        <option value="{value}">
                            <xsl:value-of select="name"/>
                        </option>
                    </xsl:for-each>
                </select>
            </div>
            <div class="Select-dual-buttons">
                <xsl:call-template name="uiButton">
                    <xsl:with-param name="type" select="'default'" />
                    <xsl:with-param name="name" select="'AddBtn'" />
                    <xsl:with-param name="elemType" select="'button'" />
                    <xsl:with-param name="content" select="'Add &gt;&gt;'" />
                    <xsl:with-param name="className" select="'Form-button'" />
                    <xsl:with-param name="onClick">mover('add','<xsl:value-of select="$availId" />','<xsl:value-of select="$name" />')</xsl:with-param>
                    <xsl:with-param name="disabled">
                        <xsl:if test="$disabled = 'true'">true</xsl:if>
                    </xsl:with-param>
                </xsl:call-template>
                <xsl:call-template name="uiButton">
                    <xsl:with-param name="type" select="'default'" />
                    <xsl:with-param name="name" select="'RemoveBtn'" />
                    <xsl:with-param name="elemType" select="'button'" />
                    <xsl:with-param name="content" select="'&lt;&lt; Remove'" />
                    <xsl:with-param name="className" select="'Form-button'" />
                    <xsl:with-param name="onClick">mover('remove','<xsl:value-of select="$availId" />','<xsl:value-of select="$name" />')</xsl:with-param>
                    <xsl:with-param name="disabled">
                        <xsl:if test="$disabled = 'true'">true</xsl:if>
                    </xsl:with-param>
                </xsl:call-template>
            </div>
            <div>
                <div class="Select-dual-label">Selected <xsl:value-of select="$label"/></div>
                <select name="{$name}" id="{$name}" class="Select-dual-select" multiple="multiple" size="20" onDblClick="mover('remove','{$availId}','{$name}')">
                    <xsl:if test="$disabled = 'true'">
                        <xsl:attribute name="disabled">disabled</xsl:attribute>
                    </xsl:if>
                    <xsl:for-each select="exslt:node-set($itemsSelected)//mapEntry">
                        <option value="{value}">
                            <xsl:value-of select="name"/>
                        </option>
                    </xsl:for-each>
                </select>
            </div>
        </div>
    </xsl:template>

</xsl:stylesheet>
