<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:param name="Prodid">-//WDC200610//suda.co.uk//X2V 0.8 (BETA)//EN</xsl:param>
<xsl:param name="Source"></xsl:param>
<xsl:param name="Anchor" />

<xsl:param name="Debug" select="0"/>

<xsl:variable name="lcase" select='"abcdefghijklmnopqrstuvwxyz"'/>
<xsl:variable name="ucase" select='"ABCDEFGHIJKLMNOPQRSTUVWXYZ"'/>
<xsl:variable name="digit" select='"01234567890"'/>
<xsl:variable name="alpha" select='concat($lcase, $ucase)'/>
<xsl:param name="Encoding" >UTF-8</xsl:param>


<xsl:template match="/">
	<xsl:text>BEGIN:VCALENDAR</xsl:text>
	<xsl:text>&#x0A;PRODID:</xsl:text><xsl:value-of select="$Prodid"/>
	<xsl:text>&#x0A;X-ORIGINAL-URL:</xsl:text><xsl:value-of select="normalize-space($Source)"/>
	<xsl:text>&#x0A;X-WR-CALNAME:</xsl:text>
	<xsl:text>&#x0A;VERSION:2.0</xsl:text>
	<xsl:text>&#x0A;METHOD:PUBLISH</xsl:text>

	<xsl:apply-templates select="//*[ancestor-or-self::*[name() = 'del'] = false() and contains(concat(' ',normalize-space(@class),' '),' vevent ')]"/>
	<xsl:text>&#x0A;END:VCALENDAR</xsl:text>
</xsl:template>

<!-- Add more templates as they are needed-->
<xsl:template match="*[contains(concat(' ',normalize-space(@class),' '),' vevent ')]">
	<xsl:if test="not($Anchor) or @id = $Anchor">
		<xsl:text>&#x0A;BEGIN:VEVENT</xsl:text>
		<!-- check for header="" and extract that data -->
			
		<xsl:call-template name="veventProperties"/>

		<xsl:text>&#x0A;END:VEVENT&#x0A;</xsl:text>

	</xsl:if>
</xsl:template>

<xsl:template name="veventProperties">
        <xsl:call-template name="textPropLang">
		<xsl:with-param name="label">COMMENT</xsl:with-param>
		<xsl:with-param name="class">comment</xsl:with-param>

	</xsl:call-template>

	<xsl:call-template name="textPropLang">
		<xsl:with-param name="label">DESCRIPTION</xsl:with-param>
		<xsl:with-param name="class">description</xsl:with-param>
	</xsl:call-template>

	<xsl:call-template name="textPropLang">
		<xsl:with-param name="label">LOCATION</xsl:with-param>

		<xsl:with-param name="class">location</xsl:with-param>
	</xsl:call-template>

	<xsl:call-template name="textPropLang">
		<xsl:with-param name="label">SUMMARY</xsl:with-param>
		<xsl:with-param name="class">summary</xsl:with-param>
	</xsl:call-template>

	<xsl:call-template name="dateProp">
		<xsl:with-param name="label">DTSTART</xsl:with-param>
		<xsl:with-param name="class">dtstart</xsl:with-param>
	</xsl:call-template>

	<xsl:call-template name="dateProp">
		<xsl:with-param name="label">DTEND</xsl:with-param>
		<xsl:with-param name="class">dtend</xsl:with-param>

	</xsl:call-template>

</xsl:template>

<xsl:template name="textPropLang">
</xsl:template>


