Midas3 Class Examples

Midas3.Basket
Midas3.BrowserValidation
Midas3.Categories
Midas3.CCNav
Midas3.Checkout_Secure
Midas3.CheckoutMessages
Midas3.CustomerData
Midas3.CustomerProfiles
Midas3.Images
Midas3.Links
Midas3.OrderHistory
Midas3.PreviewBasket
Midas3.Product_Detail
Midas3.Products
Midas3.RelatedProducts
Midas3.Search
Midas3.SubCategories
Midas3.Utilities


Midas3.Basket [basket.asp]
      <%Set Basket = Server.CreateObject("")%>
      <%
      <%Set CustomerData = Server.CreateObject("")
      (("Order_Id"))
      Set CustomerData = Nothing
      %>
      <table>
      <%Do While %>
      
        <tr>
          <td><%=("DeleteItem")%></td>
          <td><%=Basket.loopField("CategoryInfo")%></td>
          <td><%=Basket.loopField("Product_Name")%></td>
          <td><%=Basket.loopField("Product_Description")%>
          
          <table border="0" cellspacing="0" cellpadding="0">
          <%Set ms = Server.CreateObject("Midas3_Shared.Product")%>
<%
Set attr_info_rs = Server.CreateObject("ADODB.RecordSet")
Set attr_info_rs = ms.AttributeInfo1(Basket.loopField("sku_id"))

Do While Not attr_info_rs.EOF
%> <tr> <td valign="top"><font face="Arial,Verdana,Helvetica" size="1"> <%=attr_info_rs("attribute_name")%>:  </font></td> <td><font face="Arial,Verdana,Helvetica" size="1"><%=attr_info_rs("attribute_value")%></font></td> </tr> <%attr_info_rs.MoveNext%>
<%Loop%>
<%=Basket.checkForCustomText (Basket.loopField("Order_id"),Basket.loopField("product_id"),Basket.loopField("line_number"))%>
</table> </td> <td><%=Basket.loopField("Product_Price")%></td> <td><%=Basket.loopField("Qty")%></td> <td><%=Basket.loopField("Extended_Price")%></td> <!-- Only show when Track Inventory -->
<%If CBool(Application("TrackInventory")) then%> <td><%=Basket.loopField("StockCalculate")%></td> <%End if%> </tr> <%%> <%Loop%> <tr> <td colspan="6"> </td> <td><%=("BasketTotalPrice")%></td> </tr> <tr> <td><%=Basket.Field("RecalculateImage", "images/images.asp?key=RecalculateOrder")%></td> <td colspan="6"> </td> </tr> <tr> <td colspan="6"> </td> <td><%=Basket.Field("CheckoutImage", "images/images.asp?key=SubmitOrder")%></td> </tr> </table> <%%> <%Set Basket = Nothing%>

Midas3.BrowserValidation [browser_validation.asp]
      <%
      If Application("BrowserValidated") = False Then
      	Set BrowserValidation = Server.CreateObject("")
      	
      	Set BrowserValidation = Nothing
      End If
      %>

Midas3.Categories [categories.asp]
      <%Set Categories = Server.CreateObject("")%>
      <%%>
      <table>
      <%Do While %>
        <tr>
          <td width="10%"><a class="catsRows" href="<%=("Category_Link")%>"><img src="<%=Categories.loopField("Category_Thumbnail")%>" border="0"></a></td>
          <td width="80%"><font face="arial" size="3"><a class="catsRows" href="<%=Categories.loopField("Category_Link")%>"><%=Categories.loopField("Category_Name")%></a></font></td>
          <td width="10%"> </td>
        </tr>
        <%%>
      <%Loop%>
      </table>
      <%Set Categories = Nothing%>

Midas3.CCNav [midas_location_tree.inc]
      <%
      Set CCNav = Server.CreateObject("")
      
      Dim b
      For b = 0 To 
      	Response.Write "<a class='navLinks' href='" & (CInt(b)) & "'>" & (CInt(b)) & "</a>"
      	If b <> CCNav.TotalElements Then
      		Response.Write " <font style='font-family:Verdana;font-size:12px;'>></font> "
      	End If
      Next
      
      Set CCNav = Nothing
      %>

Midas3.Checkout_Secure [checkout_shipping.asp, checkout_billing.asp, checkout_finish.asp]
      See MiDAS source code (found in the secure installation directory) for examples ("checkout_shipping.asp," "checkout_billing.asp," "checkout_finish.asp").

