<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright 2004 The Apache Software Foundation
  
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<!-- $Id$ -->
<!DOCTYPE component-specification PUBLIC 
  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
	
<component-specification class="org.apache.tapestry.vlib.components.Borrow"
	allow-body="no" 
	allow-informal-parameters="no">
	
  <parameter name="book" type="org.apache.tapestry.vlib.ejb.Book" required="yes" direction="in"/>
    
  <component id="link" type="DirectLink">
    <binding name="parameters" expression="book.id"/>
    <binding name="listener" expression="listeners.borrow"/>
    <binding name="disabled" expression="linkDisabled"/>
  </component>
  
  <component id="rollover" type="Rollover">
  	<binding name="image" expression="assets.enabled"/>
  	<binding name="disabled" expression="assets.disabled"/>
  	<binding name="focus" expression="assets.focus"/>
  </component>
  
  <context-asset name="enabled" path="images/checkout.png"/>
  <context-asset name="focus" path="images/checkout_h.png"/>
  <context-asset name="disabled" path="images/spacer.png"/>
  
</component-specification>