<!-- Date property -->
<xsl:template name="dateProp">
	<xsl:param name="label" />
	<xsl:param name="class" />
	
	<xsl:for-each select="descendant-or-self::*[ancestor-or-self::*[name() = 'del'] = false() and contains(concat(' ', @class, ' '),concat(' ', $class, ' '))]">

        <xsl:text>&#x0A;</xsl:text>
		<xsl:value-of select="$label" />
		<!-- TZID needs work! -->
		<xsl:apply-templates select="*[ancestor-or-self::*[name() = 'del'] = false() and contains(concat(' ',@class,' '),' tzid ')]" mode="tzid"/>
        <xsl:text>:</xsl:text>

		<xsl:choose>
			<xsl:when test="@longdesc != ''">
				<xsl:call-template name="datetimeutc-time-converter">

					<xsl:with-param name="time-string"><xsl:value-of select="normalize-space(@longdesc)" /></xsl:with-param>
				</xsl:call-template>
			</xsl:when>
			<xsl:when test="@alt != ''">
				<xsl:call-template name="datetimeutc-time-converter">
					<xsl:with-param name="time-string"><xsl:value-of select="normalize-space(@alt)" /></xsl:with-param>
				</xsl:call-template>
			</xsl:when>
			<xsl:when test="@title != ''">

				<xsl:call-template name="datetimeutc-time-converter">
					<xsl:with-param name="time-string"><xsl:value-of select="normalize-space(@title)" /></xsl:with-param>
				</xsl:call-template>
			</xsl:when>
			<xsl:otherwise>
				<xsl:call-template name="datetimeutc-time-converter">
					<xsl:with-param name="time-string"><xsl:value-of select="normalize-space(.)" /></xsl:with-param>
				</xsl:call-template>
			</xsl:otherwise>

		</xsl:choose>
	</xsl:for-each>
