<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
  xmlns:idea="http://www.ideadistributors.com/idea/xsl" exclude-result-prefixes="#all">
  <xsl:output indent="yes"/>
  <xsl:include href="idea-functions.xsl"/>
  <xsl:include href="mapping/itunes-mapping.xsl"/>
  <!--  <xsl:param name="provider-name" as="xs:string" required="yes"/> -->
  <xsl:variable name="provider-name" as="xs:string" select="'IDEA Distributors'"/>
  <xsl:variable name="countriesList" select="document('countries.xml')"/>
  <xsl:template match="album">
    <xsl:variable name="upc" select="upc"/>
    <xsl:if test="string-length(upc) >= 12">
      <package>
        <language>en</language>
        <provider>
          <xsl:value-of select="$provider-name"/>
        </provider>
        <!-- Must match a name negotiated with Apple -->
        <album>
          <!-- ID -->
          <!--<album_vendor_id/>-->
          <album_upc>
            <xsl:value-of select="$upc"/>
          </album_upc>
          <!--<album_grid/>-->
          <!-- Album description -->
          <album_title>
            <xsl:value-of select="title"/>
          </album_title>
          <xsl:if test="exists(version)">
            <album_title_version>
              <xsl:value-of select="version"/>
            </album_title_version>
          </xsl:if>
          <album_release_date>
            <xsl:value-of select="release-date"/>
          </album_release_date>
          <!-- depricated in version 3.1 of the itunes spec
          <album_original_release_year>
            <xsl:value-of select="substring(release-date, 1, 4)"/>
          </album_original_release_year>
          -->
          <album_label_name>
            <xsl:value-of select="label"/>
          </album_label_name>
          <album_genres>
            <genre>
              <xsl:value-of select="genre"/>
            </genre>
            <xsl:if test="genre-secondary">
            <genre>
              <xsl:value-of select="genre-secondary"/>
            </genre>
            </xsl:if>
          </album_genres>
          <album_copyright_pline>
            <xsl:value-of select="pline"/>
          </album_copyright_pline>
          <album_copyright_cline>
            <xsl:value-of select="cline"/>
          </album_copyright_cline>
          <xsl:choose>
            <xsl:when test="compare(@is-explicit, 'explicit') = 0 or compare(@is-explicit, 'clean')
              = 0">
              <album_explicit_lyrics>
                <xsl:value-of select="@is-explicit"/>
              </album_explicit_lyrics>
            </xsl:when>
            <xsl:otherwise> </xsl:otherwise>
          </xsl:choose>
          <album_artwork_files>
            <file>
              <file_name>
                <xsl:value-of select="image-filename"/>
              </file_name>
              <checksum type="md5">
                <xsl:value-of select="image-checksum"/>
              </checksum>
            </file>
            <!-- ... -->
          </album_artwork_files>
          <!-- Commerce info -->
          <album_volume_count><xsl:value-of select="volume-count" /></album_volume_count>
          <album_track_count><xsl:value-of select="track-count" /></album_track_count>
          <album_products>
          <xsl:choose>
            <xsl:when test="exists(territories/allowed)">
              	<xsl:for-each select="territories/allowed">
              		<product>
              			<territory><xsl:value-of select="node()" /></territory>
                        <wholesale_price_tier><xsl:value-of select="../../wholesale-price-tier" /></wholesale_price_tier>
				<sales_start_date>
					<xsl:choose>
						<xsl:when test="translate(substring(xs:string(current-date()), 1, 10),'-','') &gt; translate(substring(xs:string(../../release-date), 1, 10),'-','')">
							<xsl:value-of select="substring(current-date() cast as xs:string, 1, 10)"/>
						</xsl:when>
						<xsl:otherwise>
							<xsl:value-of select="substring(../../release-date cast as xs:string, 1, 10)"/>
						</xsl:otherwise>
					</xsl:choose>
				</sales_start_date>
              		</product>
              	</xsl:for-each>
            </xsl:when>
            <xsl:when test="exists(territories/denied)">
                <xsl:for-each select="$countriesList/CountryCodes/Code">
                    <!--must loop through each denied to find a match, if found, don't display -->
                    <xsl:if test="not(idea:excluded(node(), territories)=1)">
              		    <product>
              			    <territory><xsl:value-of select="node()" /></territory>
                            <wholesale_price_tier><xsl:value-of select="../../wholesale-price-tier" /></wholesale_price_tier>
				            <sales_start_date>
					            <xsl:choose>
						            <xsl:when test="translate(substring(xs:string(current-date()), 1, 10),'-','') &gt; translate(substring(xs:string(../../release-date), 1, 10),'-','')">
							            <xsl:value-of select="substring(current-date() cast as xs:string, 1, 10)"/>
						            </xsl:when>
						            <xsl:otherwise>
							            <xsl:value-of select="substring(../../release-date cast as xs:string, 1, 10)"/>
						            </xsl:otherwise>
					            </xsl:choose>
				            </sales_start_date>
              		    </product>
                    </xsl:if>
                </xsl:for-each>
            </xsl:when>
            <xsl:otherwise>
	            <product>
	            	<!-- default to 'WW' -->
		      <territory>WW</territory>
                <wholesale_price_tier><xsl:value-of select="wholesale-price-tier" /></wholesale_price_tier>
				<sales_start_date>
					<xsl:choose>
						<xsl:when test="translate(substring(current-date() cast as xs:string, 1, 10),'-','') &gt; translate(substring(../../release-date cast as xs:string, 1, 10),'-','')">
							<xsl:value-of select="substring(current-date() cast as xs:string, 1, 10)"/>
						</xsl:when>
						<xsl:otherwise>
							<xsl:value-of select="substring(../../release-date cast as xs:string, 1, 10)"/>
						</xsl:otherwise>
					</xsl:choose>
				</sales_start_date>
		    </product>
            </xsl:otherwise>
          </xsl:choose>
          </album_products>
          <!-- Artist info -->
          <album_artists>
            <artist>
              <name>
                <xsl:value-of select="display-artist"/>
              </name>
              <roles>
                  <role>Performer</role>
              </roles>
              <primary>true</primary>
            </artist>
          </album_artists>
          <!-- Tracks -->
          <album_tracks>
            <xsl:variable select="count(volume/track)" name="totalTracks" as="xs:integer"/>
            <xsl:variable name="currentTrack" select="0" as="xs:integer"/>
            <xsl:for-each select="volume">
              <xsl:variable name="volume" select="@id"/>
              <xsl:for-each select="track">
                <track>
                  <!-- ID -->
                  <!--
                    <track_vendor_id>
                      <xsl:value-of select="replace(isrc, '-', '')"/>
                    </track_vendor_id>
                    -->
                  <track_isrc>
                    <xsl:value-of select="replace(isrc, '-', '')"/>
                  </track_isrc>
                  <!--<track_grid/>-->
                  <!-- Track description -->
                  <track_title>
                    <xsl:value-of select="title"/>
                  </track_title>
                  <xsl:if test="exists(version)">
                    <track_title_version>
                      <xsl:value-of select="version"/>
                    </track_title_version>
                  </xsl:if>
                  <xsl:if test="exists(label)">
                    <track_label_name>
                      <xsl:value-of select="label"/>
                    </track_label_name>
                  </xsl:if>
                    <track_genres>
                      <genre>
                        <xsl:value-of select="/album/genre"/>
                      </genre>
                      <xsl:if test="/album/genre-secondary">
                      <genre>
                        <xsl:value-of select="/album/genre-secondary"/>
                      </genre>
                      </xsl:if>
                    </track_genres>
                  <xsl:if test="exists(pline)">
                    <track_copyright_pline>
                      <xsl:value-of select="pline"/>
                    </track_copyright_pline>
                  </xsl:if>
                  <explicit_content>
                    <xsl:value-of select="is-explicit"/>
                  </explicit_content>
                  <!--<track_lyrics/>-->
                  <!--<track_liner_notes/>-->
                  <!--<track_beats_per_minute/>-->
                  <!-- Playlist ordering -->
                  <track_volume_number>
                    <xsl:value-of select="$volume"/>
                    <!--</track_volume_number>

                  <track_volume_count><xsl:value-of select="count(/album/volume)"/></track_volume_count>
                  -->
                  </track_volume_number>
                  <track_number>
                    <xsl:value-of select="sequence"/>
                  </track_number>
                  <!--
                  <track_track_count><xsl:value-of select="count(node().parent().childre())"/></track_track_count>
                  -->
                  <!-- Audio data -->
                  <track_audio_file>
                    <file_name>
                      <xsl:value-of select="audio-filename"/>
                    </file_name>
                    <checksum type="md5">
                      <xsl:value-of select="audio-checksum"/>
                    </checksum>
                  </track_audio_file>
                  <!-- Artist info -->
                  <track_artists>
                    <artist>
                      <name>
                        <xsl:value-of select="display-artist"/>
                      </name>
                      <roles>
                        <role>Performer</role>
                      </roles>
                      <primary>true</primary>
                    </artist>
                    <xsl:if test="normalize-space(composer)">
                      <artist>
                        <name>
                          <xsl:value-of select="composer"/>
                        </name>
                        <roles>
                          <role>Composer</role>
                        </roles>
                        <primary>false</primary>
                      </artist>
                    </xsl:if>
                </track_artists>
                </track>
              </xsl:for-each>
            </xsl:for-each>
          </album_tracks>
        </album>
      </package>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>
