<!--                                                                  -->
<!--  Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved     -->
<!--  $Id$  -->
<!--                                                                  -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:dyn="http://exslt.org/dynamic" extension-element-prefixes="dyn">
    <xsl:output method="html" indent="no" doctype-system="" encoding="utf-8" />

    <xsl:include href="/app/tools/rps/templates/shared_templates.xsl" />

    <xsl:variable name="album_errors">0</xsl:variable>
    <xsl:variable name="track_errors">0</xsl:variable>

    <xsl:template match="Root">
        <div id="distribution_errors">
            <div class="section">
                <xsl:for-each select="Distribution/Albums/Album">

                    <xsl:if test="*/@status &gt; 0">
                        <xsl:call-template name="displayAlbumErrors" />
                    </xsl:if>

                    <xsl:if test="Tracks/Track/*/@status &gt; 0">
                        <xsl:call-template name="displayTrackErrors" />
                    </xsl:if>
                </xsl:for-each>
            </div>
        </div>
    </xsl:template>

    <xsl:template name="displayAlbumErrors">
        <fieldset class="albumErrors">
            <h4>Album Errors</h4>

            <table class="Table" width="100%">
                <tbody>
                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'album_title'" />
                        <xsl:with-param name="error"  select="album_title/@error" />
                        <xsl:with-param name="status" select="album_title/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'album_artist'" />
                        <xsl:with-param name="error"  select="album_artist/@error" />
                        <xsl:with-param name="status" select="album_artist/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'additional_album_artists'" />
                        <xsl:with-param name="error"  select="additional_album_artists/@error" />
                        <xsl:with-param name="status" select="additional_album_artists/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'price_tiers'" />
                        <xsl:with-param name="error"  select="price_tiers/@error" />
                        <xsl:with-param name="status" select="price_tiers/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'album_custom_1'" />
                        <xsl:with-param name="error"  select="album_custom_1/@error" />
                        <xsl:with-param name="status" select="album_custom_1/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'album_custom_2'" />
                        <xsl:with-param name="error"  select="album_custom_2/@error" />
                        <xsl:with-param name="status" select="album_custom_2/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'album_custom_3'" />
                        <xsl:with-param name="error"  select="album_custom_3/@error" />
                        <xsl:with-param name="status" select="album_custom_3/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'cleared_for_distribution'" />
                        <xsl:with-param name="error"  select="cleared_for_distribution/@error" />
                        <xsl:with-param name="status" select="cleared_for_distribution/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'c_line'" />
                        <xsl:with-param name="error"  select="c_line/@error" />
                        <xsl:with-param name="status" select="c_line/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'catalog_no'" />
                        <xsl:with-param name="error"  select="catalog_no/@error" />
                        <xsl:with-param name="status" select="catalog_no/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'cd_upc'" />
                        <xsl:with-param name="error"  select="cd_upc/@error" />
                        <xsl:with-param name="status" select="cd_upc/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'client_album_id'" />
                        <xsl:with-param name="error"  select="client_album_id/@error" />
                        <xsl:with-param name="status" select="client_album_id/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'digital_upc'" />
                        <xsl:with-param name="error"  select="digital_upc/@error" />
                        <xsl:with-param name="status" select="digital_upc/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'dvd_upc'" />
                        <xsl:with-param name="error"  select="dvd_upc/@error" />
                        <xsl:with-param name="status" select="dvd_upc/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'label_name'" />
                        <xsl:with-param name="error"  select="label_name/@error" />
                        <xsl:with-param name="status" select="label_name/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'override'" />
                        <xsl:with-param name="error"  select="override/@error" />
                        <xsl:with-param name="status" select="override/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'p_line'" />
                        <xsl:with-param name="error"  select="p_line/@error" />
                        <xsl:with-param name="status" select="p_line/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'primary_genre'" />
                        <xsl:with-param name="error"  select="primary_genre/@error" />
                        <xsl:with-param name="status" select="primary_genre/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'release_date'" />
                        <xsl:with-param name="error"  select="release_date/@error" />
                        <xsl:with-param name="status" select="release_date/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'secondary_genre'" />
                        <xsl:with-param name="error"  select="secondary_genre/@error" />
                        <xsl:with-param name="status" select="secondary_genre/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'territories_allowed'" />
                        <xsl:with-param name="error"  select="territories_allowed/@error" />
                        <xsl:with-param name="status" select="territories_allowed/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'territories_denied'" />
                        <xsl:with-param name="error"  select="territories_denied/@error" />
                        <xsl:with-param name="status" select="territories_denied/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'track_count'" />
                        <xsl:with-param name="error"  select="track_count/@error" />
                        <xsl:with-param name="status" select="track_count/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'vinyl_upc'" />
                        <xsl:with-param name="error"  select="vinyl_upc/@error" />
                        <xsl:with-param name="status" select="vinyl_upc/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'digital_product_id'" />
                        <xsl:with-param name="error"  select="digital_product_id/@error" />
                        <xsl:with-param name="status" select="digital_product_id/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'cd_product_id'" />
                        <xsl:with-param name="error"  select="cd_product_id/@error" />
                        <xsl:with-param name="status" select="cd_product_id/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'vinyl_product_id'" />
                        <xsl:with-param name="error"  select="vinyl_product_id/@error" />
                        <xsl:with-param name="status" select="vinyl_product_id/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'dvd_product_id'" />
                        <xsl:with-param name="error"  select="dvd_product_id/@error" />
                        <xsl:with-param name="status" select="dvd_product_id/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'digital_release_date'" />
                        <xsl:with-param name="error"  select="digital_release_date/@error" />
                        <xsl:with-param name="status" select="digital_release_date/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'cd_release_date'" />
                        <xsl:with-param name="error"  select="cd_release_date/@error" />
                        <xsl:with-param name="status" select="cd_release_date/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'vinyl_release_date'" />
                        <xsl:with-param name="error"  select="vinyl_release_date/@error" />
                        <xsl:with-param name="status" select="vinyl_release_date/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'dvd_release_date'" />
                        <xsl:with-param name="error"  select="dvd_release_date/@error" />
                        <xsl:with-param name="status" select="dvd_release_date/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'digital_disc_number'" />
                        <xsl:with-param name="error"  select="digital_disc_number/@error" />
                        <xsl:with-param name="status" select="digital_disc_number/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'cd_disc_number'" />
                        <xsl:with-param name="error"  select="cd_disc_number/@error" />
                        <xsl:with-param name="status" select="cd_disc_number/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'vinyl_disc_number'" />
                        <xsl:with-param name="error"  select="vinyl_disc_number/@error" />
                        <xsl:with-param name="status" select="vinyl_disc_number/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'dvd_disc_number'" />
                        <xsl:with-param name="error"  select="dvd_disc_number/@error" />
                        <xsl:with-param name="status" select="dvd_disc_number/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'digital_track_number'" />
                        <xsl:with-param name="error"  select="digital_track_number/@error" />
                        <xsl:with-param name="status" select="digital_track_number/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'cd_track_number'" />
                        <xsl:with-param name="error"  select="cd_track_number/@error" />
                        <xsl:with-param name="status" select="cd_track_number/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'vinyl_track_number'" />
                        <xsl:with-param name="error"  select="vinyl_track_number/@error" />
                        <xsl:with-param name="status" select="vinyl_track_number/@status" />
                    </xsl:call-template>

                    <xsl:call-template name="showError">
                        <xsl:with-param name="type"   select="'dvd_track_number'" />
                        <xsl:with-param name="error"  select="dvd_track_number/@error" />
                        <xsl:with-param name="status" select="dvd_track_number/@status" />
                    </xsl:call-template>
                </tbody>
            </table>

        </fieldset>
    </xsl:template>


    <xsl:template name="displayTrackErrors">
        <fieldset class="trackErrors">
            <h4>Track Errors</h4>

            <table class="Table" width="100%">
                <tbody>
                    <xsl:for-each select="Tracks/Track">

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"    select="'client_track_id'" />
                            <xsl:with-param name="error"   select="client_track_id/@error" />
                            <xsl:with-param name="status"  select="client_track_id/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'disc_no'" />
                            <xsl:with-param name="error"  select="disc_no/@error" />
                            <xsl:with-param name="status" select="disc_no/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'exclude_digitally'" />
                            <xsl:with-param name="error"  select="exclude_digitally/@error" />
                            <xsl:with-param name="status" select="exclude_digitally/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'album_purchase_only'" />
                            <xsl:with-param name="error"  select="album_purchase_only/@error" />
                            <xsl:with-param name="status" select="album_purchase_only/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'explicit'" />
                            <xsl:with-param name="error"  select="explicit/@error" />
                            <xsl:with-param name="status" select="explicit/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'isrc'" />
                            <xsl:with-param name="error"  select="isrc/@error" />
                            <xsl:with-param name="status" select="isrc/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'track_artist'" />
                            <xsl:with-param name="error"  select="track_artist/@error" />
                            <xsl:with-param name="status" select="track_artist/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'additional_track_artists'" />
                            <xsl:with-param name="error"  select="additional_track_artists/@error" />
                            <xsl:with-param name="status" select="additional_track_artists/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'track_composer'" />
                            <xsl:with-param name="error"  select="track_composer/@error" />
                            <xsl:with-param name="status" select="track_composer/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'track_customer_1'" />
                            <xsl:with-param name="error"  select="track_customer_1/@error" />
                            <xsl:with-param name="status" select="track_customer_1/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'track_customer_2'" />
                            <xsl:with-param name="error"  select="track_customer_2/@error" />
                            <xsl:with-param name="status" select="track_customer_2/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'track_customer_3'" />
                            <xsl:with-param name="error"  select="track_customer_3/@error" />
                            <xsl:with-param name="status" select="track_customer_3/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'track_minutes'" />
                            <xsl:with-param name="error"  select="track_minutes/@error" />
                            <xsl:with-param name="status" select="track_minutes/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'track_number'" />
                            <xsl:with-param name="error"  select="track_number/@error" />
                            <xsl:with-param name="status" select="track_number/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'track_seconds'" />
                            <xsl:with-param name="error"  select="track_seconds/@error" />
                            <xsl:with-param name="status" select="track_seconds/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'track_title'" />
                            <xsl:with-param name="error"  select="track_title/@error" />
                            <xsl:with-param name="status" select="track_title/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                        <xsl:call-template name="showError">
                            <xsl:with-param name="type"   select="'media_type'" />
                            <xsl:with-param name="error"  select="media_type/@error" />
                            <xsl:with-param name="status" select="media_type/@status" />
                            <xsl:with-param name="message"><xsl:call-template name="discTrack" /></xsl:with-param>
                        </xsl:call-template>

                    </xsl:for-each>
                </tbody>
            </table>
        </fieldset>
    </xsl:template>

    <xsl:template name="showError">
        <xsl:param name="type" />
        <xsl:param name="status" />
        <xsl:param name="error" />
        <xsl:param name="message" />

        <xsl:variable name="class">
            <xsl:choose>
                <xsl:when test="$status = 6">warn</xsl:when>
                <xsl:when test="$status = 7">duplicate</xsl:when>
                <xsl:when test="$status = 8">error</xsl:when>
                <xsl:when test="$status = 9">error</xsl:when>
            </xsl:choose>
        </xsl:variable>

        <xsl:if test="$status &gt; 0">
            <tr class="Table-row Table-row-data">
                <td class="Table-col"><xsl:value-of select="$message" /></td>
                <td class="Table-col"><xsl:value-of select="$type" /></td>
                <td class="Table-col">
                    <xsl:call-template name="displayStatus">
                        <xsl:with-param name="status" select="$status" />
                    </xsl:call-template>
                </td>
                <td class="Table-col"><xsl:value-of select="$error" /></td>
            </tr>
        </xsl:if>

    </xsl:template>

    <xsl:template name="displayStatus">
        <xsl:param name="status" />

        <xsl:choose>
            <xsl:when test="$status = 6">Warning</xsl:when>
            <xsl:when test="$status = 7">Duplicate (overridable)</xsl:when>
            <xsl:when test="$status = 8">Duplicate (error)</xsl:when>
            <xsl:when test="$status = 9">Error</xsl:when>
        </xsl:choose>

    </xsl:template>

    <xsl:template name="discTrack">
        Disc/Track: <xsl:value-of select="disc_no" />/<xsl:value-of select="track_number" />
    </xsl:template>
</xsl:stylesheet>