Midas3.CheckoutMessages [none]
      <%
      Set CheckoutMessages = Server.CreateObject("")
      
      'Shipping Checkout Message
      Response.Write (20) & "<hr>"
      
      'Billing Checkout Message
      Response.Write CheckoutMessages.GetMessage(30) & "<hr>"
      
      'Final Checkout Message
      Response.Write CheckoutMessages.GetMessage(40) & "<hr>"
      
      Set CheckoutMessages = Nothing
      %>

Midas3.CustomerData [none]
      <%
      Set CustomerData = Server.CreateObject("")
      
      ("test") = "Hello, world!"
      
      Response.Write ("test") 'Value will be "Hello, world!"
      
      
      
      Response.Write "<br>" & CustomerData.Field("test") 'Value will be blank
      
      Set CustomerData = Nothing
      %>

Midas3.CustomerProfiles [all pages in /profiles]
      See MiDAS source code (found in the secure installation directory [sub-directory: /profiles]) for examples.

Midas3.Images [images/images.asp]
      <%
      
      Set Images = Nothing
      %>

Midas3.Links [none]
      <%
      Set Links = Server.CreateObject("")
      
      Response.Write (594)
      
      Response.Write "<br>"
      
      Response.Write (9)
      
      Set Links = Nothing
      %>

Midas3.OrderHistory [all pages in /orders]
      See MiDAS source code (found in the secure installation directory [sub-directory: /orders]) in "main.asp" and "order.asp" for examples.

Midas3.PreviewBasket [midas_header.inc]
      <%Set PreviewBasket = Server.CreateObject("")%>
      <%If  Then%>
      Basket is empty.
      <%Else%>
      <%=%> Items<br>
      Total Price: <%=%>
      <%End If%>
      <%Set PreviewBasket = Nothing%>

Midas3.Product_Detail [product_detail.asp]
      <%Set Product_Detail = Server.CreateObject("")%>
      <%If Not  Then%>
        <%Set mu = Server.CreateObject("Midas3_Shared.MungeUtil")%>
        The product you have linked to is not available.
        <%Set mu = Nothing%>
      <%Else%>
      <table>
        <tr>
          <td><img src="<%=("Product_Image")%>" border="0"></td>
        </tr>
        <%hide_order = CBool(((CBool(Application("Global_Auth_Order")) Or pd.Field("cat_auth_order") Or pd.Field("prod_auth_order")) And cd.CustomerID = 0) Or (CBool(Application("Prods_Orderable_OutOfStock")) And Not pd.Field("ProductAvailable")))%>
        <%If Not hide_order Then%>
          <tr>
            <td><%=Product_Detail.Field("Product_Price")%></td>
          </tr>
        <%End If%>
        <tr>
         <td>
           <table border="0" cellspacing="0" cellpadding="0">
           <%=%>
           <%If  Then '---Begin Attribute Feature
           ("Begin")
           Do While Product_Detail.Attributes("HasRecords")
           %>
           	<tr><td><%=Product_Detail.Attributes("Attribute_Name")%>:</td></tr>
           	<tr><td>
           	<%=Product_Detail.Attributes("Menu")%>
           	</td></tr>
           <%
           	Product_Detail.Attributes("Next")
           Loop
           Product_Detail.Attributes("Finish")
           END IF '-----------------------End Attribute Feature%>
           <%If Not hide_order Then%>
             <tr><td>Quantity:</td></tr>
             <tr><td><%=Product_Detail.Field("Product_Quantity")%></td></tr>
           <%End If%>
           <tr><td>
           <%=%>
           </td></tr>
           </table>
          </td>
        </tr>
        <tr>
          <td><%=Product_Detail.Field("Product_Name")%></td>
        </tr>
        <tr>
          <td><%=Product_Detail.Field("Product_Description")%></td>
        </tr>
        <%If Not Product_Detail.Field("Product_Description2") = "" Then%>
        <tr>
          <td><%= Product_Detail.Field("Product_Description2") %></td>
        </tr>
        <%End If%>
        <%If Not Product_Detail.Field("Product_Description3") = "" Then%>
        <tr>
          <td><%=Trim(Product_Detail.Field("Product_Description3"))%></td>
        </tr>
        <%End If%>
      </table>
      <%End If%>
      <%Set Product_Detail = Nothing%>

