default to a session cookie instead of setting an explicit timeout, weird timezone...
[freeside.git] / FS-Test / share / output / edit / cust_main-contacts.html / 135
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <HTML>
3   <HEAD>
4     <TITLE>
5       Edit customer contacts
6     </TITLE>
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"> 
13
14     <script type="text/javascript" src="http://localhost/freeside/elements/cssexpr.js"></script>
15
16
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">
19
20
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">
24
25 <SCRIPT TYPE="text/javascript">
26
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', FGCOLOR, '#f8f8f8', CLOSETEXT, 'Close'); 
29   }
30
31   webfxMenuImagePath      = "http://localhost/freeside/images/";
32   webfxMenuUseHover       = 1;
33   webfxMenuShowTime       = 300;
34   webfxMenuHideTime       = 500;
35
36   var myBar = new WebFXMenuBar;
37
38     
39           myBar.add(new WebFXMenuButton('Billing Main', "http://localhost/freeside/", 'Billing start page' ));
40
41     
42           myBar.add(new WebFXMenuButton('Ticketing Main', "http://localhost/freeside/rt/", 'Ticketing start page' ));
43
44     
45           myBar.add(new WebFXMenuButton('New prospect', "http://localhost/freeside/edit/prospect_main.html", 'Add a new prospect' ));
46
47     
48           myBar.add(new WebFXMenuButton('New customer', "http://localhost/freeside/edit/cust_main.cgi", 'Add a new customer' ));
49
50
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", "" ));
59 myMenu1.width = 256;
60
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", "" ));
66 myMenu2.width = 256;
67
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", "" ));
77 myMenu4.width = 256;
78
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", "" ));
87 myMenu3.add(new WebFXMenuItem("Customer stored payment information", "http://localhost/freeside/search/report_cust_payby.html", "" ));
88 myMenu3.width = 256;
89
90 myMenu0.add(new WebFXMenuItem("Customers", null, "Customer reports", myMenu3 ));
91 var myMenu5 = new WebFXMenu;
92 myMenu5.emptyText = '';
93 var myMenu6 = new WebFXMenu;
94 myMenu6.emptyText = '';
95 myMenu6.add(new WebFXMenuItem("All open invoices", "http://localhost/freeside/search/cust_bill.html?OPEN_date", "All invoices with an unpaid balance" ));
96 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" ));
97 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" ));
98 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" ));
99 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" ));
100 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" ));
101 myMenu6.width = 256;
102
103 myMenu5.add(new WebFXMenuItem("Open invoices", null, "Open invoices", myMenu6 ));
104 myMenu5.add(new WebFXMenuItem("All invoices", "http://localhost/freeside/search/cust_bill.html?date", "List all invoices" ));
105 myMenu5.add(new WebFXMenuItem("Advanced invoice reports", "http://localhost/freeside/search/report_cust_bill.html", "by agent, date range, etc." ));
106 myMenu5.add(new WebFXMenuSeparator());
107 myMenu5.add(new WebFXMenuItem("Line items", "http://localhost/freeside/search/report_cust_bill_pkg.html", "Individual line item detail" ));
108 myMenu5.add(new WebFXMenuItem("Voided invoices", "http://localhost/freeside/search/report_cust_bill_void.html", "Search for voided invoices" ));
109 myMenu5.width = 256;
110
111 myMenu0.add(new WebFXMenuItem("Invoices", null, "Invoice reports", myMenu5 ));
112 var myMenu7 = new WebFXMenu;
113 myMenu7.emptyText = '';
114 myMenu7.add(new WebFXMenuItem("Discount graph", "http://localhost/freeside/graph/report_cust_bill_pkg_discount.html", "Discount overview per month" ));
115 myMenu7.add(new WebFXMenuItem("Discount detail", "http://localhost/freeside/search/report_cust_bill_pkg_discount.html", "Discount report (by employee and/or date range)" ));
116 myMenu7.add(new WebFXMenuItem("Package discounts", "http://localhost/freeside/search/report_cust_pkg_discount.html", "Active/inactive discounts by package" ));
117 myMenu7.width = 256;
118
119 myMenu0.add(new WebFXMenuItem("Discounts", null, "Discount reports", myMenu7 ));
120 var myMenu8 = new WebFXMenu;
121 myMenu8.emptyText = '';
122 myMenu8.add(new WebFXMenuItem("Payments", "http://localhost/freeside/search/report_cust_pay.html", "Payment report (by type and/or date range)" ));
123 myMenu8.add(new WebFXMenuItem("Payment application detail", "http://localhost/freeside/search/report_cust_bill_pay_pkg.html", "Line item application detail" ));
124 myMenu8.add(new WebFXMenuItem("Pending Payments", "http://localhost/freeside/search/cust_pay_pending.html?magic=_date;statusNOT=done", "Pending real-time payments" ));
125 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)" ));
126 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)" ));
127 myMenu8.add(new WebFXMenuItem("Unapplied Payment Aging", "http://localhost/freeside/search/report_unapplied_cust_pay.html", "Unapplied payment aging report" ));
128 myMenu8.width = 256;
129
130 myMenu0.add(new WebFXMenuItem("Payments", null, "Payment reports", myMenu8 ));
131 var myMenu9 = new WebFXMenu;
132 myMenu9.emptyText = '';
133 myMenu9.add(new WebFXMenuItem("Package definitions (by # active)", "http://localhost/freeside/browse/part_pkg.cgi?active=1", "Package definitions by number of active packages" ));
134 myMenu9.add(new WebFXMenuItem("Package costs", "http://localhost/freeside/graph/report_cust_pkg_cost.html", "Package setup and recurring costs graph" ));
135 myMenu9.add(new WebFXMenuSeparator());
136 myMenu9.add(new WebFXMenuItem("Package churn", "http://localhost/freeside/graph/report_cust_pkg.html", "Orders, suspensions and cancellations summary graph" ));
137 myMenu9.add(new WebFXMenuSeparator());
138 myMenu9.add(new WebFXMenuItem("All customer packages", "http://localhost/freeside/search/cust_pkg.cgi?pkgnum", "List all customer packages" ));
139 myMenu9.add(new WebFXMenuItem("Package summary", "http://localhost/freeside/search/cust_pkg_summary.html", "Show package sales summary" ));
140 myMenu9.add(new WebFXMenuItem("Suspended customer packages", "http://localhost/freeside/search/cust_pkg.cgi?magic=suspended", "List suspended packages" ));
141 myMenu9.add(new WebFXMenuItem("Suspension summary", "http://localhost/freeside/search/cust_pkg_susp.html", "Show suspension activity" ));
142 myMenu9.add(new WebFXMenuItem("Customer packages with unconfigured services", "http://localhost/freeside/search/cust_pkg.cgi?APKG_pkgnum", "List packages which have provisionable services" ));
143 myMenu9.add(new WebFXMenuItem("Advanced package reports", "http://localhost/freeside/search/report_cust_pkg.html", "by agent, date range, status, package definition" ));
144 myMenu9.width = 256;
145
146 myMenu0.add(new WebFXMenuItem("Packages", null, "Package reports", myMenu9 ));
147 var myMenu10 = new WebFXMenu;
148 myMenu10.emptyText = '';
149 myMenu10.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi?orderby=active", "Service definitions by number of active packages" ));
150 myMenu10.add(new WebFXMenuSeparator());
151 myMenu10.add(new WebFXMenuItem("Unprovisioned services", "http://localhost/freeside/search/report_unprovisioned_services.html", "Unprovisioned services" ));
152 myMenu10.add(new WebFXMenuSeparator());
153 var myMenu11 = new WebFXMenu;
154 myMenu11.emptyText = '';
155 myMenu11.add(new WebFXMenuItem("All accounts by Username", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=username", "" ));
156 myMenu11.add(new WebFXMenuItem("All accounts by UID", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=uid", "" ));
157 myMenu11.add(new WebFXMenuItem("All accounts with Time Remaining", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=seconds", "" ));
158 myMenu11.add(new WebFXMenuItem("All accounts by Last login", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=last_login", "" ));
159 myMenu11.add(new WebFXMenuItem("All accounts never logged in", "http://localhost/freeside/search/svc_acct.cgi?magic=nologin;sortby=svcnum", "" ));
160 myMenu11.add(new WebFXMenuItem("Advanced account reports", "http://localhost/freeside/search/report_svc_acct.html", "" ));
161 myMenu11.width = 256;
162
163 myMenu10.add(new WebFXMenuItem("Accounts", null, "Access accounts and mailboxes", myMenu11 ));
164 var myMenu12 = new WebFXMenu;
165 myMenu12.emptyText = '';
166 myMenu12.add(new WebFXMenuItem("All domains", "http://localhost/freeside/search/svc_domain.cgi?magic=all;sortby=domain", "" ));
167 myMenu12.width = 256;
168
169 myMenu10.add(new WebFXMenuItem("Domains", null, "Domains", myMenu12 ));
170 var myMenu13 = new WebFXMenu;
171 myMenu13.emptyText = '';
172 myMenu13.add(new WebFXMenuItem("All certificates", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cert;magic=all;sortby=svcnum", "" ));
173 myMenu13.width = 256;
174
175 myMenu10.add(new WebFXMenuItem("Certificates", null, "Example services", myMenu13 ));
176 var myMenu14 = new WebFXMenu;
177 myMenu14.emptyText = '';
178 myMenu14.add(new WebFXMenuItem("All mail forwards", "http://localhost/freeside/search/svc_forward.cgi?magic=all;sortby=svcnum", "" ));
179 myMenu14.width = 256;
180
181 myMenu10.add(new WebFXMenuItem("Mail forwards", null, "Mail forwards", myMenu14 ));
182 var myMenu15 = new WebFXMenu;
183 myMenu15.emptyText = '';
184 myMenu15.add(new WebFXMenuItem("All mailing lists", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_mailinglist;magic=all;sortby=svcnum", "" ));
185 myMenu15.width = 256;
186
187 myMenu10.add(new WebFXMenuItem("Mailing lists", null, "Mailing lists", myMenu15 ));
188 var myMenu16 = new WebFXMenu;
189 myMenu16.emptyText = '';
190 myMenu16.add(new WebFXMenuItem("All virtual hosting services", "http://localhost/freeside/search/svc_www.cgi?magic=all;sortby=svcnum", "" ));
191 myMenu16.width = 256;
192
193 myMenu10.add(new WebFXMenuItem("Virtual hosting services", null, "Virtual hosting services", myMenu16 ));
194 var myMenu17 = new WebFXMenu;
195 myMenu17.emptyText = '';
196 myMenu17.add(new WebFXMenuItem("All wireless broadband services", "http://localhost/freeside/search/svc_broadband.cgi?magic=all;sortby=svcnum", "" ));
197 myMenu17.add(new WebFXMenuItem("Advanced wireless broadband reports", "http://localhost/freeside/search/report_svc_broadband.html", "" ));
198 myMenu17.width = 256;
199
200 myMenu10.add(new WebFXMenuItem("Wireless broadband services", null, "Fixed wireless broadband services", myMenu17 ));
201 var myMenu18 = new WebFXMenu;
202 myMenu18.emptyText = '';
203 myMenu18.add(new WebFXMenuItem("All cable subscribers by Service", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=svcnum", "" ));
204 myMenu18.add(new WebFXMenuItem("All cable subscribers by Serial number", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=serialnum", "" ));
205 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", "" ));
206 myMenu18.width = 256;
207
208 myMenu10.add(new WebFXMenuItem("Cable Subscribers", null, "Cable Subscribers", myMenu18 ));
209 var myMenu19 = new WebFXMenu;
210 myMenu19.emptyText = '';
211 myMenu19.add(new WebFXMenuItem("All DSLs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_dsl;magic=all;sortby=phonenum", "" ));
212 myMenu19.add(new WebFXMenuItem("Qualifications", "http://localhost/freeside/search/qual.cgi", "" ));
213 myMenu19.width = 256;
214
215 myMenu10.add(new WebFXMenuItem("DSLs", null, "DSLs", myMenu19 ));
216 var myMenu20 = new WebFXMenu;
217 myMenu20.emptyText = '';
218 myMenu20.add(new WebFXMenuItem("All dish services", "http://localhost/freeside/search/svc_dish.cgi?magic=all;sortby=svcnum", "" ));
219 myMenu20.width = 256;
220
221 myMenu10.add(new WebFXMenuItem("Dish services", null, "Dish services", myMenu20 ));
222 var myMenu21 = new WebFXMenu;
223 myMenu21.emptyText = '';
224 myMenu21.add(new WebFXMenuItem("All hardware", "http://localhost/freeside/search/svc_hardware.cgi?magic=all;sortby=svcnum", "" ));
225 myMenu21.add(new WebFXMenuItem("Advanced hardware reports", "http://localhost/freeside/search/report_svc_hardware.html", "" ));
226 myMenu21.width = 256;
227
228 myMenu10.add(new WebFXMenuItem("Hardware", null, "Hardware", myMenu21 ));
229 var myMenu22 = new WebFXMenu;
230 myMenu22.emptyText = '';
231 myMenu22.add(new WebFXMenuItem("All phone numbers", "http://localhost/freeside/search/svc_phone.cgi?magic=all;sortby=phonenum", "" ));
232 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." ));
233 myMenu22.add(new WebFXMenuItem("Phone numbers by state", "http://localhost/freeside/search/phone_state.html", "Current or historical phone services broken down by state." ));
234 myMenu22.add(new WebFXMenuItem("Advanced phone number reports", "http://localhost/freeside/search/report_svc_phone.html", "" ));
235 myMenu22.add(new WebFXMenuItem("Phone number (DID) availability", "http://localhost/freeside/search/report_phone_avail.html", "" ));
236 myMenu22.add(new WebFXMenuItem("Inventory/Provisioning Status", "http://localhost/freeside/search/phone_inventory_provisioned.html", "" ));
237 myMenu22.width = 256;
238
239 myMenu10.add(new WebFXMenuItem("Phone numbers", null, "Phone numbers", myMenu22 ));
240 var myMenu23 = new WebFXMenu;
241 myMenu23.emptyText = '';
242 myMenu23.add(new WebFXMenuItem("All PBXs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_pbx;magic=all;sortby=svcnum", "" ));
243 myMenu23.width = 256;
244
245 myMenu10.add(new WebFXMenuItem("PBXs", null, "PBXs", myMenu23 ));
246 var myMenu24 = new WebFXMenu;
247 myMenu24.emptyText = '';
248 myMenu24.add(new WebFXMenuItem("All circuits", "http://localhost/freeside/search/svc_circuit.cgi?magic=all;sortby=svcnum", "" ));
249 myMenu24.width = 256;
250
251 myMenu10.add(new WebFXMenuItem("Circuits", null, "Voice and data circuit services", myMenu24 ));
252 var myMenu25 = new WebFXMenu;
253 myMenu25.emptyText = '';
254 myMenu25.add(new WebFXMenuItem("All ports", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_port;magic=all;sortby=serviceid", "" ));
255 myMenu25.width = 256;
256
257 myMenu10.add(new WebFXMenuItem("Ports", null, "Ports", myMenu25 ));
258 var myMenu26 = new WebFXMenu;
259 myMenu26.emptyText = '';
260 myMenu26.add(new WebFXMenuItem("All alarm services", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_alarm;magic=all;sortby=acctnum", "" ));
261 myMenu26.width = 256;
262
263 myMenu10.add(new WebFXMenuItem("Alarm services", null, "Alarm services", myMenu26 ));
264 var myMenu27 = new WebFXMenu;
265 myMenu27.emptyText = '';
266 myMenu27.add(new WebFXMenuItem("All external services", "http://localhost/freeside/search/svc_external.cgi?magic=all;sortby=id", "" ));
267 myMenu27.width = 256;
268
269 myMenu10.add(new WebFXMenuItem("External services", null, "External services", myMenu27 ));
270 myMenu10.width = 256;
271
272 myMenu0.add(new WebFXMenuItem("Services", null, "Services reports", myMenu10 ));
273 var myMenu28 = new WebFXMenu;
274 myMenu28.emptyText = '';
275 myMenu28.add(new WebFXMenuItem("Inventory by agent", "http://localhost/freeside/search/report_agent_inventory.html", "" ));
276 myMenu28.add(new WebFXMenuItem("Inventory activity", "http://localhost/freeside/search/report_h_inventory_item.html", "" ));
277 myMenu28.width = 256;
278
279 myMenu0.add(new WebFXMenuItem("Inventory", null, "Inventory reports", myMenu28 ));
280 var myMenu29 = new WebFXMenu;
281 myMenu29.emptyText = '';
282 myMenu29.add(new WebFXMenuItem("RADIUS sessions", "http://localhost/freeside/search/sqlradius.html", "" ));
283 myMenu29.add(new WebFXMenuItem("RADIUS data usage", "http://localhost/freeside/search/report_sqlradius_usage.html", "" ));
284 myMenu29.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/search/report_cdr.html", "" ));
285 myMenu29.add(new WebFXMenuItem("Unrateable CDRs", "http://localhost/freeside/search/cdr.html?freesidestatus=failed;cdrbatchnum=_ALL_", "" ));
286 myMenu29.width = 256;
287
288 myMenu0.add(new WebFXMenuItem("Usage", null, "Usage reports", myMenu29 ));
289 var myMenu30 = new WebFXMenu;
290 myMenu30.emptyText = '';
291 var myMenu31 = new WebFXMenu;
292 myMenu31.emptyText = '';
293 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" ));
294 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" ));
295 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" ));
296 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" ));
297 myMenu31.add(new WebFXMenuItem("Time to resolve", "http://localhost/freeside/rt/RTx/Statistics/Resolution", "View how long tickets take to be resolved by Queue" ));
298 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" ));
299 myMenu31.width = 256;
300
301 myMenu30.add(new WebFXMenuItem("Statistics", null, "", myMenu31 ));
302 myMenu30.add(new WebFXMenuSeparator());
303 myMenu30.add(new WebFXMenuItem("Advanced ticket reports", "http://localhost/freeside/rt/Search/Build.html?NewQuery=1", "List tickets by any criteria" ));
304 myMenu30.width = 256;
305
306 myMenu0.add(new WebFXMenuItem("Tickets", null, "Ticket reports", myMenu30 ));
307 var myMenu32 = new WebFXMenu;
308 myMenu32.emptyText = '';
309 var myMenu33 = new WebFXMenu;
310 myMenu33.emptyText = '';
311 myMenu33.add(new WebFXMenuItem("Sales, Credits and Receipts", "http://localhost/freeside/graph/report_money_time.html", "Sales, credits and receipts summary graph" ));
312 myMenu33.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" ));
313 myMenu33.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)" ));
314 myMenu33.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)" ));
315 myMenu33.add(new WebFXMenuItem("Sales with Advertising Source", "http://localhost/freeside/search/report_cust_bill_pkg_referral.html", "" ));
316 myMenu33.width = 256;
317
318 myMenu32.add(new WebFXMenuItem("Sales", null, "Sales reports", myMenu33 ));
319 var myMenu34 = new WebFXMenu;
320 myMenu34.emptyText = '';
321 myMenu34.add(new WebFXMenuItem("Agent", "http://localhost/freeside/search/report_agent_commission.html", "" ));
322 myMenu34.add(new WebFXMenuItem("Agent per package", "http://localhost/freeside/search/report_agent_commission_pkg.html", "" ));
323 myMenu34.add(new WebFXMenuItem("Sales Person", "http://localhost/freeside/search/report_sales_commission.html", "" ));
324 myMenu34.add(new WebFXMenuItem("Sales Person per package", "http://localhost/freeside/search/report_sales_commission_pkg.html", "" ));
325 myMenu34.add(new WebFXMenuItem("Employee", "http://localhost/freeside/search/report_employee_commission.html", "" ));
326 myMenu34.width = 256;
327
328 myMenu32.add(new WebFXMenuItem("Commissions", null, "Commission reports", myMenu34 ));
329 var myMenu35 = new WebFXMenu;
330 myMenu35.emptyText = '';
331 myMenu35.add(new WebFXMenuItem("Credit Report", "http://localhost/freeside/search/report_cust_credit.html", "Credit report (by employee and/or date range)" ));
332 myMenu35.add(new WebFXMenuItem("Credit package source detail", "http://localhost/freeside/search/report_cust_credit_source_bill_pkg.html", "Line-item detail for triggered package credits" ));
333 myMenu35.add(new WebFXMenuItem("Credit application detail", "http://localhost/freeside/search/report_cust_credit_bill_pkg.html", "Line item application detail" ));
334 myMenu35.add(new WebFXMenuItem("Unapplied Credits", "http://localhost/freeside/search/report_cust_credit.html?unapplied=1", "Unapplied credit report (by type and/or date range)" ));
335 myMenu35.add(new WebFXMenuItem("Voided Credits", "http://localhost/freeside/search/report_cust_credit_void.html", "Voided credit report (by employee and/or date range)" ));
336 myMenu35.width = 256;
337
338 myMenu32.add(new WebFXMenuItem("Credits", null, "Credit reports", myMenu35 ));
339 var myMenu36 = new WebFXMenu;
340 myMenu36.emptyText = '';
341 myMenu36.add(new WebFXMenuItem("Refund Report", "http://localhost/freeside/search/report_cust_refund.html", "Refund report (by type and/or date range)" ));
342 myMenu36.add(new WebFXMenuItem("Unapplied Refunds", "http://localhost/freeside/search/report_cust_refund.html?unapplied=1", "Unapplied refund report (by type and/or date range)" ));
343 myMenu36.width = 256;
344
345 myMenu32.add(new WebFXMenuItem("Refunds", null, "Refund reports", myMenu36 ));
346 myMenu32.add(new WebFXMenuItem("A/R Aging", "http://localhost/freeside/search/report_receivables.html", "Accounts Receivable Aging report" ));
347 myMenu32.add(new WebFXMenuItem("Prepaid Income", "http://localhost/freeside/search/report_prepaid_income.html", "Prepaid income (unearned revenue)  report" ));
348 myMenu32.add(new WebFXMenuItem("Tax Liability", "http://localhost/freeside/search/report_tax.html", "Tax liability report (internal tax data)" ));
349 myMenu32.add(new WebFXMenuItem("E911 Fee Summary", "http://localhost/freeside/search/report_e911.html", "E911 fee summary" ));
350 myMenu32.add(new WebFXMenuItem("Customer Accounting Summary", "http://localhost/freeside/search/report_customer_accounting_summary.html", "Customer accounting summary report" ));
351 myMenu32.width = 256;
352
353 myMenu0.add(new WebFXMenuItem("Financial (Receivables)", null, "Financial reports (Receivables)", myMenu32 ));
354 var myMenu37 = new WebFXMenu;
355 myMenu37.emptyText = '';
356 myMenu37.add(new WebFXMenuItem("Payables summary", "http://localhost/freeside/search/report_vend_main.html", "Payables summary by vendor" ));
357 myMenu37.add(new WebFXMenuItem("Payables detail", "http://localhost/freeside/search/report_vend_bill.html", "" ));
358 myMenu37.width = 256;
359
360 myMenu0.add(new WebFXMenuItem("Financial (Payables)", null, "Financial reports (Payables)", myMenu37 ));
361 var myMenu38 = new WebFXMenu;
362 myMenu38.emptyText = '';
363 var myMenu39 = new WebFXMenu;
364 myMenu39.emptyText = '';
365 myMenu39.add(new WebFXMenuItem("All billing events", "http://localhost/freeside/search/report_cust_event.html", "All billing events for a date range" ));
366 myMenu39.add(new WebFXMenuItem("Billing event errors", "http://localhost/freeside/search/report_cust_event.html?failed=1", "Failed credit cards, processor or printer problems, etc." ));
367 myMenu39.width = 256;
368
369 myMenu38.add(new WebFXMenuItem("Billing events", null, "Billing events", myMenu39 ));
370 myMenu38.add(new WebFXMenuItem("Credit limit incidents", "http://localhost/freeside/search/report_cust_main_credit_limit.html", "" ));
371 myMenu38.add(new WebFXMenuItem("Employee activity", "http://localhost/freeside/search/report_employee_audit.html", "" ));
372 myMenu38.add(new WebFXMenuItem("System log", "http://localhost/freeside/search/log.html", "View system events and debugging information." ));
373 myMenu38.add(new WebFXMenuItem("Outgoing messages", "http://localhost/freeside/search/cust_msg.html", "View outgoing message log" ));
374 myMenu38.width = 256;
375
376 myMenu0.add(new WebFXMenuItem("Logs", null, "System and email logs", myMenu38 ));
377 myMenu0.width = 256;
378
379           myBar.add(new WebFXMenuButton('Reports', null, 'Lists, reporting and graphing', myMenu0 ));
380
381
382           var myMenu40 = new WebFXMenu;
383 myMenu40.emptyText = '';
384 var myMenu41 = new WebFXMenu;
385 myMenu41.emptyText = '';
386 myMenu41.add(new WebFXMenuItem("Appointments", "http://localhost/freeside/rt/Search/Schedule.html?LengthMin=0", "View appointment schedule" ));
387 myMenu41.add(new WebFXMenuItem("Attachments", "http://localhost/freeside/browse/cust_attachment.html", "View customer attachments" ));
388 myMenu41.add(new WebFXMenuItem("Customer email settings", "http://localhost/freeside/misc/manage_cust_email.html", "" ));
389 myMenu41.width = 256;
390
391 myMenu40.add(new WebFXMenuItem("Customers", null, "Customer tools", myMenu41 ));
392 var myMenu42 = new WebFXMenu;
393 myMenu42.emptyText = '';
394 myMenu42.add(new WebFXMenuItem("Quick payment entry", "http://localhost/freeside/misc/batch-cust_pay.html", "Enter multiple payments in a batch" ));
395 myMenu42.add(new WebFXMenuItem("Download invoice batches", "http://localhost/freeside/search/bill_batch.cgi", "" ));
396 myMenu42.width = 256;
397
398 myMenu40.add(new WebFXMenuItem("Billing", null, "Payment and invoice tools", myMenu42 ));
399 var myMenu43 = new WebFXMenu;
400 myMenu43.emptyText = '';
401 var myMenu44 = new WebFXMenu;
402 myMenu44.emptyText = '';
403 myMenu44.add(new WebFXMenuItem("Overview", "http://localhost/freeside/rt/Articles/index.html", "" ));
404 myMenu44.add(new WebFXMenuItem("Search", "http://localhost/freeside/rt/Articles/Article/Search.html", "" ));
405 myMenu44.add(new WebFXMenuItem("Topics", "http://localhost/freeside/rt/Articles/Topics.html", "" ));
406 myMenu44.width = 256;
407
408 myMenu43.add(new WebFXMenuItem("Articles", null, "", myMenu44 ));
409 myMenu43.add(new WebFXMenuItem("My Day", "http://localhost/freeside/rt/Tools/MyDay.html", "" ));
410 myMenu43.add(new WebFXMenuItem("My Reminders", "http://localhost/freeside/rt/Tools/MyReminders.html", "" ));
411 myMenu43.add(new WebFXMenuItem("Offline", "http://localhost/freeside/rt/Tools/Offline.html", "" ));
412 myMenu43.add(new WebFXMenuItem("Approval", "http://localhost/freeside/rt/Approvals/", "" ));
413 myMenu43.width = 256;
414
415 myMenu40.add(new WebFXMenuItem("Ticketing", null, "Ticketing tools", myMenu43 ));
416 var myMenu45 = new WebFXMenu;
417 myMenu45.emptyText = '';
418 myMenu45.add(new WebFXMenuItem("Bulk DID Orders", "http://localhost/freeside/browse/did_order.html", "View/manage bulk DID orders" ));
419 myMenu45.add(new WebFXMenuItem("Business card scan", "http://localhost/freeside/edit/prospect_main-upload.html", "" ));
420 myMenu45.width = 256;
421
422 myMenu40.add(new WebFXMenuItem("Miscellaneous", null, "", myMenu45 ));
423 var myMenu46 = new WebFXMenu;
424 myMenu46.emptyText = '';
425 myMenu46.add(new WebFXMenuItem("Customers", "http://localhost/freeside/misc/cust_main-import.cgi", "" ));
426 myMenu46.add(new WebFXMenuItem("Package definitions", "http://localhost/freeside/misc/part_pkg-import.html", "" ));
427 myMenu46.add(new WebFXMenuItem("Customer packages", "http://localhost/freeside/misc/cust_pkg-import.html", "" ));
428 myMenu46.add(new WebFXMenuItem("Customer comments", "http://localhost/freeside/misc/cust_main_note-import.html", "" ));
429 myMenu46.add(new WebFXMenuItem("One-time charges", "http://localhost/freeside/misc/cust_main-import_charges.cgi", "" ));
430 myMenu46.add(new WebFXMenuItem("Payments", "http://localhost/freeside/misc/cust_pay-import.cgi", "" ));
431 myMenu46.add(new WebFXMenuItem("Credits", "http://localhost/freeside/misc/cust_credit-import.html", "" ));
432 myMenu46.add(new WebFXMenuItem("Phone numbers (DIDs)", "http://localhost/freeside/misc/phone_avail-import.html", "" ));
433 myMenu46.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/misc/cdr-import.html", "" ));
434 myMenu46.width = 256;
435
436 myMenu40.add(new WebFXMenuItem("Importing", null, "Import tools", myMenu46 ));
437 var myMenu47 = new WebFXMenu;
438 myMenu47.emptyText = '';
439 myMenu47.add(new WebFXMenuItem("Status", "http://localhost/freeside/view/Status.html", "System status" ));
440 myMenu47.add(new WebFXMenuItem("Job Queue", "http://localhost/freeside/search/queue.html", "View pending job queue" ));
441 myMenu47.width = 256;
442
443 myMenu40.add(new WebFXMenuItem("System", null, "System tools", myMenu47 ));
444 myMenu40.width = 256;
445
446           myBar.add(new WebFXMenuButton('Tools', null, 'Tools', myMenu40 ));
447
448
449           var myMenu48 = new WebFXMenu;
450 myMenu48.emptyText = '';
451 myMenu48.add(new WebFXMenuItem("Settings", "http://localhost/freeside/config/config-view.cgi", "" ));
452 myMenu48.add(new WebFXMenuSeparator());
453 var myMenu49 = new WebFXMenu;
454 myMenu49.emptyText = '';
455 myMenu49.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" ));
456 myMenu49.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)" ));
457 myMenu49.add(new WebFXMenuItem("Agent payment gateways", "http://localhost/freeside/browse/payment_gateway.html", "Credit card and electronic check processors for agent overrides" ));
458 myMenu49.width = 256;
459
460 myMenu48.add(new WebFXMenuItem("Companies", null, "", myMenu49 ));
461 var myMenu50 = new WebFXMenu;
462 myMenu50.emptyText = '';
463 myMenu50.add(new WebFXMenuItem("Sales People", "http://localhost/freeside/browse/sales.html", "Sales people bring in new business." ));
464 myMenu50.width = 256;
465
466 myMenu48.add(new WebFXMenuItem("Sales People", null, "", myMenu50 ));
467 var myMenu51 = new WebFXMenu;
468 myMenu51.emptyText = '';
469 myMenu51.add(new WebFXMenuItem("Employees", "http://localhost/freeside/browse/access_user.html", "Setup internal users" ));
470 myMenu51.add(new WebFXMenuItem("Employee groups", "http://localhost/freeside/browse/access_group.html", "Employee groups allow you to control access to the backend" ));
471 myMenu51.add(new WebFXMenuItem("Installer availability", "http://localhost/freeside/browse/sched_item.html", "Installer availability" ));
472 myMenu51.width = 256;
473
474 myMenu48.add(new WebFXMenuItem("Employees", null, "", myMenu51 ));
475 myMenu48.add(new WebFXMenuSeparator());
476 var myMenu52 = new WebFXMenu;
477 myMenu52.emptyText = '';
478 myMenu52.add(new WebFXMenuItem("Customer tags", "http://localhost/freeside/browse/part_tag.html", "" ));
479 myMenu52.add(new WebFXMenuItem("Customer classes", "http://localhost/freeside/browse/cust_class.html", "Customer classes define groups of customers for reporting." ));
480 myMenu52.add(new WebFXMenuItem("Customer categories", "http://localhost/freeside/browse/cust_category.html", "Customer categories define groups of customer classes." ));
481 myMenu52.add(new WebFXMenuSeparator());
482 myMenu52.add(new WebFXMenuItem("Contact types", "http://localhost/freeside/browse/contact_class.html", "" ));
483 myMenu52.width = 256;
484
485 myMenu48.add(new WebFXMenuItem("Customers", null, "", myMenu52 ));
486 var myMenu53 = new WebFXMenu;
487 myMenu53.emptyText = '';
488 myMenu53.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" ));
489 myMenu53.add(new WebFXMenuItem("Package classes", "http://localhost/freeside/browse/pkg_class.html", "Package classes define groups of packages, for taxation, ordering convenience and reporting." ));
490 myMenu53.add(new WebFXMenuItem("Package categories", "http://localhost/freeside/browse/pkg_category.html", "Package categories define groups of package classes, for invoice sections." ));
491 myMenu53.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." ));
492 myMenu53.add(new WebFXMenuItem("Fees", "http://localhost/freeside/browse/part_fee.html", "" ));
493 myMenu53.add(new WebFXMenuItem("Discounts", "http://localhost/freeside/browse/discount.html", "" ));
494 myMenu53.add(new WebFXMenuItem("Discount classes", "http://localhost/freeside/browse/discount_class.html", "" ));
495 var myMenu54 = new WebFXMenu;
496 myMenu54.emptyText = '';
497 myMenu54.add(new WebFXMenuItem("Cancel reasons", "http://localhost/freeside/browse/reason.html?class=C", "Cancel reasons explain why a service was cancelled." ));
498 myMenu54.add(new WebFXMenuItem("Cancel reason types", "http://localhost/freeside/browse/reason_type.html?class=C", "Cancel reason types define groups of reasons." ));
499 myMenu54.add(new WebFXMenuItem("Suspend reasons", "http://localhost/freeside/browse/reason.html?class=S", "Suspend reasons explain why a service was suspended." ));
500 myMenu54.add(new WebFXMenuItem("Suspend reason types", "http://localhost/freeside/browse/reason_type.html?class=S", "Suspend reason types define groups of reasons." ));
501 myMenu54.width = 256;
502
503 myMenu53.add(new WebFXMenuItem("Cancel/Suspend Reasons", null, "", myMenu54 ));
504 myMenu53.width = 256;
505
506 myMenu48.add(new WebFXMenuItem("Packages", null, "", myMenu53 ));
507 var myMenu55 = new WebFXMenu;
508 myMenu55.emptyText = '';
509 myMenu55.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi", "Services are items you offer to your customers" ));
510 myMenu55.add(new WebFXMenuItem("Service classes", "http://localhost/freeside/browse/part_svc_class.html", "Services classes are user-defined, informational types for services" ));
511 myMenu55.add(new WebFXMenuItem("Service dependencies", "http://localhost/freeside/browse/part_svc_link.html", "Services depencies define rules between service definitions" ));
512 myMenu55.add(new WebFXMenuItem("Provisioning exports", "http://localhost/freeside/browse/part_export.cgi", "Provisioning services to external machines, databases and APIs" ));
513 var myMenu56 = new WebFXMenu;
514 myMenu56.emptyText = '';
515 myMenu56.add(new WebFXMenuItem("Access numbers", "http://localhost/freeside/browse/svc_acct_pop.cgi", "Points of Presence" ));
516 myMenu56.width = 256;
517
518 myMenu55.add(new WebFXMenuItem("Dialup", null, "", myMenu56 ));
519 var myMenu57 = new WebFXMenu;
520 myMenu57.emptyText = '';
521 myMenu57.add(new WebFXMenuItem("Towers", "http://localhost/freeside/browse/tower.html", "Towers and sectors" ));
522 myMenu57.add(new WebFXMenuItem("Routers", "http://localhost/freeside/browse/router.cgi", "Broadband access routers" ));
523 myMenu57.add(new WebFXMenuItem("Address blocks", "http://localhost/freeside/browse/addr_block.cgi", "Manage address blocks and block assignments to broadband routers" ));
524 myMenu57.add(new WebFXMenuItem("Address ranges", "http://localhost/freeside/browse/addr_range.html", "Designate special address ranges" ));
525 myMenu57.width = 256;
526
527 myMenu55.add(new WebFXMenuItem("Wireless broadband", null, "", myMenu57 ));
528 var myMenu58 = new WebFXMenu;
529 myMenu58.emptyText = '';
530 myMenu58.add(new WebFXMenuItem("View/Edit phone device types", "http://localhost/freeside/browse/part_device.html", "Phone device types" ));
531 myMenu58.add(new WebFXMenuItem("View/Edit bulk DID vendors", "http://localhost/freeside/browse/did_vendor.html", "Bulk DID vendors" ));
532 myMenu58.add(new WebFXMenuItem("View/Edit Carriers", "http://localhost/freeside/browse/cdr_carrier.html", "Carriers" ));
533 myMenu58.width = 256;
534
535 myMenu55.add(new WebFXMenuItem("Phone", null, "", myMenu58 ));
536 var myMenu59 = new WebFXMenu;
537 myMenu59.emptyText = '';
538 myMenu59.add(new WebFXMenuItem("RADIUS Groups", "http://localhost/freeside/browse/radius_group.html", "Manage RADIUS groups" ));
539 myMenu59.add(new WebFXMenuItem("RADIUS Clients", "http://localhost/freeside/browse/nas.html", "Manage RADIUS clients" ));
540 myMenu59.width = 256;
541
542 myMenu55.add(new WebFXMenuItem("RADIUS", null, "", myMenu59 ));
543 var myMenu60 = new WebFXMenu;
544 myMenu60.emptyText = '';
545 myMenu60.add(new WebFXMenuItem("Cable providers", "http://localhost/freeside/browse/cable_provider.html", "" ));
546 myMenu60.add(new WebFXMenuItem("Cable modem models", "http://localhost/freeside/browse/cable_model.html", "" ));
547 myMenu60.width = 256;
548
549 myMenu55.add(new WebFXMenuItem("Cable", null, "", myMenu60 ));
550 var myMenu61 = new WebFXMenu;
551 myMenu61.emptyText = '';
552 myMenu61.add(new WebFXMenuItem("Conferencing types", "http://localhost/freeside/browse/conferencing_type.html", "" ));
553 myMenu61.add(new WebFXMenuItem("Quality levels", "http://localhost/freeside/browse/conferencing_quality.html", "" ));
554 myMenu61.width = 256;
555
556 myMenu55.add(new WebFXMenuItem("Conferencing", null, "", myMenu61 ));
557 var myMenu62 = new WebFXMenu;
558 myMenu62.emptyText = '';
559 myMenu62.add(new WebFXMenuItem("Alarm system vendors", "http://localhost/freeside/browse/alarm_system.html", "" ));
560 myMenu62.add(new WebFXMenuItem("Alarm system types", "http://localhost/freeside/browse/alarm_type.html", "" ));
561 myMenu62.add(new WebFXMenuItem("Alarm central stations", "http://localhost/freeside/browse/alarm_station.html", "" ));
562 myMenu62.width = 256;
563
564 myMenu55.add(new WebFXMenuItem("Alarm", null, "", myMenu62 ));
565 var myMenu63 = new WebFXMenu;
566 myMenu63.emptyText = '';
567 myMenu63.add(new WebFXMenuItem("Circuit types", "http://localhost/freeside/browse/circuit_type.html", "" ));
568 myMenu63.add(new WebFXMenuItem("Circuit providers", "http://localhost/freeside/browse/circuit_provider.html", "" ));
569 myMenu63.add(new WebFXMenuItem("Termination types", "http://localhost/freeside/browse/circuit_termination.html", "" ));
570 myMenu63.width = 256;
571
572 myMenu55.add(new WebFXMenuItem("Circuits", null, "", myMenu63 ));
573 myMenu55.add(new WebFXMenuItem("Hardware types", "http://localhost/freeside/browse/hardware_class.html", "Set up hardware type catalog" ));
574 myMenu55.width = 256;
575
576 myMenu48.add(new WebFXMenuItem("Services", null, "", myMenu55 ));
577 myMenu48.add(new WebFXMenuSeparator());
578 var myMenu64 = new WebFXMenu;
579 myMenu64.emptyText = '';
580 myMenu64.add(new WebFXMenuItem("Vendor classes", "http://localhost/freeside/browse/vend_class.html", "" ));
581 myMenu64.add(new WebFXMenuItem("Vendors", "http://localhost/freeside/browse/vend_main.html", "" ));
582 myMenu64.width = 256;
583
584 myMenu48.add(new WebFXMenuItem("Vendors", null, "", myMenu64 ));
585 myMenu48.add(new WebFXMenuSeparator());
586 var myMenu65 = new WebFXMenu;
587 myMenu65.emptyText = '';
588 myMenu65.add(new WebFXMenuItem("Billing events", "http://localhost/freeside/browse/part_event.html", "Billing actions for customers, invoices and packages" ));
589 myMenu65.add(new WebFXMenuItem("Invoice configurations", "http://localhost/freeside/browse/invoice_conf.html", "Adjust invoice settings for special-purpose notices" ));
590 myMenu65.add(new WebFXMenuItem("Invoice templates", "http://localhost/freeside/browse/invoice_template.html", "Edit templates for HTML, plaintext and typeset invoices" ));
591 myMenu65.add(new WebFXMenuSeparator());
592 myMenu65.add(new WebFXMenuItem("Prepaid cards", "http://localhost/freeside/search/prepay_credit.html", "View outstanding cards, generate new cards" ));
593 var myMenu66 = new WebFXMenu;
594 myMenu66.emptyText = '';
595 myMenu66.add(new WebFXMenuItem("Rate plans", "http://localhost/freeside/browse/rate.cgi", "Manage rate plans" ));
596 myMenu66.add(new WebFXMenuItem("Regions and prefixes", "http://localhost/freeside/browse/rate_region.html", "Manage regions and prefixes" ));
597 myMenu66.add(new WebFXMenuItem("Usage classes", "http://localhost/freeside/browse/usage_class.html", "Usage classes define groups of usage for taxation." ));
598 myMenu66.add(new WebFXMenuItem("Time periods", "http://localhost/freeside/browse/rate_time.html", "Time periods define days and hours for rate plans" ));
599 myMenu66.add(new WebFXMenuItem("Edit rates with Excel", "http://localhost/freeside/misc/rate_edit_excel.html", "Download and edit rates with Excel, then upload changes." ));
600 myMenu66.add(new WebFXMenuSeparator());
601 myMenu66.add(new WebFXMenuItem("Tiering plans", "http://localhost/freeside/browse/rate_tier.html", "Rating tiers" ));
602 myMenu66.width = 256;
603
604 myMenu65.add(new WebFXMenuItem("Call rates and regions", null, "Manage rate plans, regions and prefixes for VoIP and call billing", myMenu66 ));
605 myMenu65.add(new WebFXMenuSeparator());
606 myMenu65.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" ));
607 myMenu65.add(new WebFXMenuItem("Tax classes", "http://localhost/freeside/browse/part_pkg_taxclass.html", "Tax classes" ));
608 myMenu65.add(new WebFXMenuSeparator());
609 myMenu65.add(new WebFXMenuItem("Credit reasons", "http://localhost/freeside/browse/reason.html?class=R", "Credit reasons explain why a credit was issued." ));
610 myMenu65.add(new WebFXMenuItem("Credit reason types", "http://localhost/freeside/browse/reason_type.html?class=R", "Credit reason types define groups of reasons." ));
611 myMenu65.add(new WebFXMenuSeparator());
612 myMenu65.add(new WebFXMenuItem("Refund reasons", "http://localhost/freeside/browse/reason.html?class=F", "Refund reasons explain why a refund was issued." ));
613 myMenu65.add(new WebFXMenuItem("Refund reason types", "http://localhost/freeside/browse/reason_type.html?class=F", "Refund reason types define groups of reasons." ));
614 myMenu65.width = 256;
615
616 myMenu48.add(new WebFXMenuItem("Billing", null, "", myMenu65 ));
617 myMenu48.add(new WebFXMenuSeparator());
618 var myMenu67 = new WebFXMenu;
619 myMenu67.emptyText = '';
620 myMenu67.add(new WebFXMenuItem("Message templates", "http://localhost/freeside/browse/msg_template/email.html", "Templates for customer notices" ));
621 myMenu67.add(new WebFXMenuItem("Advertising sources", "http://localhost/freeside/browse/part_referral.html", "Where a customer heard about your service." ));
622 myMenu67.add(new WebFXMenuItem("Custom fields", "http://localhost/freeside/browse/part_virtual_field.html", "Locally defined fields" ));
623 myMenu67.add(new WebFXMenuItem("Translation strings", "http://localhost/freeside/browse/msgcat.html", "Translations and other customizable labels for each locale" ));
624 myMenu67.add(new WebFXMenuItem("Inventory classes and inventory", "http://localhost/freeside/browse/inventory_class.html", "Setup inventory classes and stock inventory" ));
625 myMenu67.add(new WebFXMenuItem("Upload targets", "http://localhost/freeside/browse/upload_target.html", "Billing and payment upload destinations" ));
626 myMenu67.width = 256;
627
628 myMenu48.add(new WebFXMenuItem("Miscellaneous", null, "", myMenu67 ));
629 myMenu48.width = 256;
630
631           myBar.add(new WebFXMenuButton('Configuration', null, 'Configuration and setup', myMenu48 ));
632
633
634           var myMenu68 = new WebFXMenu;
635 myMenu68.emptyText = '';
636 myMenu68.add(new WebFXMenuItem("Billing documentation", "http://www.freeside.biz/mediawiki/index.php/Freeside:4:Documentation", "Freeside documentation" ));
637 myMenu68.add(new WebFXMenuItem("Ticketing documentation", "http://wiki.bestpractical.com/", "Request Tracker Wiki" ));
638 myMenu68.add(new WebFXMenuSeparator());
639 myMenu68.add(new WebFXMenuItem("About Freeside v5.0git", "javascript:about_freeside()", "" ));
640 myMenu68.add(new WebFXMenuItem("About RT v4.2.11", "http://www.bestpractical.com/rt", "Request Tracker Homepage" ));
641 myMenu68.width = 256;
642
643           myBar.add(new WebFXMenuButton('Help', null, '', myMenu68 ));
644
645
646   myBar.show( null, 'vertical' );
647   myBar.width = 154;
648
649 </SCRIPT>
650
651
652
653
654       <link rel="stylesheet" href="http://localhost/freeside/elements/jquery-ui.min.css">
655       <SCRIPT SRC="http://localhost/freeside/elements/jquery.js"></SCRIPT>
656       <SCRIPT SRC="http://localhost/freeside/elements/jquery-ui.min.js"></SCRIPT>
657       <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws.js"></SCRIPT>
658   <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_iframe.js"></SCRIPT>
659   <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_draggable.js"></SCRIPT>
660   <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_crossframe.js"></SCRIPT>
661   <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/iframecontentmws.js"></SCRIPT>
662   <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/ajaxcontentmws.js"></SCRIPT>
663
664     <SCRIPT TYPE="text/javascript">
665
666   function rs_init_object() {
667     var A;
668     try {
669       A=new ActiveXObject("Msxml2.XMLHTTP");
670     } catch (e) {
671       try {
672         A=new ActiveXObject("Microsoft.XMLHTTP");
673       } catch (oc) {
674         A=null;
675       }
676     }
677     if(!A && typeof XMLHttpRequest != "undefined")
678       A = new XMLHttpRequest();
679     if (!A)
680       alert("Can't create XMLHttpRequest object");
681     return A;
682
683   }
684
685 </SCRIPT>
686
687
688     
689
690   </HEAD>
691   <BODY BGCOLOR="#f8f8f8"  STYLE="margin-top:0; margin-bottom:0; margin-left:0px; margin-right:0px">
692     <table width="100%" CELLPADDING=0 CELLSPACING=0 STYLE="padding-left:0px; padding-right:4px" CLASS="fshead">
693       <tr>
694         <td BGCOLOR="#ffffff"><IMG BORDER=0 ALT="freeside" HEIGHT="36" SRC="http://localhost/freeside/view/REAL_logo.cgi"></td>
695         <td align=left BGCOLOR="#ffffff"> <!-- valign="top" -->
696           <font size=6>Freeside Test 5.0.1</font>
697         </td>
698         <td align=right valign=top BGCOLOR="#ffffff"><FONT SIZE="-1">Logged in as <b>test&nbsp;</b> <FONT SIZE="-2"><a href="http://localhost/freeside/loginout/logout.html">logout</a></FONT><br></FONT><FONT SIZE="-2"><a href="http://localhost/freeside/pref/pref.html" STYLE="color: #000000">Preferences</a>
699           <BR></FONT>
700         </td>
701       </tr>
702     </table>
703
704     <TABLE WIDTH="100%" CELLSPACING=0 CELLPADDING=0>
705
706 <link href="http://localhost/freeside/elements/freeside-menu.css" type="text/css" rel="stylesheet">
707
708
709       <TR CLASS="fsmenubar">
710
711
712         <TD COLSPAN="7" WIDTH="100%" STYLE="padding:1px 0px 0px 0px;border-top: 1px solid #7e0079" BGCOLOR="#dddddd">
713           <SCRIPT TYPE="text/javascript">
714             document.write(myBar);
715           </SCRIPT>
716         </TD>
717
718       </TR>
719
720       <TR CLASS="fssearchbar">
721
722         <TD COLSPAN=1 BGCOLOR="#dddddd" ALIGN="right" STYLE="padding-left:2px">
723           
724   <FORM ACTION="http://localhost/freeside/search/prospect_main.html" METHOD="GET" STYLE="margin:0">
725     <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>
726     <A HREF="http://localhost/freeside/search/report_prospect_main.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A>
727     <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">
728   </FORM>
729   
730
731
732 <SCRIPT TYPE="text/javascript">
733
734   function clearhint_search_prospect (what) {
735     if ( what.value == '(name, company or phone)' )
736       what.value = '';
737   }
738
739 </SCRIPT>
740
741         </TD>
742
743         <TD COLSPAN=1 BGCOLOR="#dddddd" ALIGN="right" STYLE="padding-left:2px">
744           
745   <FORM ACTION="http://localhost/freeside/search/cust_main.cgi" METHOD="POST" STYLE="margin:0">
746     <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>
747     <A HREF="http://localhost/freeside/search/report_cust_main.html" CLASS="fslink" STYLE="font-size: 11px">Advanced</A>
748     <INPUT TYPE="submit" VALUE="Search customers" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
749   </FORM>
750   
751
752
753 <SCRIPT TYPE="text/javascript">
754
755   function clearhint_search_cust (what) {
756     if ( what.value == '(cust #, name, company or contact phone)' )
757       what.value = '';
758   }
759
760 </SCRIPT>
761
762         </TD>
763
764         <TD COLSPAN=1 BGCOLOR="#dddddd" ALIGN="center">
765           
766 <SCRIPT TYPE="text/javascript">
767
768   function clearhint_search_address2 (what) {
769     if ( what.value == '(Unit #)' )
770       what.value = '';
771   }
772
773 </SCRIPT>
774
775         </TD>
776
777         <TD COLSPAN=1 BGCOLOR="#dddddd" ALIGN="right">
778           
779   <FORM ACTION="http://localhost/freeside/search/cust_bill.html" METHOD="GET" STYLE="margin:0;display:inline">
780     <INPUT NAME="invnum" TYPE="text" VALUE="(inv #)" STYLE="width:56px" onFocus="clearhint_search_invoice(this);" onClick="clearhint_search_invoice(this);" CLASS="fstext">
781     <A HREF="http://localhost/freeside/search/report_cust_bill.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A>    <BR>
782     <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">
783   </FORM>
784   
785
786
787 <SCRIPT TYPE="text/javascript">
788
789   function clearhint_search_invoice (what) {
790     if ( what.value == '(inv #)' )
791       what.value = '';
792   }
793
794 </SCRIPT>
795
796         </TD>
797
798         <TD COLSPAN=1 BGCOLOR="#dddddd" ALIGN="right" STYLE="padding-left:2px">
799           
800   <FORM ACTION="http://localhost/freeside/search/cust_svc.html" METHOD="GET" STYLE="margin:0">
801     <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>
802     <A NOTYET="http://localhost/freeside/search/svc_Smarter.html" STYLE="color: #cccccc; font-size:11px">Advanced</A>
803     <INPUT TYPE="submit" VALUE="Search services" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
804   </FORM>
805   
806
807
808 <SCRIPT TYPE="text/javascript">
809
810   function clearhint_search_svc (what) {
811     if ( what.value == '(user, email, ip, mac, domain or service phone)' )
812       what.value = '';
813   }
814
815 </SCRIPT>
816
817         </TD>
818
819         <TD COLSPAN=1 BGCOLOR="#dddddd" ALIGN="right" STYLE="padding-left:2px;padding-right:2px">
820           
821   <FORM ACTION="http://localhost/freeside//rt/index.html" METHOD="GET" STYLE="margin:0">
822     <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>
823     <A HREF="http://localhost/freeside//rt/Search/Build.html?NewQuery=1" CLASS="fslink" STYLE="font-size:11px">Advanced</A>
824     <INPUT TYPE="submit" VALUE="Search tickets" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
825   </FORM>
826   
827
828
829 <SCRIPT TYPE="text/javascript">
830
831   function clearhint_search_ticket (what) {
832     if ( what.value == '(ticket #, subject, email or fulltext:text)' )
833       what.value = '';
834   }
835
836 </SCRIPT>
837
838         </TD>
839
840       </TR>
841     </TABLE>
842
843
844
845     <TABLE WIDTH="100%" HEIGHT="100%" CELLSPACING=0 CELLPADDING=4>
846
847       <TR HEIGHT="100%">
848
849     <BR>
850         <TD CLASS="background" HEIGHT="100%" VALIGN="top"> <!-- WIDTH="100%"> -->
851
852           <H1>
853             Edit customer contacts
854           </H1>
855
856           <BR>
857
858           
859
860
861   
862 <DIV ID="fs_small_custview" CLASS="small_custview">Internal Customer #<B>135</B>: <B>Olson Inc (Towne, Samara)</B></A> - <B><FONT COLOR="#00CC00">Active</FONT></B><TABLE BGCOLOR="#e8e8e8" BORDER=0 CELLSPACING=0><TR><TD VALIGN="top"><TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=2><TR><TD ALIGN="right" VALIGN="top">Billing<BR>Address</TD><TD BGCOLOR="#ffffff">46706 Kadin Hill #780<BR>Trailer W 2-E<BR>Owensboro, KS  69113<BR></TD></TR><TR><TD></TD><TD BGCOLOR="#ffffff">Day Phone 297-868-7684 x427<BR>Night Phone 538-045-0820</TD></TR></TABLE></TD><TD VALIGN="top"><TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=2><TR><TD ALIGN="right" VALIGN="top">Service<BR>Address</TD><TD BGCOLOR="#ffffff">46706 Kadin Hill #780<BR>Trailer W 2-E<BR>Owensboro, KS  69113</TD></TR></TABLE></TD></TR><TR><TD COLSPAN="2"><B><FONT COLOR="#00CC00">Active</FONT></B> - Monthly anniversary phone x4</TD></TR><TR><TD COLSPAN="2"><B><FONT COLOR="#00CC00">Active</FONT></B> - Monthly prorated broadband</TD></TR><TR><TD COLSPAN="2"><B><FONT COLOR="#00CC00">Active</FONT></B> - Annual subscription domain</TD></TR></TABLE></DIV>
863 <BR>
864
865   
866
867
868   <FORM NAME   = "edit_topform"
869         METHOD = POST
870         ACTION = "http://localhost/freeside/edit/process/cust_main-contacts.html"
871         
872   >
873
874   <INPUT TYPE="hidden" NAME="svcdb" VALUE="cust_main">
875   <INPUT TYPE="hidden" NAME="custnum" VALUE="135">
876
877   
878
879
880
881 <TABLE ID="TableNumber0"
882        BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0
883 >
884
885
886       <TR>
887
888   <TH ALIGN  = "right"
889       VALIGN = "top"
890       STYLE  = "padding-top: 3px"
891       ID     = "contactnum_label0"
892   > </TD>
893
894
895       <TD COLSPAN="6">
896       
897   <INPUT TYPE="hidden" NAME="contactnum0" ID="contactnum0" VALUE="">
898
899   <TABLE STYLE="display:inline">
900     <TR>
901         <TD>
902           <SELECT NAME="contactnum0_classnum" onChange="
903 spawn_contactnum(this);">
904             <OPTION VALUE="">
905               <OPTION VALUE="1"
906                  
907               >Service
908           </SELECT><BR>
909           <FONT SIZE="-1">Type</FONT>
910         </TD>
911
912         <TD>
913             <INPUT TYPE  = "text"
914                    NAME  = "contactnum0_first"
915                    ID    = "contactnum0_first"
916                    SIZE  = "14"
917                    VALUE = ""
918                    onChange="
919 spawn_contactnum(this);"
920             >
921           <BR>
922           <FONT SIZE="-1">First name</FONT>
923         </TD>
924
925         <TD>
926             <INPUT TYPE  = "text"
927                    NAME  = "contactnum0_last"
928                    ID    = "contactnum0_last"
929                    SIZE  = "14"
930                    VALUE = ""
931                    onChange="
932 spawn_contactnum(this);"
933             >
934           <BR>
935           <FONT SIZE="-1">Last name</FONT>
936         </TD>
937
938         <TD>
939             <INPUT TYPE  = "text"
940                    NAME  = "contactnum0_title"
941                    ID    = "contactnum0_title"
942                    SIZE  = "12"
943                    VALUE = ""
944                    onChange="
945 spawn_contactnum(this);"
946             >
947           <BR>
948           <FONT SIZE="-1">Title/Position</FONT>
949         </TD>
950
951         <TD>
952             <INPUT TYPE  = "text"
953                    NAME  = "contactnum0_emailaddress"
954                    ID    = "contactnum0_emailaddress"
955                    SIZE  = "14"
956                    VALUE = ""
957                    onChange="
958 spawn_contactnum(this);"
959             >
960           <BR>
961           <FONT SIZE="-1">Email</FONT>
962         </TD>
963
964         <TD>
965             <SELECT NAME = "contactnum0_selfservice_access"
966                     ID   = "contactnum0_selfservice_access"
967             >
968               <OPTION VALUE="">Disabled
969             </SELECT>
970
971           <BR>
972           <FONT SIZE="-1">Self-service</FONT>
973         </TD>
974
975         <TD>
976             <INPUT TYPE  = "text"
977                    NAME  = "contactnum0_phonetypenum1"
978                    ID    = "contactnum0_phonetypenum1"
979                    SIZE  = "15"
980                    VALUE = ""
981                    onChange="
982 spawn_contactnum(this);"
983             >
984           <BR>
985           <FONT SIZE="-1">Work phone</FONT>
986         </TD>
987
988         <TD>
989             <INPUT TYPE  = "text"
990                    NAME  = "contactnum0_phonetypenum3"
991                    ID    = "contactnum0_phonetypenum3"
992                    SIZE  = "10"
993                    VALUE = ""
994                    onChange="
995 spawn_contactnum(this);"
996             >
997           <BR>
998           <FONT SIZE="-1">Mobile phone</FONT>
999         </TD>
1000
1001         <TD>
1002             <INPUT TYPE  = "text"
1003                    NAME  = "contactnum0_phonetypenum4"
1004                    ID    = "contactnum0_phonetypenum4"
1005                    SIZE  = "10"
1006                    VALUE = ""
1007                    onChange="
1008 spawn_contactnum(this);"
1009             >
1010           <BR>
1011           <FONT SIZE="-1">Fax phone</FONT>
1012         </TD>
1013
1014         <TD>
1015             <INPUT TYPE  = "text"
1016                    NAME  = "contactnum0_comment"
1017                    ID    = "contactnum0_comment"
1018                    SIZE  = "14"
1019                    VALUE = ""
1020                    onChange="
1021 spawn_contactnum(this);"
1022             >
1023           <BR>
1024           <FONT SIZE="-1">Comment</FONT>
1025         </TD>
1026     </TR>
1027   </TABLE>
1028
1029
1030       </TD>
1031
1032
1033       </TR>
1034
1035
1036       <SCRIPT TYPE="text/javascript">
1037
1038         var contactnum_rownum = 1;
1039         var contactnum_fieldnum = 0;
1040
1041         function spawn_contactnum(what) {
1042
1043           // only spawn if we're the last element... return if not
1044
1045           var field_regex = /(\d+)(_[a-z_]+)?$/;
1046           var match = field_regex.exec(what.name);
1047           if ( !match ) {
1048             alert(what.name + " didn't match for " + what);
1049             return;
1050           }
1051           if ( match[1] != contactnum_fieldnum ) {
1052             return;
1053           }
1054
1055           // change the label on the last entry & add a remove button
1056           var prev_label = document.getElementById('contactnum_label' + contactnum_fieldnum );
1057           prev_label.innerHTML = '<INPUT TYPE="button" VALUE="X" TITLE="Remove this  " onClick="remove_contactnum(' + contactnum_fieldnum + ');" STYLE="color:#ff0000;font-weight:bold;padding-left:2px;padding-right:2px" >&nbsp; ';
1058
1059           contactnum_fieldnum++;
1060
1061           //get the new widget
1062
1063
1064           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';
1065
1066             var newfunc = '';
1067
1068           // substitute in the new field name
1069           var magic_regex = /MAGIC_NUMBER/g;
1070           newrow  = newrow.replace(  magic_regex, contactnum_fieldnum );
1071           newfunc = newfunc.replace( magic_regex, contactnum_fieldnum );
1072
1073           // evaluate new_func
1074           if (window.ActiveXObject) {
1075             window.execScript(newfunc);
1076           } else { /* (window.XMLHttpRequest) */
1077             //window.eval(newfunc);
1078             setTimeout(newfunc, 0);
1079           }
1080
1081           // add new row
1082
1083           //hmm, can't use selectlayers after a tablebreak-title for now
1084           var table = document.getElementById('TableNumber0');
1085
1086           var row = table.insertRow(contactnum_rownum++);
1087
1088           var label_cell = document.createElement('TD');
1089
1090           label_cell.id = 'contactnum_label' + contactnum_fieldnum;
1091
1092           label_cell.style.textAlign = "right";
1093           label_cell.style.verticalAlign = "top";
1094           label_cell.style.borderTop = "1px solid black";
1095           label_cell.style.paddingTop = "5px";
1096
1097           label_cell.innerHTML = ' ';
1098
1099           row.appendChild(label_cell);
1100           
1101           var widget_cell = document.createElement('TD');
1102
1103           widget_cell.style.borderTop = "1px solid black";
1104           widget_cell.style.paddingTop = "3px";
1105           widget_cell.colSpan = "6";
1106
1107           widget_cell.innerHTML = newrow;
1108
1109           row.appendChild(widget_cell);
1110
1111
1112
1113         }
1114
1115         function remove_contactnum(remove_fieldnum) {
1116           //alert("remove contactnum " + remove_fieldnum);
1117           var select = document.getElementById('contactnum' + remove_fieldnum);
1118
1119           if ( ! select ) {
1120             alert("can't find element contactnum" + remove_fieldnum);
1121             return;
1122           }
1123
1124
1125           select.disabled = 'disabled'; // this seems to prevent it from being submitted on tested browsers so far (IE, moz, konq at least)
1126           var label_td = document.getElementById('contactnum_label' + remove_fieldnum );
1127           label_td.parentNode.style.display = 'none';
1128
1129
1130         }
1131
1132       </SCRIPT>
1133
1134
1135
1136
1137
1138 </TABLE>
1139
1140
1141
1142
1143   <BR>
1144
1145       <INPUT TYPE     = "submit"
1146              ID       = "submit"
1147              VALUE    = "Apply changes"
1148       >
1149
1150   </FORM>
1151
1152   
1153
1154           </TD>
1155       </TR>
1156     </TABLE>
1157   </BODY>
1158 </HTML>
1159
1160
1161