<calendarSpecification underlyingGranularity = "nanosecond" 
implUrl = "http://www.eecs.wsu.edu/~burgun/research/files/calendars/Gregorian.class">


  <!-- 
       When not specified, default anchor is 0, default anchor granularity is "from" granularity 
       periodSize is 0, groupSize is 0 and relationship is "finerToCoarser", type  is "cast"
       and behavior is "anchored".
       When one of periodSize, groupSize pair is given the other, not given, will have the 

       value of given.
       Possible values for type: "cast", "scale".
       Possible values for relationship: "coarserToFiner", "finerToCoarser", "congruent"
       Possible values for behavior: "anchored", "unanchored"

       For regular mappings there is no need to use type attribute.
  -->

  <granularity name = "nanosecond">
  </granularity>

  <granularity name = "microsecond">
    <regularMapping from = "nanosecond" groupSize = "1000" relationship = "finerToCoarser"/>
  </granularity>


  <granularity name = "millisecond">
    <regularMapping from = "microsecond" groupSize = "1000" />
  </granularity>

  <granularity name = "second">
    <regularMapping from = "millisecond" groupSize = "1000" />
    <irregularMapping from = "minute" relationship = "coarserToFiner">
       <method name = "gregCastMinuteToSecond" type = "cast" behavior = "anchored" />
       <method name = "gregScaleMinuteToSecond" type = "scale" behavior = "anchored"/>
    </irregularMapping>
  </granularity>

  <extent granularity="second">
	<lower granule="1">January 1, 0001 00:00:00</lower>
	<upper granule="9223372036854775808">...</upper>
  </extent>
  
  <!-- default url is implUrl -->
 
  <granularity name = "minute">
    <irregularMapping from = "second" relationship = "finerToCoarser">
      <method name = "gregCastSecondToMinute" />
    </irregularMapping>
  </granularity>

  <granularity name = "hour">
    <regularMapping from = "minute" groupSize = "60" />
  </granularity>

  <granularity name = "day">
    <regularMapping from = "hour" groupSize = "24" />
    <irregularMapping from = "month" relationship = "coarserToFiner">
      <method name = "gregCastMonthToDay" type = "cast" />
      <method name = "gregScaleMonthToDay" type = "scale" />
    </irregularMapping>
    <irregularMapping from = "year">
      <method name = "gregCastYearToDay" type = "cast" />
      <method name = "gregScaleYearToDay" type = "scale" />
    </irregularMapping>
  </granularity>

  <granularity name = "week">
    <regularMapping from = "day" groupSize = "7"/>
  </granularity>

  <granularity name = "month">
    <irregularMapping from = "day">
      <method name = "gregCastDayToMonth" />
    </irregularMapping>
  </granularity>

  <granularity name = "year">
    <irregularMapping from = "day">
      <method name = "gregCastDayToYear" />
    </irregularMapping>
  </granularity>
  
  <!-- descriptor of this specification file -->
  <descriptor>

    <versions>
      <currentVersion tag = "" url = ""/>
      <previousVersion tag = "" url = ""/>
    </versions>

    <contact>
      <name></name>
      <email></email>
    </contact>

    <reference></reference>

    <description></description>

  </descriptor>


</calendarSpecification>