1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5 Edit Customer: Olson Inc (Towne, Samara)
7 <!-- per RT, to prevent IE compatibility mode -->
8 <meta http-equiv="X-UA-Compatible" content="IE=edge" />
9 <!-- The X-UA-Compatible <meta> tag above must be very early in <head> -->
10 <META HTTP-Equiv="Cache-Control" Content="no-cache">
11 <META HTTP-Equiv="Pragma" Content="no-cache">
12 <META HTTP-Equiv="Expires" Content="0">
14 <script type="text/javascript" src="http://localhost/freeside/elements/cssexpr.js"></script>
17 <script type="text/javascript" src="http://localhost/freeside/elements/xmenu.top.js"></script>
18 <link href="http://localhost/freeside/elements/xmenu.top.css" type="text/css" rel="stylesheet">
21 <link href="http://localhost/freeside/elements/freeside.css" type="text/css" rel="stylesheet">
22 <link href="http://localhost/freeside/elements/freeside-print.css" type="text/css" rel="stylesheet" media="print">
23 <link href="http://localhost/freeside/elements/freeside-menu.css" type="text/css" rel="stylesheet">
25 <SCRIPT TYPE="text/javascript">
27 function about_freeside() {
28 overlib( OLiframeContent('http://localhost/freeside/docs/about.html', 300, 375, 'popup-0000000000-0000-000000000.000000', 0, 'auto' ), CAPTION, 'About', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '#7e0079', CGCOLOR, '#7e0079', CLOSETEXT, 'Close');
31 webfxMenuImagePath = "http://localhost/freeside/images/";
32 webfxMenuUseHover = 1;
33 webfxMenuShowTime = 300;
34 webfxMenuHideTime = 500;
36 var myBar = new WebFXMenuBar;
39 myBar.add(new WebFXMenuButton('Billing Main', "http://localhost/freeside/", 'Billing start page' ));
42 myBar.add(new WebFXMenuButton('Ticketing Main', "http://localhost/freeside/rt/", 'Ticketing start page' ));
45 myBar.add(new WebFXMenuButton('New prospect', "http://localhost/freeside/edit/prospect_main.html", 'Add a new prospect' ));
48 myBar.add(new WebFXMenuButton('New customer', "http://localhost/freeside/edit/cust_main.cgi", 'Add a new customer' ));
51 var myMenu0 = new WebFXMenu;
52 myMenu0.emptyText = '';
53 var myMenu1 = new WebFXMenu;
54 myMenu1.emptyText = '';
55 myMenu1.add(new WebFXMenuItem("List prospects", "http://localhost/freeside/search/prospect_main.html", "" ));
56 myMenu1.add(new WebFXMenuItem("Advanced prospect reports", "http://localhost/freeside/search/report_prospect_main.html", "" ));
57 myMenu1.add(new WebFXMenuSeparator());
58 myMenu1.add(new WebFXMenuItem("Prospect contacts", "http://localhost/freeside/search/report_contact.html?link=prospect_main", "" ));
61 myMenu0.add(new WebFXMenuItem("Prospects", null, "Prospect reports", myMenu1 ));
62 var myMenu2 = new WebFXMenu;
63 myMenu2.emptyText = '';
64 myMenu2.add(new WebFXMenuItem("List quotations", "http://localhost/freeside/search/quotation.html", "" ));
65 myMenu2.add(new WebFXMenuItem("Advanced quotation reports", "http://localhost/freeside/search/report_quotation.html", "" ));
68 myMenu0.add(new WebFXMenuItem("Quotations", null, "Quotation reports", myMenu2 ));
69 var myMenu3 = new WebFXMenu;
70 myMenu3.emptyText = '';
71 var myMenu4 = new WebFXMenu;
72 myMenu4.emptyText = '';
73 myMenu4.add(new WebFXMenuItem("by customer number", "http://localhost/freeside/search/cust_main.cgi?browse=custnum", "" ));
74 myMenu4.add(new WebFXMenuItem("by last name", "http://localhost/freeside/search/cust_main.cgi?browse=last", "" ));
75 myMenu4.add(new WebFXMenuItem("by company name", "http://localhost/freeside/search/cust_main.cgi?browse=company", "" ));
76 myMenu4.add(new WebFXMenuItem("by active trouble tickets", "http://localhost/freeside/search/cust_main.cgi?browse=tickets", "" ));
79 myMenu3.add(new WebFXMenuItem("List customers", null, "List customers", myMenu4 ));
80 myMenu3.add(new WebFXMenuItem("Zip code distribution", "http://localhost/freeside/search/report_cust_main-zip.html", "Zip codes by number of customers" ));
81 myMenu3.add(new WebFXMenuItem("Customer signup report", "http://localhost/freeside/graph/report_cust_signup.html", "New customer signups by date" ));
82 myMenu3.add(new WebFXMenuItem("Customer churn report", "http://localhost/freeside/graph/report_cust_churn.html", "New customers, suspensions, and cancellations summary" ));
83 myMenu3.add(new WebFXMenuItem("Signup date report", "http://localhost/freeside/graph/report_signupdate.html", "Signup date report (by date of signup)" ));
84 myMenu3.add(new WebFXMenuItem("Advanced customer reports", "http://localhost/freeside/search/report_cust_main.html", "by status, signup date, agent, etc." ));
85 myMenu3.add(new WebFXMenuSeparator());
86 myMenu3.add(new WebFXMenuItem("Customer contacts", "http://localhost/freeside/search/report_contact.html?link=cust_main", "" ));
89 myMenu0.add(new WebFXMenuItem("Customers", null, "Customer reports", myMenu3 ));
90 var myMenu5 = new WebFXMenu;
91 myMenu5.emptyText = '';
92 var myMenu6 = new WebFXMenu;
93 myMenu6.emptyText = '';
94 myMenu6.add(new WebFXMenuItem("All open invoices", "http://localhost/freeside/search/cust_bill.html?OPEN_date", "All invoices with an unpaid balance" ));
95 myMenu6.add(new WebFXMenuItem("15 day open invoices", "http://localhost/freeside/search/cust_bill.html?OPEN15_date", "Invoices 15 days or older with an unpaid balance" ));
96 myMenu6.add(new WebFXMenuItem("30 day open invoices", "http://localhost/freeside/search/cust_bill.html?OPEN30_date", "Invoices 30 days or older with an unpaid balance" ));
97 myMenu6.add(new WebFXMenuItem("60 day open invoices", "http://localhost/freeside/search/cust_bill.html?OPEN60_date", "Invoices 60 days or older with an unpaid balance" ));
98 myMenu6.add(new WebFXMenuItem("90 day open invoices", "http://localhost/freeside/search/cust_bill.html?OPEN90_date", "Invoices 90 days or older with an unpaid balance" ));
99 myMenu6.add(new WebFXMenuItem("120 day open invoices", "http://localhost/freeside/search/cust_bill.html?OPEN120_date", "Invoices 120 days or older with an unpaid balance" ));
102 myMenu5.add(new WebFXMenuItem("Open invoices", null, "Open invoices", myMenu6 ));
103 myMenu5.add(new WebFXMenuItem("All invoices", "http://localhost/freeside/search/cust_bill.html?date", "List all invoices" ));
104 myMenu5.add(new WebFXMenuItem("Advanced invoice reports", "http://localhost/freeside/search/report_cust_bill.html", "by agent, date range, etc." ));
105 myMenu5.add(new WebFXMenuSeparator());
106 myMenu5.add(new WebFXMenuItem("Line items", "http://localhost/freeside/search/report_cust_bill_pkg.html", "Individual line item detail" ));
107 myMenu5.add(new WebFXMenuItem("Voided invoices", "http://localhost/freeside/search/report_cust_bill_void.html", "Search for voided invoices" ));
110 myMenu0.add(new WebFXMenuItem("Invoices", null, "Invoice reports", myMenu5 ));
111 var myMenu7 = new WebFXMenu;
112 myMenu7.emptyText = '';
113 myMenu7.add(new WebFXMenuItem("Discount graph", "http://localhost/freeside/graph/report_cust_bill_pkg_discount.html", "Discount overview per month" ));
114 myMenu7.add(new WebFXMenuItem("Discount detail", "http://localhost/freeside/search/report_cust_bill_pkg_discount.html", "Discount report (by employee and/or date range)" ));
115 myMenu7.add(new WebFXMenuItem("Package discounts", "http://localhost/freeside/search/report_cust_pkg_discount.html", "Active/inactive discounts by package" ));
118 myMenu0.add(new WebFXMenuItem("Discounts", null, "Discount reports", myMenu7 ));
119 var myMenu8 = new WebFXMenu;
120 myMenu8.emptyText = '';
121 myMenu8.add(new WebFXMenuItem("Payments", "http://localhost/freeside/search/report_cust_pay.html", "Payment report (by type and/or date range)" ));
122 myMenu8.add(new WebFXMenuItem("Payment application detail", "http://localhost/freeside/search/report_cust_bill_pay_pkg.html", "Line item application detail" ));
123 myMenu8.add(new WebFXMenuItem("Pending Payments", "http://localhost/freeside/search/cust_pay_pending.html?magic=_date;statusNOT=done", "Pending real-time payments" ));
124 myMenu8.add(new WebFXMenuItem("Unapplied Payments", "http://localhost/freeside/search/report_cust_pay.html?unapplied=1", "Unapplied payment report (by type and/or date range)" ));
125 myMenu8.add(new WebFXMenuItem("Voided Payments", "http://localhost/freeside/search/report_cust_pay.html?void=1", "Voided payment report (by type and/or date range)" ));
126 myMenu8.add(new WebFXMenuItem("Unapplied Payment Aging", "http://localhost/freeside/search/report_unapplied_cust_pay.html", "Unapplied payment aging report" ));
129 myMenu0.add(new WebFXMenuItem("Payments", null, "Payment reports", myMenu8 ));
130 var myMenu9 = new WebFXMenu;
131 myMenu9.emptyText = '';
132 myMenu9.add(new WebFXMenuItem("Package definitions (by # active)", "http://localhost/freeside/browse/part_pkg.cgi?active=1", "Package definitions by number of active packages" ));
133 myMenu9.add(new WebFXMenuItem("Package costs", "http://localhost/freeside/graph/report_cust_pkg_cost.html", "Package setup and recurring costs graph" ));
134 myMenu9.add(new WebFXMenuSeparator());
135 myMenu9.add(new WebFXMenuItem("Package churn", "http://localhost/freeside/graph/report_cust_pkg.html", "Orders, suspensions and cancellations summary graph" ));
136 myMenu9.add(new WebFXMenuSeparator());
137 myMenu9.add(new WebFXMenuItem("All customer packages", "http://localhost/freeside/search/cust_pkg.cgi?pkgnum", "List all customer packages" ));
138 myMenu9.add(new WebFXMenuItem("Package summary", "http://localhost/freeside/search/cust_pkg_summary.html", "Show package sales summary" ));
139 myMenu9.add(new WebFXMenuItem("Suspended customer packages", "http://localhost/freeside/search/cust_pkg.cgi?magic=suspended", "List suspended packages" ));
140 myMenu9.add(new WebFXMenuItem("Suspension summary", "http://localhost/freeside/search/cust_pkg_susp.html", "Show suspension activity" ));
141 myMenu9.add(new WebFXMenuItem("Customer packages with unconfigured services", "http://localhost/freeside/search/cust_pkg.cgi?APKG_pkgnum", "List packages which have provisionable services" ));
142 myMenu9.add(new WebFXMenuItem("Advanced package reports", "http://localhost/freeside/search/report_cust_pkg.html", "by agent, date range, status, package definition" ));
145 myMenu0.add(new WebFXMenuItem("Packages", null, "Package reports", myMenu9 ));
146 var myMenu10 = new WebFXMenu;
147 myMenu10.emptyText = '';
148 myMenu10.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi?orderby=active", "Service definitions by number of active packages" ));
149 myMenu10.add(new WebFXMenuSeparator());
150 myMenu10.add(new WebFXMenuItem("Unprovisioned services", "http://localhost/freeside/search/report_unprovisioned_services.html", "Unprovisioned services" ));
151 myMenu10.add(new WebFXMenuSeparator());
152 var myMenu11 = new WebFXMenu;
153 myMenu11.emptyText = '';
154 myMenu11.add(new WebFXMenuItem("All accounts by Username", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=username", "" ));
155 myMenu11.add(new WebFXMenuItem("All accounts by UID", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=uid", "" ));
156 myMenu11.add(new WebFXMenuItem("All accounts with Time Remaining", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=seconds", "" ));
157 myMenu11.add(new WebFXMenuItem("All accounts by Last login", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=last_login", "" ));
158 myMenu11.add(new WebFXMenuItem("All accounts never logged in", "http://localhost/freeside/search/svc_acct.cgi?magic=nologin;sortby=svcnum", "" ));
159 myMenu11.add(new WebFXMenuItem("Advanced account reports", "http://localhost/freeside/search/report_svc_acct.html", "" ));
160 myMenu11.width = 256;
162 myMenu10.add(new WebFXMenuItem("Accounts", null, "Access accounts and mailboxes", myMenu11 ));
163 var myMenu12 = new WebFXMenu;
164 myMenu12.emptyText = '';
165 myMenu12.add(new WebFXMenuItem("All domains", "http://localhost/freeside/search/svc_domain.cgi?magic=all;sortby=domain", "" ));
166 myMenu12.width = 256;
168 myMenu10.add(new WebFXMenuItem("Domains", null, "Domains", myMenu12 ));
169 var myMenu13 = new WebFXMenu;
170 myMenu13.emptyText = '';
171 myMenu13.add(new WebFXMenuItem("All certificates", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cert;magic=all;sortby=svcnum", "" ));
172 myMenu13.width = 256;
174 myMenu10.add(new WebFXMenuItem("Certificates", null, "Example services", myMenu13 ));
175 var myMenu14 = new WebFXMenu;
176 myMenu14.emptyText = '';
177 myMenu14.add(new WebFXMenuItem("All mail forwards", "http://localhost/freeside/search/svc_forward.cgi?magic=all;sortby=svcnum", "" ));
178 myMenu14.width = 256;
180 myMenu10.add(new WebFXMenuItem("Mail forwards", null, "Mail forwards", myMenu14 ));
181 var myMenu15 = new WebFXMenu;
182 myMenu15.emptyText = '';
183 myMenu15.add(new WebFXMenuItem("All mailing lists", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_mailinglist;magic=all;sortby=svcnum", "" ));
184 myMenu15.width = 256;
186 myMenu10.add(new WebFXMenuItem("Mailing lists", null, "Mailing lists", myMenu15 ));
187 var myMenu16 = new WebFXMenu;
188 myMenu16.emptyText = '';
189 myMenu16.add(new WebFXMenuItem("All virtual hosting services", "http://localhost/freeside/search/svc_www.cgi?magic=all;sortby=svcnum", "" ));
190 myMenu16.width = 256;
192 myMenu10.add(new WebFXMenuItem("Virtual hosting services", null, "Virtual hosting services", myMenu16 ));
193 var myMenu17 = new WebFXMenu;
194 myMenu17.emptyText = '';
195 myMenu17.add(new WebFXMenuItem("All wireless broadband services", "http://localhost/freeside/search/svc_broadband.cgi?magic=all;sortby=svcnum", "" ));
196 myMenu17.add(new WebFXMenuItem("Advanced wireless broadband reports", "http://localhost/freeside/search/report_svc_broadband.html", "" ));
197 myMenu17.width = 256;
199 myMenu10.add(new WebFXMenuItem("Wireless broadband services", null, "Fixed wireless broadband services", myMenu17 ));
200 var myMenu18 = new WebFXMenu;
201 myMenu18.emptyText = '';
202 myMenu18.add(new WebFXMenuItem("All cable subscribers by Service", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=svcnum", "" ));
203 myMenu18.add(new WebFXMenuItem("All cable subscribers by Serial number", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=serialnum", "" ));
204 myMenu18.add(new WebFXMenuItem("All cable subscribers by MAC address", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=mac_addr", "" ));
205 myMenu18.width = 256;
207 myMenu10.add(new WebFXMenuItem("Cable Subscribers", null, "Cable Subscribers", myMenu18 ));
208 var myMenu19 = new WebFXMenu;
209 myMenu19.emptyText = '';
210 myMenu19.add(new WebFXMenuItem("All DSLs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_dsl;magic=all;sortby=phonenum", "" ));
211 myMenu19.add(new WebFXMenuItem("Qualifications", "http://localhost/freeside/search/qual.cgi", "" ));
212 myMenu19.width = 256;
214 myMenu10.add(new WebFXMenuItem("DSLs", null, "DSLs", myMenu19 ));
215 var myMenu20 = new WebFXMenu;
216 myMenu20.emptyText = '';
217 myMenu20.add(new WebFXMenuItem("All dish services", "http://localhost/freeside/search/svc_dish.cgi?magic=all;sortby=svcnum", "" ));
218 myMenu20.width = 256;
220 myMenu10.add(new WebFXMenuItem("Dish services", null, "Dish services", myMenu20 ));
221 var myMenu21 = new WebFXMenu;
222 myMenu21.emptyText = '';
223 myMenu21.add(new WebFXMenuItem("All hardware", "http://localhost/freeside/search/svc_hardware.cgi?magic=all;sortby=svcnum", "" ));
224 myMenu21.add(new WebFXMenuItem("Advanced hardware reports", "http://localhost/freeside/search/report_svc_hardware.html", "" ));
225 myMenu21.width = 256;
227 myMenu10.add(new WebFXMenuItem("Hardware", null, "Hardware", myMenu21 ));
228 var myMenu22 = new WebFXMenu;
229 myMenu22.emptyText = '';
230 myMenu22.add(new WebFXMenuItem("All phone numbers", "http://localhost/freeside/search/svc_phone.cgi?magic=all;sortby=phonenum", "" ));
231 myMenu22.add(new WebFXMenuItem("Phone numbers' total usage by time period", "http://localhost/freeside/search/report_svc_phone_usage.html", "Total usage (minutes, and amount billed) for the specified time period, per phone number." ));
232 myMenu22.add(new WebFXMenuItem("Phone numbers by state", "http://localhost/freeside/search/phone_state.html", "Current or historical phone services broken down by state." ));
233 myMenu22.add(new WebFXMenuItem("Advanced phone number reports", "http://localhost/freeside/search/report_svc_phone.html", "" ));
234 myMenu22.add(new WebFXMenuItem("Phone number (DID) availability", "http://localhost/freeside/search/report_phone_avail.html", "" ));
235 myMenu22.add(new WebFXMenuItem("Inventory/Provisioning Status", "http://localhost/freeside/search/phone_inventory_provisioned.html", "" ));
236 myMenu22.width = 256;
238 myMenu10.add(new WebFXMenuItem("Phone numbers", null, "Phone numbers", myMenu22 ));
239 var myMenu23 = new WebFXMenu;
240 myMenu23.emptyText = '';
241 myMenu23.add(new WebFXMenuItem("All PBXs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_pbx;magic=all;sortby=svcnum", "" ));
242 myMenu23.width = 256;
244 myMenu10.add(new WebFXMenuItem("PBXs", null, "PBXs", myMenu23 ));
245 var myMenu24 = new WebFXMenu;
246 myMenu24.emptyText = '';
247 myMenu24.add(new WebFXMenuItem("All circuits", "http://localhost/freeside/search/svc_circuit.cgi?magic=all;sortby=svcnum", "" ));
248 myMenu24.width = 256;
250 myMenu10.add(new WebFXMenuItem("Circuits", null, "Voice and data circuit services", myMenu24 ));
251 var myMenu25 = new WebFXMenu;
252 myMenu25.emptyText = '';
253 myMenu25.add(new WebFXMenuItem("All ports", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_port;magic=all;sortby=serviceid", "" ));
254 myMenu25.width = 256;
256 myMenu10.add(new WebFXMenuItem("Ports", null, "Ports", myMenu25 ));
257 var myMenu26 = new WebFXMenu;
258 myMenu26.emptyText = '';
259 myMenu26.add(new WebFXMenuItem("All alarm services", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_alarm;magic=all;sortby=acctnum", "" ));
260 myMenu26.width = 256;
262 myMenu10.add(new WebFXMenuItem("Alarm services", null, "Alarm services", myMenu26 ));
263 var myMenu27 = new WebFXMenu;
264 myMenu27.emptyText = '';
265 myMenu27.add(new WebFXMenuItem("All external services", "http://localhost/freeside/search/svc_external.cgi?magic=all;sortby=id", "" ));
266 myMenu27.width = 256;
268 myMenu10.add(new WebFXMenuItem("External services", null, "External services", myMenu27 ));
269 myMenu10.width = 256;
271 myMenu0.add(new WebFXMenuItem("Services", null, "Services reports", myMenu10 ));
272 var myMenu28 = new WebFXMenu;
273 myMenu28.emptyText = '';
274 myMenu28.add(new WebFXMenuItem("Inventory by agent", "http://localhost/freeside/search/report_agent_inventory.html", "" ));
275 myMenu28.add(new WebFXMenuItem("Inventory activity", "http://localhost/freeside/search/report_h_inventory_item.html", "" ));
276 myMenu28.width = 256;
278 myMenu0.add(new WebFXMenuItem("Inventory", null, "Inventory reports", myMenu28 ));
279 var myMenu29 = new WebFXMenu;
280 myMenu29.emptyText = '';
281 myMenu29.add(new WebFXMenuItem("RADIUS sessions", "http://localhost/freeside/search/sqlradius.html", "" ));
282 myMenu29.add(new WebFXMenuItem("RADIUS data usage", "http://localhost/freeside/search/report_sqlradius_usage.html", "" ));
283 myMenu29.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/search/report_cdr.html", "" ));
284 myMenu29.add(new WebFXMenuItem("Unrateable CDRs", "http://localhost/freeside/search/cdr.html?freesidestatus=failed;cdrbatchnum=_ALL_", "" ));
285 myMenu29.width = 256;
287 myMenu0.add(new WebFXMenuItem("Usage", null, "Usage reports", myMenu29 ));
288 var myMenu30 = new WebFXMenu;
289 myMenu30.emptyText = '';
290 var myMenu31 = new WebFXMenu;
291 myMenu31.emptyText = '';
292 myMenu31.add(new WebFXMenuItem("Tickets per day per Queue", "http://localhost/freeside/rt/RTx/Statistics/CallsQueueDay", "View the number of tickets created, resolved or deleted in a specific Queue, over the requested period of days" ));
293 myMenu31.add(new WebFXMenuItem("Ticket status by Queue", "http://localhost/freeside/rt/RTx/Statistics/OpenStalled", "View numbers of new, open and stalled tickets in a selected Queue" ));
294 myMenu31.add(new WebFXMenuItem("Tickets per day (multiple Queues)", "http://localhost/freeside/rt/RTx/Statistics/CallsMultiQueue", "View tickets created, resolved or deleted on in one or more Queues over a specified time period" ));
295 myMenu31.add(new WebFXMenuItem("Tickets per Day of Week", "http://localhost/freeside/rt/RTx/Statistics/DayOfWeek", "View trends showing when tickets are created, resolved or deleted" ));
296 myMenu31.add(new WebFXMenuItem("Time to resolve", "http://localhost/freeside/rt/RTx/Statistics/Resolution", "View how long tickets take to be resolved by Queue" ));
297 myMenu31.add(new WebFXMenuItem("Time to resolve (scatter graph)", "http://localhost/freeside/rt/RTx/Statistics/TimeToResolve", "View a detailed scatter graph of time to resolve tickets by Queue" ));
298 myMenu31.width = 256;
300 myMenu30.add(new WebFXMenuItem("Statistics", null, "", myMenu31 ));
301 myMenu30.add(new WebFXMenuSeparator());
302 myMenu30.add(new WebFXMenuItem("Advanced ticket reports", "http://localhost/freeside/rt/Search/Build.html?NewQuery=1", "List tickets by any criteria" ));
303 myMenu30.width = 256;
305 myMenu0.add(new WebFXMenuItem("Tickets", null, "Ticket reports", myMenu30 ));
306 var myMenu32 = new WebFXMenu;
307 myMenu32.emptyText = '';
308 myMenu32.add(new WebFXMenuItem("Employee Commission Report", "http://localhost/freeside/search/report_employee_commission.html", "" ));
309 myMenu32.add(new WebFXMenuItem("Employee Audit Report", "http://localhost/freeside/search/report_employee_audit.html", "Employee audit report" ));
310 myMenu32.width = 256;
312 myMenu0.add(new WebFXMenuItem("Employees", null, "Employee reports", myMenu32 ));
313 var myMenu33 = new WebFXMenu;
314 myMenu33.emptyText = '';
315 myMenu33.add(new WebFXMenuItem("All billing events", "http://localhost/freeside/search/report_cust_event.html", "All billing events for a date range" ));
316 myMenu33.add(new WebFXMenuItem("Billing event errors", "http://localhost/freeside/search/report_cust_event.html?failed=1", "Failed credit cards, processor or printer problems, etc." ));
317 myMenu33.width = 256;
319 myMenu0.add(new WebFXMenuItem("Billing events", null, "Billing events", myMenu33 ));
320 var myMenu34 = new WebFXMenu;
321 myMenu34.emptyText = '';
322 var myMenu35 = new WebFXMenu;
323 myMenu35.emptyText = '';
324 myMenu35.add(new WebFXMenuItem("Sales, Credits and Receipts", "http://localhost/freeside/graph/report_money_time.html", "Sales, credits and receipts summary graph" ));
325 myMenu35.add(new WebFXMenuItem("Daily Sales, Credits and Receipts", "http://localhost/freeside/graph/report_money_time_daily.html", "Sales, credits and receipts (broken down by day) summary graph" ));
326 myMenu35.add(new WebFXMenuItem("Sales Report", "http://localhost/freeside/graph/report_cust_bill_pkg.html", "Sales report and graph (by agent, package class and/or date range)" ));
327 myMenu35.add(new WebFXMenuItem("Rated Call Sales Report", "http://localhost/freeside/graph/report_cust_bill_pkg_detail.html", "Sales report and graph (by agent, package class, usage class and/or date range)" ));
328 myMenu35.add(new WebFXMenuItem("Sales with Advertising Source", "http://localhost/freeside/search/report_cust_bill_pkg_referral.html", "" ));
329 myMenu35.width = 256;
331 myMenu34.add(new WebFXMenuItem("Sales", null, "Sales reports", myMenu35 ));
332 var myMenu36 = new WebFXMenu;
333 myMenu36.emptyText = '';
334 myMenu36.add(new WebFXMenuItem("Credit Report", "http://localhost/freeside/search/report_cust_credit.html", "Credit report (by employee and/or date range)" ));
335 myMenu36.add(new WebFXMenuItem("Credit application detail", "http://localhost/freeside/search/report_cust_credit_bill_pkg.html", "Line item application detail" ));
336 myMenu36.add(new WebFXMenuItem("Unapplied Credits", "http://localhost/freeside/search/report_cust_credit.html?unapplied=1", "Unapplied credit report (by type and/or date range)" ));
337 myMenu36.add(new WebFXMenuItem("Voided Credits", "http://localhost/freeside/search/report_cust_credit_void.html", "Voided credit report (by employee and/or date range)" ));
338 myMenu36.width = 256;
340 myMenu34.add(new WebFXMenuItem("Credits", null, "Credit reports", myMenu36 ));
341 var myMenu37 = new WebFXMenu;
342 myMenu37.emptyText = '';
343 myMenu37.add(new WebFXMenuItem("Refund Report", "http://localhost/freeside/search/report_cust_refund.html", "Refund report (by type and/or date range)" ));
344 myMenu37.add(new WebFXMenuItem("Unapplied Refunds", "http://localhost/freeside/search/report_cust_refund.html?unapplied=1", "Unapplied refund report (by type and/or date range)" ));
345 myMenu37.width = 256;
347 myMenu34.add(new WebFXMenuItem("Refunds", null, "Refund reports", myMenu37 ));
348 var myMenu38 = new WebFXMenu;
349 myMenu38.emptyText = '';
350 myMenu38.add(new WebFXMenuItem("Agent Commissions", "http://localhost/freeside/search/report_agent_commission.html", "" ));
351 myMenu38.add(new WebFXMenuItem("Agent Commissions Per Package", "http://localhost/freeside/search/report_agent_commission_pkg.html", "" ));
352 myMenu38.add(new WebFXMenuItem("Sales Person Commissions", "http://localhost/freeside/search/report_sales_commission.html", "" ));
353 myMenu38.add(new WebFXMenuItem("Sales Person Commissions Per Package", "http://localhost/freeside/search/report_sales_commission_pkg.html", "" ));
354 myMenu38.add(new WebFXMenuItem("Employee Commissions", "http://localhost/freeside/search/report_employee_commission.html", "" ));
355 myMenu38.width = 256;
357 myMenu34.add(new WebFXMenuItem("Commissions", null, "Commission reports", myMenu38 ));
358 myMenu34.add(new WebFXMenuItem("A/R Aging", "http://localhost/freeside/search/report_receivables.html", "Accounts Receivable Aging report" ));
359 myMenu34.add(new WebFXMenuItem("Prepaid Income", "http://localhost/freeside/search/report_prepaid_income.html", "Prepaid income (unearned revenue) report" ));
360 myMenu34.add(new WebFXMenuItem("Tax Liability", "http://localhost/freeside/search/report_tax.html", "Tax liability report (internal tax data)" ));
361 myMenu34.add(new WebFXMenuItem("E911 Fee Summary", "http://localhost/freeside/search/report_e911.html", "E911 fee summary" ));
362 myMenu34.add(new WebFXMenuItem("Customer Accounting Summary", "http://localhost/freeside/search/report_customer_accounting_summary.html", "Customer accounting summary report" ));
363 myMenu34.width = 256;
365 myMenu0.add(new WebFXMenuItem("Financial", null, "Financial reports", myMenu34 ));
366 var myMenu39 = new WebFXMenu;
367 myMenu39.emptyText = '';
368 myMenu39.add(new WebFXMenuItem("Credit limit incidents", "http://localhost/freeside/search/report_cust_main_credit_limit.html", "" ));
369 myMenu39.add(new WebFXMenuItem("System log", "http://localhost/freeside/search/log.html", "View system events and debugging information." ));
370 myMenu39.add(new WebFXMenuItem("Outgoing messages", "http://localhost/freeside/search/cust_msg.html", "View outgoing message log" ));
371 myMenu39.width = 256;
373 myMenu0.add(new WebFXMenuItem("Logs", null, "System and email logs", myMenu39 ));
376 myBar.add(new WebFXMenuButton('Reports', null, 'Lists, reporting and graphing', myMenu0 ));
379 var myMenu40 = new WebFXMenu;
380 myMenu40.emptyText = '';
381 myMenu40.add(new WebFXMenuItem("Quick payment entry", "http://localhost/freeside/misc/batch-cust_pay.html", "Enter multiple payments in a batch" ));
382 myMenu40.add(new WebFXMenuItem("Download invoice batches", "http://localhost/freeside/search/bill_batch.cgi", "" ));
383 myMenu40.add(new WebFXMenuItem("Bulk DID Orders", "http://localhost/freeside/browse/did_order.html", "View/manage bulk DID orders" ));
384 myMenu40.add(new WebFXMenuItem("Job Queue", "http://localhost/freeside/search/queue.html", "View pending job queue" ));
385 var myMenu41 = new WebFXMenu;
386 myMenu41.emptyText = '';
387 var myMenu42 = new WebFXMenu;
388 myMenu42.emptyText = '';
389 myMenu42.add(new WebFXMenuItem("Overview", "http://localhost/freeside/rt/Articles/index.html", "" ));
390 myMenu42.add(new WebFXMenuItem("Search", "http://localhost/freeside/rt/Articles/Article/Search.html", "" ));
391 myMenu42.add(new WebFXMenuItem("Topics", "http://localhost/freeside/rt/Articles/Topics.html", "" ));
392 myMenu42.width = 256;
394 myMenu41.add(new WebFXMenuItem("Articles", null, "", myMenu42 ));
395 myMenu41.add(new WebFXMenuItem("My Day", "http://localhost/freeside/rt/Tools/MyDay.html", "" ));
396 myMenu41.add(new WebFXMenuItem("My Reminders", "http://localhost/freeside/rt/Tools/MyReminders.html", "" ));
397 myMenu41.add(new WebFXMenuItem("Offline", "http://localhost/freeside/rt/Tools/Offline.html", "" ));
398 myMenu41.add(new WebFXMenuItem("Approval", "http://localhost/freeside/rt/Approvals/", "" ));
399 myMenu41.width = 256;
401 myMenu40.add(new WebFXMenuItem("Ticketing", null, "Ticketing tools", myMenu41 ));
402 myMenu40.add(new WebFXMenuItem("Customer email settings", "http://localhost/freeside/misc/manage_cust_email.html", "" ));
403 myMenu40.add(new WebFXMenuItem("Business card scan", "http://localhost/freeside/edit/prospect_main-upload.html", "" ));
404 myMenu40.add(new WebFXMenuItem("Attachments", "http://localhost/freeside/browse/cust_attachment.html", "View customer attachments" ));
405 var myMenu43 = new WebFXMenu;
406 myMenu43.emptyText = '';
407 myMenu43.add(new WebFXMenuItem("Customers", "http://localhost/freeside/misc/cust_main-import.cgi", "" ));
408 myMenu43.add(new WebFXMenuItem("Package definitions", "http://localhost/freeside/misc/part_pkg-import.html", "" ));
409 myMenu43.add(new WebFXMenuItem("Customer packages", "http://localhost/freeside/misc/cust_pkg-import.html", "" ));
410 myMenu43.add(new WebFXMenuItem("Customer comments", "http://localhost/freeside/misc/cust_main_note-import.html", "" ));
411 myMenu43.add(new WebFXMenuItem("One-time charges", "http://localhost/freeside/misc/cust_main-import_charges.cgi", "" ));
412 myMenu43.add(new WebFXMenuItem("Payments", "http://localhost/freeside/misc/cust_pay-import.cgi", "" ));
413 myMenu43.add(new WebFXMenuItem("Credits", "http://localhost/freeside/misc/cust_credit-import.html", "" ));
414 myMenu43.add(new WebFXMenuItem("Phone numbers (DIDs)", "http://localhost/freeside/misc/phone_avail-import.html", "" ));
415 myMenu43.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/misc/cdr-import.html", "" ));
416 myMenu43.width = 256;
418 myMenu40.add(new WebFXMenuItem("Importing", null, "Import tools", myMenu43 ));
419 var myMenu44 = new WebFXMenu;
420 myMenu44.emptyText = '';
421 myMenu44.add(new WebFXMenuItem("Download database dump", "http://localhost/freeside/misc/dump.cgi", "" ));
422 myMenu44.width = 256;
424 myMenu40.add(new WebFXMenuItem("Exporting", null, "Export tools", myMenu44 ));
425 myMenu40.add(new WebFXMenuItem("Status", "http://localhost/freeside/view/Status.html", "System status" ));
426 myMenu40.width = 256;
428 myBar.add(new WebFXMenuButton('Tools', null, 'Tools', myMenu40 ));
431 var myMenu45 = new WebFXMenu;
432 myMenu45.emptyText = '';
433 myMenu45.add(new WebFXMenuItem("Settings", "http://localhost/freeside/config/config-view.cgi", "" ));
434 myMenu45.add(new WebFXMenuSeparator());
435 var myMenu46 = new WebFXMenu;
436 myMenu46.emptyText = '';
437 myMenu46.add(new WebFXMenuItem("Agent types", "http://localhost/freeside/browse/agent_type.cgi", "Agent types define groups of package definitions that you can then assign to particular agents" ));
438 myMenu46.add(new WebFXMenuItem("Agents", "http://localhost/freeside/browse/agent.cgi", "Agents are resellers of your service. Agents may be limited to a subset of your full offerings (via their type)" ));
439 myMenu46.add(new WebFXMenuItem("Agent payment gateways", "http://localhost/freeside/browse/payment_gateway.html", "Credit card and electronic check processors for agent overrides" ));
440 myMenu46.width = 256;
442 myMenu45.add(new WebFXMenuItem("Companies", null, "", myMenu46 ));
443 var myMenu47 = new WebFXMenu;
444 myMenu47.emptyText = '';
445 myMenu47.add(new WebFXMenuItem("Sales People", "http://localhost/freeside/browse/sales.html", "Sales people bring in new business." ));
446 myMenu47.width = 256;
448 myMenu45.add(new WebFXMenuItem("Sales People", null, "", myMenu47 ));
449 var myMenu48 = new WebFXMenu;
450 myMenu48.emptyText = '';
451 myMenu48.add(new WebFXMenuItem("Employees", "http://localhost/freeside/browse/access_user.html", "Setup internal users" ));
452 myMenu48.add(new WebFXMenuItem("Employee groups", "http://localhost/freeside/browse/access_group.html", "Employee groups allow you to control access to the backend" ));
453 myMenu48.add(new WebFXMenuItem("Installer availability", "http://localhost/freeside/browse/sched_item.html", "Installer availability" ));
454 myMenu48.width = 256;
456 myMenu45.add(new WebFXMenuItem("Employees", null, "", myMenu48 ));
457 myMenu45.add(new WebFXMenuSeparator());
458 var myMenu49 = new WebFXMenu;
459 myMenu49.emptyText = '';
460 myMenu49.add(new WebFXMenuItem("Customer tags", "http://localhost/freeside/browse/part_tag.html", "" ));
461 myMenu49.add(new WebFXMenuItem("Customer classes", "http://localhost/freeside/browse/cust_class.html", "Customer classes define groups of customers for reporting." ));
462 myMenu49.add(new WebFXMenuItem("Customer categories", "http://localhost/freeside/browse/cust_category.html", "Customer categories define groups of customer classes." ));
463 myMenu49.add(new WebFXMenuSeparator());
464 myMenu49.add(new WebFXMenuItem("Contact types", "http://localhost/freeside/browse/contact_class.html", "" ));
465 myMenu49.width = 256;
467 myMenu45.add(new WebFXMenuItem("Customers", null, "", myMenu49 ));
468 var myMenu50 = new WebFXMenu;
469 myMenu50.emptyText = '';
470 myMenu50.add(new WebFXMenuItem("Package definitions", "http://localhost/freeside/browse/part_pkg.cgi", "One or more services are grouped together into a package and given pricing information. Customers purchase packages, not services" ));
471 myMenu50.add(new WebFXMenuItem("Package classes", "http://localhost/freeside/browse/pkg_class.html", "Package classes define groups of packages, for taxation, ordering convenience and reporting." ));
472 myMenu50.add(new WebFXMenuItem("Package categories", "http://localhost/freeside/browse/pkg_category.html", "Package categories define groups of package classes, for invoice sections." ));
473 myMenu50.add(new WebFXMenuItem("Package report classes", "http://localhost/freeside/browse/part_pkg_report_option.html", "Package classes define optional groups of packages for reporting only." ));
474 myMenu50.add(new WebFXMenuItem("Fees", "http://localhost/freeside/browse/part_fee.html", "" ));
475 myMenu50.add(new WebFXMenuItem("Discounts", "http://localhost/freeside/browse/discount.html", "" ));
476 myMenu50.add(new WebFXMenuItem("Discount classes", "http://localhost/freeside/browse/discount_class.html", "" ));
477 var myMenu51 = new WebFXMenu;
478 myMenu51.emptyText = '';
479 myMenu51.add(new WebFXMenuItem("Cancel reasons", "http://localhost/freeside/browse/reason.html?class=C", "Cancel reasons explain why a service was cancelled." ));
480 myMenu51.add(new WebFXMenuItem("Cancel reason types", "http://localhost/freeside/browse/reason_type.html?class=C", "Cancel reason types define groups of reasons." ));
481 myMenu51.add(new WebFXMenuItem("Suspend reasons", "http://localhost/freeside/browse/reason.html?class=S", "Suspend reasons explain why a service was suspended." ));
482 myMenu51.add(new WebFXMenuItem("Suspend reason types", "http://localhost/freeside/browse/reason_type.html?class=S", "Suspend reason types define groups of reasons." ));
483 myMenu51.width = 256;
485 myMenu50.add(new WebFXMenuItem("Cancel/Suspend Reasons", null, "", myMenu51 ));
486 myMenu50.width = 256;
488 myMenu45.add(new WebFXMenuItem("Packages", null, "", myMenu50 ));
489 var myMenu52 = new WebFXMenu;
490 myMenu52.emptyText = '';
491 myMenu52.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi", "Services are items you offer to your customers" ));
492 myMenu52.add(new WebFXMenuItem("Service classes", "http://localhost/freeside/browse/part_svc_class.html", "Services classes are user-defined, informational types for services" ));
493 myMenu52.add(new WebFXMenuItem("Provisioning exports", "http://localhost/freeside/browse/part_export.cgi", "Provisioning services to external machines, databases and APIs" ));
494 var myMenu53 = new WebFXMenu;
495 myMenu53.emptyText = '';
496 myMenu53.add(new WebFXMenuItem("Access numbers", "http://localhost/freeside/browse/svc_acct_pop.cgi", "Points of Presence" ));
497 myMenu53.width = 256;
499 myMenu52.add(new WebFXMenuItem("Dialup", null, "", myMenu53 ));
500 var myMenu54 = new WebFXMenu;
501 myMenu54.emptyText = '';
502 myMenu54.add(new WebFXMenuItem("Towers", "http://localhost/freeside/browse/tower.html", "Towers and sectors" ));
503 myMenu54.add(new WebFXMenuItem("Routers", "http://localhost/freeside/browse/router.cgi", "Broadband access routers" ));
504 myMenu54.add(new WebFXMenuItem("Address blocks", "http://localhost/freeside/browse/addr_block.cgi", "Manage address blocks and block assignments to broadband routers" ));
505 myMenu54.add(new WebFXMenuItem("Address ranges", "http://localhost/freeside/browse/addr_range.html", "Designate special address ranges" ));
506 myMenu54.width = 256;
508 myMenu52.add(new WebFXMenuItem("Wireless broadband", null, "", myMenu54 ));
509 var myMenu55 = new WebFXMenu;
510 myMenu55.emptyText = '';
511 myMenu55.add(new WebFXMenuItem("View/Edit phone device types", "http://localhost/freeside/browse/part_device.html", "Phone device types" ));
512 myMenu55.add(new WebFXMenuItem("View/Edit bulk DID vendors", "http://localhost/freeside/browse/did_vendor.html", "Bulk DID vendors" ));
513 myMenu55.add(new WebFXMenuItem("View/Edit Carriers", "http://localhost/freeside/browse/cdr_carrier.html", "Carriers" ));
514 myMenu55.width = 256;
516 myMenu52.add(new WebFXMenuItem("Phone", null, "", myMenu55 ));
517 var myMenu56 = new WebFXMenu;
518 myMenu56.emptyText = '';
519 myMenu56.add(new WebFXMenuItem("RADIUS Groups", "http://localhost/freeside/browse/radius_group.html", "Manage RADIUS groups" ));
520 myMenu56.add(new WebFXMenuItem("RADIUS Clients", "http://localhost/freeside/browse/nas.html", "Manage RADIUS clients" ));
521 myMenu56.width = 256;
523 myMenu52.add(new WebFXMenuItem("RADIUS", null, "", myMenu56 ));
524 var myMenu57 = new WebFXMenu;
525 myMenu57.emptyText = '';
526 myMenu57.add(new WebFXMenuItem("Cable providers", "http://localhost/freeside/browse/cable_provider.html", "" ));
527 myMenu57.add(new WebFXMenuItem("Cable modem models", "http://localhost/freeside/browse/cable_model.html", "" ));
528 myMenu57.width = 256;
530 myMenu52.add(new WebFXMenuItem("Cable", null, "", myMenu57 ));
531 var myMenu58 = new WebFXMenu;
532 myMenu58.emptyText = '';
533 myMenu58.add(new WebFXMenuItem("Alarm system vendors", "http://localhost/freeside/browse/alarm_system.html", "" ));
534 myMenu58.add(new WebFXMenuItem("Alarm system types", "http://localhost/freeside/browse/alarm_type.html", "" ));
535 myMenu58.add(new WebFXMenuItem("Alarm central stations", "http://localhost/freeside/browse/alarm_station.html", "" ));
536 myMenu58.width = 256;
538 myMenu52.add(new WebFXMenuItem("Alarm", null, "", myMenu58 ));
539 var myMenu59 = new WebFXMenu;
540 myMenu59.emptyText = '';
541 myMenu59.add(new WebFXMenuItem("Circuit types", "http://localhost/freeside/browse/circuit_type.html", "" ));
542 myMenu59.add(new WebFXMenuItem("Circuit providers", "http://localhost/freeside/browse/circuit_provider.html", "" ));
543 myMenu59.add(new WebFXMenuItem("Termination types", "http://localhost/freeside/browse/circuit_termination.html", "" ));
544 myMenu59.width = 256;
546 myMenu52.add(new WebFXMenuItem("Circuits", null, "", myMenu59 ));
547 myMenu52.add(new WebFXMenuItem("Hardware types", "http://localhost/freeside/browse/hardware_class.html", "Set up hardware type catalog" ));
548 myMenu52.width = 256;
550 myMenu45.add(new WebFXMenuItem("Services", null, "", myMenu52 ));
551 myMenu45.add(new WebFXMenuSeparator());
552 var myMenu60 = new WebFXMenu;
553 myMenu60.emptyText = '';
554 myMenu60.add(new WebFXMenuItem("Billing events", "http://localhost/freeside/browse/part_event.html", "Billing actions for customers, invoices and packages" ));
555 myMenu60.add(new WebFXMenuItem("Invoice configurations", "http://localhost/freeside/browse/invoice_conf.html", "Adjust invoice settings for special-purpose notices" ));
556 myMenu60.add(new WebFXMenuItem("Invoice templates", "http://localhost/freeside/browse/invoice_template.html", "Edit templates for HTML, plaintext and typeset invoices" ));
557 myMenu60.add(new WebFXMenuItem("Prepaid cards", "http://localhost/freeside/search/prepay_credit.html", "View outstanding cards, generate new cards" ));
558 var myMenu61 = new WebFXMenu;
559 myMenu61.emptyText = '';
560 myMenu61.add(new WebFXMenuItem("Rate plans", "http://localhost/freeside/browse/rate.cgi", "Manage rate plans" ));
561 myMenu61.add(new WebFXMenuItem("Regions and prefixes", "http://localhost/freeside/browse/rate_region.html", "Manage regions and prefixes" ));
562 myMenu61.add(new WebFXMenuItem("Usage classes", "http://localhost/freeside/browse/usage_class.html", "Usage classes define groups of usage for taxation." ));
563 myMenu61.add(new WebFXMenuItem("Time periods", "http://localhost/freeside/browse/rate_time.html", "Time periods define days and hours for rate plans" ));
564 myMenu61.add(new WebFXMenuItem("Edit rates with Excel", "http://localhost/freeside/misc/rate_edit_excel.html", "Download and edit rates with Excel, then upload changes." ));
565 myMenu61.add(new WebFXMenuSeparator());
566 myMenu61.add(new WebFXMenuItem("Tiering plans", "http://localhost/freeside/browse/rate_tier.html", "Rating tiers" ));
567 myMenu61.width = 256;
569 myMenu60.add(new WebFXMenuItem("Call rates and regions", null, "Manage rate plans, regions and prefixes for VoIP and call billing", myMenu61 ));
570 myMenu60.add(new WebFXMenuItem("Locales and tax rates", "http://localhost/freeside/browse/cust_main_county.cgi", "Change tax rates, or break down a country into states, or a state into counties and assign different tax rates to each" ));
571 myMenu60.add(new WebFXMenuItem("Tax classes", "http://localhost/freeside/browse/part_pkg_taxclass.html", "Tax classes" ));
572 myMenu60.add(new WebFXMenuItem("Credit reasons", "http://localhost/freeside/browse/reason.html?class=R", "Credit reasons explain why a credit was issued." ));
573 myMenu60.add(new WebFXMenuItem("Credit reason types", "http://localhost/freeside/browse/reason_type.html?class=R", "Credit reason types define groups of reasons." ));
574 myMenu60.width = 256;
576 myMenu45.add(new WebFXMenuItem("Billing", null, "", myMenu60 ));
577 myMenu45.add(new WebFXMenuSeparator());
578 var myMenu62 = new WebFXMenu;
579 myMenu62.emptyText = '';
580 myMenu62.add(new WebFXMenuItem("Message templates", "http://localhost/freeside/browse/msg_template.html", "Templates for customer notices" ));
581 myMenu62.add(new WebFXMenuItem("Advertising sources", "http://localhost/freeside/browse/part_referral.html", "Where a customer heard about your service." ));
582 myMenu62.add(new WebFXMenuItem("Custom fields", "http://localhost/freeside/browse/part_virtual_field.html", "Locally defined fields" ));
583 myMenu62.add(new WebFXMenuItem("Translation strings", "http://localhost/freeside/browse/msgcat.html", "Translations and other customizable labels for each locale" ));
584 myMenu62.add(new WebFXMenuItem("Inventory classes and inventory", "http://localhost/freeside/browse/inventory_class.html", "Setup inventory classes and stock inventory" ));
585 myMenu62.add(new WebFXMenuItem("Upload targets", "http://localhost/freeside/browse/upload_target.html", "Billing and payment upload destinations" ));
586 myMenu62.width = 256;
588 myMenu45.add(new WebFXMenuItem("Miscellaneous", null, "", myMenu62 ));
589 myMenu45.width = 256;
591 myBar.add(new WebFXMenuButton('Configuration', null, 'Configuration and setup', myMenu45 ));
594 var myMenu63 = new WebFXMenu;
595 myMenu63.emptyText = '';
596 myMenu63.add(new WebFXMenuItem("Billing documentation", "http://www.freeside.biz/mediawiki/index.php/Freeside:3:Documentation", "Freeside documentation" ));
597 myMenu63.add(new WebFXMenuItem("Ticketing documentation", "http://wiki.bestpractical.com/", "Request Tracker Wiki" ));
598 myMenu63.add(new WebFXMenuSeparator());
599 myMenu63.add(new WebFXMenuItem("About Freeside v3.8git", "javascript:about_freeside()", "" ));
600 myMenu63.add(new WebFXMenuItem("About RT v4.0.23", "http://www.bestpractical.com/rt", "Request Tracker Homepage" ));
601 myMenu63.width = 256;
603 myBar.add(new WebFXMenuButton('Help', null, '', myMenu63 ));
606 myBar.show( null, 'vertical' );
614 <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws.js"></SCRIPT>
615 <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_iframe.js"></SCRIPT>
616 <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_draggable.js"></SCRIPT>
617 <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_crossframe.js"></SCRIPT>
618 <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/iframecontentmws.js"></SCRIPT>
619 <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/ajaxcontentmws.js"></SCRIPT>
621 <SCRIPT TYPE="text/javascript">
623 function rs_init_object() {
626 A=new ActiveXObject("Msxml2.XMLHTTP");
629 A=new ActiveXObject("Microsoft.XMLHTTP");
634 if(!A && typeof XMLHttpRequest != "undefined")
635 A = new XMLHttpRequest();
637 alert("Can't create XMLHttpRequest object");
644 <SCRIPT TYPE="text/javascript">
647 // count args; build URL
648 var url = "http://localhost/freeside/loginout/logout.html";
650 var xmlhttp = rs_init_object();
651 xmlhttp.open("GET", url, false, "magic", "notyet");
652 xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
655 if (xmlhttp.readyState != 4) {
656 alert("Logout failed: readyState is " + xmlhttp.readyState);
660 if (xmlhttp.status != 200) {
661 alert("Logout failed: status is " + xmlhttp.status);
663 var data = xmlhttp.responseText;
664 // alert('received response: ' + data);
665 if ( data.indexOf("<b>System error</b>") > -1 ) {
667 if ( w = window.open("about:blank") ) {
668 w.document.write(data);
670 // popup blocking? should use an overlib popup instead
671 alert("Error popup disabled; try disabling popup blocking to see");
674 window.location = "http://localhost/freeside/loginout/logout.html";
685 <BODY BGCOLOR="#f8f8f8" onUnload="myclose()" STYLE="margin-top:0; margin-bottom:0; margin-left:0px; margin-right:0px">
686 <table width="100%" CELLPADDING=0 CELLSPACING=0 STYLE="padding-left:0px; padding-right:4px" CLASS="fshead">
688 <td BGCOLOR="#ffffff"><IMG BORDER=0 ALT="freeside" HEIGHT="36" SRC="http://localhost/freeside/view/REAL_logo.cgi"></td>
689 <td align=left BGCOLOR="#ffffff"> <!-- valign="top" -->
690 <font size=6>Freeside Test 3.8.1</font>
692 <td align=right valign=top BGCOLOR="#ffffff"><FONT SIZE="-1">Logged in as <b>test </b> <FONT SIZE="-2"><a href="javascript:void(0);" onClick="logout();">logout</a></FONT><br></FONT><FONT SIZE="-2"><a href="http://localhost/freeside/pref/pref.html" STYLE="color: #000000">Preferences</a>
698 <TABLE WIDTH="100%" CELLSPACING=0 CELLPADDING=0>
700 <link href="http://localhost/freeside/elements/freeside-menu.css" type="text/css" rel="stylesheet">
703 <TR CLASS="fsmenubar">
706 <TD COLSPAN="7" WIDTH="100%" STYLE="padding:1px 0px 0px 0px;border-top: 1px solid #7e0079" BGCOLOR="#cccccc">
707 <SCRIPT TYPE="text/javascript">
708 document.write(myBar);
714 <TR CLASS="fssearchbar">
716 <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
718 <FORM ACTION="http://localhost/freeside/search/prospect_main.html" METHOD="GET" STYLE="margin:0">
719 <INPUT NAME="search_prospect" TYPE="text" VALUE="(name, company or phone)" STYLE="width:155px" onFocus="clearhint_search_prospect(this);" onClick="clearhint_search_prospect(this);" CLASS="fstext"><BR>
720 <A HREF="http://localhost/freeside/search/report_prospect_main.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A>
721 <INPUT TYPE="submit" VALUE="Search prospects" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px;padding-left:1px;padding-right:1px">
726 <SCRIPT TYPE="text/javascript">
728 function clearhint_search_prospect (what) {
729 if ( what.value == '(name, company or phone)' )
737 <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
739 <FORM ACTION="http://localhost/freeside/search/cust_main.cgi" METHOD="POST" STYLE="margin:0">
740 <INPUT NAME="search_cust" TYPE="text" VALUE="(cust #, name, company or contact phone)" STYLE="width:246px" onFocus="clearhint_search_cust(this);" onClick="clearhint_search_cust(this);" CLASS="fstext"><BR>
741 <A HREF="http://localhost/freeside/search/report_cust_main.html" CLASS="fslink" STYLE="font-size: 11px">Advanced</A>
742 <INPUT TYPE="submit" VALUE="Search customers" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
747 <SCRIPT TYPE="text/javascript">
749 function clearhint_search_cust (what) {
750 if ( what.value == '(cust #, name, company or contact phone)' )
758 <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="center">
760 <SCRIPT TYPE="text/javascript">
762 function clearhint_search_address2 (what) {
763 if ( what.value == '(Unit #)' )
771 <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right">
773 <FORM ACTION="http://localhost/freeside/search/cust_bill.html" METHOD="GET" STYLE="margin:0;display:inline">
774 <INPUT NAME="invnum" TYPE="text" VALUE="(inv #)" STYLE="width:56px" onFocus="clearhint_search_invoice(this);" onClick="clearhint_search_invoice(this);" CLASS="fstext">
775 <A HREF="http://localhost/freeside/search/report_cust_bill.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A> <BR>
776 <INPUT TYPE="submit" VALUE="Search invoices" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px;padding-left:1px;padding-right:1px;margin-top:3px">
781 <SCRIPT TYPE="text/javascript">
783 function clearhint_search_invoice (what) {
784 if ( what.value == '(inv #)' )
792 <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
794 <FORM ACTION="http://localhost/freeside/search/cust_svc.html" METHOD="GET" STYLE="margin:0">
795 <INPUT NAME="search_svc" TYPE="text" VALUE="(user, email, ip, mac, domain or service phone)" STYLE="width:271px" onFocus="clearhint_search_svc(this);" onClick="clearhint_search_svc(this);" CLASS="fstext"><BR>
796 <A NOTYET="http://localhost/freeside/search/svc_Smarter.html" STYLE="color: #cccccc; font-size:11px">Advanced</A>
797 <INPUT TYPE="submit" VALUE="Search services" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
802 <SCRIPT TYPE="text/javascript">
804 function clearhint_search_svc (what) {
805 if ( what.value == '(user, email, ip, mac, domain or service phone)' )
813 <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px;padding-right:2px">
815 <FORM ACTION="http://localhost/freeside//rt/index.html" METHOD="GET" STYLE="margin:0">
816 <INPUT NAME="q" TYPE="text" VALUE="(ticket #, subject, email or fulltext:text)" STYLE="width:223px" onFocus="clearhint_search_ticket(this);" onClick="clearhint_search_ticket(this);" CLASS="fstext"><BR>
817 <A HREF="http://localhost/freeside//rt/Search/Build.html?NewQuery=1" CLASS="fslink" STYLE="font-size:11px">Advanced</A>
818 <INPUT TYPE="submit" VALUE="Search tickets" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
823 <SCRIPT TYPE="text/javascript">
825 function clearhint_search_ticket (what) {
826 if ( what.value == '(ticket #, subject, email or fulltext:text)' )
839 <TABLE WIDTH="100%" HEIGHT="100%" CELLSPACING=0 CELLPADDING=4>
843 <TD CLASS="background" HEIGHT="100%" VALIGN="top"> <!-- WIDTH="100%"> -->
846 Edit Customer: Olson Inc (Towne, Samara)
856 <FORM NAME = "CustomerForm"
858 ACTION = "http://localhost/freeside/edit/process/cust_main.cgi"
861 <INPUT TYPE="hidden" NAME="custnum" VALUE="135">
862 <INPUT TYPE="hidden" NAME="prospectnum" VALUE="">
864 Customer #<B>135</B> -
865 <B><FONT COLOR="#00CC00">
870 <FONT CLASS="fsinnerbox-title">Basics</FONT>
871 <TABLE CLASS="fsinnerbox">
874 <TD ALIGN="right">Residential</TD>
875 <TD><INPUT TYPE = "radio"
876 NAME = "residential_commercial"
877 ID = "residential_commercial_Residential"
878 VALUE = "Residential"
879 onChange = "rescom_changed(this)"
884 <TD ALIGN="right">Commercial</TD>
885 <TD><INPUT TYPE = "radio"
886 NAME = "residential_commercial"
887 ID = "residential_commercial_Commercial"
889 onChange = "rescom_changed(this)"
894 <SCRIPT TYPE="text/javascript">
896 function rescom_changed(what) {
897 if ( what.checked == (what.value == 'Commercial' ) ) {
898 document.getElementById('company_row').style.display = '';
899 document.getElementById('contacts_div').style.display = '';
900 document.getElementById('spouse_row').style.display = 'none';
902 if ( document.getElementById('company').value.length == 0 ) {
903 document.getElementById('company_row').style.display = 'none';
905 document.getElementById('contacts_div').style.display = 'none';
906 document.getElementById('spouse_row').style.display = '';
911 var ship_locked_agents = {};
913 'locationname', 'address1', 'city', 'state', 'zip', 'country',
914 'latitude', 'longitude', 'district'
917 function agent_changed(what) {
918 var agentnum = what.value;
922 if ( ship_locked_agents[agentnum] ) {
923 for(var x in ship_locked_agents[agentnum]) {
924 f['ship_'+x].value = ship_locked_agents[agentnum][x];
925 f['ship_'+x].disabled = true;
927 f['same'].checked = false;
928 f['same'].disabled = true;
930 for(var i=0; i<ship_fields.length; i++) {
932 if ( f['ship_'+x].disabled ) {
933 f['ship_'+x].value = f['old_ship_'+x].value;
935 f['ship_'+x].disabled = false;
937 f['same'].disabled = false;
939 samechanged(f['same']);
941 salesnum_agentnum_changed(what);
946 var myonload = function() {
948 rescom_changed(document.getElementById('residential_commercial_Residential'));
949 agent_changed(document.getElementById('agentnum'))
952 if ( window.addEventListener ) {
953 window.addEventListener('load', myonload);
954 } else if ( window.attachEvent ) {
955 window.attachEvent('onload', myonload);
969 <INPUT TYPE = "hidden"
982 <INPUT TYPE="hidden" NAME="agent_custid" VALUE="">
986 <INPUT TYPE="hidden" NAME="classnum" VALUE="">
992 <INPUT TYPE = "hidden"
1001 <SCRIPT TYPE="text/javascript">
1003 function rs_init_object() {
1006 A=new ActiveXObject("Msxml2.XMLHTTP");
1009 A=new ActiveXObject("Microsoft.XMLHTTP");
1014 if(!A && typeof XMLHttpRequest != "undefined")
1015 A = new XMLHttpRequest();
1017 alert("Can't create XMLHttpRequest object");
1025 <SCRIPT TYPE="text/javascript">
1028 function get_sales() {
1029 // count args; build URL
1030 var url = "http://localhost/freeside/misc/sales.cgi?";
1031 var a = get_sales.arguments;
1035 var content = 'sub=get_sales';
1036 if ( a && typeof a == 'object' && a[0].constructor == Array ) {
1041 len = args.length - 1;
1043 for (var i = 0; i < len; i++)
1044 content = content + "&arg=" + escape(args[i]);
1045 content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs
1047 if ( 'GET' == 'GET' ) {
1048 url = url + content;
1051 //alert('GET ' + url);
1053 var xmlhttp = rs_init_object();
1054 xmlhttp.open("GET", url, true);
1056 xmlhttp.onreadystatechange = function() {
1057 if (xmlhttp.readyState != 4)
1060 if (xmlhttp.status != 200) {
1061 if ( xmlhttp.status != 0 ) {
1062 //not warning on the 0 errors, they pop up when navagating away
1064 alert(xmlhttp.status + " status connecting to " + url);
1067 var data = xmlhttp.responseText;
1068 //alert('received response: ' + data);
1069 if ( data.indexOf("<b>System error</b>") > -1 ) {
1070 // trim this a little
1071 var end = data.indexOf('<a href="#raw">') - 1;
1072 data = data.substring(0, end);
1075 WIDTH, 480, MIDX, 0, MIDY, 0,
1076 CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
1077 CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
1080 //if ( w = window.open("about:blank") ) {
1081 // w.document.write(data);
1083 // // popup blocking? should use an overlib popup instead
1084 // alert("Error popup disabled; try disabling popup blocking to see");
1087 // invoke the callback
1088 a[a.length-1](data);
1093 if ( 'GET' == 'POST' ) {
1095 xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
1096 xmlhttp.send(content);
1100 xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
1105 //rs_debug("x_$func_name url = " + url);
1106 //rs_debug("x_$func_name waiting..");
1112 <SCRIPT TYPE="text/javascript">
1115 function salesnum_opt(what, value, text) {
1116 var optionName = new Option(text, value, false, false);
1117 var length = what.length;
1118 what.options[length] = optionName;
1121 function salesnum_agentnum_changed(what) {
1122 what.form.salesnum.disabled = 'disabled'; //disable sales dropdown
1124 if ( what.type == 'hidden' ) {
1125 agentnum = what.value;
1127 agentnum = what.options[what.selectedIndex].value;
1130 function update_salesnum(sales) {
1132 if ( what.form.salesnum.type == 'hidden' ) {
1133 what.form.salesnum.disabled = ''; //re-enable sales dropdown
1137 // save the current salesnum
1138 var salesnum = what.form.salesnum.value;
1140 // blank the current sales people
1141 for ( var i = what.form.salesnum.length; i>= 0; i-- )
1142 what.form.salesnum.options[i] = null;
1144 // add the new sales people
1147 salesnum_opt( what.form.salesnum,
1152 var salesArray = eval('(' + sales + ')' );
1153 for ( var s = 0; s < salesArray.length; s=s+2 ) {
1154 //surely this should be some kind of JSON structure
1155 var salesLabel = salesArray[s+1];
1156 salesnum_opt( what.form.salesnum, salesArray[s], salesLabel );
1159 what.form.salesnum.disabled = ''; //re-enable sales dropdown
1161 //restore salesnum if possible
1162 what.form.salesnum.value = salesnum;
1166 get_sales( agentnum,
1172 var myonload = function() {
1174 salesnum_agentnum_changed(document.getElementById('agentnum'));
1177 if ( window.addEventListener ) {
1178 window.addEventListener('load', myonload);
1179 } else if ( window.attachEvent ) {
1180 window.attachEvent('onload', myonload);
1190 <INPUT TYPE="hidden" NAME="refnum" VALUE="1">
1196 <TD ALIGN="right">Referring customer</TD>
1198 <INPUT TYPE="hidden" NAME="referral_custnum" ID="referral_custnum" VALUE="">
1200 <!-- some false laziness w/ misc/batch-cust_pay.html, though not as bad as i'd thought at first... -->
1202 <INPUT TYPE = "text"
1203 NAME = "referral_custnum_search"
1204 ID = "referral_custnum_search"
1206 VALUE="(cust #, name or company)"
1207 onFocus="clearhint_referral_custnum_search(this);"
1208 onClick="clearhint_referral_custnum_search(this);"
1209 onChange="smart_referral_custnum_search(this);"
1213 <SELECT NAME="referral_custnum_select" ID="referral_custnum_select" STYLE="color:#ff0000; display:none" onChange="select_referral_custnum(this);">
1216 <SCRIPT TYPE="text/javascript">
1218 function rs_init_object() {
1221 A=new ActiveXObject("Msxml2.XMLHTTP");
1224 A=new ActiveXObject("Microsoft.XMLHTTP");
1229 if(!A && typeof XMLHttpRequest != "undefined")
1230 A = new XMLHttpRequest();
1232 alert("Can't create XMLHttpRequest object");
1240 <SCRIPT TYPE="text/javascript">
1243 function smart_search() {
1244 // count args; build URL
1245 var url = "http://localhost/freeside/misc/xmlhttp-cust_main-search.cgi?";
1246 var a = smart_search.arguments;
1250 var content = 'sub=smart_search';
1251 if ( a && typeof a == 'object' && a[0].constructor == Array ) {
1256 len = args.length - 1;
1258 for (var i = 0; i < len; i++)
1259 content = content + "&arg=" + escape(args[i]);
1260 content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs
1262 if ( 'GET' == 'GET' ) {
1263 url = url + content;
1266 //alert('GET ' + url);
1268 var xmlhttp = rs_init_object();
1269 xmlhttp.open("GET", url, true);
1271 xmlhttp.onreadystatechange = function() {
1272 if (xmlhttp.readyState != 4)
1275 if (xmlhttp.status != 200) {
1276 if ( xmlhttp.status != 0 ) {
1277 //not warning on the 0 errors, they pop up when navagating away
1279 alert(xmlhttp.status + " status connecting to " + url);
1282 var data = xmlhttp.responseText;
1283 //alert('received response: ' + data);
1284 if ( data.indexOf("<b>System error</b>") > -1 ) {
1285 // trim this a little
1286 var end = data.indexOf('<a href="#raw">') - 1;
1287 data = data.substring(0, end);
1290 WIDTH, 480, MIDX, 0, MIDY, 0,
1291 CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
1292 CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
1295 //if ( w = window.open("about:blank") ) {
1296 // w.document.write(data);
1298 // // popup blocking? should use an overlib popup instead
1299 // alert("Error popup disabled; try disabling popup blocking to see");
1302 // invoke the callback
1303 a[a.length-1](data);
1308 if ( 'GET' == 'POST' ) {
1310 xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
1311 xmlhttp.send(content);
1315 xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
1320 //rs_debug("x_$func_name url = " + url);
1321 //rs_debug("x_$func_name waiting..");
1328 <SCRIPT TYPE="text/javascript">
1330 function clearhint_referral_custnum_search (what) {
1332 what.style.color = '#000000';
1334 if ( what.value == '(cust #, name or company)' )
1337 if ( what.value.indexOf('Customer not found: ') == 0 )
1338 what.value = what.value.substr(20);
1342 var referral_custnum_search_active = false;
1344 function smart_referral_custnum_search(what) {
1346 if ( referral_custnum_search_active )
1349 var customer = what.value;
1351 if ( customer == 'searching...' || customer == ''
1352 || customer.indexOf('Customer not found: ') == 0 )
1355 if ( what.getAttribute('magic') == 'nosearch' ) {
1356 what.setAttribute('magic', '');
1360 //what.value = 'searching...'
1361 what.disabled = true;
1362 what.style.color= '#000000';
1363 what.style.backgroundColor = '#dddddd';
1365 var customer_select = document.getElementById('referral_custnum_select');
1367 //alert("search for customer " + customer);
1369 function referral_custnum_search_update(customers) {
1371 //alert('customers returned: ' + customers);
1373 var customerArray = eval('(' + customers + ')');
1375 what.disabled = false;
1376 what.style.backgroundColor = '#ffffff';
1378 if ( customerArray.length == 0 ) {
1380 what.form.referral_custnum.value = '';
1382 what.value = 'Customer not found: ' + what.value;
1383 what.style.color = '#ff0000';
1385 what.style.display = '';
1386 customer_select.style.display = 'none';
1388 } else if ( customerArray.length == 1 ) {
1390 //alert('one customer found: ' + customerArray[0]);
1392 what.form.referral_custnum.value = customerArray[0][0];
1393 what.value = customerArray[0][1];
1395 what.style.display = '';
1396 customer_select.style.display = 'none';
1400 //alert('multiple customers found, have to create select dropdown');
1402 //blank the current list
1403 for ( var i = customer_select.length; i >= 0; i-- )
1404 customer_select.options[i] = null;
1406 opt(customer_select, '', 'Multiple customers match "' + customer + '" - select one', '#ff0000');
1408 //add the multiple customers
1409 for ( var s = 0; s < customerArray.length; s++ )
1410 opt(customer_select, customerArray[s][0], customerArray[s][1], '#000000');
1412 opt(customer_select, 'cancel', '(Edit search string)', '#000000');
1414 what.style.display = 'none';
1415 customer_select.style.display = '';
1419 referral_custnum_search_active = false;
1423 referral_custnum_search_active = true;
1425 smart_search( customer, referral_custnum_search_update );
1430 function select_referral_custnum (what) {
1432 var custnum = what.options[what.selectedIndex].value;
1433 var customer = what.options[what.selectedIndex].text;
1435 var customer_obj = document.getElementById('referral_custnum_search');
1437 if ( custnum == '' ) {
1438 //what.style.color = '#ff0000';
1440 } else if ( custnum == 'cancel' ) {
1442 customer_obj.style.color = '#000000';
1444 what.style.display = 'none';
1445 customer_obj.style.display = '';
1446 customer_obj.focus();
1450 what.form.referral_custnum.value = custnum;
1452 customer_obj.value = customer;
1453 customer_obj.style.color = '#000000';
1455 what.style.display = 'none';
1456 customer_obj.style.display = '';
1462 function opt(what,value,text,color) {
1463 var optionName = new Option(text, value, false, false);
1464 optionName.style.color = color;
1465 var length = what.length;
1466 what.options[length] = optionName;
1476 <INPUT TYPE="hidden" NAME="edit_subject" VALUE="">
1478 <INPUT TYPE="hidden" NAME="calling_list_exempt" VALUE="">
1486 <TD STYLE="width:650px">
1487 <FONT CLASS="fsinnerbox-title">Billing address</FONT>
1488 <TABLE CLASS="fsinnerbox" WIDTH="100%">
1491 <TD CLASS="required label">Contact name</TD>
1492 <TD COLSPAN=6 STYLE="vertical-align:top">
1494 <DIV STYLE="display: inline-block">
1495 <INPUT TYPE="text" NAME="last" VALUE="Towne" ,>
1496 <BR><FONT SIZE=-1>Last</FONT>
1500 <DIV STYLE="display: inline-block">
1501 <INPUT TYPE="text" NAME="first" VALUE="Samara" >
1502 <BR><FONT SIZE=-1>First</FONT>
1505 <INPUT TYPE="hidden" NAME="ss" VALUE="">
1510 <TR ID="company_row" >
1511 <TD ALIGN="right">Company</TD>
1512 <TD COLSPAN=6><INPUT TYPE="text" NAME="company" ID="company" SIZE=60
1520 <INPUT TYPE = "hidden"
1521 NAME = "bill_locationname"
1522 ID = "bill_locationname"
1530 <TH STYLE="width:16ex" ALIGN="right"><font color="#ff0000">*</font> Address</TH>
1532 <INPUT TYPE = "text"
1533 NAME = "bill_address1"
1534 ID = "bill_address1"
1535 VALUE = "46706 Kadin Hill #780"
1546 <TD ALIGN="right"><FONT ID="bill_address2_required" color="#ff0000" STYLE="visibility:hidden">*</FONT> <FONT ID="bill_address2_label" STYLE="visibility:hidden"><B>Unit #</B></FONT></TD>
1548 <INPUT TYPE = "text"
1549 NAME = "bill_address2"
1550 ID = "bill_address2"
1551 VALUE = "Trailer W 2-E"
1564 <font color="#ff0000">*</font> City
1569 <SCRIPT TYPE="text/javascript">
1571 function rs_init_object() {
1574 A=new ActiveXObject("Msxml2.XMLHTTP");
1577 A=new ActiveXObject("Microsoft.XMLHTTP");
1582 if(!A && typeof XMLHttpRequest != "undefined")
1583 A = new XMLHttpRequest();
1585 alert("Can't create XMLHttpRequest object");
1593 <SCRIPT TYPE="text/javascript">
1596 function bill_get_cities() {
1597 // count args; build URL
1598 var url = "http://localhost/freeside/misc/cities.cgi?";
1599 var a = bill_get_cities.arguments;
1603 var content = 'sub=bill_get_cities';
1604 if ( a && typeof a == 'object' && a[0].constructor == Array ) {
1609 len = args.length - 1;
1611 for (var i = 0; i < len; i++)
1612 content = content + "&arg=" + escape(args[i]);
1613 content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs
1615 if ( 'GET' == 'GET' ) {
1616 url = url + content;
1619 //alert('GET ' + url);
1621 var xmlhttp = rs_init_object();
1622 xmlhttp.open("GET", url, true);
1624 xmlhttp.onreadystatechange = function() {
1625 if (xmlhttp.readyState != 4)
1628 if (xmlhttp.status != 200) {
1629 if ( xmlhttp.status != 0 ) {
1630 //not warning on the 0 errors, they pop up when navagating away
1632 alert(xmlhttp.status + " status connecting to " + url);
1635 var data = xmlhttp.responseText;
1636 //alert('received response: ' + data);
1637 if ( data.indexOf("<b>System error</b>") > -1 ) {
1638 // trim this a little
1639 var end = data.indexOf('<a href="#raw">') - 1;
1640 data = data.substring(0, end);
1643 WIDTH, 480, MIDX, 0, MIDY, 0,
1644 CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
1645 CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
1648 //if ( w = window.open("about:blank") ) {
1649 // w.document.write(data);
1651 // // popup blocking? should use an overlib popup instead
1652 // alert("Error popup disabled; try disabling popup blocking to see");
1655 // invoke the callback
1656 a[a.length-1](data);
1661 if ( 'GET' == 'POST' ) {
1663 xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
1664 xmlhttp.send(content);
1668 xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
1673 //rs_debug("x_$func_name url = " + url);
1674 //rs_debug("x_$func_name waiting..");
1681 <SCRIPT TYPE="text/javascript">
1683 function opt(what,value,text) {
1684 var optionName = new Option(text, value, false, false);
1685 var length = what.length;
1686 what.options[length] = optionName;
1689 var saved_bill_city= 'Owensboro';
1691 function bill_county_changed(what, callback) {
1693 what.form.bill_city_select.disabled = 'disabled';
1695 county = what.options[what.selectedIndex].value;
1696 state = what.form.bill_state.options[what.form.bill_state.selectedIndex].value;
1697 country = what.form.bill_country.options[what.form.bill_country.selectedIndex].value;
1699 function bill_update_cities(cities) {
1701 // blank the current city list
1702 for ( var i = what.form.bill_city_select.length; i >= 0; i-- )
1703 what.form.bill_city_select.options[i] = null;
1706 // add the new cities
1707 var citiesArray = eval('(' + cities + ')' );
1709 for ( var s = 0; s < citiesArray.length; s++ ) {
1710 var cityLabel = citiesArray[s];
1711 if ( cityLabel == "" )
1712 cityLabel = '(n/a)';
1713 opt(what.form.bill_city_select, citiesArray[s], cityLabel);
1716 if ( citiesArray.length > 1 || (citiesArray[0] && citiesArray[0].length) ){
1717 // turn off the text city, turn on the select
1718 saved_bill_city = what.form.bill_city.value;
1719 bill_city_select_changed(what.form.bill_city_select);
1720 what.form.bill_city.style.display = 'none';
1721 what.form.bill_city_select.style.display = '';
1722 } else if ( what.form.bill_city.style.display == 'none' ) {
1723 // turn on the text city, turn off the select
1724 what.form.bill_city.value = saved_bill_city;
1725 what.form.bill_city.style.display = '';
1726 what.form.bill_city_select.style.display = 'none';
1729 what.form.bill_city_select.disabled = '';
1732 if ( callback != null )
1736 // go get the new cities
1737 bill_get_cities( county, state, country, bill_update_cities );
1741 function bill_city_select_changed(what) {
1742 what.form.bill_city.value = what.options[what.selectedIndex].value;
1748 <INPUT TYPE = "text"
1758 <SELECT NAME = "bill_city_select"
1759 ID = "bill_city_select"
1760 onChange = "bill_city_select_changed(this); "
1762 STYLE="display:none"
1775 <TH ALIGN="right" WIDTH="1" ID="bill_countylabel" STYLE="display:none"><font color="#ff0000">*</font> County</TH>
1777 <SCRIPT TYPE="text/javascript">
1778 function bill_state_changed(what) {
1782 <SELECT NAME = "bill_county"
1784 STYLE = "display:none"
1786 <OPTION SELECTED VALUE="">
1791 <TH ALIGN="right" WIDTH="1"><font color="#ff0000">*</font> State</TH>
1794 <SELECT NAME = "bill_state"
1796 onChange = "bill_state_changed(this); "
1803 <OPTION VALUE="AK">AK
1806 <OPTION VALUE="AL">AL
1809 <OPTION VALUE="AR">AR
1812 <OPTION VALUE="AS">AS
1815 <OPTION VALUE="AZ">AZ
1818 <OPTION VALUE="CA">CA
1821 <OPTION VALUE="CO">CO
1824 <OPTION VALUE="CT">CT
1827 <OPTION VALUE="DC">DC
1830 <OPTION VALUE="DE">DE
1833 <OPTION VALUE="FL">FL
1836 <OPTION VALUE="GA">GA
1839 <OPTION VALUE="GU">GU
1842 <OPTION VALUE="HI">HI
1845 <OPTION VALUE="IA">IA
1848 <OPTION VALUE="ID">ID
1851 <OPTION VALUE="IL">IL
1854 <OPTION VALUE="IN">IN
1857 <OPTION VALUE="KS" SELECTED>KS
1860 <OPTION VALUE="KY">KY
1863 <OPTION VALUE="LA">LA
1866 <OPTION VALUE="MA">MA
1869 <OPTION VALUE="MD">MD
1872 <OPTION VALUE="ME">ME
1875 <OPTION VALUE="MI">MI
1878 <OPTION VALUE="MN">MN
1881 <OPTION VALUE="MO">MO
1884 <OPTION VALUE="MP">MP
1887 <OPTION VALUE="MS">MS
1890 <OPTION VALUE="MT">MT
1893 <OPTION VALUE="NC">NC
1896 <OPTION VALUE="ND">ND
1899 <OPTION VALUE="NE">NE
1902 <OPTION VALUE="NH">NH
1905 <OPTION VALUE="NJ">NJ
1908 <OPTION VALUE="NM">NM
1911 <OPTION VALUE="NV">NV
1914 <OPTION VALUE="NY">NY
1917 <OPTION VALUE="OH">OH
1920 <OPTION VALUE="OK">OK
1923 <OPTION VALUE="OR">OR
1926 <OPTION VALUE="PA">PA
1929 <OPTION VALUE="PR">PR
1932 <OPTION VALUE="RI">RI
1935 <OPTION VALUE="SC">SC
1938 <OPTION VALUE="SD">SD
1941 <OPTION VALUE="TN">TN
1944 <OPTION VALUE="TX">TX
1947 <OPTION VALUE="UM">UM
1950 <OPTION VALUE="UT">UT
1953 <OPTION VALUE="VA">VA
1956 <OPTION VALUE="VI">VI
1959 <OPTION VALUE="VT">VT
1962 <OPTION VALUE="WA">WA
1965 <OPTION VALUE="WI">WI
1968 <OPTION VALUE="WV">WV
1971 <OPTION VALUE="WY">WY
1980 <TH ALIGN="right" WIDTH="1"><font color="#ff0000">*</font> Zip</TH>
1982 <INPUT TYPE = "text"
1995 <TH ALIGN="right"><font color="#ff0000">*</font> Country</TH>
1997 <SCRIPT TYPE="text/javascript">
1999 function rs_init_object() {
2002 A=new ActiveXObject("Msxml2.XMLHTTP");
2005 A=new ActiveXObject("Microsoft.XMLHTTP");
2010 if(!A && typeof XMLHttpRequest != "undefined")
2011 A = new XMLHttpRequest();
2013 alert("Can't create XMLHttpRequest object");
2021 <SCRIPT TYPE="text/javascript">
2024 function bill_get_states() {
2025 // count args; build URL
2026 var url = "http://localhost/freeside/misc/states.cgi?";
2027 var a = bill_get_states.arguments;
2031 var content = 'sub=bill_get_states';
2032 if ( a && typeof a == 'object' && a[0].constructor == Array ) {
2037 len = args.length - 1;
2039 for (var i = 0; i < len; i++)
2040 content = content + "&arg=" + escape(args[i]);
2041 content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs
2043 if ( 'GET' == 'GET' ) {
2044 url = url + content;
2047 //alert('GET ' + url);
2049 var xmlhttp = rs_init_object();
2050 xmlhttp.open("GET", url, true);
2052 xmlhttp.onreadystatechange = function() {
2053 if (xmlhttp.readyState != 4)
2056 if (xmlhttp.status != 200) {
2057 if ( xmlhttp.status != 0 ) {
2058 //not warning on the 0 errors, they pop up when navagating away
2060 alert(xmlhttp.status + " status connecting to " + url);
2063 var data = xmlhttp.responseText;
2064 //alert('received response: ' + data);
2065 if ( data.indexOf("<b>System error</b>") > -1 ) {
2066 // trim this a little
2067 var end = data.indexOf('<a href="#raw">') - 1;
2068 data = data.substring(0, end);
2071 WIDTH, 480, MIDX, 0, MIDY, 0,
2072 CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
2073 CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
2076 //if ( w = window.open("about:blank") ) {
2077 // w.document.write(data);
2079 // // popup blocking? should use an overlib popup instead
2080 // alert("Error popup disabled; try disabling popup blocking to see");
2083 // invoke the callback
2084 a[a.length-1](data);
2089 if ( 'GET' == 'POST' ) {
2091 xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
2092 xmlhttp.send(content);
2096 xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
2101 //rs_debug("x_$func_name url = " + url);
2102 //rs_debug("x_$func_name waiting..");
2109 <SCRIPT TYPE="text/javascript">
2111 function opt(what,value,text) {
2112 var optionName = new Option(text, value, false, false);
2113 var length = what.length;
2114 what.options[length] = optionName;
2117 function bill_country_changed(what, callback) {
2119 what.form.bill_state.disabled = 'disabled';
2121 country = what.options[what.selectedIndex].value;
2123 function bill_update_states(states) {
2125 // blank the current state list
2126 for ( var i = what.form.bill_state.length; i >= 0; i-- )
2127 what.form.bill_state.options[i] = null;
2129 // add the new states
2130 var statesArray = eval('(' + states + ')' );
2132 for ( var s = 0; s < statesArray.length; s=s+2 ) {
2133 var stateLabel = statesArray[s+1];
2134 if ( stateLabel == "" )
2135 stateLabel = '(n/a)';
2136 opt(what.form.bill_state, statesArray[s], stateLabel);
2139 what.form.bill_state.disabled = '';
2142 if ( callback != null ) {
2145 bill_state_changed(what.form.bill_state);
2149 // go get the new states
2150 bill_get_states( country, bill_update_states );
2157 <SELECT NAME = "bill_country"
2159 onChange = "bill_country_changed(this); "
2193 >American Samoa (AS)
2218 >Antigua and Barbuda (AG)
2303 >Bolivia, Plurinational State of (BO)
2308 >Bonaire, Sint Eustatius and Saba (BQ)
2313 >Bosnia and Herzegovina (BA)
2333 >British Indian Ocean Territory (IO)
2338 >Brunei Darussalam (BN)
2378 >Cayman Islands (KY)
2383 >Central African Republic (CF)
2403 >Christmas Island (CX)
2408 >Cocos (Keeling) Islands (CC)
2428 >Congo (The Democratic Republic of the) (CD)
2468 >Czech Republic (CZ)
2488 >Dominican Republic (DO)
2508 >Equatorial Guinea (GQ)
2528 >Falkland Islands (The) [Malvinas] (FK)
2558 >French Polynesia (PF)
2563 >French Southern Territories (TF)
2653 >Heard Island and McDonald Islands (HM)
2658 >Holy See (The) [Vatican City State] (VA)
2693 >Iran, The Islamic Republic of (IR)
2758 >Korea, The Democratic People's Republic of (KP)
2763 >Korea, The Republic of (KR)
2778 >Lao People's Democratic Republic (LA)
2828 >Macedonia, The former Yugoslav Republic of (MK)
2863 >Marshall Islands (MH)
2893 >Micronesia, The Federated States of (FM)
2898 >Moldova, The Republic of (MD)
2988 >Norfolk Island (NF)
2993 >Northern Mariana Islands (MP)
3018 >Palestine, State of (PS)
3028 >Papua New Guinea (PG)
3083 >Russian Federation (RU)
3093 >Saint Barthelemy (BL)
3098 >Saint Helena, Ascension and Tristan da Cunha (SH)
3103 >Saint Kitts and Nevis (KN)
3113 >Saint Martin (French part) (MF)
3118 >Saint Pierre and Miquelon (PM)
3123 >Saint Vincent and the Grenadines (VC)
3138 >Sao Tome and Principe (ST)
3173 >Sint Maarten (Dutch part) (SX)
3188 >Solomon Islands (SB)
3203 >South Georgia and the South Sandwich Islands (GS)
3233 >Svalbard and Jan Mayen (SJ)
3253 >Syrian Arab Republic (SY)
3258 >Taiwan (Province of China) (TW)
3268 >Tanzania, United Republic of (TZ)
3298 >Trinidad and Tobago (TT)
3318 >Turks and Caicos Islands (TC)
3338 >United Arab Emirates (AE)
3343 >United Kingdom (GB)
3348 >United States Minor Outlying Islands (UM)
3368 >Venezuela, Bolivarian Republic of (VE)
3378 >Virgin Islands (British) (VG)
3383 >Virgin Islands (U.S.) (VI)
3388 >Wallis and Futuna (WF)
3393 >Western Sahara (EH)
3417 <TD ALIGN="right">Latitude</TD>
3419 <INPUT TYPE = "text"
3420 NAME = "bill_latitude"
3421 ID = "bill_latitude"
3422 VALUE = "38.5000000"
3427 <INPUT TYPE = "text"
3428 NAME = "bill_longitude"
3429 ID = "bill_longitude"
3430 VALUE = "-121.5000000"
3436 <INPUT TYPE = "hidden"
3437 NAME = "bill_coord_auto"
3438 ID = "bill_coord_auto"
3443 <INPUT TYPE = "hidden"
3444 NAME = "bill_geocode"
3450 <INPUT TYPE = "hidden"
3451 NAME = "bill_censustract"
3452 ID = "bill_censustract"
3457 <INPUT TYPE = "hidden"
3458 NAME = "bill_censusyear"
3459 ID = "bill_censusyear"
3465 <TD ALIGN="right">Census tract</TD>
3467 <INPUT TYPE="text" SIZE=15
3468 ID="bill_enter_censustract"
3469 NAME="bill_enter_censustract"
3474 <INPUT TYPE = "hidden"
3475 NAME = "bill_district"
3476 ID = "bill_district"
3482 <INPUT TYPE = "hidden"
3483 NAME = "old_bill_address1"
3484 ID = "old_bill_address1"
3485 VALUE = "46706 Kadin Hill #780"
3489 <INPUT TYPE = "hidden"
3490 NAME = "old_bill_city"
3491 ID = "old_bill_city"
3496 <INPUT TYPE = "hidden"
3497 NAME = "old_bill_state"
3498 ID = "old_bill_state"
3503 <INPUT TYPE = "hidden"
3504 NAME = "old_bill_country"
3505 ID = "old_bill_country"
3510 <INPUT TYPE = "hidden"
3511 NAME = "old_bill_zip"
3517 <INPUT TYPE = "hidden"
3518 NAME = "old_bill_latitude"
3519 ID = "old_bill_latitude"
3520 VALUE = "38.5000000"
3524 <INPUT TYPE = "hidden"
3525 NAME = "old_bill_longitude"
3526 ID = "old_bill_longitude"
3527 VALUE = "-121.5000000"
3531 <INPUT TYPE = "hidden"
3532 NAME = "old_bill_censustract"
3533 ID = "old_bill_censustract"
3538 <INPUT TYPE = "hidden"
3539 NAME = "old_bill_district"
3540 ID = "old_bill_district"
3545 <INPUT TYPE = "hidden"
3546 NAME = "old_bill_addr_clean"
3547 ID = "old_bill_addr_clean"
3552 <INPUT TYPE = "hidden"
3553 NAME = "bill_cachenum"
3554 ID = "bill_cachenum"
3559 <INPUT TYPE = "hidden"
3560 NAME = "bill_addr_clean"
3561 ID = "bill_addr_clean"
3567 <SCRIPT TYPE="text/javascript">
3569 var myonload = function() {
3571 var clear_coords_ids = [
3574 'bill_enter_censustract',
3578 function clear_coords() {
3579 for (var i=0; i < clear_coords_ids.length; i++) {
3580 var el = document.getElementById(clear_coords_ids[i]);
3586 var clear_coords_on_change = [
3594 for (var i=0; i < clear_coords_on_change.length; i++) {
3595 var el = document.getElementById(clear_coords_on_change[i]);
3596 if ( el.addEventListener ) {
3597 el.addEventListener('change', clear_coords);
3598 } else if ( el.attachEvent ) {
3599 el.attachEvent('onchange', clear_coords);
3602 function clear_censustract() {
3603 // if the user manually edits the census tract, clear the 'hard' census
3604 // tract field so that we can re-verify and present a confirmation popup
3606 // get the ID of the hidden censustract field
3607 var censustract_id = this.id.replace('enter_', '');
3608 var el = document.getElementById(censustract_id);
3613 var el = document.getElementById('bill_enter_censustract');
3615 if ( el.addEventListener ) {
3616 el.addEventListener('change', clear_censustract);
3617 } else if ( el.attachEvent ) {
3618 el.attachEvent('onchange', clear_censustract);
3624 if ( window.addEventListener ) {
3625 window.addEventListener('load', myonload);
3626 } else if ( window.attachEvent ) {
3627 window.attachEvent('onload', myonload);
3635 <TD VALIGN="top" ALIGN="right">Phones</TD>
3637 <TABLE CELLSPACING=0 CELLPADDING=0>
3642 VALUE="297-868-7684 x427"
3645 <BR><FONT SIZE=-1>Day Phone</FONT>
3651 VALUE="538-045-0820"
3654 <BR><FONT SIZE=-1>Night Phone</FONT>
3663 <BR><FONT SIZE=-1>Mobile</FONT>
3672 <TD ALIGN="right">Fax</TD>
3673 <TD><INPUT TYPE="text" NAME="fax" VALUE="" SIZE=18></TD>
3676 <INPUT TYPE="hidden" NAME="stateid" VALUE="">
3677 <INPUT TYPE="hidden" NAME="stateid_state" VALUE="KS">
3684 <TR><TD STYLE="height:40px"></TD></TR>
3686 <TD STYLE="width:650px">
3687 <FONT CLASS="fsinnerbox-title">Service address</FONT>
3688 <INPUT TYPE="checkbox"
3691 onclick="samechanged(this)"
3692 onkeyup="samechanged(this)"
3695 >same as billing address
3696 <DIV CLASS="fsinnerbox">
3697 <TABLE ID="table_ship_location" WIDTH="100%">
3701 <INPUT TYPE = "hidden"
3702 NAME = "ship_locationname"
3703 ID = "ship_locationname"
3711 <TH STYLE="width:16ex" ALIGN="right"><font color="#ff0000">*</font> Address</TH>
3713 <INPUT TYPE = "text"
3714 NAME = "ship_address1"
3715 ID = "ship_address1"
3716 VALUE = "46706 Kadin Hill #780"
3727 <TD ALIGN="right"><FONT ID="ship_address2_required" color="#ff0000" STYLE="visibility:hidden">*</FONT> <FONT ID="ship_address2_label" STYLE="visibility:hidden"><B>Unit #</B></FONT></TD>
3729 <INPUT TYPE = "text"
3730 NAME = "ship_address2"
3731 ID = "ship_address2"
3732 VALUE = "Trailer W 2-E"
3745 <font color="#ff0000">*</font> City
3750 <SCRIPT TYPE="text/javascript">
3752 function rs_init_object() {
3755 A=new ActiveXObject("Msxml2.XMLHTTP");
3758 A=new ActiveXObject("Microsoft.XMLHTTP");
3763 if(!A && typeof XMLHttpRequest != "undefined")
3764 A = new XMLHttpRequest();
3766 alert("Can't create XMLHttpRequest object");
3774 <SCRIPT TYPE="text/javascript">
3777 function ship_get_cities() {
3778 // count args; build URL
3779 var url = "http://localhost/freeside/misc/cities.cgi?";
3780 var a = ship_get_cities.arguments;
3784 var content = 'sub=ship_get_cities';
3785 if ( a && typeof a == 'object' && a[0].constructor == Array ) {
3790 len = args.length - 1;
3792 for (var i = 0; i < len; i++)
3793 content = content + "&arg=" + escape(args[i]);
3794 content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs
3796 if ( 'GET' == 'GET' ) {
3797 url = url + content;
3800 //alert('GET ' + url);
3802 var xmlhttp = rs_init_object();
3803 xmlhttp.open("GET", url, true);
3805 xmlhttp.onreadystatechange = function() {
3806 if (xmlhttp.readyState != 4)
3809 if (xmlhttp.status != 200) {
3810 if ( xmlhttp.status != 0 ) {
3811 //not warning on the 0 errors, they pop up when navagating away
3813 alert(xmlhttp.status + " status connecting to " + url);
3816 var data = xmlhttp.responseText;
3817 //alert('received response: ' + data);
3818 if ( data.indexOf("<b>System error</b>") > -1 ) {
3819 // trim this a little
3820 var end = data.indexOf('<a href="#raw">') - 1;
3821 data = data.substring(0, end);
3824 WIDTH, 480, MIDX, 0, MIDY, 0,
3825 CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
3826 CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
3829 //if ( w = window.open("about:blank") ) {
3830 // w.document.write(data);
3832 // // popup blocking? should use an overlib popup instead
3833 // alert("Error popup disabled; try disabling popup blocking to see");
3836 // invoke the callback
3837 a[a.length-1](data);
3842 if ( 'GET' == 'POST' ) {
3844 xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
3845 xmlhttp.send(content);
3849 xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
3854 //rs_debug("x_$func_name url = " + url);
3855 //rs_debug("x_$func_name waiting..");
3862 <SCRIPT TYPE="text/javascript">
3864 function opt(what,value,text) {
3865 var optionName = new Option(text, value, false, false);
3866 var length = what.length;
3867 what.options[length] = optionName;
3870 var saved_ship_city= 'Owensboro';
3872 function ship_county_changed(what, callback) {
3874 what.form.ship_city_select.disabled = 'disabled';
3876 county = what.options[what.selectedIndex].value;
3877 state = what.form.ship_state.options[what.form.ship_state.selectedIndex].value;
3878 country = what.form.ship_country.options[what.form.ship_country.selectedIndex].value;
3880 function ship_update_cities(cities) {
3882 // blank the current city list
3883 for ( var i = what.form.ship_city_select.length; i >= 0; i-- )
3884 what.form.ship_city_select.options[i] = null;
3887 // add the new cities
3888 var citiesArray = eval('(' + cities + ')' );
3890 for ( var s = 0; s < citiesArray.length; s++ ) {
3891 var cityLabel = citiesArray[s];
3892 if ( cityLabel == "" )
3893 cityLabel = '(n/a)';
3894 opt(what.form.ship_city_select, citiesArray[s], cityLabel);
3897 if ( citiesArray.length > 1 || (citiesArray[0] && citiesArray[0].length) ){
3898 // turn off the text city, turn on the select
3899 saved_ship_city = what.form.ship_city.value;
3900 ship_city_select_changed(what.form.ship_city_select);
3901 what.form.ship_city.style.display = 'none';
3902 what.form.ship_city_select.style.display = '';
3903 } else if ( what.form.ship_city.style.display == 'none' ) {
3904 // turn on the text city, turn off the select
3905 what.form.ship_city.value = saved_ship_city;
3906 what.form.ship_city.style.display = '';
3907 what.form.ship_city_select.style.display = 'none';
3910 what.form.ship_city_select.disabled = '';
3913 if ( callback != null )
3917 // go get the new cities
3918 ship_get_cities( county, state, country, ship_update_cities );
3922 function ship_city_select_changed(what) {
3923 what.form.ship_city.value = what.options[what.selectedIndex].value;
3929 <INPUT TYPE = "text"
3939 <SELECT NAME = "ship_city_select"
3940 ID = "ship_city_select"
3941 onChange = "ship_city_select_changed(this); "
3943 STYLE="display:none"
3956 <TH ALIGN="right" WIDTH="1" ID="ship_countylabel" STYLE="display:none"><font color="#ff0000">*</font> County</TH>
3958 <SCRIPT TYPE="text/javascript">
3959 function ship_state_changed(what) {
3963 <SELECT NAME = "ship_county"
3965 STYLE = "display:none"
3967 <OPTION SELECTED VALUE="">
3972 <TH ALIGN="right" WIDTH="1"><font color="#ff0000">*</font> State</TH>
3975 <SELECT NAME = "ship_state"
3977 onChange = "ship_state_changed(this); "
3984 <OPTION VALUE="AK">AK
3987 <OPTION VALUE="AL">AL
3990 <OPTION VALUE="AR">AR
3993 <OPTION VALUE="AS">AS
3996 <OPTION VALUE="AZ">AZ
3999 <OPTION VALUE="CA">CA
4002 <OPTION VALUE="CO">CO
4005 <OPTION VALUE="CT">CT
4008 <OPTION VALUE="DC">DC
4011 <OPTION VALUE="DE">DE
4014 <OPTION VALUE="FL">FL
4017 <OPTION VALUE="GA">GA
4020 <OPTION VALUE="GU">GU
4023 <OPTION VALUE="HI">HI
4026 <OPTION VALUE="IA">IA
4029 <OPTION VALUE="ID">ID
4032 <OPTION VALUE="IL">IL
4035 <OPTION VALUE="IN">IN
4038 <OPTION VALUE="KS" SELECTED>KS
4041 <OPTION VALUE="KY">KY
4044 <OPTION VALUE="LA">LA
4047 <OPTION VALUE="MA">MA
4050 <OPTION VALUE="MD">MD
4053 <OPTION VALUE="ME">ME
4056 <OPTION VALUE="MI">MI
4059 <OPTION VALUE="MN">MN
4062 <OPTION VALUE="MO">MO
4065 <OPTION VALUE="MP">MP
4068 <OPTION VALUE="MS">MS
4071 <OPTION VALUE="MT">MT
4074 <OPTION VALUE="NC">NC
4077 <OPTION VALUE="ND">ND
4080 <OPTION VALUE="NE">NE
4083 <OPTION VALUE="NH">NH
4086 <OPTION VALUE="NJ">NJ
4089 <OPTION VALUE="NM">NM
4092 <OPTION VALUE="NV">NV
4095 <OPTION VALUE="NY">NY
4098 <OPTION VALUE="OH">OH
4101 <OPTION VALUE="OK">OK
4104 <OPTION VALUE="OR">OR
4107 <OPTION VALUE="PA">PA
4110 <OPTION VALUE="PR">PR
4113 <OPTION VALUE="RI">RI
4116 <OPTION VALUE="SC">SC
4119 <OPTION VALUE="SD">SD
4122 <OPTION VALUE="TN">TN
4125 <OPTION VALUE="TX">TX
4128 <OPTION VALUE="UM">UM
4131 <OPTION VALUE="UT">UT
4134 <OPTION VALUE="VA">VA
4137 <OPTION VALUE="VI">VI
4140 <OPTION VALUE="VT">VT
4143 <OPTION VALUE="WA">WA
4146 <OPTION VALUE="WI">WI
4149 <OPTION VALUE="WV">WV
4152 <OPTION VALUE="WY">WY
4161 <TH ALIGN="right" WIDTH="1"><font color="#ff0000">*</font> Zip</TH>
4163 <INPUT TYPE = "text"
4176 <TH ALIGN="right"><font color="#ff0000">*</font> Country</TH>
4178 <SCRIPT TYPE="text/javascript">
4180 function rs_init_object() {
4183 A=new ActiveXObject("Msxml2.XMLHTTP");
4186 A=new ActiveXObject("Microsoft.XMLHTTP");
4191 if(!A && typeof XMLHttpRequest != "undefined")
4192 A = new XMLHttpRequest();
4194 alert("Can't create XMLHttpRequest object");
4202 <SCRIPT TYPE="text/javascript">
4205 function ship_get_states() {
4206 // count args; build URL
4207 var url = "http://localhost/freeside/misc/states.cgi?";
4208 var a = ship_get_states.arguments;
4212 var content = 'sub=ship_get_states';
4213 if ( a && typeof a == 'object' && a[0].constructor == Array ) {
4218 len = args.length - 1;
4220 for (var i = 0; i < len; i++)
4221 content = content + "&arg=" + escape(args[i]);
4222 content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs
4224 if ( 'GET' == 'GET' ) {
4225 url = url + content;
4228 //alert('GET ' + url);
4230 var xmlhttp = rs_init_object();
4231 xmlhttp.open("GET", url, true);
4233 xmlhttp.onreadystatechange = function() {
4234 if (xmlhttp.readyState != 4)
4237 if (xmlhttp.status != 200) {
4238 if ( xmlhttp.status != 0 ) {
4239 //not warning on the 0 errors, they pop up when navagating away
4241 alert(xmlhttp.status + " status connecting to " + url);
4244 var data = xmlhttp.responseText;
4245 //alert('received response: ' + data);
4246 if ( data.indexOf("<b>System error</b>") > -1 ) {
4247 // trim this a little
4248 var end = data.indexOf('<a href="#raw">') - 1;
4249 data = data.substring(0, end);
4252 WIDTH, 480, MIDX, 0, MIDY, 0,
4253 CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
4254 CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
4257 //if ( w = window.open("about:blank") ) {
4258 // w.document.write(data);
4260 // // popup blocking? should use an overlib popup instead
4261 // alert("Error popup disabled; try disabling popup blocking to see");
4264 // invoke the callback
4265 a[a.length-1](data);
4270 if ( 'GET' == 'POST' ) {
4272 xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
4273 xmlhttp.send(content);
4277 xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
4282 //rs_debug("x_$func_name url = " + url);
4283 //rs_debug("x_$func_name waiting..");
4290 <SCRIPT TYPE="text/javascript">
4292 function opt(what,value,text) {
4293 var optionName = new Option(text, value, false, false);
4294 var length = what.length;
4295 what.options[length] = optionName;
4298 function ship_country_changed(what, callback) {
4300 what.form.ship_state.disabled = 'disabled';
4302 country = what.options[what.selectedIndex].value;
4304 function ship_update_states(states) {
4306 // blank the current state list
4307 for ( var i = what.form.ship_state.length; i >= 0; i-- )
4308 what.form.ship_state.options[i] = null;
4310 // add the new states
4311 var statesArray = eval('(' + states + ')' );
4313 for ( var s = 0; s < statesArray.length; s=s+2 ) {
4314 var stateLabel = statesArray[s+1];
4315 if ( stateLabel == "" )
4316 stateLabel = '(n/a)';
4317 opt(what.form.ship_state, statesArray[s], stateLabel);
4320 what.form.ship_state.disabled = '';
4323 if ( callback != null ) {
4326 ship_state_changed(what.form.ship_state);
4330 // go get the new states
4331 ship_get_states( country, ship_update_states );
4338 <SELECT NAME = "ship_country"
4340 onChange = "ship_country_changed(this); "
4374 >American Samoa (AS)
4399 >Antigua and Barbuda (AG)
4484 >Bolivia, Plurinational State of (BO)
4489 >Bonaire, Sint Eustatius and Saba (BQ)
4494 >Bosnia and Herzegovina (BA)
4514 >British Indian Ocean Territory (IO)
4519 >Brunei Darussalam (BN)
4559 >Cayman Islands (KY)
4564 >Central African Republic (CF)
4584 >Christmas Island (CX)
4589 >Cocos (Keeling) Islands (CC)
4609 >Congo (The Democratic Republic of the) (CD)
4649 >Czech Republic (CZ)
4669 >Dominican Republic (DO)
4689 >Equatorial Guinea (GQ)
4709 >Falkland Islands (The) [Malvinas] (FK)
4739 >French Polynesia (PF)
4744 >French Southern Territories (TF)
4834 >Heard Island and McDonald Islands (HM)
4839 >Holy See (The) [Vatican City State] (VA)
4874 >Iran, The Islamic Republic of (IR)
4939 >Korea, The Democratic People's Republic of (KP)
4944 >Korea, The Republic of (KR)
4959 >Lao People's Democratic Republic (LA)
5009 >Macedonia, The former Yugoslav Republic of (MK)
5044 >Marshall Islands (MH)
5074 >Micronesia, The Federated States of (FM)
5079 >Moldova, The Republic of (MD)
5169 >Norfolk Island (NF)
5174 >Northern Mariana Islands (MP)
5199 >Palestine, State of (PS)
5209 >Papua New Guinea (PG)
5264 >Russian Federation (RU)
5274 >Saint Barthelemy (BL)
5279 >Saint Helena, Ascension and Tristan da Cunha (SH)
5284 >Saint Kitts and Nevis (KN)
5294 >Saint Martin (French part) (MF)
5299 >Saint Pierre and Miquelon (PM)
5304 >Saint Vincent and the Grenadines (VC)
5319 >Sao Tome and Principe (ST)
5354 >Sint Maarten (Dutch part) (SX)
5369 >Solomon Islands (SB)
5384 >South Georgia and the South Sandwich Islands (GS)
5414 >Svalbard and Jan Mayen (SJ)
5434 >Syrian Arab Republic (SY)
5439 >Taiwan (Province of China) (TW)
5449 >Tanzania, United Republic of (TZ)
5479 >Trinidad and Tobago (TT)
5499 >Turks and Caicos Islands (TC)
5519 >United Arab Emirates (AE)
5524 >United Kingdom (GB)
5529 >United States Minor Outlying Islands (UM)
5549 >Venezuela, Bolivarian Republic of (VE)
5559 >Virgin Islands (British) (VG)
5564 >Virgin Islands (U.S.) (VI)
5569 >Wallis and Futuna (WF)
5574 >Western Sahara (EH)
5598 <TD ALIGN="right">Latitude</TD>
5600 <INPUT TYPE = "text"
5601 NAME = "ship_latitude"
5602 ID = "ship_latitude"
5603 VALUE = "38.5000000"
5608 <INPUT TYPE = "text"
5609 NAME = "ship_longitude"
5610 ID = "ship_longitude"
5611 VALUE = "-121.5000000"
5617 <INPUT TYPE = "hidden"
5618 NAME = "ship_coord_auto"
5619 ID = "ship_coord_auto"
5624 <INPUT TYPE = "hidden"
5625 NAME = "ship_geocode"
5631 <INPUT TYPE = "hidden"
5632 NAME = "ship_censustract"
5633 ID = "ship_censustract"
5638 <INPUT TYPE = "hidden"
5639 NAME = "ship_censusyear"
5640 ID = "ship_censusyear"
5646 <TD ALIGN="right">Census tract</TD>
5648 <INPUT TYPE="text" SIZE=15
5649 ID="ship_enter_censustract"
5650 NAME="ship_enter_censustract"
5655 <INPUT TYPE = "hidden"
5656 NAME = "ship_district"
5657 ID = "ship_district"
5663 <INPUT TYPE = "hidden"
5664 NAME = "old_ship_address1"
5665 ID = "old_ship_address1"
5666 VALUE = "46706 Kadin Hill #780"
5670 <INPUT TYPE = "hidden"
5671 NAME = "old_ship_city"
5672 ID = "old_ship_city"
5677 <INPUT TYPE = "hidden"
5678 NAME = "old_ship_state"
5679 ID = "old_ship_state"
5684 <INPUT TYPE = "hidden"
5685 NAME = "old_ship_country"
5686 ID = "old_ship_country"
5691 <INPUT TYPE = "hidden"
5692 NAME = "old_ship_zip"
5698 <INPUT TYPE = "hidden"
5699 NAME = "old_ship_latitude"
5700 ID = "old_ship_latitude"
5701 VALUE = "38.5000000"
5705 <INPUT TYPE = "hidden"
5706 NAME = "old_ship_longitude"
5707 ID = "old_ship_longitude"
5708 VALUE = "-121.5000000"
5712 <INPUT TYPE = "hidden"
5713 NAME = "old_ship_censustract"
5714 ID = "old_ship_censustract"
5719 <INPUT TYPE = "hidden"
5720 NAME = "old_ship_district"
5721 ID = "old_ship_district"
5726 <INPUT TYPE = "hidden"
5727 NAME = "old_ship_addr_clean"
5728 ID = "old_ship_addr_clean"
5733 <INPUT TYPE = "hidden"
5734 NAME = "ship_cachenum"
5735 ID = "ship_cachenum"
5740 <INPUT TYPE = "hidden"
5741 NAME = "ship_addr_clean"
5742 ID = "ship_addr_clean"
5748 <SCRIPT TYPE="text/javascript">
5750 var myonload = function() {
5752 var clear_coords_ids = [
5755 'ship_enter_censustract',
5759 function clear_coords() {
5760 for (var i=0; i < clear_coords_ids.length; i++) {
5761 var el = document.getElementById(clear_coords_ids[i]);
5767 var clear_coords_on_change = [
5775 for (var i=0; i < clear_coords_on_change.length; i++) {
5776 var el = document.getElementById(clear_coords_on_change[i]);
5777 if ( el.addEventListener ) {
5778 el.addEventListener('change', clear_coords);
5779 } else if ( el.attachEvent ) {
5780 el.attachEvent('onchange', clear_coords);
5783 function clear_censustract() {
5784 // if the user manually edits the census tract, clear the 'hard' census
5785 // tract field so that we can re-verify and present a confirmation popup
5787 // get the ID of the hidden censustract field
5788 var censustract_id = this.id.replace('enter_', '');
5789 var el = document.getElementById(censustract_id);
5794 var el = document.getElementById('ship_enter_censustract');
5796 if ( el.addEventListener ) {
5797 el.addEventListener('change', clear_censustract);
5798 } else if ( el.attachEvent ) {
5799 el.attachEvent('onchange', clear_censustract);
5805 if ( window.addEventListener ) {
5806 window.addEventListener('load', myonload);
5807 } else if ( window.attachEvent ) {
5808 window.attachEvent('onload', myonload);
5817 <INPUT TYPE = "checkbox"
5818 NAME = "invoice_ship_address"
5824 >Include service address on invoices
5834 function samechanged(what) {
5835 var t1 = document.getElementById('table_ship_location');
5836 if ( what.checked ) {
5837 t1.style.visibility = 'hidden';
5840 t1.style.visibility = 'visible'
5843 samechanged(document.getElementById('same'));
5848 <DIV ID="contacts_div" STYLE="display:">
5850 <FONT CLASS="fsinnerbox-title">Contacts</FONT>
5853 <TABLE ID="TableNumber0" BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0>
5860 STYLE = "padding-top: 3px"
5861 ID = "contactnum_label0"
5867 <INPUT TYPE="hidden" NAME="contactnum0" ID="contactnum0" VALUE="">
5869 <TABLE STYLE="display:inline">
5872 <SELECT NAME="contactnum0_classnum" onChange="
5873 spawn_contactnum(this);">
5879 <FONT SIZE="-1">Type</FONT>
5883 <INPUT TYPE = "text"
5884 NAME = "contactnum0_first"
5885 ID = "contactnum0_first"
5889 spawn_contactnum(this);"
5892 <FONT SIZE="-1">First name</FONT>
5896 <INPUT TYPE = "text"
5897 NAME = "contactnum0_last"
5898 ID = "contactnum0_last"
5902 spawn_contactnum(this);"
5905 <FONT SIZE="-1">Last name</FONT>
5909 <INPUT TYPE = "text"
5910 NAME = "contactnum0_title"
5911 ID = "contactnum0_title"
5915 spawn_contactnum(this);"
5918 <FONT SIZE="-1">Title/Position</FONT>
5922 <INPUT TYPE = "text"
5923 NAME = "contactnum0_emailaddress"
5924 ID = "contactnum0_emailaddress"
5928 spawn_contactnum(this);"
5931 <FONT SIZE="-1">Email</FONT>
5935 <SELECT NAME = "contactnum0_selfservice_access"
5936 ID = "contactnum0_selfservice_access"
5938 <OPTION VALUE="">Disabled
5942 <FONT SIZE="-1">Self-service</FONT>
5946 <INPUT TYPE = "text"
5947 NAME = "contactnum0_phonetypenum1"
5948 ID = "contactnum0_phonetypenum1"
5952 spawn_contactnum(this);"
5955 <FONT SIZE="-1">Work phone</FONT>
5959 <INPUT TYPE = "text"
5960 NAME = "contactnum0_phonetypenum3"
5961 ID = "contactnum0_phonetypenum3"
5965 spawn_contactnum(this);"
5968 <FONT SIZE="-1">Mobile phone</FONT>
5972 <INPUT TYPE = "text"
5973 NAME = "contactnum0_phonetypenum4"
5974 ID = "contactnum0_phonetypenum4"
5978 spawn_contactnum(this);"
5981 <FONT SIZE="-1">Fax phone</FONT>
5985 <INPUT TYPE = "text"
5986 NAME = "contactnum0_comment"
5987 ID = "contactnum0_comment"
5991 spawn_contactnum(this);"
5994 <FONT SIZE="-1">Comment</FONT>
6006 <SCRIPT TYPE="text/javascript">
6008 var contactnum_rownum = 1;
6009 var contactnum_fieldnum = 0;
6011 function spawn_contactnum(what) {
6013 // only spawn if we're the last element... return if not
6015 var field_regex = /(\d+)(_[a-z_]+)?$/;
6016 var match = field_regex.exec(what.name);
6018 alert(what.name + " didn't match for " + what);
6021 if ( match[1] != contactnum_fieldnum ) {
6025 // change the label on the last entry & add a remove button
6026 var prev_label = document.getElementById('contactnum_label' + contactnum_fieldnum );
6027 prev_label.innerHTML = '<INPUT TYPE="button" VALUE="X" TITLE="Remove this contact" onClick="remove_contactnum(' + contactnum_fieldnum + ');" STYLE="color:#ff0000;font-weight:bold;padding-left:2px;padding-right:2px" > Contact';
6029 contactnum_fieldnum++;
6031 //get the new widget
6034 var newrow = '\n <INPUT TYPE="hidden" NAME="contactnumMAGIC_NUMBER" ID="contactnumMAGIC_NUMBER" VALUE="">\n\n <TABLE STYLE="display:inline">\n <TR>\n <TD>\n <SELECT NAME="contactnumMAGIC_NUMBER_classnum" onChange="\nspawn_contactnum(this);">\n <OPTION VALUE="">\n <OPTION VALUE="1"\n \n >Service\n </SELECT><BR>\n <FONT SIZE="-1">Type</FONT>\n </TD>\n\n <TD>\n <INPUT TYPE = "text"\n NAME = "contactnumMAGIC_NUMBER_first"\n ID = "contactnumMAGIC_NUMBER_first"\n SIZE = "14"\n VALUE = ""\n onChange="\nspawn_contactnum(this);"\n >\n <BR>\n <FONT SIZE="-1">First name</FONT>\n </TD>\n\n <TD>\n <INPUT TYPE = "text"\n NAME = "contactnumMAGIC_NUMBER_last"\n ID = "contactnumMAGIC_NUMBER_last"\n SIZE = "14"\n VALUE = ""\n onChange="\nspawn_contactnum(this);"\n >\n <BR>\n <FONT SIZE="-1">Last name</FONT>\n </TD>\n\n <TD>\n <INPUT TYPE = "text"\n NAME = "contactnumMAGIC_NUMBER_title"\n ID = "contactnumMAGIC_NUMBER_title"\n SIZE = "12"\n VALUE = ""\n onChange="\nspawn_contactnum(this);"\n >\n <BR>\n <FONT SIZE="-1">Title/Position</FONT>\n </TD>\n\n <TD>\n <INPUT TYPE = "text"\n NAME = "contactnumMAGIC_NUMBER_emailaddress"\n ID = "contactnumMAGIC_NUMBER_emailaddress"\n SIZE = "14"\n VALUE = ""\n onChange="\nspawn_contactnum(this);"\n >\n <BR>\n <FONT SIZE="-1">Email</FONT>\n </TD>\n\n <TD>\n <SELECT NAME = "contactnumMAGIC_NUMBER_selfservice_access"\n ID = "contactnumMAGIC_NUMBER_selfservice_access"\n >\n <OPTION VALUE="">Disabled\n </SELECT>\n\n <BR>\n <FONT SIZE="-1">Self-service</FONT>\n </TD>\n\n <TD>\n <INPUT TYPE = "text"\n NAME = "contactnumMAGIC_NUMBER_phonetypenum1"\n ID = "contactnumMAGIC_NUMBER_phonetypenum1"\n SIZE = "15"\n VALUE = ""\n onChange="\nspawn_contactnum(this);"\n >\n <BR>\n <FONT SIZE="-1">Work phone</FONT>\n </TD>\n\n <TD>\n <INPUT TYPE = "text"\n NAME = "contactnumMAGIC_NUMBER_phonetypenum3"\n ID = "contactnumMAGIC_NUMBER_phonetypenum3"\n SIZE = "10"\n VALUE = ""\n onChange="\nspawn_contactnum(this);"\n >\n <BR>\n <FONT SIZE="-1">Mobile phone</FONT>\n </TD>\n\n <TD>\n <INPUT TYPE = "text"\n NAME = "contactnumMAGIC_NUMBER_phonetypenum4"\n ID = "contactnumMAGIC_NUMBER_phonetypenum4"\n SIZE = "10"\n VALUE = ""\n onChange="\nspawn_contactnum(this);"\n >\n <BR>\n <FONT SIZE="-1">Fax phone</FONT>\n </TD>\n\n <TD>\n <INPUT TYPE = "text"\n NAME = "contactnumMAGIC_NUMBER_comment"\n ID = "contactnumMAGIC_NUMBER_comment"\n SIZE = "14"\n VALUE = ""\n onChange="\nspawn_contactnum(this);"\n >\n <BR>\n <FONT SIZE="-1">Comment</FONT>\n </TD>\n </TR>\n </TABLE>\n\n';
6038 // substitute in the new field name
6039 var magic_regex = /MAGIC_NUMBER/g;
6040 newrow = newrow.replace( magic_regex, contactnum_fieldnum );
6041 newfunc = newfunc.replace( magic_regex, contactnum_fieldnum );
6043 // evaluate new_func
6044 if (window.ActiveXObject) {
6045 window.execScript(newfunc);
6046 } else { /* (window.XMLHttpRequest) */
6047 //window.eval(newfunc);
6048 setTimeout(newfunc, 0);
6053 //hmm, can't use selectlayers after a tablebreak-title for now
6054 var table = document.getElementById('TableNumber0');
6056 var row = table.insertRow(contactnum_rownum++);
6058 var label_cell = document.createElement('TD');
6060 label_cell.id = 'contactnum_label' + contactnum_fieldnum;
6062 label_cell.style.textAlign = "right";
6063 label_cell.style.verticalAlign = "top";
6064 label_cell.style.borderTop = "1px solid black";
6065 label_cell.style.paddingTop = "5px";
6067 label_cell.innerHTML = 'Contact';
6069 row.appendChild(label_cell);
6071 var widget_cell = document.createElement('TD');
6073 widget_cell.style.borderTop = "1px solid black";
6074 widget_cell.style.paddingTop = "3px";
6075 widget_cell.colSpan = "6";
6077 widget_cell.innerHTML = newrow;
6079 row.appendChild(widget_cell);
6085 function remove_contactnum(remove_fieldnum) {
6086 //alert("remove contactnum " + remove_fieldnum);
6087 var select = document.getElementById('contactnum' + remove_fieldnum);
6090 alert("can't find element contactnum" + remove_fieldnum);
6095 select.disabled = 'disabled'; // this seems to prevent it from being submitted on tested browsers so far (IE, moz, konq at least)
6096 var label_td = document.getElementById('contactnum_label' + remove_fieldnum );
6097 label_td.parentNode.style.display = 'none';
6117 <BR><FONT CLASS="fsinnerbox-title">Billing information</FONT>
6118 <TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0>
6121 <TD ALIGN="right" WIDTH="200"><font color="#ff0000">*</font> Billing type</TD>
6126 function myopen(filename,windowname,properties) {
6128 mywindow = window.open(filename,windowname,properties);
6130 function myclose() {
6131 if ( mywindow != -1 )
6137 function achopen(filename,windowname,properties) {
6139 achwindow = window.open(filename,windowname,properties);
6141 function achclose() {
6142 if ( achwindow != -1 )
6147 function card_changed(what) {
6149 what.form.payinfo.value.substring(0, 4) == '4093'
6150 || what.form.payinfo.value.substring(0, 4) == '4911'
6151 || what.form.payinfo.value.substring(0, 4) == '4936'
6152 || what.form.payinfo.value.substring(0, 6) == '564132'
6153 || what.form.payinfo.value.substring(0, 2) == '63'
6154 || what.form.payinfo.value.substring(0, 2) == '67'
6157 what.form.paystart_month.disabled = false;
6158 what.form.paystart_year.disabled = false;
6159 what.form.payissue.disabled = false;
6160 what.form.paystart_month.style.backgroundColor = '#ffffff';
6161 what.form.paystart_year.style.backgroundColor = '#ffffff';
6162 what.form.payissue.style.backgroundColor = '#ffffff';
6163 document.getElementById('paystart_label').style.color = '#000000';
6164 document.getElementById('payissue_label').style.color = '#000000';
6166 what.form.paystart_month.disabled = true;
6167 what.form.paystart_year.disabled = true;
6168 what.form.payissue.disabled = true;
6169 what.form.paystart_month.style.backgroundColor = '#dddddd';
6170 what.form.paystart_year.style.backgroundColor = '#dddddd';
6171 what.form.payissue.style.backgroundColor = '#dddddd';
6172 document.getElementById('paystart_label').style.color = '#999999';
6173 document.getElementById('payissue_label').style.color = '#999999';
6178 function init_payauto_changed(){
6179 var f = document.getElementById('CARD_payauto');
6180 if(f != null) payauto_changed(f);
6181 f = document.getElementById('CHEK_payauto');
6182 if(f != null) payauto_changed(f);
6185 function payauto_changed(payauto_field){
6186 var select = (payauto_field.name == 'CARD_payauto') ? 'CARD_billday' : 'CHEK_billday';
6187 var span = document.getElementById('td_'+select);
6188 select = document.getElementById(select);
6189 if (span == null || select == null) return;
6190 if(payauto_field.checked) {
6191 span.style.color = '#000000';
6192 select.disabled = false;
6195 span.style.color = '#999999';
6196 select.disabled = true;
6197 //why? select.selectedIndex = 0;
6201 function tax_changed(what) {
6202 var num = document.getElementById(what.id + '_num');
6203 if ( what.checked ) {
6204 num.disabled = false;
6206 num.disabled = true;
6216 <SCRIPT TYPE="text/javascript">
6219 function paybychanged(what) {
6221 init_payauto_changed();
6223 var paybylayer = what.options[what.selectedIndex].value;
6225 if (paybylayer == "CARD" ) {
6227 document.getElementById('paybydCHEK').style.display = "none";
6228 document.getElementById('paybydCHEK').style.zIndex = 0;
6229 document.getElementById('paybydLECB').style.display = "none";
6230 document.getElementById('paybydLECB').style.zIndex = 0;
6231 document.getElementById('paybydBILL').style.display = "none";
6232 document.getElementById('paybydBILL').style.zIndex = 0;
6233 document.getElementById('paybydCOMP').style.display = "none";
6234 document.getElementById('paybydCOMP').style.zIndex = 0;
6236 document.getElementById('paybydCARD').style.display = "";
6237 document.getElementById('paybydCARD').style.zIndex = 1;
6240 if (paybylayer == "CHEK" ) {
6242 document.getElementById('paybydCARD').style.display = "none";
6243 document.getElementById('paybydCARD').style.zIndex = 0;
6244 document.getElementById('paybydLECB').style.display = "none";
6245 document.getElementById('paybydLECB').style.zIndex = 0;
6246 document.getElementById('paybydBILL').style.display = "none";
6247 document.getElementById('paybydBILL').style.zIndex = 0;
6248 document.getElementById('paybydCOMP').style.display = "none";
6249 document.getElementById('paybydCOMP').style.zIndex = 0;
6251 document.getElementById('paybydCHEK').style.display = "";
6252 document.getElementById('paybydCHEK').style.zIndex = 1;
6255 if (paybylayer == "LECB" ) {
6257 document.getElementById('paybydCARD').style.display = "none";
6258 document.getElementById('paybydCARD').style.zIndex = 0;
6259 document.getElementById('paybydCHEK').style.display = "none";
6260 document.getElementById('paybydCHEK').style.zIndex = 0;
6261 document.getElementById('paybydBILL').style.display = "none";
6262 document.getElementById('paybydBILL').style.zIndex = 0;
6263 document.getElementById('paybydCOMP').style.display = "none";
6264 document.getElementById('paybydCOMP').style.zIndex = 0;
6266 document.getElementById('paybydLECB').style.display = "";
6267 document.getElementById('paybydLECB').style.zIndex = 1;
6270 if (paybylayer == "BILL" ) {
6272 document.getElementById('paybydCARD').style.display = "none";
6273 document.getElementById('paybydCARD').style.zIndex = 0;
6274 document.getElementById('paybydCHEK').style.display = "none";
6275 document.getElementById('paybydCHEK').style.zIndex = 0;
6276 document.getElementById('paybydLECB').style.display = "none";
6277 document.getElementById('paybydLECB').style.zIndex = 0;
6278 document.getElementById('paybydCOMP').style.display = "none";
6279 document.getElementById('paybydCOMP').style.zIndex = 0;
6281 document.getElementById('paybydBILL').style.display = "";
6282 document.getElementById('paybydBILL').style.zIndex = 1;
6285 if (paybylayer == "COMP" ) {
6287 document.getElementById('paybydCARD').style.display = "none";
6288 document.getElementById('paybydCARD').style.zIndex = 0;
6289 document.getElementById('paybydCHEK').style.display = "none";
6290 document.getElementById('paybydCHEK').style.zIndex = 0;
6291 document.getElementById('paybydLECB').style.display = "none";
6292 document.getElementById('paybydLECB').style.zIndex = 0;
6293 document.getElementById('paybydBILL').style.display = "none";
6294 document.getElementById('paybydBILL').style.zIndex = 0;
6296 document.getElementById('paybydCOMP').style.display = "";
6297 document.getElementById('paybydCOMP').style.zIndex = 1;
6301 //init_payauto_changed();
6306 <SELECT NAME = "payby"
6308 previousValue = "CARD"
6309 previousText = "Credit card"
6310 onChange="paybychanged(this);"
6314 <OPTION VALUE="CARD"
6316 >Credit card</OPTION>
6319 <OPTION VALUE="CHEK"
6321 >Electronic check</OPTION>
6324 <OPTION VALUE="LECB"
6326 >Phone bill billing</OPTION>
6329 <OPTION VALUE="BILL"
6334 <OPTION VALUE="COMP"
6336 >Complimentary</OPTION>
6346 <DIV ID="paybydCARD"
6347 STYLE="display: block; z-index: 1"
6350 <TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0 HEIGHT=192><TR><TD ALIGN="right" WIDTH="200"><font color="#ff0000">*</font> Card number </TD><TD WIDTH="408"><INPUT TYPE="text" NAME="CARD_payinfo" VALUE="412325xxxxxx4150" MAXLENGTH=19 onChange="card_changed(this)" onKeyUp="card_changed(this)"></TD></TR><TR><TD ALIGN="right" WIDTH="200"><font color="#ff0000">*</font> Expiration </TD><TD WIDTH="408"><SELECT NAME="CARD_exp_month" SIZE="1" >
6354 <OPTION VALUE="1">01
6356 <OPTION VALUE="2">02
6358 <OPTION VALUE="3">03
6360 <OPTION VALUE="4">04
6362 <OPTION SELECTED VALUE="5">05
6364 <OPTION VALUE="6">06
6366 <OPTION VALUE="7">07
6368 <OPTION VALUE="8">08
6370 <OPTION VALUE="9">09
6372 <OPTION VALUE="10">10
6374 <OPTION VALUE="11">11
6376 <OPTION VALUE="12">12
6379 </SELECT>/<SELECT NAME="CARD_exp_year" SIZE="1" >
6383 <OPTION VALUE="2016">2016
6385 <OPTION VALUE="2017">2017
6387 <OPTION VALUE="2018">2018
6389 <OPTION VALUE="2019">2019
6391 <OPTION SELECTED VALUE="2020">2020
6393 <OPTION VALUE="2021">2021
6395 <OPTION VALUE="2022">2022
6397 <OPTION VALUE="2023">2023
6399 <OPTION VALUE="2024">2024
6401 <OPTION VALUE="2025">2025
6403 <OPTION VALUE="2026">2026
6405 <OPTION VALUE="2027">2027
6407 <OPTION VALUE="2028">2028
6409 <OPTION VALUE="2029">2029
6411 <OPTION VALUE="2030">2030
6413 <OPTION VALUE="2031">2031
6415 <OPTION VALUE="2032">2032
6417 <OPTION VALUE="2033">2033
6419 <OPTION VALUE="2034">2034
6421 <OPTION VALUE="2035">2035
6423 <OPTION VALUE="2036">2036
6425 <OPTION VALUE="2037">2037
6429 </TD></TR><TR><TD ALIGN="right" WIDTH="200">CVV2 (<A HREF="javascript:void(0);" onClick="overlib( OLiframeContent('../docs/cvv2.html', 480, 352, 'cvv2_popup' ), CAPTION, 'CVV2 Help', STICKY, AUTOSTATUSCAP, CLOSECLICK, DRAGGABLE ); return false;">help</A>)</TD><TD WIDTH="408"><INPUT TYPE="text" NAME="CARD_paycvv" VALUE="" SIZE=4 MAXLENGTH=4><TR><TD ALIGN="right" WIDTH="200"><SPAN ID="paystart_label" style="color: #999999">Start date </SPAN></TD><TD WIDTH="408"><SELECT NAME="CARD_paystart_month" SIZE="1" DISABLED style="background-color: #dddddd">
6433 <OPTION VALUE="1">01
6435 <OPTION VALUE="2">02
6437 <OPTION VALUE="3">03
6439 <OPTION VALUE="4">04
6441 <OPTION VALUE="5">05
6443 <OPTION VALUE="6">06
6445 <OPTION VALUE="7">07
6447 <OPTION VALUE="8">08
6449 <OPTION VALUE="9">09
6451 <OPTION VALUE="10">10
6453 <OPTION VALUE="11">11
6455 <OPTION VALUE="12">12
6458 </SELECT>/<SELECT NAME="CARD_paystart_year" SIZE="1" DISABLED style="background-color: #dddddd">
6462 <OPTION VALUE="2000">2000
6464 <OPTION VALUE="2001">2001
6466 <OPTION VALUE="2002">2002
6468 <OPTION VALUE="2003">2003
6470 <OPTION VALUE="2004">2004
6472 <OPTION VALUE="2005">2005
6474 <OPTION VALUE="2006">2006
6476 <OPTION VALUE="2007">2007
6478 <OPTION VALUE="2008">2008
6480 <OPTION VALUE="2009">2009
6482 <OPTION VALUE="2010">2010
6484 <OPTION VALUE="2011">2011
6486 <OPTION VALUE="2012">2012
6488 <OPTION VALUE="2013">2013
6490 <OPTION VALUE="2014">2014
6492 <OPTION VALUE="2015">2015
6494 <OPTION VALUE="2016">2016
6498 <SPAN ID="payissue_label" style="color: #999999">or Issue number </SPAN><INPUT TYPE="text" NAME="CARD_payissue" VALUE="" SIZE=3 MAXLENGTH=2 DISABLED style="background-color: #dddddd"></TD></TR><TR><TD ALIGN="right" WIDTH="200"><font color="#ff0000">*</font> Exact name on card </TD><TD WIDTH="408"><INPUT TYPE="text" NAME="CARD_payname" VALUE="Samara Towne"></TD></TR><TR><TD COLSPAN=2 WIDTH="608"><INPUT TYPE="checkbox" onchange="payauto_changed(this);" ID="CARD_payauto" NAME="CARD_payauto" CHECKED> Charge future payments to this credit card automatically</TD></TR></TABLE>
6503 <DIV ID="paybydCHEK"
6504 STYLE="display: none; z-index: 0"
6507 <TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0 HEIGHT=192><TR><TD ALIGN="right" WIDTH="200"><font color="#ff0000">*</font> Account number </TD><TD><INPUT TYPE="text" SIZE=12 NAME="CHEK_payinfo1" VALUE=""></TD><TD ALIGN="right">Type</TD><TD><SELECT NAME="CHEK_paytype"><OPTION VALUE="" SELECTED></OPTION><OPTION VALUE="Personal checking" >Personal checking</OPTION><OPTION VALUE="Personal savings" >Personal savings</OPTION><OPTION VALUE="Business checking" >Business checking</OPTION><OPTION VALUE="Business savings" >Business savings</OPTION></SELECT></TD></TR><TR><TD ALIGN="right" WIDTH="200"><font color="#ff0000">*</font> ABA/Routing number </TD><TD COLSPAN="3" WIDTH="408"><INPUT TYPE="text" SIZE=10 MAXLENGTH=9 NAME="CHEK_payinfo2" VALUE=""> (<A HREF="javascript:void(0);" onClick="overlib( OLiframeContent('../docs/ach.html', 380, 240, 'ach_popup' ), CAPTION, 'ACH Help', STICKY, AUTOSTATUSCAP, CLOSECLICK, DRAGGABLE ); return false;">help</A>)</TD></TR><INPUT TYPE="hidden" NAME="CHEK_exp_month" VALUE="12"><INPUT TYPE="hidden" NAME="CHEK_exp_year" VALUE="2037"><TR><TD ALIGN="right" WIDTH="200"><font color="#ff0000">*</font> Bank name </TD><TD COLSPAN="3" WIDTH="408"><INPUT TYPE="text" NAME="CHEK_payname" VALUE=""></TD></TR><INPUT TYPE="hidden" NAME="CHEK_paystate" VALUE=""><TR><TD COLSPAN=4 WIDTH="608"><INPUT TYPE="checkbox" onchange="payauto_changed(this);" ID="CHEK_payauto" NAME="CHEK_payauto" CHECKED> Charge future payments to this electronic check automatically</TD></TR></TABLE>
6512 <DIV ID="paybydLECB"
6513 STYLE="display: none; z-index: 0"
6516 <TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0 HEIGHT=192><TR><TD ALIGN="right" WIDTH="200"><font color="#ff0000">*</font> Phone number </TD><TD WIDTH="408"><INPUT TYPE="text" NAME="LECB_payinfo" VALUE="" MAXLENGTH=15 SIZE=16></TD></TR><INPUT TYPE="hidden" NAME="LECB_exp_month" VALUE="12"><INPUT TYPE="hidden" NAME="LECB_exp_year" VALUE="2037"><INPUT TYPE="hidden" NAME="LECB_payname" VALUE=""><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR></TABLE>
6521 <DIV ID="paybydBILL"
6522 STYLE="display: none; z-index: 0"
6525 <TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0 HEIGHT=192><TR><TD ALIGN="right" WIDTH="200">P.O. </TD><TD WIDTH="408"><INPUT TYPE="text" NAME="BILL_payinfo" VALUE=""></TD></TR><INPUT TYPE="hidden" NAME="BILL_exp_month" VALUE="12"><INPUT TYPE="hidden" NAME="BILL_exp_year" VALUE="2037"><TR><TD ALIGN="right" WIDTH="200">Attention </TD><TD WIDTH="408"><INPUT TYPE="text" NAME="BILL_payname" VALUE=""></TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR></TABLE>
6530 <DIV ID="paybydCOMP"
6531 STYLE="display: none; z-index: 0"
6534 <TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0 HEIGHT=192><TR><TD ALIGN="right" WIDTH="200"><font color="#ff0000">*</font> Approved by </TD><TD WIDTH="408"><INPUT TYPE="text" NAME="COMP_payinfo" VALUE=""></TD></TR><TR><TD ALIGN="right" WIDTH="200"><font color="#ff0000">*</font> Expiration </TD><TD WIDTH="408"><SELECT NAME="COMP_exp_month" SIZE="1" >
6538 <OPTION VALUE="1">01
6540 <OPTION VALUE="2">02
6542 <OPTION VALUE="3">03
6544 <OPTION VALUE="4">04
6546 <OPTION VALUE="5">05
6548 <OPTION VALUE="6">06
6550 <OPTION VALUE="7">07
6552 <OPTION VALUE="8">08
6554 <OPTION VALUE="9">09
6556 <OPTION VALUE="10">10
6558 <OPTION VALUE="11">11
6560 <OPTION VALUE="12">12
6563 </SELECT>/<SELECT NAME="COMP_exp_year" SIZE="1" >
6567 <OPTION VALUE="2016">2016
6569 <OPTION VALUE="2017">2017
6571 <OPTION VALUE="2018">2018
6573 <OPTION VALUE="2019">2019
6575 <OPTION VALUE="2020">2020
6577 <OPTION VALUE="2021">2021
6579 <OPTION VALUE="2022">2022
6581 <OPTION VALUE="2023">2023
6583 <OPTION VALUE="2024">2024
6585 <OPTION VALUE="2025">2025
6587 <OPTION VALUE="2026">2026
6589 <OPTION VALUE="2027">2027
6591 <OPTION VALUE="2028">2028
6593 <OPTION VALUE="2029">2029
6595 <OPTION VALUE="2030">2030
6597 <OPTION VALUE="2031">2031
6599 <OPTION VALUE="2032">2032
6601 <OPTION VALUE="2033">2033
6603 <OPTION VALUE="2034">2034
6605 <OPTION VALUE="2035">2035
6607 <OPTION VALUE="2036">2036
6609 <OPTION VALUE="2037">2037
6613 </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR></TABLE>
6620 <TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0>
6622 <TR><TD> </TD></TR>
6626 <TD WIDTH="608" COLSPAN="2"><INPUT TYPE="checkbox" NAME="tax" VALUE="Y" > Tax Exempt</TD>
6633 <TD WIDTH="608" COLSPAN="2"><INPUT TYPE="checkbox" NAME="invoicing_list_POST" VALUE="POST" > Postal mail invoices
6639 <TD WIDTH="608" COLSPAN="2"><INPUT TYPE="checkbox" NAME="invoicing_list_FAX" VALUE="FAX" > Fax invoices
6646 <TD WIDTH="608" COLSPAN="2"><INPUT TYPE="checkbox" NAME="invoice_email" VALUE="Y" CHECKED> Email invoices
6652 <TD ALIGN="right" WIDTH="200">
6655 <TD WIDTH="408"><INPUT TYPE="text" NAME="invoicing_list" VALUE="">
6656 <INPUT TYPE="checkbox" NAME="message_noemail" VALUE="Y" > Do not send notices
6660 <INPUT TYPE="hidden" NAME="prorate_day" VALUE="">
6663 <TD ALIGN="right" WIDTH="200">Invoice terms </TD>
6665 <SELECT NAME = "invoice_terms"
6666 ID = "invoice_terms"
6669 # #false laziness w/select-table.html
6671 <OPTION VALUE="">Default (Payable upon receipt)
6672 <OPTION VALUE="Payable upon receipt" >Payable upon receipt
6673 <OPTION VALUE="Net 0" >Net 0
6674 <OPTION VALUE="Net 3" >Net 3
6675 <OPTION VALUE="Net 5" >Net 5
6676 <OPTION VALUE="Net 9" >Net 9
6677 <OPTION VALUE="Net 10" >Net 10
6678 <OPTION VALUE="Net 14" >Net 14
6679 <OPTION VALUE="Net 15" >Net 15
6680 <OPTION VALUE="Net 18" >Net 18
6681 <OPTION VALUE="Net 20" >Net 20
6682 <OPTION VALUE="Net 21" >Net 21
6683 <OPTION VALUE="Net 25" >Net 25
6684 <OPTION VALUE="Net 30" >Net 30
6685 <OPTION VALUE="Net 45" >Net 45
6686 <OPTION VALUE="Net 60" >Net 60
6687 <OPTION VALUE="Net 90" >Net 90
6694 <TD ALIGN="right" WIDTH="200">Credit limit </TD>
6696 <SCRIPT TYPE="text/javascript">
6697 function toggle(obj) {
6698 obj.form.credit_limit.disabled = obj.checked;
6701 <INPUT TYPE = "text"
6702 NAME = "credit_limit"
6706 <INPUT TYPE = "checkbox"
6707 NAME = "no_credit_limit"
6709 onClick="toggle(this)"
6715 <INPUT TYPE="hidden" NAME="spool_cdr" VALUE="">
6717 <INPUT TYPE="hidden" NAME="squelch_cdr" VALUE="">
6719 <INPUT TYPE="hidden" NAME="email_csv_cdr" VALUE="">
6721 <INPUT TYPE="hidden" NAME="accountcode_cdr" VALUE="">
6723 <INPUT TYPE="hidden" NAME="cdr_termination_percentage" VALUE="">
6728 <font color="#ff0000">*</font> required fields
6730 <script type="text/javascript">
6731 init_payauto_changed();
6739 <INPUT TYPE="hidden" NAME="locationnum" VALUE="">
6741 <INPUT TYPE="hidden" NAME="usernum" VALUE="3">
6743 <INPUT TYPE="hidden" NAME="payauto" VALUE="">
6744 <INPUT TYPE="hidden" NAME="billday" VALUE="">
6745 <INPUT TYPE="hidden" NAME="payinfo" VALUE="">
6746 <INPUT TYPE="hidden" NAME="payinfo1" VALUE="">
6747 <INPUT TYPE="hidden" NAME="payinfo2" VALUE="">
6748 <INPUT TYPE="hidden" NAME="payinfo3" VALUE="">
6749 <INPUT TYPE="hidden" NAME="paytype" VALUE="">
6750 <INPUT TYPE="hidden" NAME="payname" VALUE="">
6751 <INPUT TYPE="hidden" NAME="paystate" VALUE="">
6752 <INPUT TYPE="hidden" NAME="exp_month" VALUE="">
6753 <INPUT TYPE="hidden" NAME="exp_year" VALUE="">
6754 <INPUT TYPE="hidden" NAME="paycvv" VALUE="">
6755 <INPUT TYPE="hidden" NAME="paystart_month" VALUE="">
6756 <INPUT TYPE="hidden" NAME="paystart_year" VALUE="">
6757 <INPUT TYPE="hidden" NAME="payissue" VALUE="">
6758 <INPUT TYPE="hidden" NAME="payip" VALUE="">
6759 <INPUT TYPE="hidden" NAME="paid" VALUE="">
6763 <SCRIPT TYPE="text/javascript">
6765 function rs_init_object() {
6768 A=new ActiveXObject("Msxml2.XMLHTTP");
6771 A=new ActiveXObject("Microsoft.XMLHTTP");
6776 if(!A && typeof XMLHttpRequest != "undefined")
6777 A = new XMLHttpRequest();
6779 alert("Can't create XMLHttpRequest object");
6787 <SCRIPT TYPE="text/javascript">
6790 function address_standardize() {
6791 // count args; build URL
6792 var url = "http://localhost/freeside/misc/xmlhttp-address_standardize.html";
6793 var a = address_standardize.arguments;
6797 var content = 'sub=address_standardize';
6798 if ( a && typeof a == 'object' && a[0].constructor == Array ) {
6803 len = args.length - 1;
6805 for (var i = 0; i < len; i++)
6806 content = content + "&arg=" + escape(args[i]);
6807 content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs
6809 if ( 'POST' == 'GET' ) {
6810 url = url + content;
6813 //alert('POST ' + url);
6815 var xmlhttp = rs_init_object();
6816 xmlhttp.open("POST", url, true);
6818 xmlhttp.onreadystatechange = function() {
6819 if (xmlhttp.readyState != 4)
6822 if (xmlhttp.status != 200) {
6823 if ( xmlhttp.status != 0 ) {
6824 //not warning on the 0 errors, they pop up when navagating away
6826 alert(xmlhttp.status + " status connecting to " + url);
6829 var data = xmlhttp.responseText;
6830 //alert('received response: ' + data);
6831 if ( data.indexOf("<b>System error</b>") > -1 ) {
6832 // trim this a little
6833 var end = data.indexOf('<a href="#raw">') - 1;
6834 data = data.substring(0, end);
6837 WIDTH, 480, MIDX, 0, MIDY, 0,
6838 CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
6839 CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
6842 //if ( w = window.open("about:blank") ) {
6843 // w.document.write(data);
6845 // // popup blocking? should use an overlib popup instead
6846 // alert("Error popup disabled; try disabling popup blocking to see");
6849 // invoke the callback
6850 a[a.length-1](data);
6855 if ( 'POST' == 'POST' ) {
6857 xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
6858 xmlhttp.send(content);
6862 xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
6867 //rs_debug("x_$func_name url = " + url);
6868 //rs_debug("x_$func_name waiting..");
6875 <INPUT TYPE="hidden" NAME="duplicate_of_custnum" VALUE="">
6876 <SCRIPT TYPE="text/javascript">
6878 function rs_init_object() {
6881 A=new ActiveXObject("Msxml2.XMLHTTP");
6884 A=new ActiveXObject("Microsoft.XMLHTTP");
6889 if(!A && typeof XMLHttpRequest != "undefined")
6890 A = new XMLHttpRequest();
6892 alert("Can't create XMLHttpRequest object");
6900 <SCRIPT TYPE="text/javascript">
6903 function duplicates_form() {
6904 // count args; build URL
6905 var url = "http://localhost/freeside/misc/xmlhttp-cust_main-duplicates.html?";
6906 var a = duplicates_form.arguments;
6910 var content = 'sub=duplicates_form';
6911 if ( a && typeof a == 'object' && a[0].constructor == Array ) {
6916 len = args.length - 1;
6918 for (var i = 0; i < len; i++)
6919 content = content + "&arg=" + escape(args[i]);
6920 content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs
6922 if ( 'GET' == 'GET' ) {
6923 url = url + content;
6926 //alert('GET ' + url);
6928 var xmlhttp = rs_init_object();
6929 xmlhttp.open("GET", url, true);
6931 xmlhttp.onreadystatechange = function() {
6932 if (xmlhttp.readyState != 4)
6935 if (xmlhttp.status != 200) {
6936 if ( xmlhttp.status != 0 ) {
6937 //not warning on the 0 errors, they pop up when navagating away
6939 alert(xmlhttp.status + " status connecting to " + url);
6942 var data = xmlhttp.responseText;
6943 //alert('received response: ' + data);
6944 if ( data.indexOf("<b>System error</b>") > -1 ) {
6945 // trim this a little
6946 var end = data.indexOf('<a href="#raw">') - 1;
6947 data = data.substring(0, end);
6950 WIDTH, 480, MIDX, 0, MIDY, 0,
6951 CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
6952 CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
6955 //if ( w = window.open("about:blank") ) {
6956 // w.document.write(data);
6958 // // popup blocking? should use an overlib popup instead
6959 // alert("Error popup disabled; try disabling popup blocking to see");
6962 // invoke the callback
6963 a[a.length-1](data);
6968 if ( 'GET' == 'POST' ) {
6970 xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
6971 xmlhttp.send(content);
6975 xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
6980 //rs_debug("x_$func_name url = " + url);
6981 //rs_debug("x_$func_name waiting..");
6988 <SCRIPT TYPE="text/javascript">
6989 var fixups = ["copy_payby_fields","standardize_locations","do_submit"];
6991 var running = false;
6994 var myonload = function() {
6999 if ( window.addEventListener ) {
7000 window.addEventListener('load', myonload);
7001 } else if ( window.attachEvent ) {
7002 window.attachEvent('onload', myonload);
7007 function submit_continue() {
7009 window[ fixups[fixup_position++] ].call();
7013 function submit_abort() {
7016 document.CustomerForm.submitButton.disabled = false;
7020 function bottomfixup(what) {
7022 document.CustomerForm.submitButton.disabled = true;
7027 function do_submit() {
7028 document.CustomerForm.submit();
7031 function copy_payby_fields() {
7032 var layervars = new Array(
7033 'payauto', 'billday',
7034 'payinfo', 'payinfo1', 'payinfo2', 'payinfo3', 'paytype',
7035 'payname', 'paystate', 'exp_month', 'exp_year', 'paycvv',
7036 'paystart_month', 'paystart_year', 'payissue',
7041 var cf = document.CustomerForm;
7042 var payby = cf.payby.options[cf.payby.selectedIndex].value;
7043 for ( f=0; f < layervars.length; f++ ) {
7044 var field = layervars[f];
7045 copyelement( cf.elements[payby + '_' + field],
7052 function status_message(text, caption) {
7053 text = '<P STYLE="position:absolute; top:50%; margin-top:-1em; width:100%; text-align:center"><B><FONT SIZE="+1">' + text + '</FONT></B></P>';
7054 caption = caption || 'Please wait...';
7055 overlib(text, WIDTH, 444, HEIGHT, 168, CAPTION, caption, STICKY, AUTOSTATUSCAP, CLOSECLICK, MIDX, 0, MIDY, 0);
7058 function form_address_info() {
7059 var cf = document.CustomerForm;
7061 var returnobj = { billship: 1 };
7062 returnobj['same'] = cf.elements['same'].checked;
7063 returnobj['bill_address1'] = cf.elements['bill_address1'].value;
7064 returnobj['bill_address2'] = cf.elements['bill_address2'].value;
7065 returnobj['bill_state'] = cf.elements['bill_state'].value;
7066 returnobj['bill_zip'] = cf.elements['bill_zip'].value;
7067 returnobj['bill_country'] = cf.elements['bill_country'].value;
7068 returnobj['bill_city'] = cf.elements['bill_city'].value;
7069 returnobj['bill_censustract'] = cf.elements['bill_enter_censustract'].value;
7070 returnobj['ship_address1'] = cf.elements['ship_address1'].value;
7071 returnobj['ship_address2'] = cf.elements['ship_address2'].value;
7072 returnobj['ship_state'] = cf.elements['ship_state'].value;
7073 returnobj['ship_zip'] = cf.elements['ship_zip'].value;
7074 returnobj['ship_country'] = cf.elements['ship_country'].value;
7075 returnobj['ship_city'] = cf.elements['ship_city'].value;
7076 returnobj['ship_censustract'] = cf.elements['ship_enter_censustract'].value;
7081 function standardize_locations() {
7083 var cf = document.CustomerForm;
7084 var address_info = form_address_info();
7086 var changed = false; // have any of the address fields been changed?
7088 // clear coord_auto fields if the user has changed the coordinates
7090 if ( cf.elements['bill_latitude'].value != cf.elements['old_bill_latitude'].value ) {
7091 cf.elements['bill_coord_auto'].value = '';
7095 if ( cf.elements['bill_longitude'].value != cf.elements['old_bill_longitude'].value ) {
7096 cf.elements['bill_coord_auto'].value = '';
7099 // but if the coordinates have been set to null, turn coord_auto on
7101 if ( cf.elements['bill_latitude'].value == '' &&
7102 cf.elements['bill_longitude'].value == '' ) {
7103 cf.elements['bill_coord_auto'].value = 'Y';
7106 // standardize if the old address wasn't clean
7107 if ( cf.elements['bill_addr_clean'].value == '' ) {
7111 if ( cf.elements['ship_latitude'].value != cf.elements['old_ship_latitude'].value ) {
7112 cf.elements['ship_coord_auto'].value = '';
7116 if ( cf.elements['ship_longitude'].value != cf.elements['old_ship_longitude'].value ) {
7117 cf.elements['ship_coord_auto'].value = '';
7120 // but if the coordinates have been set to null, turn coord_auto on
7122 if ( cf.elements['ship_latitude'].value == '' &&
7123 cf.elements['ship_longitude'].value == '' ) {
7124 cf.elements['ship_coord_auto'].value = 'Y';
7127 // standardize if the old address wasn't clean
7128 if ( cf.elements['ship_addr_clean'].value == '' ) {
7132 // or if it was clean but has been changed
7133 for (var key in address_info) {
7134 var old_el = cf.elements['old_'+key];
7135 if ( old_el && address_info[key] != old_el.value ) {
7142 if ( !changed && 1 ) {
7143 if ( address_info['same'] ) {
7144 cf.elements['bill_censustract'].value =
7145 address_info['bill_censustract'];
7147 cf.elements['ship_censustract'].value =
7148 address_info['ship_censustract'];
7153 post_standardization();
7159 function confirm_standardize(arg) {
7160 // contains 'old', which was what we sent, and 'new', which is what came
7161 // back, including any errors
7162 returned = JSON.parse(arg);
7166 replace_address(); // with the contents of returned['new']
7168 } else if ( returned['all_same'] ) {
7170 // then all entered address fields are correct
7171 // but we still need to set the lat/long fields and addr_clean
7172 status_message('Verified');
7177 var querystring = encodeURIComponent( JSON.stringify(returned) );
7178 // confirmation popup: knows to call replace_address(),
7179 // post_standardization(), or submit_abort() depending on the
7182 'http://localhost/freeside//misc/confirm-address_standardize.html',
7185 overlib( OLresponseAJAX, CAPTION, 'Address standardization', STICKY,
7186 AUTOSTATUSCAP, CLOSETEXT, '', MIDX, 0, MIDY, 0, DRAGGABLE, WIDTH,
7187 576, HEIGHT, 268, BGCOLOR, '#333399', CGCOLOR, '#333399',
7194 function replace_address() {
7196 var newaddr = returned['new'];
7198 var cf = document.CustomerForm;
7199 var clean = newaddr['bill_addr_clean'] == 'Y';
7200 var error = newaddr['bill_error'];
7202 cf.elements['bill_address1'].value = newaddr['bill_address1'];
7203 cf.elements['bill_address2'].value = newaddr['bill_address2'];
7204 cf.elements['bill_state'].value = newaddr['bill_state'];
7205 cf.elements['bill_zip'].value = newaddr['bill_zip'];
7206 cf.elements['bill_addr_clean'].value = newaddr['bill_addr_clean'];
7207 cf.elements['bill_city'].value = newaddr['bill_city'];
7209 if ( cf.elements['bill_coord_auto'].value ) {
7210 cf.elements['bill_latitude'].value = newaddr['bill_latitude'];
7211 cf.elements['bill_longitude'].value = newaddr['bill_longitude'];
7213 if ( clean && newaddr['bill_censustract'] ) {
7214 cf.elements['bill_censustract'].value = newaddr['bill_censustract'];
7217 var clean = newaddr['ship_addr_clean'] == 'Y';
7218 var error = newaddr['ship_error'];
7220 cf.elements['ship_address1'].value = newaddr['ship_address1'];
7221 cf.elements['ship_address2'].value = newaddr['ship_address2'];
7222 cf.elements['ship_state'].value = newaddr['ship_state'];
7223 cf.elements['ship_zip'].value = newaddr['ship_zip'];
7224 cf.elements['ship_addr_clean'].value = newaddr['ship_addr_clean'];
7225 cf.elements['ship_city'].value = newaddr['ship_city'];
7227 if ( cf.elements['ship_coord_auto'].value ) {
7228 cf.elements['ship_latitude'].value = newaddr['ship_latitude'];
7229 cf.elements['ship_longitude'].value = newaddr['ship_longitude'];
7231 if ( clean && newaddr['ship_censustract'] ) {
7232 cf.elements['ship_censustract'].value = newaddr['ship_censustract'];
7236 post_standardization();
7240 function confirm_manual_address() {
7241 var cf = document.CustomerForm;
7242 cf.elements['bill_censustract'].value =
7243 cf.elements['bill_enter_censustract'].value;
7244 cf.elements['ship_censustract'].value =
7245 cf.elements['ship_enter_censustract'].value;
7246 post_standardization();
7249 function post_standardization() {
7257 function update_geocode() {
7260 set_geocode = function (what) {
7262 var cf = document.CustomerForm;
7263 var prefix = 'bill_';
7264 if ( cf.elements['same']
7265 && cf.elements['same'].checked
7266 && prefix == 'ship_' ) {
7270 //alert(what.options[what.selectedIndex].value);
7271 var argsHash = eval('(' + what.options[what.selectedIndex].value + ')');
7272 cf.elements[prefix + 'city'].value = argsHash['city'];
7273 setselect(cf.elements[prefix + 'state'], argsHash['state']);
7274 cf.elements[prefix + 'zip'].value = argsHash['zip'];
7275 cf.elements[prefix + 'geocode'].value = argsHash['geocode'];
7282 overlib( OLresponseAJAX, CAPTION, 'Select tax location', STICKY, AUTOSTATUSCAP, CLOSETEXT, '', MIDX, 0, MIDY, 0, WIDTH, 576, HEIGHT, 268, BGCOLOR, '#333399', CGCOLOR, '#333399', TEXTSIZE, 3 );
7286 function setselect(el, value) {
7288 for ( var s = 0; s < el.options.length; s++ ) {
7289 if ( el.options[s].value == value ) {
7290 el.selectedIndex = s;
7299 function copyelement(from, to) {
7300 if ( from == undefined ) {
7302 } else if ( from.type == 'select-one' ) {
7303 to.value = from.options[from.selectedIndex].value;
7304 //alert(from + " (" + from.type + "): " + to.name + " => (" + from.selectedIndex + ") " + to.value);
7305 } else if ( from.type == 'checkbox' ) {
7306 if ( from.checked ) {
7307 to.value = from.value;
7312 if ( from.value == undefined ) {
7315 to.value = from.value;
7318 //alert(from + " (" + from.type + "): " + to.name + " => " + to.value);
7321 function confirm_censustract(pre) {
7322 var cf = document.CustomerForm;
7323 if ( cf.elements[pre+'censustract'].value == '' ) {
7324 var address_info = form_address_info();
7325 address_info[pre+'latitude'] = cf.elements[pre+'latitude'].value;
7326 address_info[pre+'longitude'] = cf.elements[pre+'longitude'].value;
7327 address_info['prefix'] = pre;
7329 'http://localhost/freeside//misc/confirm-censustract.html',
7330 'q=' + encodeURIComponent(JSON.stringify(address_info)),
7332 if ( OLresponseAJAX ) {
7333 overlib( OLresponseAJAX, CAPTION, 'Confirm censustract', STICKY,
7334 AUTOSTATUSCAP, CLOSETEXT, '', MIDX, 0, MIDY, 0, DRAGGABLE, WIDTH,
7335 576, HEIGHT, 268, BGCOLOR, '#333399', CGCOLOR, '#333399',
7341 } else submit_continue();
7343 function confirm_censustract_bill() {
7344 confirm_censustract('bill_');
7347 function confirm_censustract_ship() {
7348 var cf = document.CustomerForm;
7349 if ( cf.elements['same'].checked ) {
7352 confirm_censustract('ship_');
7356 function set_censustract(tract, year, pre) {
7357 var cf = document.CustomerForm;
7358 cf.elements[pre + 'censustract'].value = tract;
7359 cf.elements[pre + 'censusyear'].value = year;
7363 function check_unique() {
7364 var search_hash = {};
7366 duplicates_form(JSON.stringify(search_hash), confirm_unique);
7369 function confirm_unique(arg) {
7370 if ( arg.match(/\S/) ) {
7371 overlib( arg, CAPTION, 'Duplicate customer', STICKY, AUTOSTATUSCAP,
7372 CLOSETEXT, '', MIDX, 0, MIDY, 0, DRAGGABLE, WIDTH, 576, HEIGHT,
7373 268, BGCOLOR, '#333399', CGCOLOR, '#333399', TEXTSIZE, 3 );
7374 } else { // no duplicates
7384 <INPUT TYPE = "button"
7385 NAME = "submitButton"
7387 VALUE = "Apply changes"
7388 onClick = "this.disabled=true; bottomfixup(this.form);"