Midas3.Products [products.asp]
      <%Set Products = Server.CreateObject("")%>
      
      <%If  Then%>
      
      	<%=("Category_Header")%>
      	<font face="Arial,Verdana,SansSerif"><%=Products.Field("Category_Name")%></font>
      	<img border="0" src="<%=Products.Field("Category_Image")%>">    
      	<%If Products.Field("Category_Image2") <> "" Then%>
      	  <img border="0" src="<%=Products.Field("Category_Image2")%>">
      	<%End If%>
    
      	<%If Products.Field("Category_Image3") <> "" Then%>
      	<img border="0" src="<%=Products.Field("Category_Image3")%>">
      	<%End If%>
    
      	<%If Products.Field("Category_Description") <> "" Then%>
      		<ul>
      		<li><%=Products.Field("Category_Description")%>
      		<%If Products.Field("Category_Description2") <> "" Then%>
      		<li><%=Products.Field("Category_Description2")%>
      		<%End If%></ul>
      	<%End If%>
      
      <%End If%>
      
      <%If  Then%>
      <%%>
      <%Do While %>
        <a href="<%=("Product_Link")%>"><img src="<%=Products.loopField("Product_Thumbnail")%>" border="0"></a>
        <a class="catRows" href="<%=Products.loopField("Product_Link")%>"><%=Products.loopField("SKU")%></a>
        <a class="catRows" href="<%=Products.loopField("Product_Link")%>"><%=Products.loopField("Product_Name")%></a>
        <%=Products.loopField("Product_Description")%>
        <%restrict_order = CBool(((CBool(Application("Global_Auth_Order")) Or Products.loopField("cat_auth_order") Or Products.loopField("prod_auth_order")) And Products.CustomerID = 0) Or (CBool(Application("Prods_Orderable_OutOfStock")) And Not Products.loopField("ProductAvailable")))%>
        <%If Not restrict_order Then%>
          <%=Products.loopField("Product_Price")%>
        <%End If%>
        <%If Products.loopField("QuickDropInBasket") Then%>
          <%If Not restrict_order Then%>
            <%=Products.loopField("Add_Quantity")%>
          <%End If%>
          <%If CBool(Application("TrackInventory")) Then%>
<td align="center">
<%If Products.loopField("ProductAvailable") Then%>
<a class="<%=instock_class%>" href="JavaScript:taskWindow('custom_stock_help.asp#in', 640, 400);">IN STOCK</a>
<%Else%>
<a class="<%=outstock_class%>" href="JavaScript:taskWindow('custom_stock_help.asp#out', 640, 400);">OUT OF STOCK</a>
<%End If%>
</td>
<%End If%> <%Else%> <%If not (restrict_order Or (Not CBool(Application("Prods_Orderable_OutOfStock")) And Not Products.loopField("ProductAvailable"))) Then%>
<td align="center">
<a class="<%=link_class%>" href="<%=Products.loopField("Product_Link")%>">View product to select options</a>
</td>
<%End If%>
<%If CBool(Application("TrackInventory")) Then%>
<td align="center">
<%If Products.loopField("ProductAvailable") Then%>
<a class="<%=instock_class%>" href="JavaScript:taskWindow('custom_stock_help.asp#in', 640, 400);">IN STOCK</a>
<%Else%>
<a class="<%=outstock_class%>" href="JavaScript:taskWindow('custom_stock_help.asp#out', 640, 400);">OUT OF STOCK</a>
<%End If%>
</td>
<%End If%> <%End If%> <%%> <%Loop%> <%%> <%Set Paging = Server.CreateObject("")%> <%=(Products.PageCount, Products.CurrentPage, "#prodshow")%> <%Set Paging = Nothing%> <%Else%> <%If Then%> The category you have been directed to contains no products or has been placed on hold by the administrator. <%End If%> <%End If%> <%Set Products = Nothing%>