</xsl:template>

	<!-- convert all times to UTC Times -->
	<!-- RFC2426 mandates that iCal dates are in UTC without dashes or colons as separators -->
	<xsl:template name="datetimeutc-time-converter">
	<xsl:param name="time-string"></xsl:param>
	<xsl:choose>
		<xsl:when test="substring-before($time-string,'Z') = true()">

			<!-- need to pad with 0000s if needed -->
			<xsl:value-of select="translate(translate(substring-before($time-string,'Z'), ':' ,''), '-' ,'')"/>
			<xsl:if test="string-length(translate(translate(substring-before($time-string,'Z'), ':' ,''), '-' ,''))  &lt; 10">
				<xsl:text>0</xsl:text>
			</xsl:if>
			<xsl:if test="string-length(translate(translate(substring-before($time-string,'Z'), ':' ,''), '-' ,''))  &lt; 11">
				<xsl:text>0</xsl:text>
			</xsl:if>

			<xsl:if test="string-length(translate(translate(substring-before($time-string,'Z'), ':' ,''), '-' ,''))  &lt; 12">
				<xsl:text>0</xsl:text>
			</xsl:if>
			<xsl:if test="string-length(translate(translate(substring-before($time-string,'Z'), ':' ,''), '-' ,''))  &lt; 13">
				<xsl:text>0</xsl:text>
			</xsl:if>
			<xsl:if test="string-length(translate(translate(substring-before($time-string,'Z'), ':' ,''), '-' ,''))  &lt; 14">
				<xsl:text>0</xsl:text>

			</xsl:if>
			<xsl:if test="string-length(translate(translate(substring-before($time-string,'Z'), ':' ,''), '-' ,''))  &lt; 15">
				<xsl:text>0</xsl:text>
			</xsl:if>
			<xsl:text>Z</xsl:text>
		</xsl:when>
		<xsl:when test="substring-before($time-string,'T') = false()">
			<xsl:value-of select="translate(translate($time-string, ':' ,''), '-' ,'')"/>			
		</xsl:when>

		<xsl:otherwise>
			<xsl:variable name="event-year"> <xsl:value-of select="substring(translate($time-string, '-' ,''),1,4)"/></xsl:variable>
			<xsl:variable name="event-month"><xsl:value-of select="substring(translate($time-string, '-' ,''),5,2)"/></xsl:variable>
			<xsl:variable name="event-day">  <xsl:value-of select="substring(translate($time-string, '-' ,''),7,2)"/></xsl:variable>
			<xsl:variable name="event-date"><xsl:value-of select="substring-before(translate($time-string, '-' ,''),'T')"/></xsl:variable>
			<xsl:choose>
				<xsl:when test="substring-before(substring-after(translate($time-string, ':' ,''),'T'),'+') = true()">
					<xsl:choose>

						<xsl:when test="string-length(substring-before(substring-after(translate($time-string, ':' ,''),'T'),'+')) &lt; 6">
							<xsl:variable name="event-time"><xsl:value-of select="concat(substring-before(substring-after(translate($time-string, ':' ,''),'T'),'+'),'00')"/></xsl:variable>
							<xsl:choose>
								<xsl:when test="string-length(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'+')) &lt; 4">
									<xsl:variable name="event-timezone"><xsl:value-of select="concat(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'+'),'0000')"/></xsl:variable>											<xsl:call-template name="build-utc">
										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>

										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time - $event-timezone)" /></xsl:with-param>
									</xsl:call-template>
								</xsl:when>
								<xsl:when test="string-length(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'+')) &lt; 6">
									<xsl:variable name="event-timezone"><xsl:value-of select="concat(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'+'),'00')"/></xsl:variable>											<xsl:call-template name="build-utc">
										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>

										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time - $event-timezone)" /></xsl:with-param>
									</xsl:call-template>
								</xsl:when>
								<xsl:otherwise>
									<xsl:variable name="event-timezone"><xsl:value-of select="substring-after(substring-after(translate($time-string, ':' ,''),'T'),'+')"/></xsl:variable>
									<xsl:call-template name="build-utc">
										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>

										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time - $event-timezone)" /></xsl:with-param>
									</xsl:call-template>
								</xsl:otherwise>
							</xsl:choose>
						</xsl:when>
						<xsl:otherwise>
							<xsl:variable name="event-time"><xsl:value-of select="substring-before(substring-after(translate($time-string, ':' ,''),'T'),'+')"/></xsl:variable>
							<xsl:choose>
								<xsl:when test="string-length(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'+')) &lt; 4">

									<xsl:variable name="event-timezone"><xsl:value-of select="concat(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'+'),'0000')"/></xsl:variable>
									<xsl:call-template name="build-utc">
										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>
										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time - $event-timezone)" /></xsl:with-param>
									</xsl:call-template>
								</xsl:when>
								<xsl:when test="string-length(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'+')) &lt; 6">

									<xsl:variable name="event-timezone"><xsl:value-of select="concat(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'+'),'00')"/></xsl:variable>
									<xsl:call-template name="build-utc">
										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>
										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time - $event-timezone)" /></xsl:with-param>
									</xsl:call-template>
								</xsl:when>

								<xsl:otherwise>
									<xsl:variable name="event-timezone"><xsl:value-of select="substring-after(substring-after(translate($time-string, ':' ,''),'T'),'+')"/></xsl:variable>
									<xsl:call-template name="build-utc">
										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>
										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time - $event-timezone)" /></xsl:with-param>
									</xsl:call-template>
								</xsl:otherwise>

							</xsl:choose>
						</xsl:otherwise>
					</xsl:choose>
				</xsl:when>
				<xsl:when test="substring-before(substring-after(translate($time-string, ':' ,''),'T'),'-') = true()">
					<xsl:choose>
						<xsl:when test="string-length(substring-before(substring-after(translate($time-string, ':' ,''),'T'),'-')) &lt; 6">
							<xsl:variable name="event-time"><xsl:value-of select="concat(substring-before(substring-after(translate($time-string, ':' ,''),'T'),'-'),'00')"/></xsl:variable>
							<xsl:choose>

								<xsl:when test="string-length(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'-')) &lt; 4">
									<xsl:variable name="event-timezone"><xsl:value-of select="concat(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'-'),'0000')"/></xsl:variable>
									<xsl:call-template name="build-utc">
										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>
										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time + $event-timezone)" /></xsl:with-param>
									</xsl:call-template>
								</xsl:when>

								<xsl:when test="string-length(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'-')) &lt; 6">
									<xsl:variable name="event-timezone"><xsl:value-of select="concat(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'-'),'00')"/></xsl:variable>
									<xsl:call-template name="build-utc">
										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>
										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time + $event-timezone)" /></xsl:with-param>
									</xsl:call-template>

								</xsl:when>
								<xsl:otherwise>
									<xsl:variable name="event-timezone"><xsl:value-of select="substring-after(substring-after(translate($time-string, ':' ,''),'T'),'-')"/></xsl:variable>
									<xsl:call-template name="build-utc">
										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>
										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time + $event-timezone)" /></xsl:with-param>
									</xsl:call-template>

								</xsl:otherwise>
							</xsl:choose>
						</xsl:when>
						<xsl:otherwise>
							<xsl:variable name="event-time"><xsl:value-of select="substring-before(substring-after(translate($time-string, ':' ,''),'T'),'-')"/></xsl:variable>
							<xsl:choose>
								<xsl:when test="string-length(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'-')) &lt; 4">
									<xsl:variable name="event-timezone"><xsl:value-of select="concat(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'-'),'0000')"/></xsl:variable>
									<xsl:call-template name="build-utc">

										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>
										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time + $event-timezone)" /></xsl:with-param>
									</xsl:call-template>
								</xsl:when>

								<xsl:when test="string-length(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'-')) &lt; 6">
									<xsl:variable name="event-timezone"><xsl:value-of select="concat(substring-after(substring-after(translate($time-string, ':' ,''),'T'),'-'),'00')"/></xsl:variable>

									<xsl:call-template name="build-utc">
										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>
										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time + $event-timezone)" /></xsl:with-param>
									</xsl:call-template>
								</xsl:when>
								<xsl:otherwise>
									<xsl:variable name="event-timezone"><xsl:value-of select="substring-after(substring-after(translate($time-string, ':' ,''),'T'),'-')"/></xsl:variable>

									<xsl:call-template name="build-utc">
										<xsl:with-param name="event-year"><xsl:value-of select="normalize-space($event-year)" /></xsl:with-param>
										<xsl:with-param name="event-month"><xsl:value-of select="normalize-space($event-month)" /></xsl:with-param>
										<xsl:with-param name="event-day"><xsl:value-of select="normalize-space($event-day)" /></xsl:with-param>
										<xsl:with-param name="utc-event-time"><xsl:value-of select="normalize-space($event-time + $event-timezone)" /></xsl:with-param>
									</xsl:call-template>
								</xsl:otherwise>
							</xsl:choose>
						</xsl:otherwise>

					</xsl:choose>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="normalize-space($event-year)"/>
					<xsl:value-of select="normalize-space($event-month)"/>
					<xsl:value-of select="normalize-space($event-day)"/>
					<xsl:text>T</xsl:text>
					<xsl:if test="string-length(normalize-space(substring-after(translate($time-string, ':' ,''),'T'))) &lt; 6">

						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:if test="string-length(normalize-space(substring-after(translate($time-string, ':' ,''),'T'))) &lt; 5">
						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:if test="string-length(normalize-space(substring-after(translate($time-string, ':' ,''),'T'))) &lt; 4">
						<xsl:text>0</xsl:text>

					</xsl:if>
					<xsl:if test="string-length(normalize-space(substring-after(translate($time-string, ':' ,''),'T'))) &lt; 3">
						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:if test="string-length(normalize-space(substring-after(translate($time-string, ':' ,''),'T'))) &lt; 2">
						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:value-of select="normalize-space(substring-after(translate($time-string, ':' ,''),'T'))"/>

				</xsl:otherwise>
			</xsl:choose>
		</xsl:otherwise>
	</xsl:choose>
	</xsl:template>

	<!-- create a valid UTC date and increments day/month/year as needed -->
	<xsl:template name="build-utc">
	<xsl:param name="event-year"></xsl:param>

	<xsl:param name="event-month"></xsl:param>
	<xsl:param name="event-day"></xsl:param>
	<xsl:param name="utc-event-time"></xsl:param>

	<xsl:choose>
		<xsl:when test="$utc-event-time &gt; 235959">
			<xsl:choose>
				<xsl:when test="($event-month = 12) and ($event-day = 31)">
					<xsl:value-of select="$event-year + 1"/>			
				</xsl:when>

				<xsl:otherwise>
					<xsl:value-of select="$event-year"/>
				</xsl:otherwise>
			</xsl:choose>
			<xsl:choose>
				<xsl:when test="(($event-month = 12) and ($event-day = 31))">
					<xsl:text>01</xsl:text>	
				</xsl:when>
				<xsl:when test="(($event-month = 11) and ($event-day = 30)) or (($event-month = 10) and ($event-day = 31)) or (($event-month = 9) and ($event-day = 30))">

					<xsl:value-of select="$event-month + 1"/>	
				</xsl:when>
				<xsl:when test="(($event-month = 8) and ($event-day = 31)) or (($event-month = 7) and ($event-day = 31)) or (($event-month = 6) and ($event-day = 30)) or (($event-month = 5) and ($event-day = 31)) or (($event-month = 4) and ($event-day = 30)) or (($event-month = 3) and ($event-day = 31)) or (($event-month = 1) and ($event-day = 31)) or ($event-month = 2) and ($event-day = 29)">
					<xsl:text>0</xsl:text><xsl:value-of select="$event-month + 1"/>	
				</xsl:when>
				<xsl:when test="(($event-month = 2) and ($event-day = 28) and (($event-year mod 4) != 0) or (($event-year mod 400) != 0) and (($event-year mod 100) = 0))">
					<xsl:text>0</xsl:text><xsl:value-of select="$event-month + 1"/>				
				</xsl:when>
				<xsl:otherwise>

					<xsl:value-of select="$event-month"/>
				</xsl:otherwise>		
			</xsl:choose>
			<xsl:choose>
				<xsl:when test="(($event-month = 12) and ($event-day = 31)) or (($event-month = 11) and ($event-day = 30)) or (($event-month = 10) and ($event-day = 31)) or (($event-month = 9) and ($event-day = 30)) or (($event-month = 8) and ($event-day = 31)) or (($event-month = 7) and ($event-day = 31)) or (($event-month = 6) and ($event-day = 30)) or (($event-month = 5) and ($event-day = 31)) or (($event-month = 4) and ($event-day = 30)) or (($event-month = 3) and ($event-day = 31)) or (($event-month = 1) and ($event-day = 31)) or ($event-month = 2) and ($event-day = 29)">
					<xsl:text>01</xsl:text>
				</xsl:when>
				<xsl:when test="(($event-month = 2) and ($event-day = 28) and (($event-year mod 4) != 0) or (($event-year mod 400) != 0) and (($event-year mod 100) = 0))">
					<xsl:text>01</xsl:text>

				</xsl:when>
				<xsl:when test="(($event-day = 2) or ($event-day = 3) or ($event-day = 4) or ($event-day = 5) or ($event-day = 6) or ($event-day = 7) or ($event-day = 8))">
					<xsl:text>0</xsl:text><xsl:value-of select="$event-day + 1"/>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="$event-day + 1"/>			
				</xsl:otherwise>
			</xsl:choose>

			<xsl:text>T</xsl:text>
					<xsl:if test="string-length($utc-event-time mod 240000) &lt; 6">
						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:if test="string-length($utc-event-time mod 240000) &lt; 5">
						<xsl:text>0</xsl:text>
					</xsl:if>

					<xsl:if test="string-length($utc-event-time mod 240000) &lt; 4">
						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:if test="string-length($utc-event-time mod 240000) &lt; 3">
						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:if test="string-length($utc-event-time mod 240000) &lt; 2">
						<xsl:text>0</xsl:text>

					</xsl:if>
					<!--
					<xsl:if test="string-length($utc-event-time mod 240000) = 1">
						<xsl:text>0</xsl:text>
					</xsl:if>
					-->
	<!--
			<xsl:if test="string-length($utc-event-time mod 240000) &lt; 6">
			<xsl:text>0</xsl:text>
			</xsl:if>
	-->
			<xsl:value-of select="$utc-event-time mod 240000"/>
			<xsl:text>Z</xsl:text>
		</xsl:when>
		<xsl:when test="$utc-event-time &lt; 0">
			<xsl:choose>

				<xsl:when test="($event-month = 1) and ($event-day = 1)">
					<xsl:value-of select="$event-year - 1"/>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="$event-year"/>
				</xsl:otherwise>
			</xsl:choose>
			<xsl:choose>
				<xsl:when test="(($event-month = 1) and ($event-day = 1))">

					<xsl:text>12</xsl:text>
				</xsl:when>
				<xsl:when test="(($event-month = 11) and ($event-day = 1)) or (($event-month = 12) and ($event-day = 1))">
					<xsl:value-of select="$event-month - 1"/>
				</xsl:when>
				<xsl:when test="(($event-month = 10) and ($event-day = 1)) or (($event-month = 9) and ($event-day = 1)) or (($event-month = 8) and ($event-day = 1)) or (($event-month = 7) and ($event-day = 1)) or (($event-month = 6) and ($event-day = 1)) or (($event-month = 5) and ($event-day = 1)) or (($event-month = 4) and ($event-day = 1)) or (($event-month = 3) and ($event-day = 1)) or ($event-month = 2) and ($event-day = 1)">
					<xsl:text>0</xsl:text><xsl:value-of select="$event-month - 1"/>
				</xsl:when>

				<xsl:otherwise>
					<xsl:value-of select="$event-month"/>
				</xsl:otherwise>
			</xsl:choose>
			<xsl:choose>
				<xsl:when test="(($event-month = 11) and ($event-day = 1)) or (($event-month = 9) and ($event-day = 1)) or (($event-month = 6) and ($event-day = 1)) or (($event-month = 4) and ($event-day = 1)) or (($event-month = 2) and ($event-day = 1)) or (($event-month = 1) and ($event-day = 1))">
					<xsl:text>31</xsl:text>
				</xsl:when>

				<xsl:when test="(($event-month = 12) and ($event-day = 1)) or (($event-month = 10) and ($event-day = 1)) or (($event-month = 7) and ($event-day = 1)) or (($event-month = 5) and ($event-day = 1))">
					<xsl:text>30</xsl:text>
				</xsl:when>
				<xsl:when test="(($event-month = 3) and ($event-day = 1) and (($event-year mod 4) != 0) or (($event-year mod 400) != 0) and (($event-year mod 100) = 0))">
					<xsl:text>28</xsl:text>
				</xsl:when>
				<xsl:when test="(($event-month = 3) and ($event-day = 1) and (($event-year mod 4) = 0) or (($event-year mod 400) = 0) and (($event-year mod 100) != 0))">
					<xsl:text>29</xsl:text>

				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="$event-day - 1"/>			
				</xsl:otherwise>
			</xsl:choose>
			<xsl:text>T</xsl:text>
			<xsl:if test="string-length(240000 + $utc-event-time) &lt; 0">
			<xsl:text>0</xsl:text>

			</xsl:if>
			<xsl:value-of select="240000 + $utc-event-time"/>
			<xsl:text>Z</xsl:text>
		</xsl:when>
		<xsl:otherwise>
			<xsl:value-of select="$event-year"/>
			<xsl:value-of select="$event-month"/>
			<xsl:value-of select="$event-day"/>

			<xsl:text>T</xsl:text>

			<xsl:choose>
				<xsl:when test="$utc-event-time = 240000">
					<xsl:text>000000</xsl:text>
				</xsl:when>
				<xsl:otherwise>
					<xsl:if test="string-length($utc-event-time) &lt; 6">

						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:if test="string-length($utc-event-time) &lt; 5">
						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:if test="string-length($utc-event-time) &lt; 4">
						<xsl:text>0</xsl:text>

					</xsl:if>
					<xsl:if test="string-length($utc-event-time) &lt; 3">
						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:if test="string-length($utc-event-time) &lt; 2">
						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:if test="string-length($utc-event-time) = 1">

						<xsl:text>0</xsl:text>
					</xsl:if>
					<xsl:value-of select="$utc-event-time"/>
				</xsl:otherwise>
			</xsl:choose>


			<xsl:text>Z</xsl:text>
		</xsl:otherwise>

	</xsl:choose>
	</xsl:template>
	<!-- end datetime -->

