<?xml version="1.0" encoding="utf-8" ?>
<!-- Spring Manged Objects -->
<objects xmlns="http://www.springframework.net"
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			xmlns:v="http://www.springframework.net/validation"
			xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd
									  http://www.springframework.net Xsd/spring-validation-1.3.xsd" >

  <description>
    Spring Validation
    See this for more info:
    http://www.springframework.net/doc-latest/reference/html/validation.html
  </description>


  <!--Add Facility and Edit Master Facility Business Validation Rules references-->
  <v:group id="addFacilityValidationRules">
    <!-- Facility -->
    <v:ref name="facGeneralFacilityRules" context="Facility" />
    <v:ref name="facMasterFacilityRules"/>
    <v:ref name="facAddFacilityRules"/>

    <!--Custom/Additional fields validator -->
    <v:group id="manageFacilityCustomRules" when="Facility.IsMaster == true">
      <v:ref name="agencyCustomFieldValidator" context="CustomFields" />
    </v:group>

  </v:group>


  <!-- ADD FACILITY SPECIFIC VALIDATION RULES-->
  <v:group id="facAddFacilityRules" when="Facility.IsMaster == false">
    <v:required test="Facility.Identifier">
      <v:message id="valid.fac.identifier.required" providers="Facility.Identifier" >
        <v:param value="ValidationContxt"/>
      </v:message>
    </v:required>
    <v:regex test="Facility.Identifier" expression=".{1,20}" when="Facility.Identifier != null">
      <v:message id="valid.fac.identifier.length" providers="Facility.Identifier" >
        <v:param value="ValidationContxt"/>
      </v:message>
    </v:regex>

    <v:validator test="Facility.Identifiers" type="Sleis.Validation.Spring.ListValidator" when="Facility.Identifiers != null">
      <v:property name="ProviderFormat" value="Facility.Identifiers[{0}]." />
      <v:property name="Validator" ref="facAddFacilityStateCountyFIPSRules" />
    </v:validator>

    <!-- Category required when adding new facility -->
    <v:required test="Facility.FacilityCategory">
      <v:message id="valid.fac.cat.required.when.add" providers="Facility.FacilityCategory" >
        <v:param value="ValidationContxt"/>
      </v:message>
    </v:required>

    <!--
	 <v:required test="FacilityComments">
		<v:message id="valid.fac.comment.required" providers="FacilityComments" >
		  <v:param value="ValidationContxt"/>
		</v:message>
	 </v:required>
	 -->
    <v:regex test="FacilityComments" expression="^[\s\S]{0,4000}$" when="FacilityComments != null">
      <v:message id="valid.fac.comment.length" providers="FacilityComments" >
        <v:param value="ValidationContxt"/>
      </v:message>
    </v:regex>
  </v:group>

  <v:group id="facAddFacilityStateCountyFIPSRules">
    <v:required test="CountyStateFips">
      <v:message id="valid.fac.countystatefips.required" providers="CountyStateFips">
        <v:param value="ValidationContxt"/>
      </v:message>
    </v:required>
  </v:group>


  <!-- MASTER FACILITY SPECIFIC VALIDATION RULES-->
  <v:group id="facMasterFacilityRules" when="Facility.IsMaster == true">
    <v:ref name="facGeneralFacilityContactRules"/>
    <v:ref name="facGeneralFacilityAddressRules"/>
    <v:ref name="facFacilityAltNameRules" context="Facility" />
  </v:group>

  <v:group id="facFacilityAltNameRules">
    <v:validator test="AlternateNames" type="Sleis.Validation.Spring.ListValidator" when="AlternateNames != null">
      <v:property name="ProviderFormat" value="Facility.AlternateNames[{0}]." />
      <v:property name="Validator" ref="facAltNameRules" />
    </v:validator>
  </v:group>

  <v:group id="facAltNameRules">
    <v:required test="Name">
      <v:message id="valid.fac.altname.required" providers="Name">
        <v:param value="ValidationContxt"/>
      </v:message>
    </v:required>
    <v:regex test="Name"
				 expression=".{0,50}"
				 when="Name != null">
      <v:message id="valid.fac.altname.length" providers="Name" >
        <v:param value="ValidationContxt"/>
      </v:message>
    </v:regex>

    <v:required test="ProgramSystemCode">
      <v:message id="valid.fac.programsyscode.required" providers="ProgramSystemCode">
        <v:param value="ValidationContxt"/>
      </v:message>
    </v:required>

    <v:required test="NameType">
      <v:message id="valid.fac.NameType.required" providers="NameType">
        <v:param value="ValidationContxt"/>
      </v:message>
    </v:required>

    <!--
	 <v:required test="EffectiveDate">
		<v:message id="valid.fac.effdate.required" providers="EffectiveDate">
		  <v:param value="ValidationContxt"/>
		</v:message>
	 </v:required>
	 -->
  </v:group>
</objects>