Midas3.RelatedProducts [related_products.inc]
      <table>
      <%Set RelatedProducts = Server.CreateObject("")%>
      <%Do While %>
        <%restrict_order = CBool(((CBool(Application("Global_Auth_Order")) Or RelatedProducts.loopField("cat_auth_order") Or RelatedProducts.loopField("prod_auth_order")) And  = 0))%>
        <tr>
          <td><a href="<%=("product_link")%>"><img src="<%=RelatedProducts.loopField("product_thumbnail")%>" border="0"></a></td>
          <td><a class="catRows" href="<% =RelatedProducts.loopField("product_link") %>"><%=RelatedProducts.loopField("sku")%></a></td>
          <td><a class="catRows" href="<% =RelatedProducts.loopField("product_link") %>"><%=RelatedProducts.loopField("product_name")%></a></td>
          <%If Not restrict_order Then%>
            <td><%=RelatedProducts.loopField("product_price")%></td>
          <%End If%>
        </tr>
        <%%>
      <%Loop%>
      <%Set RelatedProducts = Nothing%>
      </table>

Midas3.Search [search.asp]
      <%Set Search = Server.CreateObject("")%>
      <%%>
      <%If Not  Then%>
         <select onChange="location.replace(this.value);">
      <%Do While %>
      <option value="<%=("Category_Link")%>"<%If Search.Field("ThisHeader") Then Response.Write " selected"%>><%=Search.Field("Category_Name")%> (<%=Search.Field("Products")%> products found)</option>
       <%%>
      <%Loop%>
         </select>
      <%%>
      <%%>
      <table>
      <%Do While Search.HasRecords%>
       <%If Search.Field("New_Category") Then%><tr><td colspan="7"><%=Search.Field("Category_Anchor")%>Products found in <%=Search.Field("Category_Name")%></td></tr><%End If%>
          <tr>
            <td><a href="<%=Search.Field("Product_Link")%>"><img src="<%=Search.Field("Product_Thumbnail")%>" border="0"></a></td>
            <td><a class="catRows" href="<%=Search.Field("Product_Link")%>"><%=Search.Field("SKU")%></a></td>
            <td><a class="catRows" href="<%=Search.Field("Product_Link")%>"><%=Search.Field("Product_Name")%></a></td>
            <td><%=Search.Field("Product_Description")%></td>
            <%restrict_order = CBool(((CBool(Application("Global_Auth_Order")) Or Search.Field("cat_auth_order") Or Search.Field("prod_auth_order")) And Search.CustomerID = 0) Or (CBool(Application("Prods_Orderable_OutOfStock")) And Not Search.Field("ProductAvailable")))%>
            <%If Not restrict_order Then%>
              <td><%=Search.Field("Product_Price")%></td>
            <%End If%>
            <%If Search.Field("QuickDropInBasket") Then%>
              <%If Not restrict_order Then%>
                <td><%=Search.Field("Add_Quantity")%></td>
              <%End If%>
            <%Else%>
              <td>
              <a class="catRows" href="<%=Search.Field("Product_Link")%>">View product to select options</a>
              </td>
            <%End If%>
          </tr>
          <%Search.NextRecord%>
      <%Loop
      Set mu = Nothing%>
      <tr><td colspan="7"><%%></td></tr>
      <%Set Paging = Server.CreateObject("")%>
      <tr><td colspan="7"><%=(Search.PageCount, Search.CurrentPage)%></td></tr>
      <%Set Paging = Nothing%>
      </table>
      <%Else%>
      No search terms entered, or no results found.
      <%End If%>
      <%Set Search = Nothing%>

Midas3.SubCategories [midas_categoryHeader.asp]
      <%Set SubCategories = Server.CreateObject("")%>
      <%If  Then%>
      <a name="catshow">
      Click on one of the following categories to view the specific products available.
        <table>
      <%Do While SubCategories.HasRecords%>
          <tr>
            <td align="center">
            <p><a class="navLinks" href="<%=("Category_Link")%>"><img<%If Not  Then%> border="0"<%End If%> src="<%=SubCategories.loopField("Category_Image")%>"><br><%=SubCategories.loopField("Category_Name")%></a>
            </p>
            </td>
          </tr>
          <%%>
      <%Loop%>
        </table>
      <%If  Then%>
      <a name="prodshow">
      The Following Products are available in <%=%> / <%=%>:<br>
      <%End If%>
      <%End If%>
      <%Set SubCategories = Nothing%>

Midas3.Utilities [none]
      This class contains support methods for MiDAS.
Click to view Class Interface Definition
Method: Basket.Begin(OrderId[, Table])

Parameters: The first parameter is required, but the second parameter is optional and defaults to "Order_Detail." If the second parameter is set to "Sales_Order_Detail" it will pull down orders that have been completed by the customer.