<!-- TEXT PROPERTY with LANGUAGE -->
<xsl:template name="textPropLang">
	<xsl:param name="label" />
	<xsl:param name="class" />

	<xsl:for-each select=".//*[ancestor-or-self::*[name() = 'del'] = false() and contains(concat(' ', @class, ' '),concat(' ', $class, ' '))]">

	<xsl:if test="position() = 1">

        <xsl:text>&#x0A;</xsl:text>
		<xsl:value-of select="$label" />
    	<xsl:call-template name="lang" />
		<xsl:text>;CHARSET=</xsl:text><xsl:value-of select="$Encoding"/>
        <xsl:text>:</xsl:text>
		<xsl:choose>

			<xsl:when test='local-name(.) = "ol" or local-name(.) = "ul"'>
				<xsl:for-each select="*">
					<xsl:if test="not(position()=1)">
						<xsl:text>,</xsl:text>
					</xsl:if>
					<xsl:choose>
						<xsl:when test=".//*[contains(concat(' ', normalize-space(@class), ' '),' value ')]">
							<xsl:for-each select=".//*[contains(concat(' ', normalize-space(@class), ' '),' value ')]">

								<xsl:variable name="textFormatted">
								<xsl:apply-templates select="." mode="unFormatText" />
								</xsl:variable>
								<xsl:value-of select="normalize-space($textFormatted)"/>
							</xsl:for-each>
						</xsl:when>
						<xsl:otherwise>
							<xsl:variable name="textFormatted">
							<xsl:apply-templates select="." mode="unFormatText" />

							</xsl:variable>
							<xsl:value-of select="normalize-space($textFormatted)"/>
						</xsl:otherwise>
					</xsl:choose>		
				</xsl:for-each>
			</xsl:when>
			<xsl:when test='local-name(.) = "abbr" and @title'>
				<xsl:variable name="textFormatted">
				<xsl:apply-templates select="@title" mode="unFormatText" />

				</xsl:variable>
				<xsl:value-of select="normalize-space($textFormatted)"/>
			</xsl:when>
			<xsl:when test='@alt and (local-name(.) = "img" or local-name(.) = "area")'>
				<xsl:variable name="textFormatted">
				<xsl:apply-templates select="@alt" mode="unFormatText" />
				</xsl:variable>
				<xsl:value-of select="normalize-space($textFormatted)"/>
			</xsl:when>

			<xsl:when test=".//*[contains(concat(' ', normalize-space(@class), ' '),' value ')]">
				<xsl:for-each select=".//*[contains(concat(' ', normalize-space(@class), ' '),' value ')]">
					<xsl:variable name="textFormatted">
					<xsl:apply-templates select="." mode="unFormatText" />
					</xsl:variable>
					<xsl:value-of select="normalize-space($textFormatted)"/>						
				</xsl:for-each>
			</xsl:when>
			<xsl:otherwise>

				<xsl:variable name="textFormatted">
				<xsl:apply-templates select="." mode="unFormatText" />
				</xsl:variable>
				<xsl:value-of select="normalize-space($textFormatted)"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:if>
	</xsl:for-each>
</xsl:template>

<!-- Get the language for an property -->
<xsl:template name="lang">
	<xsl:variable name="langElt" select='ancestor-or-self::*[@xml:lang or @lang]' />
	<xsl:if test="$langElt">
		<xsl:variable name="lang">
			<xsl:choose>
				<xsl:when test="$langElt[last()]/@xml:lang">
					<xsl:value-of select="normalize-space($langElt[last()]/@xml:lang)" />
				</xsl:when>

				<xsl:when test="$langElt[last()]/@lang">
					<xsl:value-of select="normalize-space($langElt[last()]/@lang)" />
				</xsl:when>
				<xsl:otherwise>
					<xsl:message>where id lang and xml:lang go?!?!?</xsl:message>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:variable>

		<xsl:text>;LANGUAGE=</xsl:text>
		<xsl:value-of select="$lang" />
	</xsl:if>
</xsl:template>


<xsl:template mode="unFormatText">
</xsl:template>

<xsl:template name="normalize-spacing">
</xsl:template>

</xsl:stylesheet>

