/**
 * Filename    : Family.js
 * Author      : Robert Cerny
 * Created     : 2007-03-21
 * Last Change : 2007-03-31
 */

CERNY.require("CO.cernyjs.demos.Family",
              "CO.cernyjs",
              "CERNY.schema",
              "CERNY.text.DateFormat");

CO.cernyjs.demos.Family = {};

var optional = CERNY.schema.optional;
var nonEmptyString = CERNY.schema.nonEmptyString;
var arrayOf = CERNY.schema.arrayOf;

var pastIsoDate = function(value) {
    var dateValue = Date._parse(value, CERNY.text.DateFormat.ISO);
    if (dateValue && dateValue.getTime() < new Date().getTime()) {
        return true;
    }
    return CERNY.schema.printValue(value) +
        " must be an ISO date string (yyyy-mm-dd) for a past date.";
}

Person = {
    firstName: nonEmptyString,
    middleName: optional(nonEmptyString),
    lastName: nonEmptyString,
    dateOfBirth: optional(pastIsoDate)
}

Family = {
    mother: Person,
    father: Person,
    children: arrayOf(Person, 1)
}