Result: This function generates the begin <FORM> tag for the basket.
Method: Basket.HasRecords()

Parameters: None.

Result: Returns Boolean; True if there are records to process and False if there no [or no more] records to process.
Method: Basket.loopField(Field[, Opt1, Opt2])

Parameters: Field can be any field name as returned by the basket recordset or may be one of the custom values for preformatted values and HTML tags, et cetera. Opt1 and Opt2 are reserved for special circumstances. See example for details.

Result: Returns Variant; This depends on what value is contained in the Field parameter.
Method: Basket.NextRecord()

Parameters: None.

Result: Returns Boolean; True if Basket.HasRecords is True and vice versa for False.
Method: Basket.Field(Field[, Opt1, Opt2, Opt3])

Parameters: See example for this parameter's valid values.

Result: Returns Variant; This depends on what value is contained in the Field parameter.
Method: Basket.Finish()

Parameters: None.

Result: This function generates the appropriate </FORM> to end the basket form.
Method: BrowserValidation.Validate()

Parameters: None.

Result: Detects if the browser is validated and if so, does nothing, if not, redirects to missing_features.asp.
Method: Categories.Categories([CategoryID])

Parameters: If CategoryID is specified, the recordset will contain all the subcategories (if any) of that category. If not specified, recordset will contain base-level categories.

Result: Initializes recordset of categories.
Method: Categories.HasRecords()

Parameters: None.

Result: Returns Boolean; If there are records left to process, returns True, else, returns False.
Method: Categories.loopField(Field[, Opt1])

Parameters: Field can be any valid field of the categories recordset or may be one of the custom values (such as Category_Link). Opt1 is reserved for special circumstances.

Result: Returns Variant; Value depends on what is specified in Field.
Method: Categories.NextRecord()

Parameters: None.

Result: Returns Boolean; Value same as Categories.HasRecords().
Method: CCNav.TotalElements()

Parameters: None.

Result: Integer; Returns the maximum index in the array of tree items.
Method: CCNav.Name(Index As Integer)

Parameters: Index is the number of the element from which to obtain the name.

Result: Returns Variant; A name for the given index.
Method: CheckoutMessages.GetMessage(PageID)

Parameters: PageID values of 20 specify the shipping message, values of 30 specify the billing message, and values of 40 specify the final checkout message.

Result: Returns Variant; Message for the given PageID.
Property Let: CustomerData.Field(Field)

Result: Sets the value in the database of the specified Field for the current customer.
Property Get: CustomerData.Field(Field)

Result: Returns Variant of value in the database of the specified Field for the current customer.
Method: CustomerData.ClearAll()

Parameters: None.

Result: Clears all of the fields in the customer's session.
All the activity in this class happens at initialization. It polls the Querystring, looking for appropriate values (Product IDs, Merchant Image Keys, et cetera) and then opens the correct image from the database and writes it into the Response stream.
Method: PreviewBasket.TotalItems()

Parameters: None.

Result: Returns Variant; Number of total items in basket.
Method: PreviewBasket.TotalPrice()

Parameters: None.

Result: Returns Variant; Formatted price total string of all items in basket.
Method: PreviewBasket.BasketEmpty()

Parameters: None.

Result: Returns Boolean; If basket is empty, returns True, else, returns False.
Method: Product_Detail.ProductExists()

Parameters: None.

Result: Returns Boolean; True if the product exists in database and querystring parameters are valid, False otherwise.
Method: Product_Detail.Field(Field)

Parameters: Field is the name of the field in the recordset or the custom pre-generated MiDAS field of which to return the value.

Result: Returns Variant.
Method: Product_Detail.BeginForm()

Parameters: None.

Result: Returns Variant: the appropriate <FORM> tag to begin the add product form.
Method: Product_Detail.HasAttributes()

Parameters: None.

Result: Returns Boolean; True if there are attributes to this product, False otherwise.
Method: Product_Detail.Attributes(Function)

Parameters: Function specifies the action to take during a particular call to this method.

Result: Returns Variant; It returns the appropriate value if "Attribute_Name" or "Menu" is specified, otherwise, returns nothing.
Method: Product_Detail.EndForm()

Parameters: None.

Result: Returns Variant: the appropriate </FORM> tag to end the add product form.
Method: Products.IsCategory()

