bool KCalendarSystemHebrew::setYMD(TQDate & date, int y, int m, int d) const
{
  if( y < minValidYear() || y > maxValidYear() )
    return false;
  if( m < 1 || m > (is_leap_year(y) ? 13 : 12) )
    return false;
  if( d < 1 || d > hndays(m,y) )
    return false;

  class h_date * gd = hebrewToGregorian( y, m, d );

  return date.setYMD(gd->hd_year, gd->hd_mon + 1, gd->hd_day + 1);
}
// Ok
int KCalendarSystemHebrew::weeksInYear(int year) const
{
  TQDate temp;
  setYMD(temp, year, 1, 1);  // don't pass an uninitialized TQDate to
                             // monthsInYear in the next call
  setYMD(temp, year, monthsInYear(temp), hndays(monthsInYear(temp), year) );

  int nWeekNumber = weekNumber(temp);
  if(nWeekNumber == 1)  // last week belongs to next year
  {
    temp = TQT_TQDATE_OBJECT(temp.addDays(-7));
    nWeekNumber = weekNumber(temp);
  }

  return nWeekNumber;
}
bool KCalendarSystemJalali::isValid( int y, int month, int day ) const
{
    // taken from setYMD below, adapted to use new methods
    if ( y < year( earliestValidDate() ) || y > year( latestValidDate() ) ) {
        return false;
    }

    if ( month < 1 || month > 12 ) {  // Fix me!
        return false;
    }

    if ( day < 1 || day > hndays( month, y ) ) {
        return false;
    }

    return true;
}
//MAY BE BUGGY
bool KCalendarSystemJalali::setYMD( QDate &date, int y, int m, int d ) const
{
    // range checks
    // Removed deleted minValidYear and maxValidYear methods
    // Still use minimum of 1753 gregorain for now due to QDate using Julian calendar before then
    // Later change to following once new methods validated
    // if ( y < year( earliestValidDate() ) || y > year( latestValidDate() ) )
    if ( y < year( QDate( 1753, 1, 1 ) ) || y > 9999 ) {
        return false;
    }

    if ( m < 1 || m > 12 ) {
        return false;
    }

    if ( d < 1 || d > hndays( m, y ) ) {
        return false;
    }

    SDATE  *gd = jalaliToGregorian( y, m, d );

    return date.setDate( gd->year, gd->mon, gd->day );
}
int KCalendarSystemHebrew::daysInMonth(const TQDate& date) const
{
  return hndays(month(date), year(date));
}