DACF:jpeters@ots-inc.com
  Catalog
    showCatalog
      dsp_showCatalog.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: dsp_showCatalog.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I display the current catalog contents and allow the user to get details
        about
        specific items.
        
        
        || Attributes ||
        
        --> XFA.showItemDetails: STRING (a fuseaction)
        <-- ItemID: INTEGER NOT NULL (item's catalog ID number)
        
        
        || END FUSEDOC ||--->

    showItem
      qry_getItem.cfm
        <!--- || BEGIN FUSEDOC ||
        || Responsibilities ||
        I receive attributes.ItemID and return title, author, description,
        price, publisher, and pubDate for that item.
        
        || Properties ||
        --> itemID: STRING NOT NULL
        <-- qryGetItem: QUERY ( title, author, description, price, publisher,
        pubDate )
        
        || END FUSEDOC || --->

      dsp_itemDetails.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: dsp_itemDetails.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I display information about a specified item.  I also provide a button
        to add the 
        item to the cart.
        
        
        || Attributes ||
        --> XFA.addItemToCart: STRING (a fuseaction)
        <-> ItemID: INTEGER NOT NULL (item's catalog ID number)
        
        
        || END FUSEDOC ||--->
    searchCatalog
      qry_getSearchResults.cfm
        <!--- || BEGIN FUSEDOC ||
        || Responsibilities ||
        I receive a search target and return all catalog items with that string
        in their title or author fields.
        
        || Properties ||
        --> searchTarget: STRING NOT NULL
        <-- qryGetSearchMatches: QUERY ( itemID )
        
        || END FUSEDOC || --->

      dsp_searchResults.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: dsp_SearchResults.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I display the results of the user's search.
        
        || Attributes ||
        --> XFA.showItem
        
        <-- itemID
        
        || END FUSEDOC ||--->

  Cart
    showCart
      dsp_displayCart.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: dsp_displayCart.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I display the user's cart and offer options to clear the cart, retotal
        the cart, 
        and checkout.
        
        
        || Attributes ||
        --> XFA.showBook: STRING NOT NULL (a fuseaction)
        --> XFA.deleteBooks: STRING NOT NULL (a fuseaction)
        --> XFA.retotalCart: STRING NOT NULL (a fuseaction)
        --> XFA.checkout: STRING NOT NULL (a fuseaction)
        --> client.cart: STRUCTURE 
             ^itemID STRUCTURE
                ^quantity INTEGER
                ^price NUMBER
        <-- client.cart: STRUCTURE 
             ^itemID STRUCTURE
                ^quantity INTEGER
                ^price NUMBER
        
        || END FUSEDOC ||--->

    clearCart
      act_deleteCartItems.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: act_deleteCartItem.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I delete one or all items from the user's cart.
        
        
        || Attributes ||
        --> XFA.itemDeleted: STRING (a fuseaction)
        --> itemID: STRING NOT NULL (ID of item to delete, or "ALL" to clear
        cart)
        --> client.cart: STRUCTURE 
             ^itemID STRUCTURE
                ^quantity INTEGER
                ^price NUMBER
        <-- client.cart: STRUCTURE 
             ^itemID STRUCTURE
                ^quantity INTEGER
                ^price NUMBER
        || END FUSEDOC ||--->

    deleteItem
      act_deleteCartItems.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: act_deleteCartItem.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I delete one or all items from the user's cart.
        
        
        || Attributes ||
        --> XFA.itemDeleted: STRING (a fuseaction)
        --> itemID: STRING NOT NULL (ID of item to delete, or "ALL" to clear
        cart)
        --> client.cart: STRUCTURE 
             ^itemID STRUCTURE
                ^quantity INTEGER
                ^price NUMBER
        <-- client.cart: STRUCTURE 
             ^itemID STRUCTURE
                ^quantity INTEGER
                ^price NUMBER
        
        || END FUSEDOC ||--->

    retotalCart
      act_retotalCart.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: act_retotalCart.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I recalculate the contents of the user's cart.  If the item is marked
        for 
        removal, I delete it from the cart.  Othewise, I multiply quantity by
        price to
        get total.
        
        
        || Attributes ||
        --> XFA.cartRetotaled
        --> client.cart: STRUCTURE
             ^itemID: a STRUCTURE
               ^quantity INTEGER
               ^price NUMBER
        
        <-- client.cart: STRUCTURE
             ^itemID: a STRUCTURE
               ^quantity INTEGER
               ^price NUMBER
        
        || END FUSEDOC ||--->

    addToCart
      act_addCartItem.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: act_addCartItem.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I take an itemID and quantity and add an item to a structure called
        "client.cart" (WDDX).
        
        
        || Attributes ||
        --> XFA.itemAdded: STRING (a fuseaction)
        --> itemID: STRING NOT NULL
        --> quantity: INTEGER NOT NULL
        --> client.cart: STRUCTURE
             ^itemID: a STRUCTURE
               ^quantity INTEGER
               ^price NUMBER
        
        <-- client.cart: STRUCTURE
             ^itemID: a STRUCTURE
               ^quantity INTEGER
               ^price NUMBER
        
        || END FUSEDOC ||--->

  Checkout
    showShippingForm
      dsp_shippingInfo.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: dsp_shippingInfo.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I display the shipping information form and provide Back and Continue
        buttons.
        
        || Attributes ||
        --> XFA.BackFromShipForm
        --> XFA.ContinueFromShipForm
        <-- firstName: STRING (user's first name)+
        <-- lastName: STRING (user's last name)+
        <-- address: TEXTAREA (user's address)
        <-- city: STRING (user's last name)
        <-- state: STRING (state abbreviation; 2)
        <-- zip: STRING (numeric; 5+4)
        <-- phone: STRING 
        <-- eMail: STRING (user's email)+
        
        
        
        || END FUSEDOC ||--->

    showBillingForm
      dsp_billingInfo.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: dsp_billingInfo.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I display the billing information form and provide Back and Continue
        buttons.  
        I also allow the user to select an option to make billing address
        information 
        match the shipping address information.
        
        || Attributes ||
        --> XFA.goBackFromBillForm
        --> XFA.continueFromBillForm
        
        <-- cardName: STRING NOT NULL (name on credit card)
        <-- cardType: STRING NOT NULL (credit card type)
        <-- cardNumber: STRING NOT NULL (credit card number)
        <-- cardExpMonth: INTEGER NOT NULL (credit card expiration month)
        <-- cardExpYear: INTEGER NOT NULL (credit card expiration year)
        <-- matchShipping: BOOLEAN 
        <-- address: TEXTAREA (user's address)
        <-- city: STRING (user's last name)
        <-- state: STRING (state abbreviation; 2)
        <-- zip: STRING (numeric; 5+4)
        
        || END FUSEDOC ||--->

    processCredit
      act_creditAuthorization.cfm
        <!-- act_creditAuthorization.cfm by jeff.peters@bigfoot.com -->
        
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: act_creditAuthorization.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I check the user's credit card information and pass action accordingly.
        
        
        || Attributes ||
        --> XFA.creditApproved: STRING (a fuseaction)
        --> XFA.creditDeclined: STRING (a fuseaction)
        --> cardName: STRING NOT NULL (name on credit card)
        --> cardType: STRING NOT NULL (credit card type)
        --> cardNumber: STRING NOT NULL (credit card number)
        --> cardExpMonth: INTEGER NOT NULL (credit card expiration month)
        --> cardExpYear: INTEGER NOT NULL (credit card expiration year)
        
        || END FUSEDOC ||--->

    showComplete
      dsp_orderComplete.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: dsp_orderComplete.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I display a thank you message to the user and provide a Continue
        button.
        
        
        || Attributes ||
        --> XFA.continueFromOrderComplete
        
        
        || END FUSEDOC ||--->

    submitShipping
      act_submitShipping.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: act_submitShipping.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I store shipping data to the user's database record.  If successful, I
        return XFA.SaveSuccessful.
        Otherwise, I return XFA.SaveFailed.
        
        || Attributes ||
        --> XFA.SaveSuccessful: STRING (a fuseaction)
        --> XFA.SaveFailed: STRING (a fuseaction)
        -->  firstName: STRING (user's first name)+
        -->  lastName: STRING (user's last name)+
        -->  address: TEXTAREA (user's address)
        -->  city: STRING (user's last name)
        -->  state: STRING (state abbreviation; 2)
        -->  zip: STRING (numeric; 5+4)
        -->  phone: STRING 
        -->  eMail: STRING (user's email)+
        
        || END FUSEDOC ||--->

    submitBilling
      act_submitBilling.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: act_submitBilling.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I store billing data to the user's database record.
        
        || Attributes ||
        --> XFA.SaveSuccessful: STRING (a fuseaction)
        --> XFA.SaveFailed: STRING (a fuseaction)
        -->  cardName: STRING NOT NULL (name on credit card)
        -->  cardType: STRING NOT NULL (credit card type)
        -->  cardNumber: STRING NOT NULL (credit card number)
        -->  cardExpMonth: INTEGER NOT NULL (credit card expiration month)
        -->  cardExpYear: INTEGER NOT NULL (credit card expiration year)
        -->  matchShipping: BOOLEAN 
        -->  address: TEXTAREA (user's address)
        -->  city: STRING (user's last name)
        -->  state: STRING (state abbreviation; 2)
        -->  zip: STRING (numeric; 5+4)
        
        || END FUSEDOC ||--->

  Users
    showLoginForm
      dsp_login.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: dsp_login.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I display the user login form, allowing a user to login under an
        existing user 
        account.  I also provide a link (XFA.createNewUser) to create a new user
        account.  
        If I get a variable called badLogin, I let the user know the previous 
        authentication wasn't successful.
        
        
        || Attributes ||
        --> XFA.submitLogin: STRING (a fuseaction)
        --> XFA.createNewUser: STRING (a fuseaction)
        --> [badLogin]: BOOLEAN ( TRUE )
        
        <-- Email: STRING NOT NULL
        <-- Password: STRING NOT NULL
        
        || END FUSEDOC ||--->

    submitLogin
      act_login.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: act_login.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I check for the user's ID and password in the database.  If successful,
        I return
        XFA.loginSuccessful.  Otherwise, I return XFA.loginFailed.
        
        || Attributes ||
        --> XFA.loginSuccessful: STRING (a fuseaction)
        --> XFA.loginFailed: STRING (a fuseaction)
        --> eMail: STRING (user's email address)+
        --> Password: STRING (password)+
        +++ qry_getUser
        
        @DeveloperNote: qry_getUser is included in index.cfm; no need to include
        it here.
        
        || END FUSEDOC ||--->

    showUserForm
      dsp_newAccount.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: dsp_newAccount.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I display the Create New Account form and allow user to submit
        information.  
        I also validate the password against a password confirmation field, but
        I don't 
        pass the confirmation field out as a variable.
        
        || Attributes ||
        --> XFA.createUser: STRING (a fuseaction)
        <-- firstName: STRING (user's first name)+
        <-- lastName: STRING (user's last name)+
        <-- address: TEXTAREA (user's address)
        <-- city: STRING (user's last name)
        <-- state: STRING (state abbreviation; 2)
        <-- zip: STRING (numeric; 5+4)
        <-- phone: STRING 
        <-- eMail: STRING (user's email)+
        <-- password: STRING
        
        
        
        || END FUSEDOC ||--->

    submitUserForm
      act_newAccount.cfm
        <!---
        || BEGIN FUSEDOC ||
        	
        || Properties ||
        Name: act_newAccount.cfm
        Author: jeff.peters@bigfoot.com
        
        || Responsibilities ||
        I store the user's details to the database.  If the user already exists,
        I
        issue a message and return XFA.newAccountFailed.
        
        || Attributes ||
        --> XFA.newAccountSuccessful: STRING (a fuseaction)
        --> XFA.newAccountFailed: STRING (a fuseaction)
        --> firstName: STRING (user's first name)+
        --> lastName: STRING (user's last name)+
        --> address: TEXTAREA (user's address)
        --> city: STRING (user's last name)
        --> state: STRING (state abbreviation; 2)
        --> zip: STRING (numeric; 5+4)
        --> phone: STRING 
        --> eMail: STRING (user's email)+
        --> password: STRING
        +++ qry_getUser
        
        @DeveloperNote: qry_getUser is included in index.cfm; no need to include
        it here.
        
        || END FUSEDOC ||--->