Parameters: None.

Result: Returns Boolean; If the environment is valid (Querystring parameters exist, the category exists, et cetera) then value is True; otherwise False.
Method: Products.Show()

Parameters: None.

Result: Returns Boolean; Value is True only if category contains products.
Method: Products.Field(Field)

Parameters: Field parameter specifies which field in the category recordset to return. (also specifies a number of custom, MiDAS generated fields).

Result: Returns Variant; Value depends on Field specified.
Method: Products.loopField(Field)

Parameters: Field parameter specifies which field in the products recordset or custom field to return.

Result: Returns Variant; Value depends on Field specified.
Method: Products.Begin()

Parameters: None.

Result: Generates the appropriate HTML <FORM> tag to begin the products form.
Method: Products.Finish()

Parameters: None.

Result: Generates the appropriate HTML </FORM> tag to end the products form.
Method: Products.HasRecords()

Parameters: None.

Result: Returns Boolean; Value is True if there are records to process, else False.
Method: Products.NextRecord()

Parameters: None.

Result: Returns Boolean; Value is the same as that of HasRecords in same class.
Method: Products.IsEmpty()

Parameters: None.

Result: Returns Boolean; If category is empty, value is True, else, False.
Method: RelatedProducts.HasRecords()

Parameters: None.

Result: Returns Boolean; True if there are records to process and False if there no [or no more] records to process.
Method: RelatedProducts.NextRecord()

Parameters: None.

Result: Returns Boolean; True if Basket.HasRecords is True and vice versa for False.
Method: RelatedProducts.loopField(Field[, Opt1])

Parameters: Field can be any field name as returned by the basket recordset or may be one of the custom values for preformatted values and HTML tags, et cetera. Opt1 is reserved for special circumstances. See example for details.

Result: Returns Variant; This depends on what value is contained in the Field parameter.
Property: RelatedProducts.CustomerID

Result: Returns Long; this property merely exposes CustomerData.CustomerID
Method: Search.BeginHeader()

Parameters: None.

Result: Initializes the header recordset for the search (displays the categories which had product matches within them).
Method: Search.EndHeader()

Parameters: None.

Result: Cleans up the search header recordset.
Method: Search.BeginMain()

Parameters: None.

Result: Initializes the main products recordset for the search.
Method: Search.FinishMain()

Parameters: None.

Result: Cleans up the main products search recordset.
Method: Search.EmptySearch()

Parameters: None.

Result: Returns Boolean; True only if the search contained no products.
Method: Search.HasRecords()

Parameters: None.

Result: Returns Boolean; True only if there are records to process.
Method: Search.Field(Field)

Parameters: Field specifies the products recordset field or custom MiDAS field of which to return the value.

Result: Returns Variant.
Method: Search.NextRecord()

Parameters: None.

Result: Returns Boolean; Value the same as that of HasRecords in same class.
Method: SubCategories.HasRecords()

Parameters: None.

Result: Returns Boolean; Value is True only if there are records to process.
Method: SubCategories.NextRecord()

Parameters: None.

Result: Returns Boolean; Same value as HasRecords in same class.
Method: SubCategories.HasProducts()

Parameters: None.

Result: Returns Boolean; Value is True only if the category (subcategory selected) contains products.
Method: SubCategories.Current()

Parameters: None.

Result: Returns Boolean; Value is True only for the subcategory currently selected (if any).
Method: SubCategories.loopField(Field)

Parameters: Field specifies the field in the recordset or custom MiDAS generated field of which to return the value.

Result: Returns Variant.
Method: SubCategories.CategoryName()

Parameters: None.

Result: Returns Variant; Value is the current category name.
Method: SubCategories.SelectedSubCategory()

Parameters: None.

Result: Returns Variant; Value is the name of the currently selected subcategory.
Method: Paging.PagingFooter(Pages, CurrentPage[, Anchor_Tag])

Parameters: The first parameter is the number of pages to generate the paging for, the second parameter specifies which page the user is currently at, and the optional Anchor_Tag will append an anchor onto the end of each link (a MiDAS specific feature).

Result: Returns String; formatted HTML paging table.
Method: Product.AttributeInfo(Function[, Opt1, ...])

Parameters: Function must be one of the valid values as described in the example code. Opt1 is different for each function.

Result: Returns Variant; Depends on Function and options supplied.