%@LANGUAGE="VBScript"%>
<%
dim DIR_WS, DIR_WS_CATALOG, DIR_WS_HTTPS_CATALOG, DIR_WS_IMAGES, DIR_WS_INCLUDES
dim DIR_WS_IMAGES_BUTTONS, DIR_WS_IMAGES_ICONS, DIR_WS_IMAGES_PRODUCTS
dim DIR_WS_FUNCTIONS, DIR_WS_CLASSES, DIR_WS_MODULES, DIR_WS_TEMPLATES
dim DIR_FS, DIR_FS_CATALOG, DIR_FS_IMAGES_PRODUCTS
dim DB_NAME, DB_PATH, DB_DRIVER, DB_LOCALPATH
'''
' Define the webserver and path parameters
' HTTP_SERVER is your Main webserver: eg-http:'www.yourdomain.com
' HTTPS_SERVER is your Secure webserver: eg-https:'www.yourdomain.com
const HTTP_SERVER = "http://waterwaystructures.com"
const HTTPS_SERVER = "https://waterwaystructures.com"
' Use secure webserver for checkout procedure?
const ENABLE_SSL = false
' NOTE: be sure to leave the trailing '/' at the end of these lines if you make changes!
' * DIR_WS_* = Webserver directories (virtual/URL)
' these paths are relative to top of your webspace ...
DIR_WS = "/"
DIR_WS_CATALOG = DIR_WS & "cart/"
DIR_WS_HTTPS_CATALOG = DIR_WS & "cart/"
DIR_WS_IMAGES = DIR_WS & "images/"
DIR_WS_INCLUDES = DIR_WS & "includes/"
DIR_WS_IMAGES_PRODUCTS = DIR_WS_IMAGES & "catalog/"
DIR_WS_FUNCTIONS = DIR_WS_INCLUDES & "functions/"
DIR_WS_CLASSES = DIR_WS_INCLUDES & "classes/"
DIR_WS_MODULES = DIR_WS_INCLUDES & "modules/"
DIR_WS_TEMPLATES = DIR_WS_INCLUDES & "templates/"
DIR_WS_IMAGES_BUTTONS = DIR_WS_TEMPLATES & "images/buttons/"
DIR_WS_IMAGES_ICONS = DIR_WS_TEMPLATES & "images/icons/"
' * DIR_FS_* = Filesystem directories (local/physical)
' the following path is a COMPLETE path to your Cart files.
DIR_FS = Server.MapPath(DIR_WS)
DIR_FS_CATALOG = Server.MapPath(DIR_WS_CATALOG)
DIR_FS_IMAGES_PRODUCTS = Server.MapPath(DIR_WS_IMAGES_PRODUCTS)
' define our database connection
DB_NAME = "db_waterwaystructures.mdb"
DB_PATH = "/db/"
DB_DRIVER = "Microsoft Access Driver (*.mdb)"
DB_LOCALPATH = Server.MapPath(DB_PATH&DB_NAME)
%>
<%
'/////
'/ CLASS ADMINISTRATOR
'/////
class c_administrator
private admin_id
private admin_created_date
private admin_modified_date
private admin_last_login_date
private admin_admintype_id
private admin_name
private admin_email
private admin_username
private admin_password
private admin_is_active
private admin_is_administrator
'=========Objects========='
private obj_admin_type
'=========public Inputs========='
private tmp_id
'=========Internal Variables========='
private a_sql, a_rs
'=========Initialize========='
private sub class_initialize()
is_administrator = false
id = 0
created_date = now()
modified_date = now()
last_login_date = now()
admintype_id = 0
name = ""
email = ""
username = ""
password = ""
is_active = false
set admintype = 0
end sub
public property get set_administrator(a_id)
tmp_id = ais_clean_numeric(a_id)
a_sql = "select * from administrators where admin_id = "&tmp_id&";"
set a_rs = conn.execute(a_sql)
if not a_rs.eof then
is_administrator = true
id = a_rs("admin_id")
created_date = a_rs("admin_created_date")
modified_date = a_rs("admin_modified_date")
last_login_date = a_rs("admin_last_login_date")
admintype_id = a_rs("admin_admintype_id")
name = a_rs("admin_name")
email = a_rs("admin_email")
username = a_rs("admin_username")
password = a_rs("admin_password")
is_active = a_rs("admin_is_active")
set admintype = admintype_id
else
clear()
end if
a_rs.close
end property
public property get set_administrator_by_username(a_username)
set a_rs = conn.execute("select admin_id from administrators where admin_username like '"&ais_db_input(a_username)&"';")
if a_rs.eof then
clear()
else
set_administrator a_rs("admin_id")
end if
end property
public property get set_administrator_by_username_not_id(a_username, a_id)
set a_rs = conn.execute("select admin_id from administrators where admin_username like '"&ais_db_input(a_username)&"' and admin_id <> "&ais_clean_numeric(a_id)&";")
if a_rs.eof then
clear()
else
set_administrator a_rs("admin_id")
end if
end property
public property get set_administrator_by_email(a_email)
set a_rs = conn.execute("select admin_id from administrators where admin_email like '"&ais_db_input(a_email)&"';")
if a_rs.eof then
clear()
else
set_administrator a_rs("admin_id")
end if
end property
public property get is_administrator()
is_administrator = admin_is_administrator
end property
private property let is_administrator(a_is_administrator)
admin_is_administrator = a_is_administrator
end property
public property get id()
id = admin_id
end property
private property let id(a_id)
admin_id = a_id
end property
public property get created_date()
created_date = admin_created_date
end property
private property let created_date(a_created_date)
admin_created_date = a_created_date
end property
public property get modified_date()
modified_date = admin_modified_date
end property
private property let modified_date(a_modified_date)
admin_modified_date = a_modified_date
end property
public property get last_login_date()
last_login_date = admin_last_login_date
end property
private property let last_login_date(a_last_login_date)
admin_last_login_date = a_last_login_date
end property
public property get admintype_id()
admintype_id = admin_admintype_id
end property
private property let admintype_id(a_admintype_id)
admin_admintype_id = a_admintype_id
end property
public property get name()
name = admin_name
end property
private property let name(a_name)
admin_name = a_name
end property
public property get email()
email = admin_email
end property
private property let email(a_email)
admin_email = a_email
end property
public property get username()
username = admin_username
end property
private property let username(a_username)
admin_username = a_username
end property
public property get password()
password = admin_password
end property
private property let password(a_password)
admin_password = a_password
end property
public property get is_active()
is_active = admin_is_active
end property
private property let is_active(a_is_active)
admin_is_active = a_is_active
end property
'=========Objects========='
public property get admintype()
set admintype = obj_admin_type
end property
private property set admintype(a_admintype_id)
if not isobject(obj_admin_type) then
set obj_admin_type = new c_administrator_type
end if
obj_admin_type.set_administrator_type a_admintype_id
if is_administrator and not obj_admin_type.is_administrator_type then
clear()
end if
end property
'=========Functions========='
public function clear()
is_administrator = false
id = 0
created_date = now()
modified_date = now()
last_login_date = now()
admintype_id = 0
name = ""
email = ""
username = ""
password = ""
is_active = false
set admintype = 0
end function
public function refresh()
set_administrator id
end function
'=========Terminate========='
private sub class_terminate()
set admin_id = nothing
set admin_created_date = nothing
set admin_modified_date = nothing
set admin_last_login_date = nothing
set admin_admintype_id = nothing
set admin_name = nothing
set admin_email = nothing
set admin_username = nothing
set admin_password = nothing
set admin_is_active = nothing
set admin_is_administrator = nothing
'=========Objects========='
set obj_admin_type = nothing
'=========public Inputs========='
set tmp_id = nothing
'=========Internal Variables========='
set a_sql = nothing
set a_rs = nothing
end sub
end class
'/////
'/ CLASS ADMINISTRATOR TYPE
'/////
class c_administrator_type
private admintype_id
private admintype_name
private admintype_description
private admintype_level
private admintype_is_administrator_type
'=========Objects========='
'=========public Inputs========='
private tmp_id
'=========Internal Variables========='
private at_sql, at_rs
'=========Initialize========='
private sub class_initialize()
is_administrator_type = false
id = 0
name = ""
description = ""
level = ""
end sub
public property get set_administrator_type(at_id)
tmp_id = ais_clean_numeric(at_id)
at_sql = "select * from administrators_types where admintype_id = "&tmp_id&";"
set at_rs = conn.execute(at_sql)
if not at_rs.eof then
is_administrator_type = true
id = at_rs("admintype_id")
name = at_rs("admintype_name")
description = at_rs("admintype_description")
level = at_rs("admintype_level")
else
clear()
end if
at_rs.close
end property
public property get is_administrator_type()
is_administrator_type = admintype_is_administrator_type
end property
private property let is_administrator_type(at_is_administrator_type)
admintype_is_administrator_type = at_is_administrator_type
end property
public property get id()
id = admintype_id
end property
private property let id(at_id)
admintype_id = at_id
end property
public property get name()
name = admintype_name
end property
private property let name(at_name)
admintype_name = at_name
end property
public property get description()
description = admintype_description
end property
private property let description(at_description)
admintype_description = at_description
end property
public property get level()
level = admintype_level
end property
private property let level(at_level)
admintype_level = at_level
end property
'=========Objects========='
'=========Functions========='
public function reset()
set_administrator id
end function
public function clear()
is_administrator_type = false
id = 0
name = ""
description = ""
level = ""
end function
'=========Terminate========='
private sub class_terminate()
set admintype_id = nothing
set admintype_name = nothing
set admintype_description = nothing
set admintype_level = nothing
set admintype_is_administrator_type = nothing
'=========Objects========='
'=========public Inputs========='
set tmp_id = nothing
'=========Internal Variables========='
set at_sql = nothing
set at_rs = nothing
end sub
end class
%>
<%
'/////
'/ CLASS CONFIGURATION
'/////
class c_configuration
private config_session_timeout
private config_script_timeout
private config_store_mail
private config_store_name
private config_store_address
private config_store_city
private config_store_state
private config_store_zip
private config_store_phone
private config_store_fax
private config_mail_host
private config_mail_user
private config_mail_password
private config_maint_in_progress
private config_cust_max_address_book_entries
private config_cart_show_empty_categories
private config_cart_show_product_count
private config_cart_add_to_cart_redirect
private config_cart_cat_num_of_col
private config_cart_prod_num_of_col
private config_cart_prod_page_size
private config_cart_prod_image_thumb_width
private config_cart_prod_image_width
private config_email_signature
private config_meta_tags_title
private config_meta_tags_keywords
private config_meta_tags_description
private config_is_configuration
'=========Objects========='
'=========public inputs========='
'=========internal variables========='
private c_rs
'=========Initialize========='
private sub class_initialize()
set_configuration()
end sub
public property get set_configuration()
set c_rs = conn.execute("select * from configurations;")
if c_rs.eof then
clear()
else
is_configuration = true
session_timeout = c_rs("config_session_timeout")
script_timeout = c_rs("config_script_timeout")
store_mail = c_rs("config_store_mail")
store_name = c_rs("config_store_name")
store_address = c_rs("config_store_address")
store_city = c_rs("config_store_city")
store_state = c_rs("config_store_state")
store_zip = c_rs("config_store_zip")
store_phone = c_rs("config_store_phone")
store_fax = c_rs("config_store_fax")
mail_host = c_rs("config_mail_host")
mail_user = c_rs("config_mail_user")
mail_password = c_rs("config_mail_password")
maint_in_progress = c_rs("config_maint_in_progress")
cust_max_address_book_entries = c_rs("config_cust_max_address_book_entries")
cart_show_empty_categories = c_rs("config_cart_show_empty_categories")
cart_show_product_count = c_rs("config_cart_show_product_count")
cart_add_to_cart_redirect = c_rs("config_cart_add_to_cart_redirect")
cart_cat_num_of_col = c_rs("config_cart_cat_num_of_col")
cart_prod_num_of_col = c_rs("config_cart_prod_num_of_col")
cart_prod_page_size = c_rs("config_cart_prod_page_size")
cart_prod_image_thumb_width = c_rs("config_cart_prod_image_thumb_width")
cart_prod_image_width = c_rs("config_cart_prod_image_width")
email_signature = c_rs("config_email_signature")
meta_tags_title = c_rs("config_meta_tags_title")
meta_tags_keywords = c_rs("config_meta_tags_keywords")
meta_tags_description = c_rs("config_meta_tags_description")
end if
c_rs.close()
end property
public property get is_configuration()
is_configuration = config_is_configuration
end property
private property let is_configuration(c_is_configuration)
config_is_configuration = c_is_configuration
end property
public property get session_timeout()
session_timeout = config_session_timeout
end property
private property let session_timeout(c_session_timeout)
config_session_timeout = c_session_timeout
end property
public property get script_timeout()
script_timeout = config_script_timeout
end property
private property let script_timeout(c_script_timeout)
config_script_timeout = c_script_timeout
end property
public property get store_mail()
store_mail = config_store_mail
end property
private property let store_mail(c_store_mail)
config_store_mail = c_store_mail
end property
public property get store_name()
store_name = config_store_name
end property
private property let store_name(c_store_name)
config_store_name = c_store_name
end property
public property get store_address()
store_address = config_store_address
end property
private property let store_address(c_store_address)
config_store_address = c_store_address
end property
public property get store_city()
store_city = config_store_city
end property
private property let store_city(c_store_city)
config_store_city = c_store_city
end property
public property get store_state()
store_state = config_store_state
end property
private property let store_state(c_store_state)
config_store_state = c_store_state
end property
public property get store_zip()
store_zip = config_store_zip
end property
private property let store_zip(c_store_zip)
config_store_zip = c_store_zip
end property
public property get store_phone()
store_phone = config_store_phone
end property
private property let store_phone(c_store_phone)
config_store_phone = c_store_phone
end property
public property get store_fax()
store_fax = config_store_fax
end property
private property let store_fax(c_store_fax)
config_store_fax = c_store_fax
end property
public property get mail_host()
mail_host = config_mail_host
end property
private property let mail_host(c_mail_host)
config_mail_host = c_mail_host
end property
public property get mail_user()
mail_user = config_mail_user
end property
private property let mail_user(c_mail_user)
config_mail_user = c_mail_user
end property
public property get mail_password()
mail_password = config_mail_password
end property
private property let mail_password(c_mail_password)
config_mail_password = c_mail_password
end property
public property get maint_in_progress()
maint_in_progress = config_maint_in_progress
end property
private property let maint_in_progress(c_maint_in_progress)
config_maint_in_progress = c_maint_in_progress
end property
public property get cust_max_address_book_entries()
cust_max_address_book_entries = config_cust_max_address_book_entries
end property
private property let cust_max_address_book_entries(c_cust_max_address_book_entries)
config_cust_max_address_book_entries = c_cust_max_address_book_entries
end property
public property get cart_show_empty_categories()
cart_show_empty_categories = config_cart_show_empty_categories
end property
private property let cart_show_empty_categories(c_cart_show_empty_categories)
config_cart_show_empty_categories = c_cart_show_empty_categories
end property
public property get cart_show_product_count()
cart_show_product_count = config_cart_show_product_count
end property
private property let cart_show_product_count(c_cart_show_product_count)
config_cart_show_product_count = c_cart_show_product_count
end property
public property get cart_add_to_cart_redirect()
cart_add_to_cart_redirect = config_cart_add_to_cart_redirect
end property
private property let cart_add_to_cart_redirect(c_cart_add_to_cart_redirect)
config_cart_add_to_cart_redirect = c_cart_add_to_cart_redirect
end property
public property get cart_cat_num_of_col()
cart_cat_num_of_col = config_cart_cat_num_of_col
end property
private property let cart_cat_num_of_col(c_cart_cat_num_of_col)
config_cart_cat_num_of_col = c_cart_cat_num_of_col
end property
public property get cart_prod_num_of_col()
cart_prod_num_of_col = config_cart_prod_num_of_col
end property
private property let cart_prod_num_of_col(c_cart_prod_num_of_col)
config_cart_prod_num_of_col = c_cart_prod_num_of_col
end property
public property get cart_prod_page_size()
cart_prod_page_size = config_cart_prod_page_size
end property
private property let cart_prod_page_size(c_cart_prod_page_size)
config_cart_prod_page_size = c_cart_prod_page_size
end property
public property get cart_prod_image_thumb_width()
cart_prod_image_thumb_width = config_cart_prod_image_thumb_width
end property
private property let cart_prod_image_thumb_width(c_cart_prod_image_thumb_width)
config_cart_prod_image_thumb_width = c_cart_prod_image_thumb_width
end property
public property get cart_prod_image_width()
cart_prod_image_width = config_cart_prod_image_width
end property
private property let cart_prod_image_width(c_cart_prod_image_width)
config_cart_prod_image_width = c_cart_prod_image_width
end property
public property get email_signature()
email_signature = config_email_signature
end property
private property let email_signature(c_email_signature)
config_email_signature = c_email_signature
end property
public property get meta_tags_title()
meta_tags_title = config_meta_tags_title
end property
private property let meta_tags_title(c_meta_tags_title)
config_meta_tags_title = c_meta_tags_title
end property
public property get meta_tags_keywords()
meta_tags_keywords = config_meta_tags_keywords
end property
private property let meta_tags_keywords(c_meta_tags_keywords)
config_meta_tags_keywords = c_meta_tags_keywords
end property
public property get meta_tags_description()
meta_tags_description = config_meta_tags_description
end property
private property let meta_tags_description(c_meta_tags_description)
config_meta_tags_description = c_meta_tags_description
end property
'=========Objects========='
'=========Functions========='
public function refresh()
set_configuration id
end function
public function clear()
is_configuration = false
session_timeout = ""
script_timeout = ""
store_mail = ""
store_name = ""
store_address = ""
store_city = ""
store_state = ""
store_zip = ""
store_phone = ""
store_fax = ""
mail_host = ""
mail_user = ""
mail_password = ""
maint_in_progress = true
cart_show_empty_categories = ""
cart_show_product_count = ""
cart_add_to_cart_redirect = ""
cart_cat_num_of_col = ""
cart_prod_num_of_col = ""
cart_prod_page_size = ""
cart_prod_image_thumb_width = ""
cart_prod_image_width = ""
email_signature = ""
meta_tags_title = ""
meta_tags_keywords = ""
meta_tags_description = ""
end function
'=========Terminate========='
private sub class_terminate()
set config_session_timeout = nothing
set config_script_timeout = nothing
set config_store_mail = nothing
set config_store_name = nothing
set config_store_address = nothing
set config_store_city = nothing
set config_store_state = nothing
set config_store_zip = nothing
set config_store_phone = nothing
set config_store_fax = nothing
set config_mail_host = nothing
set config_mail_user = nothing
set config_mail_password = nothing
set config_maint_in_progress = nothing
set config_cart_show_empty_categories = nothing
set config_cart_show_product_count = nothing
set config_cart_add_to_cart_redirect = nothing
set config_cart_cat_num_of_col = nothing
set config_cart_prod_num_of_col = nothing
set config_cart_prod_image_thumb_width = nothing
set config_cart_prod_image_width = nothing
set config_email_signature = nothing
set config_meta_tags_title = nothing
set config_meta_tags_keywords = nothing
set config_meta_tags_description = nothing
set config_is_configuration = nothing
'=========Objects========='
'=========internal variables========='
set c_rs = nothing
end sub
end class
%>
<%
'/////
'/ CLASS MESSAGE
'/////
class c_message
private msg_id
private msg_msgstat_id
private msg_date_created
private msg_subject
private msg_name
private msg_email
private msg_phone
private msg_comment
private msg_is_set
'=========Objects========='
private obj_msgstat
'=========Internal Variables========='
private rs
'=========Initialize========='
private sub class_initialize()
clear()
end sub
public property get set_message(m_id)
set rs = conn.execute("select * from messages where msg_id = "&ais_clean_numeric(trim(m_id))&";")
if rs.eof then
clear()
else
is_set = true
id = rs("msg_id")
msgstat_id = rs("msg_msgstat_id")
date_created = rs("msg_date_created")
subject = rs("msg_subject")
name = rs("msg_name")
email = rs("msg_email")
phone = rs("msg_phone")
comment = rs("msg_comment")
set msgstat = msgstat_id
end if
rs.close
end property
public property get set_last()
set rs = conn.execute("select top 1 msg_id from messages order by msg_id desc;")
if rs.eof then
clear()
else
set_message rs("msg_id")
end if
end property
public property get is_set()
is_set = msg_is_set
end property
private property let is_set(m_is_set)
msg_is_set = m_is_set
end property
public property get id()
id = msg_id
end property
private property let id(m_id)
msg_id = m_id
end property
public property get msgstat_id()
msgstat_id = msg_msgstat_id
end property
private property let msgstat_id(m_msgstat_id)
msg_msgstat_id = m_msgstat_id
end property
public property get date_created()
date_created = msg_date_created
end property
private property let date_created(m_date_created)
msg_date_created = m_date_created
end property
public property get subject()
subject = msg_subject
end property
private property let subject(m_subject)
msg_subject = m_subject
end property
public property get name()
name = msg_name
end property
private property let name(m_name)
msg_name = m_name
end property
public property get email()
email = msg_email
end property
private property let email(m_email)
msg_email = m_email
end property
public property get phone()
phone = msg_phone
end property
private property let phone(m_phone)
msg_phone = m_phone
end property
public property get comment()
comment = msg_comment
end property
private property let comment(m_comment)
msg_comment = m_comment
end property
'=========Objects========='
public property get msgstat()
set msgstat = obj_msgstat
end property
private property set msgstat(m_msgstat_id)
if not isobject(obj_msgstat) then
set obj_msgstat = new c_message_status
end if
obj_msgstat.set_message_status m_msgstat_id
end property
'=========Functions / Subs========='
public function refresh()
set_message id
end function
public function clear()
is_set = false
id = ""
msgstat_id = ""
date_created = ""
subject = ""
name = ""
email = ""
phone = ""
comment = ""
set msgstat = msgstat_id
end function
'=========Terminate========='
private sub class_terminate()
set msg_id = nothing
set msg_msgstat_id = nothing
set msg_date_created = nothing
set msg_subject = nothing
set msg_name = nothing
set msg_email = nothing
set msg_phone = nothing
set msg_comment = nothing
'=========Objects========='
set obj_msgstat = nothing
'=========Internal Variables========='
set rs = nothing
end sub
end class
'/////
'/ CLASS MESSAGE_STATUS
'/////
class c_message_status
private msgstat_id
private msgstat_name
private msgstat_sort_order
private msgstat_is_set
'=========Objects========='
'=========Internal Variables========='
private rs
'=========Initialize========='
private sub class_initialize()
clear()
end sub
public property get set_message_status(m_id)
set rs = conn.execute("select * from message_status where msgstat_id = "&ais_clean_numeric(m_id)&";")
if rs.eof then
clear()
else
is_set = true
id = rs("msgstat_id")
name = rs("msgstat_name")
sort_order = rs("msgstat_sort_order")
end if
rs.close
end property
public property get set_default()
set rs = conn.execute("select top 1 msgstat_id from message_status order by msgstat_sort_order;")
if rs.eof then
clear()
else
set_message_status rs("msgstat_id")
end if
end property
public property get is_set()
is_set = msgstat_is_set
end property
private property let is_set(m_is_set)
msgstat_is_set = m_is_set
end property
public property get id()
id = msgstat_id
end property
private property let id(m_id)
msgstat_id = m_id
end property
public property get name()
name = msgstat_name
end property
private property let name(m_name)
msgstat_name = m_name
end property
public property get sort_order()
sort_order = msgstat_sort_order
end property
private property let sort_order(m_sort_order)
msgstat_sort_order = m_sort_order
end property
'=========Objects========='
'=========Functions / Subs========='
public function refresh()
set_message_status id
end function
public function clear()
is_set = false
id = ""
name = ""
sort_order = ""
end function
'=========Terminate========='
private sub class_terminate()
set msgstat_id = nothing
set msgstat_name = nothing
set msgstat_sort_order = nothing
'=========Objects========='
'=========Internal Variables========='
set rs = nothing
end sub
end class
%>
<%
'/////
'/ CLASS ZONES
'/////
class c_zone
private zone_id
private zone_country_id
private zone_code
private zone_name
private zone_is_zone
'=========Objects========='
private obj_country
'=========Internal Variables========='
private z_rs
'=========Initialize========='
private sub class_initialize()
clear()
end sub
public property get set_zone(z_id)
set z_rs = conn.execute("select * from zones where zone_id = "&ais_clean_numeric(z_id)&";")
if z_rs.eof then
clear()
else
is_zone = true
id = z_rs("zone_id")
country_id = z_rs("zone_country_id")
code = z_rs("zone_code")
name = z_rs("zone_name")
set country = country_id
end if
z_rs.close
end property
public property get is_zone()
is_zone = zone_is_zone
end property
private property let is_zone(z_is_zone)
zone_is_zone = z_is_zone
end property
public property get id()
id = zone_id
end property
private property let id(z_id)
zone_id = z_id
end property
public property get country_id()
country_id = zone_country_id
end property
private property let country_id(z_country_id)
zone_country_id = z_country_id
end property
public property get code()
code = zone_code
end property
private property let code(z_code)
zone_code = z_code
end property
public property get name()
name = zone_name
end property
private property let name(z_name)
zone_name = z_name
end property
'=========Objects========='
public property get country()
set country = obj_country
end property
private property set country(z_country_id)
if not isobject(obj_country) then
set obj_country = new c_country
end if
obj_country.set_country z_country_id
if is_zone and not obj_country.is_country then
clear()
end if
end property
'=========Functions / Subs========='
public function refresh()
set_zone id
end function
public function clear()
is_zone = false
id = ""
country_id = ""
code = ""
name = ""
set country = country_id
end function
public sub sandbox()
response.write "ZONE "&vbcrlf
response.write "is_zone: "&me.is_zone&" "&vbcrlf
response.write "id: "&me.id&" "&vbcrlf
response.write "country_id: "&me.country_id&" "&vbcrlf
response.write "code: "&me.code&" "&vbcrlf
response.write "name: "&me.name&" "&vbcrlf
response.write "
"&vbcrlf
me.country.sandbox()
end sub
'=========Terminate========='
private sub class_terminate()
set zone_id = nothing
set zone_country_id = nothing
set zone_code = nothing
set zone_name = nothing
set zone_is_zone = nothing
'=========Objects========='
set obj_country = nothing
'=========Internal Variables========='
set z_rs = nothing
end sub
end class
'/////
'/ CLASS COUNTRIES
'/////
class c_country
private country_id
private country_addresstype_id
private country_name
private country_iso_code_2
private country_iso_code_3
private country_is_country
'=========Objects========='
private obj_addresstype
'=========Internal Variables========='
private c_rs
'=========Initialize========='
private sub class_initialize()
clear()
end sub
public property get set_country(c_id)
if ais_is_numeric(c_id) then
set c_rs = conn.execute("select * from countries where country_id = "&ais_clean_numeric(c_id)&";")
else
set c_rs = conn.execute("select * from countries where country_iso_code_2 like '"&c_id&"' or country_iso_code_3 like '"&c_id&"';")
end if
if c_rs.eof then
clear()
else
is_country = true
id = c_rs("country_id")
addresstype_id = c_rs("country_addresstype_id")
name = c_rs("country_name")
iso_code_2 = c_rs("country_iso_code_2")
iso_code_3 = c_rs("country_iso_code_3")
set addresstype = addresstype_id
end if
c_rs.close
end property
public property get is_country()
is_country = country_is_country
end property
private property let is_country(c_is_country)
country_is_country = c_is_country
end property
public property get id()
id = country_id
end property
private property let id(c_id)
country_id = c_id
end property
public property get addresstype_id()
addresstype_id = country_addresstype_id
end property
private property let addresstype_id(c_addresstype_id)
country_addresstype_id = c_addresstype_id
end property
public property get name()
name = country_name
end property
private property let name(c_name)
country_name = c_name
end property
public property get iso_code_2()
iso_code_2 = country_iso_code_2
end property
private property let iso_code_2(c_iso_code_2)
country_iso_code_2 = c_iso_code_2
end property
public property get iso_code_3()
iso_code_3 = country_iso_code_3
end property
private property let iso_code_3(c_iso_code_3)
country_iso_code_3 = c_iso_code_3
end property
'=========Objects========='
public property get addresstype()
set addresstype = obj_addresstype
end property
private property set addresstype(c_addresstype_id)
if not isobject(obj_addresstype) then
set obj_addresstype = new c_address_type
end if
obj_addresstype.set_address_type c_addresstype_id
if is_country and not obj_addresstype.is_address_type then
clear()
end if
end property
'=========Functions Subs========='
public function refresh()
set_country id
end function
public function clear()
is_country = false
id = ""
addresstype_id = ""
name = ""
iso_code_2 = ""
iso_code_3 = ""
set addresstype = addresstype_id
end function
public sub sandbox()
response.write "COUNTRY "&vbcrlf
response.write "is_country: "&me.is_country&" "&vbcrlf
response.write "id: "&me.id&" "&vbcrlf
response.write "addresstype_id: "&me.addresstype_id&" "&vbcrlf
response.write "name: "&me.name&" "&vbcrlf
response.write "iso_code_2: "&me.iso_code_2&" "&vbcrlf
response.write "iso_code_3: "&me.iso_code_3&" "&vbcrlf
response.write " "&vbcrlf
me.addresstype.sandbox()
end sub
'=========Terminate========='
private sub class_terminate()
set country_id = nothing
set country_addresstype_id = nothing
set country_name = nothing
set country_iso_code_2 = nothing
set country_iso_code_3 = nothing
set country_is_country = nothing
'=========Objects========='
set obj_addresstype = nothing
'=========Internal Variables========='
set c_rs = nothing
end sub
end class
'/////
'/ CLASS ADDRESS TYPES
'/////
class c_address_type
private addresstype_id
private addresstype_format
private addresstype_summary
private addresstype_is_address_type
'=========Objects========='
'=========Internal Variables========='
private at_rs
'=========Initialize========='
private sub class_initialize()
clear()
end sub
public property get set_address_type(at_id)
set at_rs = conn.execute("select * from address_types where addresstype_id = "&ais_clean_numeric(at_id)&";")
if at_rs.eof then
clear()
else
is_address_type = true
id = at_rs("addresstype_id")
format = at_rs("addresstype_format")
summary = at_rs("addresstype_summary")
end if
at_rs.close
end property
public property get is_address_type()
is_address_type = addresstype_is_address_type
end property
private property let is_address_type(at_is_address_type)
addresstype_is_address_type = at_is_address_type
end property
public property get id()
id = addresstype_id
end property
private property let id(at_id)
addresstype_id = at_id
end property
public property get format()
format = addresstype_format
end property
private property let format(at_format)
addresstype_format = at_format
end property
public property get summary()
summary = addresstype_summary
end property
private property let summary(at_summary)
addresstype_summary = at_summary
end property
'=========Objects========='
'=========Functions / Subs========='
public function refresh()
set_address_type id
end function
public function clear()
is_address_type = false
id = ""
format = ""
summary = ""
end function
public sub sandbox()
response.write "ADDRESS TYPE "&vbcrlf
response.write "is_address_type: "&me.is_address_type&" "&vbcrlf
response.write "id: "&me.id&" "&vbcrlf
response.write "format: "&me.format&" "&vbcrlf
response.write "summary: "&me.summary&" "&vbcrlf
response.write " "&vbcrlf
end sub
function build_address(ba_company, ba_firstname, ba_lastname, ba_address, ba_city, ba_state, ba_postcode, ba_country)
dim tmp_address
tmp_address = format
if ais_not_null(tmp_address) then
if ais_not_null(ba_company) then
tmp_address = replace(tmp_address, "$company", ba_company)
else
tmp_address = replace(tmp_address, "$company$cr", "")
end if
tmp_address = replace(tmp_address, "$firstname", ba_firstname)
tmp_address = replace(tmp_address, "$lastname", ba_lastname)
tmp_address = replace(tmp_address, "$streets", ba_address)
tmp_address = replace(tmp_address, "$city", ba_city)
tmp_address = replace(tmp_address, "$postcode", ba_postcode)
tmp_address = replace(tmp_address, "$statecomma", ba_state&", ")
tmp_address = replace(tmp_address, "$state", ba_state)
tmp_address = replace(tmp_address, "$country", ba_country)
tmp_address = replace(tmp_address, "$cr", vbcrlf)
build_address = tmp_address
set tmp_address = nothing
exit function
else
build_address = ""
set tmp_address = nothing
exit function
end if
end function
function build_address_summary(ba_city, ba_state, ba_postcode, ba_country)
dim tmp_address
tmp_address = summary
if ais_not_null(tmp_address) then
tmp_address = replace(tmp_address, "$city", ba_city)
tmp_address = replace(tmp_address, "$postcode", ba_postcode)
tmp_address = replace(tmp_address, "$state", ba_state)
tmp_address = replace(tmp_address, "$country", ba_country)
build_address_summary = tmp_address
set tmp_address = nothing
exit function
else
build_address_summary = ""
set tmp_address = nothing
exit function
end if
end function
'=========Terminate========='
private sub class_terminate()
set addresstype_id = nothing
set addresstype_format = nothing
set addresstype_summary = nothing
set addresstype_is_address_type = nothing
'=========Objects========='
'=========Internal Variables========='
set at_rs = nothing
end sub
end class
class c_tax_class
private taxclass_id
private taxclass_name
private taxclass_description
private taxclass_date_created
private taxclass_date_modified
private taxclass_is_set
'=========Objects========='
'=========Internal Variables========='
private rs
'=========Initialize========='
private sub class_initialize()
clear()
end sub
public property get set_tax_class(tc_id)
set rs = conn.execute("select * from tax_classes where taxclass_id = "&ais_clean_numeric(tc_id)&";")
if rs.eof then
clear()
else
is_set = true
id = rs("taxclass_id")
name = rs("taxclass_name")
description = rs("taxclass_description")
date_created = rs("taxclass_date_created")
date_modified = rs("taxclass_date_modified")
end if
rs.close()
end property
public property get set_by_name(tc_name, tc_id)
'////
'// If 'id' is passed, check if name exisits not including 'id' value
'////
if ais_clean_numeric(tc_id) > 0 then
set rs = conn.execute("select taxclass_id from tax_classes where taxclass_name like '"&tc_name&"' and taxclass_id <> "&ais_clean_numeric(tc_id)&";")
else
set rs = conn.execute("select taxclass_id from tax_classes where taxclass_name like '"&tc_name&"';")
end if
if rs.eof then
clear()
else
set_tax_class rs("taxclass_id")
end if
end property
public property get is_set()
is_set = taxclass_is_set
end property
private property let is_set(tc_is_set)
taxclass_is_set = tc_is_set
end property
public property get id()
id = taxclass_id
end property
private property let id(tc_id)
taxclass_id = tc_id
end property
public property get name()
name = taxclass_name
end property
private property let name(tc_name)
taxclass_name = tc_name
end property
public property get description()
description = taxclass_description
end property
private property let description(tc_description)
taxclass_description = tc_description
end property
public property get date_created()
date_created = taxclass_date_created
end property
private property let date_created(tc_date_created)
taxclass_date_created = tc_date_created
end property
public property get date_modified()
date_modified = taxclass_date_modified
end property
private property let date_modified(tc_date_modified)
taxclass_date_modified = tc_date_modified
end property
'=========Objects========='
'=========Functions Subs========='
public function refresh()
set_tax_class id
end function
public function clear()
is_set = false
id = ""
name = ""
description = ""
date_created = ""
date_modified = ""
end function
public sub sandbox()
response.write "TAX CLASS "&vbcrlf
response.write "is_set: "&me.is_set&" "&vbcrlf
response.write "id: "&me.id&" "&vbcrlf
response.write "name: "&me.name&" "&vbcrlf
response.write "description: "&me.description&" "&vbcrlf
response.write "date_created: "&me.date_created&" "&vbcrlf
response.write "date_modified: "&me.date_modified&" "&vbcrlf
response.write " "&vbcrlf
end sub
'=========Terminate========='
private sub class_terminate()
set taxclass_id = nothing
set taxclass_name = nothing
set taxclass_description = nothing
set taxclass_date_created = nothing
set taxclass_date_modified = nothing
set taxclass_is_set = nothing
'=========Objects========='
'=========Internal Variables========='
set rs = nothing
end sub
end class
class c_tax_rate
private taxrate_id
private taxrate_zone_id
private taxrate_taxclass_id
private taxrate_rate
private taxrate_description
private taxrate_date_created
private taxrate_date_modified
private taxrate_is_set
'=========Objects========='
private obj_zone
private obj_taxclass
'=========Internal Variables========='
private rs
'=========Initialize========='
private sub class_initialize()
clear()
end sub
public property get set_tax_rate(tr_id)
set rs = conn.execute("select * from tax_rates where taxrate_id = "&ais_clean_numeric(tr_id)&";")
if rs.eof then
clear()
else
is_set = true
id = rs("taxrate_id")
zone_id = rs("taxrate_zone_id")
taxclass_id = rs("taxrate_taxclass_id")
rate = rs("taxrate_rate")
description = rs("taxrate_description")
date_created = rs("taxrate_date_created")
date_modified = rs("taxrate_date_modified")
set zone = zone_id
set taxclass = taxclass_id
end if
rs.close()
end property
public property get set_by_zone_id_taxclass_id(tr_zone_id, tr_taxclass_id, tr_id)
'////
'// If 'id' is passed, check if zone exisits not including 'id' value
'////
if ais_clean_numeric(tr_id) > 0 then
set rs = conn.execute("select taxrate_id from tax_rates where taxrate_zone_id = "&ais_clean_numeric(tr_zone_id)&" and taxrate_taxclass_id = "&ais_clean_numeric(tr_taxclass_id)&" and taxrate_id <> "&ais_clean_numeric(tr_id)&";")
else
set rs = conn.execute("select taxrate_id from tax_rates where taxrate_zone_id = "&ais_clean_numeric(tr_zone_id)&" and taxrate_taxclass_id = "&ais_clean_numeric(tr_taxclass_id)&";")
end if
if rs.eof then
clear()
else
set_tax_rate rs("taxrate_id")
end if
end property
public property get is_set()
is_set = taxrate_is_set
end property
private property let is_set(tr_is_set)
taxrate_is_set = tr_is_set
end property
public property get id()
id = taxrate_id
end property
private property let id(tr_id)
taxrate_id = tr_id
end property
public property get zone_id()
zone_id = taxrate_zone_id
end property
private property let zone_id(tr_zone_id)
taxrate_zone_id = tr_zone_id
end property
public property get taxclass_id()
taxclass_id = taxrate_taxclass_id
end property
private property let taxclass_id(tr_taxclass_id)
taxrate_taxclass_id = tr_taxclass_id
end property
public property get rate()
rate = taxrate_rate
end property
private property let rate(tr_rate)
taxrate_rate = tr_rate
end property
public property get description()
description = taxrate_description
end property
private property let description(tr_description)
taxrate_description = tr_description
end property
public property get date_created()
date_created = taxrate_date_created
end property
private property let date_created(tr_date_created)
taxrate_date_created = tr_date_created
end property
public property get date_modified()
date_modified = taxrate_date_modified
end property
private property let date_modified(tr_date_modified)
taxrate_date_modified = tr_date_modified
end property
'=========Objects========='
public property get zone()
set zone = obj_zone
end property
private property set zone(tr_zone_id)
if not isobject(obj_zone) then
set obj_zone = new c_zone
end if
obj_zone.set_zone tr_zone_id
if is_set and not obj_zone.is_zone then
clear()
end if
end property
public property get taxclass()
set taxclass = obj_taxclass
end property
private property set taxclass(tr_taxclass_id)
if not isobject(obj_taxclass) then
set obj_taxclass = new c_tax_class
end if
obj_taxclass.set_tax_class tr_taxclass_id
if is_set and not obj_taxclass.is_set then
clear()
end if
end property
'=========Functions / Subs========='
public function refresh()
set_tax_rate id
end function
private function clear()
is_set = false
id = ""
zone_id = ""
taxclass_id = ""
rate = ""
description = ""
date_created = ""
date_modified = ""
end function
public sub sandbox()
response.write "TAX RATE "&vbcrlf
response.write "is_set: "&me.is_set&" "&vbcrlf
response.write "id: "&me.id&" "&vbcrlf
response.write "zone_id: "&me.zone_id&" "&vbcrlf
response.write "taxclass_id: "&me.taxclass_id&" "&vbcrlf
response.write "rate: "&me.rate&" "&vbcrlf
response.write "description: "&me.description&" "&vbcrlf
response.write "date_created: "&me.date_created&" "&vbcrlf
response.write "date_modified: "&me.date_modified&" "&vbcrlf
response.write " "&vbcrlf
me.zone.sandbox()
me.taxclass.sandbox()
end sub
'=========Terminate========='
private sub class_terminate()
set taxrate_id = nothing
set taxrate_zone_id = nothing
set taxrate_taxclass_id = nothing
set taxrate_rate = nothing
set taxrate_description = nothing
set taxrate_date_created = nothing
set taxrate_date_modified = nothing
set taxrate_is_set = nothing
'=========Objects========='
set obj_zone = nothing
set obj_taxclass = nothing
'=========Internal Variables========='
set rs = nothing
end sub
end class
%>
<%
'
'
'
'
'
%>
<%
'////
'// BUILD CATALOG NAVIGATION
'////
function ais_catalog_nav(cp_array)
dim level, cnav
cnav = ""
level = 0
cnav = cnav & "
"&vbcrlf
set level = nothing
ais_catalog_nav = cnav
end function
sub build_cat_tree(cnav, level, cp_array, parent, path)
dim rs, cat, lvlcount, spacer, cat_flag, prod_count
set cat = new c_category
spacer = " "
level = level + 1
set rs = conn.execute("select cat_id from categories where cat_parent_id = "&ais_clean_numeric(parent)&" and cat_is_active = true order by cat_sort_order, cat_name, cat_id;")
if not rs.eof then
cnav = cnav & "
"&vbcrlf
do until rs.eof
cat.set_category rs("cat_id")
prod_count = ais_category_product_count(cat.id, "active")
if config.cart_show_empty_categories then
cat_flag = true
else
cat_flag = (prod_count > 0)
end if
cnav = cnav & "
"&vbcrlf
end if
level = level - 1
set rs = nothing
set cat = nothing
set lvlcount = nothing
set spacer = nothing
end sub
'////
'// CUSTOMER BASKET SIDE BOX
'////
function ais_basket_side_box(obj_cart)
dim basket, sci_rs
basket = ""
if obj_cart.is_set then
set sci_rs = conn.execute("select p.prod_id, p.prod_name as item_name, sci.cartitem_quantity as item_qty from shopping_cart_items as sci inner join products as p on sci.cartitem_prod_id = p.prod_id where sci.cartitem_shopcart_id = "&obj_cart.id&";")
if not sci_rs.eof then
basket = basket & ""&vbcrlf
basket = basket & "
"&vbcrlf
basket = basket & ""&vbcrlf
end if
sci_rs.close
end if
set sci_rs = nothing
ais_basket_side_box = basket
end function
%>
<%
'////
'// DRAW BOXES
'////
function ais_side_box(content, header, footer, box_template)
dim tmp_box
if not ais_not_null(box_template) then
targetURL = ais_href_link("/includes/templates/common/boxes", "", "")
Set xml = CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", targetURL, False
xml.setRequestHeader "Pragma", "no-cache"
xml.setRequestHeader "Cache-Control","no-cache"
xml.Send
box_template = xml.responseText
end if
tmp_box = box_template
if ais_not_null(tmp_box) then
tmp_box = replace(lcase(tmp_box),"[content]", content)
tmp_box = replace(lcase(tmp_box),"[header]", header)
tmp_box = replace(lcase(tmp_box),"[footer]", footer)
end if
ais_side_box = tmp_box
end function
%>
<%
'///////////////////////
' DATA ALTERING
'///////////////////////
'''
' Preparing values for database entry
'''
function ais_db_input(string)
if len(string) > 0 then
ais_db_input = replace(string, "'", "''")
exit function
else
ais_db_input = ""
exit function
end if
end function
'''
' Cleaning up SQL injections
'''
private function ais_kill_chars(string)
dim bad_chars, new_chars, kill_count
bad_chars = array("select", "drop", ";", "--", "insert", "delete", "xp_")
new_chars = string
for kill_count = 0 to uBound(bad_chars)
new_chars = replace(new_chars, bad_chars(kill_count), "")
next
ais_kill_chars = new_chars
set bad_chars = nothing
set new_chars = nothing
set kill_count = nothing
end function
'////////////////////////////////////////////////////////////////////
'///////////////////////
' ERROR REPORTING
'///////////////////////
function ais_show_error(msg)
if ais_not_null(msg) then
response.write "
"&vbCRLF
response.write "
"&vbCRLF
response.write "
"&vbCRLF
response.write "
"&msg&"
"&vbCRLF
response.write "
"&vbCRLF
response.write "
"&vbCRLF
response.write "
"&vbCRLF
end if
end function
'////////////////////////////////////////////////////////////////////
'///////////////////////
' DATA VALIDATING
'///////////////////////
'''
' Regular expressions
'''
const regex_email = "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
const regex_us_phone = "^\d{3}-\d{3}-\d{4}$"
const regex_us_postal_code = "^\d{5}$"
const regex_us_currency = "^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$"
const regex_url = "^((https?|ftp|news):\/\/)?([a-z]([a-z0-9\-]\.*)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-z][a-z0-9_]*)?$"
const regex_integer = "^\d*$"
'''
' Validate value is not null
'''
function ais_not_null(value)
if isarray(value) then
if ubound(value) > 0 then
ais_not_null = true
exit function
else
ais_not_null = false
exit function
end if
else
if (value <> "") and (not isnull(value)) and ((len(trim(value)) > 0)) then
ais_not_null = true
exit function
else
ais_not_null = false
exit function
end if
end if
end function
'''
' Validate value is numeric
'''
function ais_is_numeric(value)
ais_is_numeric = (isnumeric(trim(value)) and ais_not_null(trim(value)))
end function
'''
' Validate value is integer
'''
function ais_is_integer(value)
ais_is_integer = regex_check(value, regex_integer)
end function
'''
' Validate value is a date
'''
function ais_is_date(value)
ais_is_date = isdate(value)
end function
'''
' Validate value is an email
'''
function ais_is_email(value)
ais_is_email = regex_check(value, regex_email)
end function
'''
' Validate value is a URL
'''
function ais_is_url(value)
ais_is_url = regex_check(value, regex_url)
end function
'''
' Validate value is an us phone number
'''
function ais_is_us_phone(value)
ais_is_us_phone = regex_check(ais_clean_us_phone(value), regex_us_phone)
end function
'''
' Validate value is an us postal code
'''
function ais_is_us_postal_code(value)
ais_is_us_postal_code = regex_check(value, regex_us_postal_code)
end function
'''
' Validate value is an us currency
'''
function ais_is_us_currency(value)
ais_is_us_currency = regex_check(value, regex_us_currency)
end function
'''
' Validate regular expressions
'''
function regex_check(string,regex)
dim obj_regex
if ais_not_null(string) then
set obj_regex = new regexp
obj_regex.pattern = regex
obj_regex.global = true
obj_regex.ignorecase = true
regex_check = obj_regex.test(string)
else
regex_check = false
end if
end function
'////////////////////////////////////////////////////////////////////
'///////////////////////
' WEBSITE FUNCTIONS
'///////////////////////
'''
' Redirect to URL
'''
function ais_redirect(URL)
if len(URL) < 1 then
response.write ERROR_CUST_REDIRECT_EMPTY
exit function
else
response.redirect URL
end if
end function
'////////////////////////////////////////////////////////////////////
'///////////////////////
' EMAILING FUNCTIONS
'///////////////////////
function ais_send_email(e_host_name, e_sender_email, e_sender_name, e_recipient_emails, e_cc_emails, _
e_bcc_emails, e_reply_email, e_mail_subject, e_mail_body)
dim mail, e_re, e_cc_e, e_bcc_e, tmp_send_email
tmp_send_email = ""
if not ais_not_null(e_host_name) then
tmp_send_email = "Host name not present!"
elseif not ais_not_null(e_sender_email) then
tmp_send_email = "Sender email not present!"
elseif not ais_not_null(e_sender_name) then
e_sender_name = e_sender_email
elseif not ais_not_null(e_recipient_emails) then
tmp_send_email = "No recipient present"
elseif not ais_not_null(e_mail_subject) then
tmp_send_email = "Email subject not present!"
elseif not ais_not_null(e_mail_body) then
tmp_send_email = "Email body not present!"
else
set mail = server.createobject("Persits.MailSender")
' Specify a valid SMTP server
mail.host = e_host_name
' Specify sender's address
mail.from = e_sender_email
' Specify sender's name
mail.fromname = e_sender_name
' Specify reciever's email address
e_recipient_emails = SPLIT(e_recipient_emails,",")
for each e_re in e_recipient_emails
mail.addaddress e_re
next
' Specify CC's email address
if ais_not_null(e_cc_emails) then
e_cc_emails = SPLIT(e_cc_emails,",")
for each e_cc_e in e_cc_emails
main.addcc e_cc_e
next
end if
' Specify BCC's email address
if ais_not_null(e_bcc_emails) then
e_bcc_emails = SPLIT(e_bcc_emails,",")
for each e_bcc_e IN e_bcc_emails
mail.addbcc e_bcc_e
next
end if
' Specify reply-to address
if ais_not_null(e_reply_email) then
mail.addreplyto e_reply_email
else
mail.addreplyto e_sender_email
end if
' Specify email subject
mail.subject = e_mail_subject
' Specify email body
mail.body = e_mail_body
' Specify if email is HTML or Text
mail.ishtml = true
' Authentication
if ais_not_null(config.mail_user) then
Mail.Username = config.mail_user
Mail.Password = config.mail_password
end if
' Send Mail
mail.send
end if
ais_send_email = tmp_send_email
end function
'///////////////////////
' ARRAY FUNCTIONS
'///////////////////////
function ais_in_array(value, arr)
if isarray(arr) then
dim item
for each item in arr
if value = item then
ais_in_array = true
exit function
end if
next
end if
ais_in_array = false
end function
%>
<%
'///////////////////////
' DATA CONVERSION / GENERATOR
'///////////////////////
'''
' Convert text to hash value
'''
function ais_hashvalue(txt)
dim cm, context, hash, hash_value
' Calculate Hash of Password + Salt
hash_value = md5(txt)
set cm = nothing
set context = nothing
set hash = nothing
ais_hashvalue = hash_value
end function
'''
' Random number generator
'''
function ais_rand(dmin, dmax)
if dmax = 0 then
dmax = dmin + 1000
end if
randomize
ais_rand = Int(Rnd * (dmax-dmin))+dmin
end function
'''
' Returns value as '0' if not numeric
'''
function ais_clean_numeric(value)
if not ais_is_numeric(value) then
ais_clean_numeric = 0
exit function
end if
ais_clean_numeric = value
end function
function ais_string_to_int(value)
ais_string_to_int = cint(value)
end function
'''
' Returns text 'true' or 'false' to boolean values
'''
function ais_clean_boolean(string)
if ais_not_null(string) then
if string = true then
ais_clean_boolean = true
exit function
end if
if lcase(string) = "true" then
ais_clean_boolean = true
exit function
else
ais_clean_boolean = false
exit function
end if
else
ais_clean_boolean = false
exit function
end if
ais_clean_boolean = false
end function
'''
' Returns US phone number (xxx-yyy-zzzz)
'''
function ais_clean_us_phone(value)
dim new_phone
dim i
new_phone = ""
for i = 1 to len(value)
if asc(mid(value,i,1)) >= asc("0") and asc(mid(value,i,1)) <= asc("9") then
new_phone = new_phone & mid(value,i,1)
end if
next
If Len(new_phone) = 10 Then
new_phone = left(new_phone,3)&"-"&mid(new_phone, 4, 3)&"-"&right(new_phone,4)
Else
new_phone = value
End If
ais_clean_us_phone = new_phone
END FUNCTION
'''
' Returns safe html output
'''
function ais_output_string(string, protected)
if ais_not_null(string) then
if ais_clean_boolean(protected) then
ais_output_string = Server.HTMLencode(string)
else
ais_output_string = replace(string, chr(34), """)
exit function
end if
else
ais_output_string = ""
exit function
end if
ais_output_string = string
end function
'''
' Returns status on/off image
'''
function ais_output_status_image(string)
if ais_clean_boolean(string) then
ais_output_status_image = ais_link("includes/templates/images/icons/icon_is_active_on.png", "")
exit function
else
ais_output_status_image = ais_link("includes/templates/images/icons/icon_is_active_off.png", "")
exit function
end if
end function
'''
' Returns status on/off alt
'''
function ais_output_status_alt(string)
if ais_clean_boolean(string) then
ais_output_status_alt = "Active"
exit function
else
ais_output_status_alt = "Inactive"
exit function
end if
end function
function ais_output_currency(num)
ais_output_currency = formatcurrency(ais_clean_numeric(num))
end function
'////////////////////////////////////////////////////////////////////
'////
'// Check if payment method is configured
'////
function ais_is_payment_configured(p_id)
dim p
set p = new c_payment_method
p.set_payment_method p_id
select case ais_clean_numeric(p.paymethodtype.id)
case 1 '// Authorize.Net
if not ais_not_null(p.value.login) or not ais_not_null(p.value.transaction_key) or not ais_not_null(p.value.transaction_type) then
ais_is_payment_configured = false
exit function
end if
case 2 '// Verisign
if not ais_not_null(p.value.login) or not ais_not_null(p.value.partner) or not ais_not_null(p.value.transaction_type) then
ais_is_payment_configured = false
exit function
end if
case 3 '// PayPal
if not ais_not_null(p.value.email) then
ais_is_payment_configured = false
exit function
end if
case 4 '// EProcessing Networks
if not ais_not_null(p.value.login) then
ais_is_payment_configured = false
exit function
end if
case 5 '// Check or Money Orders
if not ais_not_null(p.value.pay_to) or not ais_not_null(p.value.address) then
ais_is_payment_configured = false
exit function
end if
case else
ais_is_payment_configured = false
exit function
end select
ais_is_payment_configured = true
end function
'////////////////////////////////////////////////////////////////////
'///////////////////////
' WEBSITE FUNCTIONS
'///////////////////////
function ais_text_to_html(string)
if ais_not_null(string) then
ais_text_to_html = replace(string,vbcrlf," ")
exit function
else
ais_text_to_html = string
exit function
end if
end function
function ais_href_link(page, parameters, connection)
dim link
if left(page,1) = "/" then
if UCASE(connection) = "SSL" then
link = HTTPS_SERVER
else
link = HTTP_SERVER
end if
else
if UCASE(connection) = "SSL" then
link = HTTPS_SERVER & DIR_WS_HTTPS_CATALOG
else
link = HTTP_SERVER & DIR_WS_CATALOG
end if
end if
if not ais_not_null(page) then
page = ""
elseif right(page,1) = "/" then
page = page
elseif instr(page, ".asp") < 1 then
page = page & ".asp"
end if
if ais_not_null(parameters) then
link = link & page & "?" & parameters
else
link = link & page
end if
do while Mid(link,len(link)) = "&" or Mid(link,len(link)) = "?"
link = Mid(link,1,len(link)-1)
loop
ais_href_link = link
end function
function ais_html_safe_link(string)
ais_html_safe_link = Server.URLEncode(string)
end function
function ais_link(page, connection)
dim link
if not ais_not_null(page) then
ais_link = page
exit function
end if
if UCASE(connection) = "SSL" then
link = HTTPS_SERVER & DIR_WS_HTTPS_ADMIN
else
link = HTTP_SERVER & DIR_WS_ADMIN
end if
link = link & page
ais_link = link
end function
function ais_file_exists(folder, file)
dim fs
set fs = server.createobject("scripting.filesystemobject")
if ais_not_null(folder) and ais_not_null(file) then
ais_file_exists = fs.fileexists(server.mappath(replace(folder,HTTP_SERVER,"")&file))
exit function
else
ais_file_exists = false
exit function
end if
end function
function ais_image_link(folder, file, size)
if ais_file_exists(folder, file) then
ais_image_link = folder&file
exit function
else
select case size
case 2 ' large image
ais_image_link = DIR_WS_IMAGES&"no_picture.gif"
case 3 ' full sized image
ais_image_link = DIR_WS_IMAGES&"no_picture.gif"
case else ' small image
ais_image_link = DIR_WS_IMAGES&"no_picture.gif"
end select
exit function
end if
end function
function ais_add_slash(string)
if ais_not_null(string) then
string = replace(string,vbcrlf,"\n")
string = replace(string,"'","\'")
string = replace(string,chr(34),""")
ais_add_slash = string
exit function
else
ais_add_slash = string
exit function
end if
end function
function ais_array_map(func, arr)
dim new_array(), i, value
i = 0
if isarray(arr) then
redim new_array(ubound(arr))
for each value in arr
if ais_is_numeric(value) then
new_array(i) = func(value)
i = i + 1
end if
next
else
ais_array_map = null
end if
ais_array_map = new_array
end function
%>
<%
' Init_Databae.asp
' This include file only has two function
' Open_Database() - opens the connection to the database
' Close_Database() - closes the connection to the database
Dim Conn
Dim connectstr
''''''''''''''''Opening The Access Database Connection''''''''''''''''
' This will connect the database to the webpage that calls it
'
' db_path = folder that has the database
' db_name = Name of the database using
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function Open_Database()
connectstr = "DRIVER="&DB_DRIVER&";DBQ="&DB_LOCALPATH
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open connectstr
End Function
''''''''''''''''Closing The Access Database Connection''''''''''''''''
' When called, this will close the connection
' of the database in the webpage that calls it
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function Close_Database()
If UCase(TypeName(Conn)) = "CONNECTION" Then
Conn.Close
Set Conn = Nothing
Set connectstr = Nothing
End If
End Function
%>
<%
'
'
%>
<%
const HEADING_TITLE = "Customer Login"
const ERROR_WRONG_LOGIN = "Error: Sorry, there is no match for that email address and/or password."
const ERROR_WRONG_EMAIL = "Error: Sorry, there is no match for that email address."
const ERROR_SECURITY_ERROR = "There was a security error when trying to login."
const TEXT_PASSWORD_FORGOTTEN = "Resend Password"
%>
<%
Const BUTTON_IMAGE_ADD_TO_CART = "button_add_to_cart.gif"
Const BUTTON_IMAGE_ADD_ADDRESS = "button_add_address.gif"
Const BUTTON_IMAGE_ADD_PRODUCTS_TO_CART = "button_add_selected.gif"
Const BUTTON_IMAGE_BACK = "button_back.gif"
Const BUTTON_IMAGE_BUY_NOW = "button_buy_now.gif"
Const BUTTON_IMAGE_CANCEL = "button_cancel.gif"
Const BUTTON_IMAGE_CHANGE_ADDRESS = "button_change_address.gif"
Const BUTTON_IMAGE_CHECKOUT = "button_checkout.gif"
Const BUTTON_IMAGE_CONFIRM_SEND = "button_confirm_send.gif"
Const BUTTON_IMAGE_CONFIRM_ORDER = "button_confirm_order.gif"
Const BUTTON_IMAGE_CONTINUE = "button_continue.gif"
Const BUTTON_IMAGE_CONTINUE_CHECKOUT = "button_continue_checkout.gif"
Const BUTTON_IMAGE_CONTINUE_SHOPPING = "button_continue_shopping.gif"
Const BUTTON_IMAGE_CREATE_ACCOUNT = "button_create_account.gif"
Const BUTTON_IMAGE_DELETE = "button_delete.gif"
Const BUTTON_IMAGE_DELETE_SMALL = "button_delete_small.gif"
Const BUTTON_IMAGE_DOWNLOAD = "button_download.gif"
Const BUTTON_IMAGE_EDIT_SMALL = "button_small_edit.gif"
Const BUTTON_IMAGE_GOTO_PROD_DETAILS = "button_goto_prod_details.gif"
Const BUTTON_IMAGE_IN_CART = "button_in_cart.gif"
Const BUTTON_IMAGE_LOG_OFF = "button_logoff.gif"
Const BUTTON_IMAGE_LOGIN = "button_login.gif"
Const BUTTON_IMAGE_MORE_REVIEWS = "button_more_reviews.gif"
Const BUTTON_IMAGE_NEXT = "button_next.gif"
Const BUTTON_IMAGE_PREVIOUS = "button_prev.gif"
Const BUTTON_IMAGE_READ_REVIEWS = "button_read_reviews.gif"
Const BUTTON_IMAGE_REDEEM = "button_redeem.gif"
Const BUTTON_IMAGE_RETURN_TO_PROD_LIST = "button_return_to_product_list.gif"
Const BUTTON_IMAGE_REVIEWS = "button_reviews.gif"
Const BUTTON_IMAGE_SEARCH = "button_search.gif"
Const BUTTON_IMAGE_SEND = "button_send.gif"
Const BUTTON_IMAGE_SEND_A_GIFT_CERT = "button_send_a_gift_cert.gif"
Const BUTTON_IMAGE_SEND_ANOTHER = "button_send_another.gif"
Const BUTTON_IMAGE_SHIPPING_ESTIMATOR = "button_shipping_estimator.gif"
Const BUTTON_IMAGE_SOLD_OUT = "button_sold_out.gif"
Const BUTTON_IMAGE_SOLD_OUT_SMALL = "button_sold_out_sm.gif"
Const BUTTON_IMAGE_SUBMIT = "button_submit.gif"
Const BUTTON_IMAGE_TELL_A_FRIEND = "button_tell_a_friend.gif"
Const BUTTON_IMAGE_TELLAFRIEND = "button_TellAFriend.gif"
Const BUTTON_IMAGE_UNSUBSCRIBE = "button_unsubscribe.gif"
Const BUTTON_IMAGE_UPDATE = "button_update.gif"
Const BUTTON_IMAGE_VIEW_SMALL = "button_view.gif"
Const BUTTON_IMAGE_WRITE_REVIEW = "button_write_review.gif"
'////
' ALT tags used for buttons
'////
Const BUTTON_ADD_TO_CART_ALT = "Add This to My Cart"
Const BUTTON_ADD_ADDRESS_ALT = "Add Address"
Const BUTTON_ADD_PRODUCTS_TO_CART_ALT = "Add Selected Products to Cart"
Const BUTTON_BACK_ALT = "Back"
Const BUTTON_BUY_NOW_ALT = "Buy Now"
Const BUTTON_CANCEL_ALT = "Cancel"
Const BUTTON_CHANGE_ADDRESS_ALT = "Change Address"
Const BUTTON_CHECKOUT_ALT = "Checkout"
Const BUTTON_CONFIRM_SEND_ALT = "Send Gift Certificate"
Const BUTTON_CONFIRM_ORDER_ALT = "Confirm Order"
Const BUTTON_CONTINUE_ALT = "Continue"
Const BUTTON_CONTINUE_CHECKOUT_ALT = "Go To Checkout"
Const BUTTON_CONTINUE_SHOPPING_ALT = "Continue Shopping"
Const BUTTON_CREATE_ACCOUNT_ALT = "Sign Up"
Const BUTTON_DELETE_ALT = "Delete"
Const BUTTON_DELETE_SMALL_ALT = "Delete"
Const BUTTON_DOWNLOAD_ALT = "Download Now"
Const BUTTON_EDIT_SMALL_ALT = "Edit"
Const BUTTON_GOTO_PROD_DETAILS_ALT = "Go To This Product's Detailed Information"
Const BUTTON_IN_CART_ALT = "Add to Cart"
Const BUTTON_LOG_OFF_ALT = "Log Off"
Const BUTTON_LOGIN_ALT = "Sign In"
Const BUTTON_MORE_REVIEWS_ALT = "Read More Reviews"
Const BUTTON_NEXT_ALT = "Next"
Const BUTTON_PREVIOUS_ALT = "Previous"
Const BUTTON_READ_REVIEWS_ALT = "Read the Review"
Const BUTTON_REDEEM_ALT = "Redeem"
Const BUTTON_RETURN_TO_PROD_LIST_ALT = "Return to the Product List"
Const BUTTON_REVIEWS_ALT = "Go to the Reviews Page"
Const BUTTON_SEARCH_ALT = "Search"
Const BUTTON_SEND_ALT = "Send Now"
Const BUTTON_SEND_A_GIFT_CERT_ALT = "Send Another Gift Certificate"
Const BUTTON_SEND_ANOTHER_ALT = "Send A Gift Certificate"
Const BUTTON_SHIPPING_ESTIMATOR_ALT = "Shipping Estimator"
Const BUTTON_SOLD_OUT_ALT = "Sold Out"
Const BUTTON_SOLD_OUT_SMALL_ALT = "Sold Out"
Const BUTTON_SUBMIT_ALT = "Submit the Information"
Const BUTTON_TELL_A_FRIEND_ALT = "Tell a Friend"
Const BUTTON_TELLAFRIEND_ALT = "Tell a Friend"
Const BUTTON_UNSUBSCRIBE_ALT = "Unsubscribe"
Const BUTTON_UPDATE_ALT = "Update"
Const BUTTON_VIEW_SMALL_ALT = "View"
Const BUTTON_WRITE_REVIEW_ALT = "Write Review"
%>
<%
'' define the icon images used in the project
Const ICON_IMAGE_ERROR = "error.png"
Const ICON_IMAGE_WARNING = "warning.gif"
Const ICON_IMAGE_SUCCESS = "success.gif"
Const ICON_IMAGE_TRASH = "small_delete.gif"
Const ICON_IMAGE_UPDATE = "button_update_cart.gif"
Const ICON_IMAGE_TINYCART = "cart.gif"
'' alt tags for buttons
Const ICON_ERROR_ALT = "Error"
Const ICON_SUCCESS_ALT = "Success"
Const ICON_WARNING_ALT = "Warning"
Const ICON_TRASH_ALT = "Delete this item from the cart by clicking this icon."
Const ICON_UPDATE_ALT = "Change your quantity by highlighting the number in the box, correcting the quantity and clicking this button."
Const ICON_TINYCART_ALT = "Add this product to your cart by clicking here."
%>
<%
'/////
' Site-wide Variables
'/////
dim err_message
dim app_flag, app_err_msg
dim WS_PAGE_TITLE, WS_PAGE_KEYWORDS, WS_PAGE_DESCRIPTION
dim box_template, xml, targetURL
dim current_page, prev_page
app_flag = true
app_err_msg = ""
err_message = request("err_message")
current_page = ais_href_link(request.servervariables("path_info"),request.servervariables("query_string"),"")
prev_page = request.servervariables("http_referer")
'/////
' Initialize Database Connection
'/////
open_database()
'/////
' Initialize Default Configurations
'/////
dim config
set config = new c_configuration
'/////
' Site-wide Settings
'/////
Session.Timeout = config.session_timeout
Server.ScriptTimeout = config.script_timeout
WS_PAGE_TITLE = config.meta_tags_title
WS_PAGE_KEYWORDS = config.meta_tags_keywords
WS_PAGE_DESCRIPTION = config.meta_tags_description
%>
<%
'///////////////////////
' EMAILING FUNCTIONS
'///////////////////////
''' Sending an Email
function ais_send_email(e_host_name, e_sender_email, e_sender_name, e_recipient_emails, e_cc_emails, _
e_bcc_emails, e_reply_email, e_mail_subject, e_mail_body)
dim mail, e_re, e_cc_e, e_bcc_e, tmp_send_email
tmp_send_email = ""
if not ais_not_null(e_host_name) then
tmp_send_email = "Host name not present!"
elseif not ais_not_null(e_sender_email) then
tmp_send_email = "Sender email not present!"
elseif not ais_not_null(e_sender_name) then
e_sender_name = e_sender_email
elseif not ais_not_null(e_recipient_emails) then
tmp_send_email = "No recipient present"
elseif not ais_not_null(e_mail_subject) then
tmp_send_email = "Email subject not present!"
elseif not ais_not_null(e_mail_body) then
tmp_send_email = "Email body not present!"
else
set mail = server.createobject("Persits.MailSender")
' Specify a valid SMTP server
mail.host = e_host_name
' Specify sender's address
mail.from = e_sender_email
' Specify sender's name
mail.fromname = e_sender_name
' Specify reciever's email address
e_recipient_emails = SPLIT(e_recipient_emails,",")
for each e_re in e_recipient_emails
mail.addaddress e_re
next
' Specify CC's email address
if ais_not_null(e_cc_emails) then
e_cc_emails = SPLIT(e_cc_emails,",")
for each e_cc_e in e_cc_emails
mail.addcc e_cc_e
next
elseif ais_not_null(EMAIL_CC) then
e_cc_emails = SPLIT(EMAIL_CC,",")
for each e_cc_e in e_cc_emails
mail.addcc e_cc_e
next
end if
' Specify BCC's email address
if ais_not_null(e_bcc_emails) then
e_bcc_emails = SPLIT(e_bcc_emails,",")
for each e_bcc_e IN e_bcc_emails
mail.addbcc e_bcc_e
next
elseif ais_not_null(EMAIL_BCC) then
e_bcc_emails = SPLIT(EMAIL_BCC,",")
for each e_bcc_e IN e_bcc_emails
mail.addbcc e_bcc_e
next
end if
' Specify reply-to address
if ais_not_null(e_reply_email) then
mail.addreplyto e_reply_email
else
mail.addreplyto e_sender_email
end if
' Specify email subject
mail.subject = e_mail_subject
' Specify email body
mail.body = e_mail_body
' Specify if email is HTML or Text
mail.ishtml = true
' Authentication
if ais_not_null(config.mail_user) then
Mail.Username = config.mail_user
Mail.Password = config.mail_password
end if
' Send Mail
mail.send
end if
ais_send_email = tmp_send_email
end function
function set_register_thankyou_email(c_id)
dim rte_cust
set rte_cust = new c_customer
rte_cust.set_customer c_id
if rte_cust.is_set then
EMAIL_REGISTER_THANK_YOU_SUBJECT = "Welcome to "&config.store_name&""
EMAIL_REGISTER_THANK_YOU_BODY = "Dear "&rte_cust.salutation&" "&rte_cust.name&","&vbcrlf&vbcrlf&_
"We wish to welcome you to "&config.store_name&"."&vbcrlf&_
"With your account, you can now take part in the various services we have to offer you. Some of these services include:"&vbcrlf&_
"Permanent Cart - Any products added to your online cart remain there until you remove them, or check them out."&vbcrlf&_
"Address Book - We can now deliver your products to another address other than yours! This is perfect to send birthday gifts direct to the birthday-person themselves."&vbcrlf&_
"Order History - View your history of purchases that you have made with us."&vbcrlf&vbcrlf&_
"For help with any of our online services, please email the store-owner: "&config.store_mail&""&vbcrlf&vbcrlf&_
"Sincerely,"&vbcrlf&vbcrlf&_
"The "&config.store_name&" Team"&vbcrlf&vbcrlf&_
""&HTTP_SERVER&""&_
EMAIL_FOOTER_NOTE
else
EMAIL_REGISTER_THANK_YOU_SUBJECT = ""
EMAIL_REGISTER_THANK_YOU_BODY = ""
end if
end function
function set_order_complete_email(o_id)
dim oce_order, oce_orderprod, oce_orderprodatt, oce_ordertotal
dim oce_rs, oce_opa_rs, oce_ot_rs
set oce_order = new c_order
set oce_orderprod = new c_order_product
set oce_orderprodatt = new c_order_product_attribute
set oce_ordertotal = new c_order_total
oce_order.set_order o_id
if oce_order.is_set then
set oce_rs = conn.execute("select orderprod_id from order_products where orderprod_order_id = "&oce_order.id&";")
set oce_ot_rs = conn.execute("select ordertotal_id from order_totals where ordertotal_order_id = "&oce_order.id&";")
EMAIL_ORDER_COMPLETE_SUBJECT = "Order Confirmation #"&oce_order.id&""
EMAIL_ORDER_COMPLETE_BODY = ""&_
"Order Confirmation from "&config.store_name&""&vbcrlf&vbcrlf&_
""&oce_order.customer_name&""&vbcrlf&vbcrlf&_
"Thanks for shopping with us today!"&vbcrlf&_
"The following is your order."&vbcrlf&_
"------------------------------------------------------"&vbcrlf&_
"Order Number: "&oce_order.id&""&vbcrlf&_
"Date Ordered: "&FormatDateTime(oce_order.date_created,1)&""&vbcrlf&vbcrlf&_
"Products"
do until oce_rs.eof
oce_orderprod.set_order_product oce_rs("orderprod_id")
if oce_orderprod.is_set then
set oce_opa_rs = conn.execute("select orderprodatt_id from order_product_attributes where orderprodatt_orderprod_id = "&oce_orderprod.id&";")
EMAIL_ORDER_COMPLETE_BODY = EMAIL_ORDER_COMPLETE_BODY & ""&_
"------------------------------------------------------"&vbcrlf&_
""&oce_orderprod.quantity&" x "&oce_orderprod.name&" "
if ais_not_null(oce_orderprod.model) then
EMAIL_ORDER_COMPLETE_BODY = EMAIL_ORDER_COMPLETE_BODY & ""&_
"("&oce_orderprod.model&") "
end if
EMAIL_ORDER_COMPLETE_BODY = EMAIL_ORDER_COMPLETE_BODY & ""&_
"= "&formatcurrency(ais_clean_numeric(oce_orderprod.final_price))&""&vbcrlf
do until oce_opa_rs.eof
oce_orderprodatt.set_order_product_attribute oce_opa_rs("orderprodatt_id")
if oce_orderprodatt.is_set then
EMAIL_ORDER_COMPLETE_BODY = EMAIL_ORDER_COMPLETE_BODY & ""&_
""&oce_orderprodatt.option_name&": "&oce_orderprodatt.option_value&""&vbcrlf
end if
oce_opa_rs.movenext
loop
end if
oce_rs.movenext
loop
EMAIL_ORDER_COMPLETE_BODY = EMAIL_ORDER_COMPLETE_BODY & ""&_
"------------------------------------------------------"&vbcrlf
do until oce_ot_rs.eof
oce_ordertotal.set_order_total oce_ot_rs("ordertotal_id")
EMAIL_ORDER_COMPLETE_BODY = EMAIL_ORDER_COMPLETE_BODY & ""&_
""&oce_ordertotal.title&" "&oce_ordertotal.text&""&vbcrlf
oce_ot_rs.movenext
loop
EMAIL_ORDER_COMPLETE_BODY = EMAIL_ORDER_COMPLETE_BODY & ""&_
"------------------------------------------------------"&vbcrlf&vbcrlf&_
"Delivery Address"&vbcrlf&_
"------------------------------------------------------"&vbcrlf&_
""&oce_order.build_delivery_address&""&vbcrlf&vbcrlf&_
"Billing Address"&vbcrlf&_
"------------------------------------------------------"&vbcrlf&_
""&oce_order.build_billing_address&""&vbcrlf&vbcrlf&_
"Payment Method"&vbcrlf&_
"------------------------------------------------------"&vbcrlf&_
""&oce_order.payment_method&""&_
EMAIL_FOOTER_NOTE
else
EMAIL_ORDER_THANK_YOU_SUBJECT = ""
EMAIL_ORDER_COMPLETE_BODY = ""
end if
end function
function set_contact_us_email(m_id)
dim msg
set msg = new c_message
msg.set_message m_id
if msg.is_set then
EMAIL_CONTACT_US_SUBJECT = "Message from "&config.store_name&""
EMAIL_CONTACT_US_BODY = ""&_
"From: "&msg.name&""&vbcrlf&_
"Email: "&msg.email&""&vbcrlf&_
"Phone: "&msg.phone&""&vbcrlf&_
""&vbcrlf&_
"------------------------------------------------------"&vbcrlf&_
""&vbcrlf&_
""&msg.comment&""&vbcrlf&_
""&vbcrlf&_
"------------------------------------------------------"&vbcrlf&_
""&vbcrlf&_
"NOTE: This message has been saved in your administration. To review just login at "&vbcrlf&_
""&HTTPS_SERVER&"/admin"&vbcrlf&_
""
else
EMAIL_CONTACT_US_SUBJECT = ""
EMAIL_CONTACT_US_BODY = ""
end if
end function
%>
<%
dim EMAIL_FOOTER_NOTE
dim EMAIL_REGISTER_THANK_YOU_SUBJECT, EMAIL_REGISTER_THANK_YOU_BODY
dim EMAIL_ORDER_COMPLETE_SUBJECT, EMAIL_ORDER_COMPLETE_BODY
dim EMAIL_CONTACT_US_SUBJECT, EMAIL_CONTACT_US_BODY
dim EMAIL_CC, EMAIL_BCC
EMAIL_CC = "lairshane@yahoo.com"
EMAIL_BCC = ""
EMAIL_FOOTER_NOTE = ""&vbcrlf&vbcrlf&"-----"&vbcrlf&_
"This email address was given to us by you or by one of our customers. If you did not signup for an account, or feel that you have received this email in error, please send an email to "&config.store_mail&" "&vbcrlf&vbcrlf&_
"This email is sent in accordance with the US CAN-SPAM Law in effect 01/01/2004. Removal requests can be sent to this address and will be honored and respected."
%>
<%
dim rs
dim msg, msgstat
dim action, action_title, new_action
dim msg_subject, msg_name, msg_email, msg_phone, msg_comment
action = request("action")
if not ais_not_null(session("return")) then
if ais_not_null(prev_page) and instr(prev_page,"contact_us/") < 1 then
session("return") = prev_page
else
session("return") = ais_href_link("/","","")
end if
end if
select case action
case "send"
set msg = new c_message
msg_subject = request.form("msg_subject")
msg_name = request.form("msg_name")
msg_email = request.form("msg_email")
msg_phone = request.form("msg_phone")
msg_comment = request.form("msg_comment")
if len(msg_name) < 2 then
app_flag = false
app_err_msg = app_err_msg& " -- Full Name is required"
end if
if not ais_is_email(msg_email) then
app_flag = false
app_err_msg = app_err_msg & " -- Valid Email is required."
end if
if not ais_not_null(msg_phone) then
app_flag = false
app_err_msg = app_err_msg & " -- Phone number is required."
end if
if not ais_not_null(msg_comment) then
app_flag = false
app_err_msg = app_err_msg & " -- A Message to us is required."
end if
if app_flag then
set msgstat = new c_message_status
msgstat.set_default
conn.execute("insert into messages (msg_msgstat_id, msg_date_created, msg_subject, msg_name, msg_email, msg_phone, msg_comment) values ("&ais_clean_numeric(msgstat.id)&", #"&now()&"#, '"&ais_db_input(msg_subject)&"', '"&ais_db_input(msg_name)&"', '"&ais_db_input(msg_email)&"', '"&ais_db_input(msg_phone)&"', '"&ais_db_input(msg_comment)&"');")
msg.set_last()
session("msg_id") = msg.id
set_contact_us_email(msg.id)
err_message = ais_send_email(config.mail_host, config.store_mail, config.store_name, config.store_mail, "", "", "", EMAIL_CONTACT_US_SUBJECT, ais_text_to_html(EMAIL_CONTACT_US_BODY))
close_database()
ais_redirect(ais_href_link("/contact_us/","action=sent&err_message="&ais_html_safe_link(err_message)&"",""))
else
err_message = "Error sending a message." & app_err_msg
close_database()
ais_redirect(ais_href_link("/contact_us/", "msg_name="&msg_name&"&msg_email="&msg_email&"&msg_phone="&msg_phone&"&msg_comment="&ais_html_safe_link(msg_comment)&"&err_message="&ais_html_safe_link(err_message)&"", ""))
end if
case "sent"
set msg = new c_message
msg.set_message session("msg_id")
if not msg.is_set then
close_database()
ais_redirect(session("return"))
end if
case else
if ais_not_null(request("msg_subject")) and ais_not_null(request("msg_name")) and ais_not_null(request("msg_email")) then
msg_name = request("msg_name")
msg_email = request("msg_email")
msg_phone = request("msg_phone")
msg_comment = request("msg_comment")
else
msg_name = ""
msg_email = ""
msg_phone = ""
msg_comment = ""
end if
end select
%>
<%=WS_PAGE_TITLE%>
<%
SET fs = Server.CreateObject("Scripting.FileSystemObject")
Folder_Link = "/images/slideshow/"
Folder_Path = Server.MapPath(Folder_Link)
SET Folder = fs.GetFolder(Folder_Path)
SET Files = Folder.Files
%>
Boat Dock Structures
Designed to Fit All of Your Needs
6 Different Roof Designs & Pitches
35 Different Color Combinations
Powder-Coating Available
Boat Docks Up To 60Ft. Wide
Single and Double Story
Lifetime Warranty
ALL AMERICAN MADE and INSTALLED!
All Waterway Structures are built to your own size, color, and
layout specifications. When you contact us to discuss your
structure we will need to know specifics about the size of your
boat(s), the heights, desired roof pitch and the need for
special configurations like top deck sun patios, covered patios
below the roof, storage area, etc.
Please refer to our color chart on our Specifications page.
WaterwayStructures.com is brought to you by
Coverall Protective Covers
<%=Year(Date())%> - All Rights Reserved - WaterwayStructures.com site by
AnInternetStore.com
<%
'/////
' Site-wide Variables
'/////
set err_message = nothing
set app_flag = nothing
set app_err_msg = nothing
'/////
' Initialize Default Configurations
'/////
set config = nothing
'/////
' Initialize Database Connection
'/////
close_database()
%>