UI testing tool, #37340
authorMark Wells <mark@freeside.biz>
Tue, 4 Aug 2015 18:15:52 +0000 (11:15 -0700)
committerMark Wells <mark@freeside.biz>
Tue, 4 Aug 2015 18:19:48 +0000 (11:19 -0700)
54 files changed:
FS-Test/Changes [new file with mode: 0644]
FS-Test/MANIFEST [new file with mode: 0644]
FS-Test/Makefile.PL [new file with mode: 0644]
FS-Test/README [new file with mode: 0644]
FS-Test/bin/freeside-test-fetch [new file with mode: 0755]
FS-Test/bin/freeside-test-run [new file with mode: 0644]
FS-Test/bin/freeside-test-start [new file with mode: 0755]
FS-Test/bin/freeside-test-stop [new file with mode: 0755]
FS-Test/ignore.txt [new file with mode: 0644]
FS-Test/lib/FS/Test.pm [new file with mode: 0644]
FS-Test/share/htpasswd [new file with mode: 0644]
FS-Test/share/output/browse/part_pkg.cgi/active=1 [new file with mode: 0644]
FS-Test/share/output/browse/part_svc.cgi/orderby=active [new file with mode: 0644]
FS-Test/share/output/edit/cust_main-contacts.html/135 [new file with mode: 0644]
FS-Test/share/output/edit/cust_main.cgi/135 [new file with mode: 0644]
FS-Test/share/output/edit/part_pkg.cgi/2 [new file with mode: 0644]
FS-Test/share/output/graph/cust_bill_pkg.cgi/start_month=4:start_year=2015:end_month=3:end_year=2016:agentnum=1:cust_classnum=:refnum=1:class_mode=pkg:classnum=0:classnum=1:report_optionnum=0:class_agg_break=aggregate:use_setup=1:use_usage=0:use_discount=1 [new file with mode: 0644]
FS-Test/share/output/graph/cust_pkg.html/start_month=4:start_year=2015:end_month=3:end_year=2016 [new file with mode: 0644]
FS-Test/share/output/graph/money_time.cgi/start_month=4:start_year=2015:end_month=3:end_year=2016:agentnum=1:cust_classnum=:refnum=1 [new file with mode: 0644]
FS-Test/share/output/graph/money_time_daily.cgi/beginning=01%2F01%2F2016:ending=02%2F28%2F2016:agentnum=1 [new file with mode: 0644]
FS-Test/share/output/search/cust_bill.html/OPEN90_date [new file with mode: 0644]
FS-Test/share/output/search/cust_bill.html/date [new file with mode: 0644]
FS-Test/share/output/search/cust_bill.html/magic=_date:agentnum=1:beginning=:ending=10%2F01%2F2015:charged_lt=:charged_gt=200.00:owed_lt=:owed_gt=:open=1 [new file with mode: 0644]
FS-Test/share/output/search/cust_bill_pkg.cgi/agentnum=1:status=:cust_classnum=:beginning=01%2F01%2F2016:ending=01%2F31%2F2016 [new file with mode: 0644]
FS-Test/share/output/search/cust_bill_pkg.cgi/nottax=1:agentnum=1:refnum=1:classnum=0:classnum=1:begin=1438412400:end=1441090800 [new file with mode: 0644]
FS-Test/share/output/search/cust_bill_pkg.cgi/nottax=1:charges=RU:distribute=0:agentnum=1:refnum=1:use_override=0:classnum=0:classnum=1:begin=1438412400:end=1441090800 [new file with mode: 0644]
FS-Test/share/output/search/cust_bill_pkg.cgi/nottax=1:charges=S:distribute=0:agentnum=1:refnum=1:use_override=0:classnum=0:classnum=1:begin=1438412400:end=1441090800 [new file with mode: 0644]
FS-Test/share/output/search/cust_main.cgi/browse=last [new file with mode: 0644]
FS-Test/share/output/search/cust_pay.html/magic=_date:unapplied=0:beginning=01%2F01%2F2016:agentnum=1 [new file with mode: 0644]
FS-Test/share/output/search/cust_pkg.cgi/magic=bill:classnum=0:setup_ending=10%2F31%2F2015:pkgpart=5:pkgpart=2 [new file with mode: 0644]
FS-Test/share/output/search/cust_pkg.cgi/magic=bill:custnum=135 [new file with mode: 0644]
FS-Test/share/output/search/cust_pkg.cgi/pkgnum [new file with mode: 0644]
FS-Test/share/output/search/cust_pkg_churn.html/agentnum=:status=setup:begin=1438412400:end=1441090800 [new file with mode: 0644]
FS-Test/share/output/search/cust_pkg_summary.cgi/beginning=02%2F01%2F2016:ending=02%2F28%2F2016:classnum=0 [new file with mode: 0644]
FS-Test/share/output/search/h_cust_pkg.html/classnum=0:status=active,suspended:date=1454313600:pkgpart=2 [new file with mode: 0644]
FS-Test/share/output/search/report_receivables.cgi/days=0:as_of=03%2F01%2F2016 [new file with mode: 0644]
FS-Test/share/output/search/svc_acct.cgi/magic=all:sortby=username [new file with mode: 0644]
FS-Test/share/output/search/svc_broadband.cgi/magic=advanced:custnum=:agentnum=1:routernum=none:cust_pkg_fields=:cust_fields=:_dummy=1:maxrecords=100:_type=html:offset=0:order_by=ip_addr [new file with mode: 0644]
FS-Test/share/output/search/svc_domain.cgi/magic=all:sortby=domain [new file with mode: 0644]
FS-Test/share/output/search/svc_phone.cgi/magic=all:sortby=phonenum [new file with mode: 0644]
FS-Test/share/output/search/unprovisioned_services.html [new file with mode: 0644]
FS-Test/share/output/view/cust_bill-pdf.cgi/invnum=681:notice_name=Invoice [new file with mode: 0644]
FS-Test/share/output/view/cust_bill.cgi/681 [new file with mode: 0644]
FS-Test/share/output/view/cust_main.cgi/135 [new file with mode: 0644]
FS-Test/share/output/view/cust_main.cgi/custnum=135:show=change_history [new file with mode: 0644]
FS-Test/share/output/view/cust_main.cgi/custnum=135:show=packages [new file with mode: 0644]
FS-Test/share/output/view/cust_main.cgi/custnum=135:show=payment_history [new file with mode: 0644]
FS-Test/share/output/view/svc_acct.cgi/406 [new file with mode: 0644]
FS-Test/share/output/view/svc_broadband.cgi/401 [new file with mode: 0644]
FS-Test/share/output/view/svc_domain.cgi/402 [new file with mode: 0644]
FS-Test/share/output/view/svc_phone.cgi/403 [new file with mode: 0644]
FS-Test/share/test.sql [new file with mode: 0644]
FS-Test/share/ui_tests [new file with mode: 0644]
bin/customer-faker

diff --git a/FS-Test/Changes b/FS-Test/Changes
new file mode 100644 (file)
index 0000000..e7424d6
--- /dev/null
@@ -0,0 +1,5 @@
+Revision history for FS-Test
+
+0.01    Date/time
+        First version, released on an unsuspecting world.
+
diff --git a/FS-Test/MANIFEST b/FS-Test/MANIFEST
new file mode 100644 (file)
index 0000000..fadf01a
--- /dev/null
@@ -0,0 +1,10 @@
+Changes
+bin/freeside-test-fetch
+bin/freeside-test-start
+bin/freeside-test-stop
+lib/FS/Test.pm
+share/test.sql
+share/ui_tests
+Makefile.PL
+MANIFEST                       This list of files
+README
diff --git a/FS-Test/Makefile.PL b/FS-Test/Makefile.PL
new file mode 100644 (file)
index 0000000..cea088a
--- /dev/null
@@ -0,0 +1,34 @@
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+use ExtUtils::MakeMaker;
+use File::ShareDir::Install;
+
+install_share dist => 'share';
+
+WriteMakefile(
+    NAME             => 'FS::Test',
+    AUTHOR           => q{Mark Wells <mark@freeside.biz>},
+    VERSION_FROM     => 'lib/FS/Test.pm',
+    ABSTRACT         => 'Freeside test suite', 
+    LICENSE          => 'agpl_3',
+    PL_FILES         => {},
+    EXE_FILES        => [ glob 'bin/*' ],
+    MIN_PERL_VERSION => 5.006,
+    CONFIGURE_REQUIRES => {
+        'ExtUtils::MakeMaker' => 0,
+        'File::ShareDir::Install' => 0,
+    },
+    BUILD_REQUIRES => {
+        'Test::More' => 0,
+    },
+    PREREQ_PM => {
+        'WWW::Mechanize' => 0,
+    },
+    dist  => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
+    clean => { FILES => 'FS-Test-*' },
+);
+
+package MY;
+use File::ShareDir::Install qw(postamble);
+
diff --git a/FS-Test/README b/FS-Test/README
new file mode 100644 (file)
index 0000000..b1518bd
--- /dev/null
@@ -0,0 +1,91 @@
+FS-Test
+
+INSTALLATION
+
+To install this module, install Freeside as usual. Then run the following 
+commands:
+
+       perl Makefile.PL
+       make
+       make install
+
+INITIALIZATION
+
+Run "freeside-test-start" from an account that can sudo to root. This will
+create a database with the test image and set the system clock to one day
+after the last bill. If there's an existing Freeside database, it will be
+renamed to "freeside_YYYYMMDD" (the current date).
+
+To restore the system clock and put the existing database back in place,
+run "freeside-test-stop".
+
+RUNNING TESTS
+
+"freeside-test-run" is the main test script. Currently there's only one 
+test plan, "ui_tests". freeside-test-run will:
+
+- download all the URLs listed in the test plan into a directory in /tmp
+- compare them to the reference versions with "diff -ur"
+- write the output to "freeside_test.YYYYMMDD.diff"
+- display the results of "diffstat" on that diff
+
+The raw output directory will not be deleted, so you can examine the results
+yourself. This is recommended for files that don't diff nicely like Excel 
+versions of reports and PDF invoices.
+
+UPDATING THE REFERENCE PAGES
+
+The simplest way to update the reference copies of the test pages is
+
+freeside-test-fetch -d ./share/output
+
+(from the FS-Test source directory). If you're installing from a git repo,
+this will overwrite the working tree with the newly downloaded test pages.
+You can then use "git diff" to examine your changes and "git commit" to 
+commit them when you're done.
+
+ADDING NEW TESTS
+
+For UI tests, add the URL, minus the "http://hostname/freeside" prefix,
+to share/ui_tests. Then run freeside-test-fetch to get the reference output
+of the test and copy it to share/output (and add that file to git).
+
+When adding any new test, make sure to _run it twice_ on the same database
+and code version to detect random or time-sensitive variations. These will
+throw false alerts when anyone else uses your test, so you'll need to suppress
+them somehow.
+
+WHAT'S IN THE TEST DATABASE
+
+Two hundred customers with random nonsensical U.S. addresses. One third have
+automatic checking, the rest have credit cards. 10% of the customers have 
+separate billing and service addresses.
+
+Four package definitions (plus the unique "system domain"): annual domain,
+monthly prorated account, monthly prorated broadband service, monthly
+phone. Each package has one service except the phone package, which has a 
+quantity limit of 4. The two monthly prorated packages have setup fees.
+
+Each customer has three of the four packages, started over the period from 
+2015-08-01 to 2016-03-01. Each package has a service configured (with a random
+username, domain name, phone number, or IP address).  Customers were invoiced 
+on the first day of each month during that period.
+
+There's a billing event to run automatic credit card billing on eligible 
+invoices. The configured gateway is Business::OnlinePayment::Dummy, which
+returns success for everything, so customers with credit cards will be fully
+paid.
+
+One user with unlimited access. Username "test", password "test".
+
+There are no cancellations or suspensions, no credits, no taxes, no refunds,
+no discounts, no exports, and no RT tickets.  All of this stuff lies in the
+bright shining future.
+
+If you modify the test database, be sure to update this section also. Also
+update the company name to "Freeside Test X.Y.Z" where X.Y is the Freeside
+version number and Z is the test database version number, and set the same
+value in freeside-test-start so that old test databases aren't used by
+mistake.
+
+
diff --git a/FS-Test/bin/freeside-test-fetch b/FS-Test/bin/freeside-test-fetch
new file mode 100755 (executable)
index 0000000..ccc8528
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+
+use strict;
+use FS::Test;
+use Getopt::Std;
+
+my %opt;
+
+my $username = 'test';
+my $password = 'test';
+
+getopts('d:U:', \%opt);
+die usage() unless $opt{d};
+my $test = FS::Test->new( dir => $opt{d} );
+$test->fsurl($opt{U}) if $opt{U};
+
+my $testfile = $test->share_dir . '/ui_tests';
+open my $fh, '<', $testfile
+  or die "Couldn't read tests from '$testfile': $!\n";
+$test->fetch( <$fh> );
+
+sub usage {
+  "Usage: $0 -d directory [ -U base_URI ]\n\n";
+}
+
+=head1 NAME
+
+freeside-test-fetch - download a list of UI pages for testing
+
+=head1 USAGE
+
+freeside-test-fetch -d /tmp/outputdir [ -U http://myserver/freeside ]
+
+=head1 ARGUMENTS
+
+-d: the directory to put the files in. Required.
+
+-U: the URL prefix for the Freeside server. Defaults to
+"http://localhost/freeside".
+
+The list of tests is in the 'ui_tests' file included with FS::Test.
+
+=cut
diff --git a/FS-Test/bin/freeside-test-run b/FS-Test/bin/freeside-test-run
new file mode 100644 (file)
index 0000000..e709641
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+set -ae
+
+tempdir=$( mktemp -d freeside-test.XXXX )
+sharedir=$(perl -MFS::Test -e "print FS::Test::share_dir()")
+
+echo "Starting test mode."
+freeside-test-start
+echo "Saving results to $tempdir."
+freeside-test-fetch -d $tempdir
+echo "Exiting test mode."
+freeside-test-stop || true
+
+diffname=freeside-test.`date +%Y%m%d`.diff
+echo "Writing diff to $diffname."
+diff -urb "$tempdir" "$sharedir/output" > $diffname
+diffstat -C $diffname
+
diff --git a/FS-Test/bin/freeside-test-start b/FS-Test/bin/freeside-test-start
new file mode 100755 (executable)
index 0000000..197a847
--- /dev/null
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+VERSION='3.8.1'
+
+set -ae
+
+echo "Stopping services."
+sudo service freeside stop
+sudo service apache2 stop
+
+newname=freeside_`date +%Y%m%d`
+sharedir=$(perl -MFS::Test -e "print FS::Test::share_dir()")
+
+# get company_name from existing DB, strip whitespace
+# (if there is no existing DB, continue anyway)
+testdbmarker=$(sudo -u freeside \
+  psql -tc 'select value from conf where name='\'company_name''\' | \
+  sed "s/^ //" \
+  || true
+)
+
+createdb=YES
+
+if psql -l |grep -q '^ *freeside '; then
+  if [ "$testdbmarker" = "Freeside Test $VERSION" ]; then
+    createdb=NO
+    echo "Freeside test database found."
+  else
+    echo "Renaming database to $newname."
+    psql postgres -c "ALTER DATABASE freeside RENAME TO $newname"
+  fi
+fi
+
+if [ $createdb = YES ]; then
+  echo "Creating new database from stock schema."
+  createdb --owner=freeside freeside
+  sudo -u freeside psql freeside -q -f $sharedir/test.sql > /dev/null
+fi
+
+if [ -f /usr/local/etc/freeside/htpasswd ]; then
+  newhtpasswd=htpasswd_`date +%Y%m%d`
+  echo "Renaming htpasswd to $newhtpasswd."
+  sudo mv /usr/local/etc/freeside/htpasswd /usr/local/etc/freeside/$newhtpasswd
+fi
+
+echo "Installing new htpasswd."
+sudo cp $sharedir/htpasswd /usr/local/etc/freeside/htpasswd
+
+newtime=$(sudo -u freeside \
+  psql -tc 'SELECT to_timestamp(max(_date) + 86400) FROM cust_bill' \
+)
+echo "Setting clock to $newtime."
+sudo date -s "$newtime"
+
+#echo "Applying upgrades."
+#sudo -u freeside freeside-upgrade test
+# shouldn't happen automatically
+
+# start Apache on a future date when all of the invoice dates are in the past
+echo "Restarting Apache."
+sudo service apache2 start
+
+echo "Done."
diff --git a/FS-Test/bin/freeside-test-stop b/FS-Test/bin/freeside-test-stop
new file mode 100755 (executable)
index 0000000..5066890
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+set -ae
+
+echo "Stopping Apache."
+sudo service apache2 stop
+
+echo "Resetting clock."
+sudo hwclock --hctosys
+
+newname=freeside_test_`date +%Y%m%d`
+if psql -l |grep -q '^ *freeside '; then
+  echo "Renaming test database to $newname."
+  psql postgres -c "ALTER DATABASE freeside RENAME TO $newname"
+fi
+
+if (sudo grep -q '^test:' /usr/local/etc/freeside/htpasswd); then
+  newhtpasswd=htpasswd_test_`date +%Y%m%d`
+  echo "Renaming htpasswd to $newhtpasswd."
+  sudo mv /usr/local/etc/freeside/htpasswd /usr/local/etc/freeside/$newhtpasswd
+  oldhtpasswd=$( cd /usr/local/etc/freeside; \
+                 ls |grep -P 'htpasswd_\d{8}' | \
+                 sort -nr |head -1 )
+  if [ -f $oldhtpasswd ]; then
+    echo "Renaming $oldhtpasswd to htpasswd."
+    sudo mv /usr/local/etc/freeside/$oldhtpasswd \
+      /usr/local/etc/freeside/htpasswd
+  fi
+fi
+
+oldname=$( psql -tl | \
+           cut -d '|' -f 1 | \
+           tr -d ' ' | \
+           grep -P 'freeside_\d{8}' | \
+           sort -nr | head -1 )
+
+if [ -n "$oldname" ]; then
+  echo "Renaming $oldname to freeside."
+  psql postgres -c "ALTER DATABASE $oldname RENAME TO freeside"
+  echo "Restarting services."
+  sudo service apache2 restart
+  sudo service freeside restart
+fi
+
+echo "Done."
diff --git a/FS-Test/ignore.txt b/FS-Test/ignore.txt
new file mode 100644 (file)
index 0000000..f6d552c
--- /dev/null
@@ -0,0 +1,18 @@
+Makefile
+Makefile.old
+Build
+Build.bat
+META.*
+MYMETA.*
+.build/
+_build/
+cover_db/
+blib/
+inc/
+.lwpcookies
+.last_cover_stats
+nytprof.out
+pod2htm*.tmp
+pm_to_blib
+FS-Test-*
+FS-Test-*.tar.gz
diff --git a/FS-Test/lib/FS/Test.pm b/FS-Test/lib/FS/Test.pm
new file mode 100644 (file)
index 0000000..673b8c5
--- /dev/null
@@ -0,0 +1,145 @@
+package FS::Test;
+
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+
+use File::ShareDir 'dist_dir';
+use WWW::Mechanize;
+use File::chdir;
+use URI;
+use File::Slurp qw(write_file);
+use Class::Accessor 'antlers';
+
+our $VERSION = '0.01';
+
+=head1 NAME
+
+Freeside testing suite
+
+=head1 CLASS METHODS
+
+=over 4
+
+=item share_dir
+
+Returns the path to the shared data directory, which contains the reference
+database image, the test plan, and probably other stuff.
+
+=cut
+
+sub share_dir {
+  dist_dir('FS-Test')
+}
+
+=item new OPTIONS
+
+Creates a test session. OPTIONS must contain 'dir', a directory to save the 
+output files into (this may eventually default to a temp directory). It can
+optionally contain:
+
+- fsurl: the root Freeside url [http://localhost/freeside]
+- user: the Freeside test username [test]
+- pass: the Freeside test password [test]
+
+=cut
+
+has dir   => ( is => 'rw' );
+has fsurl => ( is => 'rw' );
+has user  => ( is => 'rw' );
+has pass  => ( is => 'rw' );
+has mech  => ( is => 'rw' );
+
+sub new {
+  my $class = shift;
+  my $self = {
+    fsurl => 'http://localhost/freeside',
+    user  => 'test',
+    pass  => 'test',
+    @_
+  };
+  bless $self;
+
+  # strip trailing slash, if any; it causes problems
+  $self->{fsurl} =~ s(/$)();
+
+  die "FS::Test->new: 'dir' required" unless $self->dir;
+  if ( ! -d $self->dir ) {
+    mkdir $self->dir
+      or die "can't create '".$self->dir."': $!";
+  }
+  if ( ! -w $self->dir ) {
+    die "FS::Test->new: can't write to '". $self->dir . "'";
+  }
+
+  $self->mech( WWW::Mechanize->new( autocheck => 0 ) );
+
+  #freeside v3
+  $self->mech->credentials( $self->user, $self->pass );
+
+  return $self;
+}
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item fetch PATHS...
+
+Takes one or more PATHS (Freeside URIs, relative to $self->fsurl, including
+query parameters) and downloads them from the web server, into the output
+directory. Currently this will write progress messages to standard output.
+If you don't like that, it's open source, fix it.
+
+=cut
+
+sub fetch {
+  my $self = shift;
+
+  local $CWD = $self->dir;
+
+  my $base_uri = URI->new($self->fsurl);
+  my $basedirs = () = $base_uri->path_segments;
+
+  foreach my $path (@_) {
+    $path =~ s/^\s+//;
+    $path =~ s/\s+$//;
+    next if !$path;
+
+    if ($path =~ /^#(.*)/) {
+      print "$path\n";
+      next;
+    }
+
+    my $uri = URI->new( $self->fsurl . '/' . $path);
+    print $uri->path;
+    my $response = $self->mech->get($uri);
+    print " - " . $response->code . "\n";
+    next unless $response->is_success;
+
+    local $CWD;
+    my @dirs = $uri->path_segments;
+    splice @dirs, 0, $basedirs;
+
+    if ( length($uri->query) ) {
+      # if there's a query string, use the (server-side) file name as the 
+      # last directory, and the query string as the local file name; this 
+      # allows multiple tests that differ only in the query string.
+      push @dirs, $uri->query;
+    }
+    my $file = pop @dirs;
+    # make the filename safe for inclusion in a makefile/shell script.
+    # & and ; are both bad; using ":" is reversible and unambiguous (because
+    # it can't appear in query params)
+    $file =~ s/&/:/g;
+    foreach my $dir (@dirs) {
+      mkdir $dir unless -d $dir;
+      push @CWD, $dir;
+    }
+    write_file($file, {binmode => ':utf8'}, $response->decoded_content);
+  }
+}
+
+1; # End of FS::Test
diff --git a/FS-Test/share/htpasswd b/FS-Test/share/htpasswd
new file mode 100644 (file)
index 0000000..08f5f81
--- /dev/null
@@ -0,0 +1 @@
+test:$apr1$jKrlUTN/$WxmsctMWNR5uVpOF9i7QB.
diff --git a/FS-Test/share/output/browse/part_pkg.cgi/active=1 b/FS-Test/share/output/browse/part_pkg.cgi/active=1
new file mode 100644 (file)
index 0000000..2b3e345
--- /dev/null
@@ -0,0 +1,1416 @@
+
+            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>
+      Package Definitions
+    </TITLE>
+    <!-- per RT, to prevent IE compatibility mode -->
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <!-- The X-UA-Compatible <meta> tag above must be very early in <head> -->
+    <META HTTP-Equiv="Cache-Control" Content="no-cache">
+    <META HTTP-Equiv="Pragma" Content="no-cache">
+    <META HTTP-Equiv="Expires" Content="0"> 
+
+    <script type="text/javascript" src="http://localhost/freeside/elements/cssexpr.js"></script>
+
+
+  <script type="text/javascript" src="http://localhost/freeside/elements/xmenu.top.js"></script>
+  <link href="http://localhost/freeside/elements/xmenu.top.css" type="text/css" rel="stylesheet">
+
+
+  <link href="http://localhost/freeside/elements/freeside.css" type="text/css" rel="stylesheet">
+  <link href="http://localhost/freeside/elements/freeside-print.css" type="text/css" rel="stylesheet" media="print">
+<link href="http://localhost/freeside/elements/freeside-menu.css" type="text/css" rel="stylesheet">
+
+<SCRIPT TYPE="text/javascript">
+
+  function about_freeside() {
+    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'); 
+  }
+
+  webfxMenuImagePath      = "http://localhost/freeside/images/";
+  webfxMenuUseHover       = 1;
+  webfxMenuShowTime       = 300;
+  webfxMenuHideTime       = 500;
+
+  var myBar = new WebFXMenuBar;
+
+    
+          myBar.add(new WebFXMenuButton('Billing Main', "http://localhost/freeside/", 'Billing start page' ));
+
+    
+          myBar.add(new WebFXMenuButton('Ticketing Main', "http://localhost/freeside/rt/", 'Ticketing start page' ));
+
+    
+          myBar.add(new WebFXMenuButton('New prospect', "http://localhost/freeside/edit/prospect_main.html", 'Add a new prospect' ));
+
+    
+          myBar.add(new WebFXMenuButton('New customer', "http://localhost/freeside/edit/cust_main.cgi", 'Add a new customer' ));
+
+
+          var myMenu0 = new WebFXMenu;
+myMenu0.emptyText = '';
+var myMenu1 = new WebFXMenu;
+myMenu1.emptyText = '';
+myMenu1.add(new WebFXMenuItem("List prospects", "http://localhost/freeside/search/prospect_main.html", "" ));
+myMenu1.add(new WebFXMenuItem("Advanced prospect reports", "http://localhost/freeside/search/report_prospect_main.html", "" ));
+myMenu1.add(new WebFXMenuSeparator());
+myMenu1.add(new WebFXMenuItem("Prospect contacts", "http://localhost/freeside/search/report_contact.html?link=prospect_main", "" ));
+myMenu1.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Prospects", null, "Prospect reports", myMenu1 ));
+var myMenu2 = new WebFXMenu;
+myMenu2.emptyText = '';
+myMenu2.add(new WebFXMenuItem("List quotations", "http://localhost/freeside/search/quotation.html", "" ));
+myMenu2.add(new WebFXMenuItem("Advanced quotation reports", "http://localhost/freeside/search/report_quotation.html", "" ));
+myMenu2.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Quotations", null, "Quotation reports", myMenu2 ));
+var myMenu3 = new WebFXMenu;
+myMenu3.emptyText = '';
+var myMenu4 = new WebFXMenu;
+myMenu4.emptyText = '';
+myMenu4.add(new WebFXMenuItem("by customer number", "http://localhost/freeside/search/cust_main.cgi?browse=custnum", "" ));
+myMenu4.add(new WebFXMenuItem("by last name", "http://localhost/freeside/search/cust_main.cgi?browse=last", "" ));
+myMenu4.add(new WebFXMenuItem("by company name", "http://localhost/freeside/search/cust_main.cgi?browse=company", "" ));
+myMenu4.add(new WebFXMenuItem("by active trouble tickets", "http://localhost/freeside/search/cust_main.cgi?browse=tickets", "" ));
+myMenu4.width = 256;
+
+myMenu3.add(new WebFXMenuItem("List customers", null, "List customers", myMenu4 ));
+myMenu3.add(new WebFXMenuItem("Zip code distribution", "http://localhost/freeside/search/report_cust_main-zip.html", "Zip codes by number of customers" ));
+myMenu3.add(new WebFXMenuItem("Customer signup report", "http://localhost/freeside/graph/report_cust_signup.html", "New customer signups by date" ));
+myMenu3.add(new WebFXMenuItem("Customer churn report", "http://localhost/freeside/graph/report_cust_churn.html", "New customers, suspensions, and cancellations summary" ));
+myMenu3.add(new WebFXMenuItem("Signup date report", "http://localhost/freeside/graph/report_signupdate.html", "Signup date report (by date of signup)" ));
+myMenu3.add(new WebFXMenuItem("Advanced customer reports", "http://localhost/freeside/search/report_cust_main.html", "by status, signup date, agent, etc." ));
+myMenu3.add(new WebFXMenuSeparator());
+myMenu3.add(new WebFXMenuItem("Customer contacts", "http://localhost/freeside/search/report_contact.html?link=cust_main", "" ));
+myMenu3.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Customers", null, "Customer reports", myMenu3 ));
+var myMenu5 = new WebFXMenu;
+myMenu5.emptyText = '';
+var myMenu6 = new WebFXMenu;
+myMenu6.emptyText = '';
+myMenu6.add(new WebFXMenuItem("All open invoices", "http://localhost/freeside/search/cust_bill.html?OPEN_date", "All invoices with an unpaid balance" ));
+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" ));
+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" ));
+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" ));
+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" ));
+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" ));
+myMenu6.width = 256;
+
+myMenu5.add(new WebFXMenuItem("Open invoices", null, "Open invoices", myMenu6 ));
+myMenu5.add(new WebFXMenuItem("All invoices", "http://localhost/freeside/search/cust_bill.html?date", "List all invoices" ));
+myMenu5.add(new WebFXMenuItem("Advanced invoice reports", "http://localhost/freeside/search/report_cust_bill.html", "by agent, date range, etc." ));
+myMenu5.add(new WebFXMenuSeparator());
+myMenu5.add(new WebFXMenuItem("Line items", "http://localhost/freeside/search/report_cust_bill_pkg.html", "Individual line item detail" ));
+myMenu5.add(new WebFXMenuItem("Voided invoices", "http://localhost/freeside/search/report_cust_bill_void.html", "Search for voided invoices" ));
+myMenu5.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Invoices", null, "Invoice reports", myMenu5 ));
+var myMenu7 = new WebFXMenu;
+myMenu7.emptyText = '';
+myMenu7.add(new WebFXMenuItem("Discount graph", "http://localhost/freeside/graph/report_cust_bill_pkg_discount.html", "Discount overview per month" ));
+myMenu7.add(new WebFXMenuItem("Discount detail", "http://localhost/freeside/search/report_cust_bill_pkg_discount.html", "Discount report (by employee and/or date range)" ));
+myMenu7.add(new WebFXMenuItem("Package discounts", "http://localhost/freeside/search/report_cust_pkg_discount.html", "Active/inactive discounts by package" ));
+myMenu7.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Discounts", null, "Discount reports", myMenu7 ));
+var myMenu8 = new WebFXMenu;
+myMenu8.emptyText = '';
+myMenu8.add(new WebFXMenuItem("Payments", "http://localhost/freeside/search/report_cust_pay.html", "Payment report (by type and/or date range)" ));
+myMenu8.add(new WebFXMenuItem("Payment application detail", "http://localhost/freeside/search/report_cust_bill_pay_pkg.html", "Line item application detail" ));
+myMenu8.add(new WebFXMenuItem("Pending Payments", "http://localhost/freeside/search/cust_pay_pending.html?magic=_date;statusNOT=done", "Pending real-time payments" ));
+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)" ));
+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)" ));
+myMenu8.add(new WebFXMenuItem("Unapplied Payment Aging", "http://localhost/freeside/search/report_unapplied_cust_pay.html", "Unapplied payment aging report" ));
+myMenu8.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Payments", null, "Payment reports", myMenu8 ));
+var myMenu9 = new WebFXMenu;
+myMenu9.emptyText = '';
+myMenu9.add(new WebFXMenuItem("Package definitions (by # active)", "http://localhost/freeside/browse/part_pkg.cgi?active=1", "Package definitions by number of active packages" ));
+myMenu9.add(new WebFXMenuItem("Package costs", "http://localhost/freeside/graph/report_cust_pkg_cost.html", "Package setup and recurring costs graph" ));
+myMenu9.add(new WebFXMenuSeparator());
+myMenu9.add(new WebFXMenuItem("Package churn", "http://localhost/freeside/graph/report_cust_pkg.html", "Orders, suspensions and cancellations summary graph" ));
+myMenu9.add(new WebFXMenuSeparator());
+myMenu9.add(new WebFXMenuItem("All customer packages", "http://localhost/freeside/search/cust_pkg.cgi?pkgnum", "List all customer packages" ));
+myMenu9.add(new WebFXMenuItem("Package summary", "http://localhost/freeside/search/cust_pkg_summary.html", "Show package sales summary" ));
+myMenu9.add(new WebFXMenuItem("Suspended customer packages", "http://localhost/freeside/search/cust_pkg.cgi?magic=suspended", "List suspended packages" ));
+myMenu9.add(new WebFXMenuItem("Suspension summary", "http://localhost/freeside/search/cust_pkg_susp.html", "Show suspension activity" ));
+myMenu9.add(new WebFXMenuItem("Customer packages with unconfigured services", "http://localhost/freeside/search/cust_pkg.cgi?APKG_pkgnum", "List packages which have provisionable services" ));
+myMenu9.add(new WebFXMenuItem("Advanced package reports", "http://localhost/freeside/search/report_cust_pkg.html", "by agent, date range, status, package definition" ));
+myMenu9.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Packages", null, "Package reports", myMenu9 ));
+var myMenu10 = new WebFXMenu;
+myMenu10.emptyText = '';
+myMenu10.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi?orderby=active", "Service definitions by number of active packages" ));
+myMenu10.add(new WebFXMenuSeparator());
+myMenu10.add(new WebFXMenuItem("Unprovisioned services", "http://localhost/freeside/search/report_unprovisioned_services.html", "Unprovisioned services" ));
+myMenu10.add(new WebFXMenuSeparator());
+var myMenu11 = new WebFXMenu;
+myMenu11.emptyText = '';
+myMenu11.add(new WebFXMenuItem("All accounts by Username", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=username", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts by UID", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=uid", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts with Time Remaining", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=seconds", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts by Last login", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=last_login", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts never logged in", "http://localhost/freeside/search/svc_acct.cgi?magic=nologin;sortby=svcnum", "" ));
+myMenu11.add(new WebFXMenuItem("Advanced account reports", "http://localhost/freeside/search/report_svc_acct.html", "" ));
+myMenu11.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Accounts", null, "Access accounts and mailboxes", myMenu11 ));
+var myMenu12 = new WebFXMenu;
+myMenu12.emptyText = '';
+myMenu12.add(new WebFXMenuItem("All domains", "http://localhost/freeside/search/svc_domain.cgi?magic=all;sortby=domain", "" ));
+myMenu12.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Domains", null, "Domains", myMenu12 ));
+var myMenu13 = new WebFXMenu;
+myMenu13.emptyText = '';
+myMenu13.add(new WebFXMenuItem("All certificates", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cert;magic=all;sortby=svcnum", "" ));
+myMenu13.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Certificates", null, "Example services", myMenu13 ));
+var myMenu14 = new WebFXMenu;
+myMenu14.emptyText = '';
+myMenu14.add(new WebFXMenuItem("All mail forwards", "http://localhost/freeside/search/svc_forward.cgi?magic=all;sortby=svcnum", "" ));
+myMenu14.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Mail forwards", null, "Mail forwards", myMenu14 ));
+var myMenu15 = new WebFXMenu;
+myMenu15.emptyText = '';
+myMenu15.add(new WebFXMenuItem("All mailing lists", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_mailinglist;magic=all;sortby=svcnum", "" ));
+myMenu15.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Mailing lists", null, "Mailing lists", myMenu15 ));
+var myMenu16 = new WebFXMenu;
+myMenu16.emptyText = '';
+myMenu16.add(new WebFXMenuItem("All virtual hosting services", "http://localhost/freeside/search/svc_www.cgi?magic=all;sortby=svcnum", "" ));
+myMenu16.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Virtual hosting services", null, "Virtual hosting services", myMenu16 ));
+var myMenu17 = new WebFXMenu;
+myMenu17.emptyText = '';
+myMenu17.add(new WebFXMenuItem("All wireless broadband services", "http://localhost/freeside/search/svc_broadband.cgi?magic=all;sortby=svcnum", "" ));
+myMenu17.add(new WebFXMenuItem("Advanced wireless broadband reports", "http://localhost/freeside/search/report_svc_broadband.html", "" ));
+myMenu17.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Wireless broadband services", null, "Fixed wireless broadband services", myMenu17 ));
+var myMenu18 = new WebFXMenu;
+myMenu18.emptyText = '';
+myMenu18.add(new WebFXMenuItem("All cable subscribers by Service", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=svcnum", "" ));
+myMenu18.add(new WebFXMenuItem("All cable subscribers by Serial number", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=serialnum", "" ));
+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", "" ));
+myMenu18.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Cable Subscribers", null, "Cable Subscribers", myMenu18 ));
+var myMenu19 = new WebFXMenu;
+myMenu19.emptyText = '';
+myMenu19.add(new WebFXMenuItem("All DSLs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_dsl;magic=all;sortby=phonenum", "" ));
+myMenu19.add(new WebFXMenuItem("Qualifications", "http://localhost/freeside/search/qual.cgi", "" ));
+myMenu19.width = 256;
+
+myMenu10.add(new WebFXMenuItem("DSLs", null, "DSLs", myMenu19 ));
+var myMenu20 = new WebFXMenu;
+myMenu20.emptyText = '';
+myMenu20.add(new WebFXMenuItem("All dish services", "http://localhost/freeside/search/svc_dish.cgi?magic=all;sortby=svcnum", "" ));
+myMenu20.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Dish services", null, "Dish services", myMenu20 ));
+var myMenu21 = new WebFXMenu;
+myMenu21.emptyText = '';
+myMenu21.add(new WebFXMenuItem("All hardware", "http://localhost/freeside/search/svc_hardware.cgi?magic=all;sortby=svcnum", "" ));
+myMenu21.add(new WebFXMenuItem("Advanced hardware reports", "http://localhost/freeside/search/report_svc_hardware.html", "" ));
+myMenu21.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Hardware", null, "Hardware", myMenu21 ));
+var myMenu22 = new WebFXMenu;
+myMenu22.emptyText = '';
+myMenu22.add(new WebFXMenuItem("All phone numbers", "http://localhost/freeside/search/svc_phone.cgi?magic=all;sortby=phonenum", "" ));
+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." ));
+myMenu22.add(new WebFXMenuItem("Phone numbers by state", "http://localhost/freeside/search/phone_state.html", "Current or historical phone services broken down by state." ));
+myMenu22.add(new WebFXMenuItem("Advanced phone number reports", "http://localhost/freeside/search/report_svc_phone.html", "" ));
+myMenu22.add(new WebFXMenuItem("Phone number (DID) availability", "http://localhost/freeside/search/report_phone_avail.html", "" ));
+myMenu22.add(new WebFXMenuItem("Inventory/Provisioning Status", "http://localhost/freeside/search/phone_inventory_provisioned.html", "" ));
+myMenu22.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Phone numbers", null, "Phone numbers", myMenu22 ));
+var myMenu23 = new WebFXMenu;
+myMenu23.emptyText = '';
+myMenu23.add(new WebFXMenuItem("All PBXs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_pbx;magic=all;sortby=svcnum", "" ));
+myMenu23.width = 256;
+
+myMenu10.add(new WebFXMenuItem("PBXs", null, "PBXs", myMenu23 ));
+var myMenu24 = new WebFXMenu;
+myMenu24.emptyText = '';
+myMenu24.add(new WebFXMenuItem("All circuits", "http://localhost/freeside/search/svc_circuit.cgi?magic=all;sortby=svcnum", "" ));
+myMenu24.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Circuits", null, "Voice and data circuit services", myMenu24 ));
+var myMenu25 = new WebFXMenu;
+myMenu25.emptyText = '';
+myMenu25.add(new WebFXMenuItem("All ports", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_port;magic=all;sortby=serviceid", "" ));
+myMenu25.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Ports", null, "Ports", myMenu25 ));
+var myMenu26 = new WebFXMenu;
+myMenu26.emptyText = '';
+myMenu26.add(new WebFXMenuItem("All alarm services", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_alarm;magic=all;sortby=acctnum", "" ));
+myMenu26.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Alarm services", null, "Alarm services", myMenu26 ));
+var myMenu27 = new WebFXMenu;
+myMenu27.emptyText = '';
+myMenu27.add(new WebFXMenuItem("All external services", "http://localhost/freeside/search/svc_external.cgi?magic=all;sortby=id", "" ));
+myMenu27.width = 256;
+
+myMenu10.add(new WebFXMenuItem("External services", null, "External services", myMenu27 ));
+myMenu10.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Services", null, "Services reports", myMenu10 ));
+var myMenu28 = new WebFXMenu;
+myMenu28.emptyText = '';
+myMenu28.add(new WebFXMenuItem("Inventory by agent", "http://localhost/freeside/search/report_agent_inventory.html", "" ));
+myMenu28.add(new WebFXMenuItem("Inventory activity", "http://localhost/freeside/search/report_h_inventory_item.html", "" ));
+myMenu28.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Inventory", null, "Inventory reports", myMenu28 ));
+var myMenu29 = new WebFXMenu;
+myMenu29.emptyText = '';
+myMenu29.add(new WebFXMenuItem("RADIUS sessions", "http://localhost/freeside/search/sqlradius.html", "" ));
+myMenu29.add(new WebFXMenuItem("RADIUS data usage", "http://localhost/freeside/search/report_sqlradius_usage.html", "" ));
+myMenu29.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/search/report_cdr.html", "" ));
+myMenu29.add(new WebFXMenuItem("Unrateable CDRs", "http://localhost/freeside/search/cdr.html?freesidestatus=failed;cdrbatchnum=_ALL_", "" ));
+myMenu29.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Usage", null, "Usage reports", myMenu29 ));
+var myMenu30 = new WebFXMenu;
+myMenu30.emptyText = '';
+var myMenu31 = new WebFXMenu;
+myMenu31.emptyText = '';
+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" ));
+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" ));
+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" ));
+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" ));
+myMenu31.add(new WebFXMenuItem("Time to resolve", "http://localhost/freeside/rt/RTx/Statistics/Resolution", "View how long tickets take to be resolved by Queue" ));
+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" ));
+myMenu31.width = 256;
+
+myMenu30.add(new WebFXMenuItem("Statistics", null, "", myMenu31 ));
+myMenu30.add(new WebFXMenuSeparator());
+myMenu30.add(new WebFXMenuItem("Advanced ticket reports", "http://localhost/freeside/rt/Search/Build.html?NewQuery=1", "List tickets by any criteria" ));
+myMenu30.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Tickets", null, "Ticket reports", myMenu30 ));
+var myMenu32 = new WebFXMenu;
+myMenu32.emptyText = '';
+myMenu32.add(new WebFXMenuItem("Employee Commission Report", "http://localhost/freeside/search/report_employee_commission.html", "" ));
+myMenu32.add(new WebFXMenuItem("Employee Audit Report", "http://localhost/freeside/search/report_employee_audit.html", "Employee audit report" ));
+myMenu32.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Employees", null, "Employee reports", myMenu32 ));
+var myMenu33 = new WebFXMenu;
+myMenu33.emptyText = '';
+myMenu33.add(new WebFXMenuItem("All billing events", "http://localhost/freeside/search/report_cust_event.html", "All billing events for a date range" ));
+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." ));
+myMenu33.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Billing events", null, "Billing events", myMenu33 ));
+var myMenu34 = new WebFXMenu;
+myMenu34.emptyText = '';
+var myMenu35 = new WebFXMenu;
+myMenu35.emptyText = '';
+myMenu35.add(new WebFXMenuItem("Sales, Credits and Receipts", "http://localhost/freeside/graph/report_money_time.html", "Sales, credits and receipts summary graph" ));
+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" ));
+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)" ));
+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)" ));
+myMenu35.add(new WebFXMenuItem("Sales with Advertising Source", "http://localhost/freeside/search/report_cust_bill_pkg_referral.html", "" ));
+myMenu35.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Sales", null, "Sales reports", myMenu35 ));
+var myMenu36 = new WebFXMenu;
+myMenu36.emptyText = '';
+myMenu36.add(new WebFXMenuItem("Credit Report", "http://localhost/freeside/search/report_cust_credit.html", "Credit report (by employee and/or date range)" ));
+myMenu36.add(new WebFXMenuItem("Credit application detail", "http://localhost/freeside/search/report_cust_credit_bill_pkg.html", "Line item application detail" ));
+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)" ));
+myMenu36.add(new WebFXMenuItem("Voided Credits", "http://localhost/freeside/search/report_cust_credit_void.html", "Voided credit report (by employee and/or date range)" ));
+myMenu36.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Credits", null, "Credit reports", myMenu36 ));
+var myMenu37 = new WebFXMenu;
+myMenu37.emptyText = '';
+myMenu37.add(new WebFXMenuItem("Refund Report", "http://localhost/freeside/search/report_cust_refund.html", "Refund report (by type and/or date range)" ));
+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)" ));
+myMenu37.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Refunds", null, "Refund reports", myMenu37 ));
+var myMenu38 = new WebFXMenu;
+myMenu38.emptyText = '';
+myMenu38.add(new WebFXMenuItem("Agent Commissions", "http://localhost/freeside/search/report_agent_commission.html", "" ));
+myMenu38.add(new WebFXMenuItem("Agent Commissions Per Package", "http://localhost/freeside/search/report_agent_commission_pkg.html", "" ));
+myMenu38.add(new WebFXMenuItem("Sales Person Commissions", "http://localhost/freeside/search/report_sales_commission.html", "" ));
+myMenu38.add(new WebFXMenuItem("Sales Person Commissions Per Package", "http://localhost/freeside/search/report_sales_commission_pkg.html", "" ));
+myMenu38.add(new WebFXMenuItem("Employee Commissions", "http://localhost/freeside/search/report_employee_commission.html", "" ));
+myMenu38.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Commissions", null, "Commission reports", myMenu38 ));
+myMenu34.add(new WebFXMenuItem("A/R Aging", "http://localhost/freeside/search/report_receivables.html", "Accounts Receivable Aging report" ));
+myMenu34.add(new WebFXMenuItem("Prepaid Income", "http://localhost/freeside/search/report_prepaid_income.html", "Prepaid income (unearned revenue)  report" ));
+myMenu34.add(new WebFXMenuItem("Tax Liability", "http://localhost/freeside/search/report_tax.html", "Tax liability report (internal tax data)" ));
+myMenu34.add(new WebFXMenuItem("E911 Fee Summary", "http://localhost/freeside/search/report_e911.html", "E911 fee summary" ));
+myMenu34.add(new WebFXMenuItem("Customer Accounting Summary", "http://localhost/freeside/search/report_customer_accounting_summary.html", "Customer accounting summary report" ));
+myMenu34.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Financial", null, "Financial reports", myMenu34 ));
+var myMenu39 = new WebFXMenu;
+myMenu39.emptyText = '';
+myMenu39.add(new WebFXMenuItem("Credit limit incidents", "http://localhost/freeside/search/report_cust_main_credit_limit.html", "" ));
+myMenu39.add(new WebFXMenuItem("System log", "http://localhost/freeside/search/log.html", "View system events and debugging information." ));
+myMenu39.add(new WebFXMenuItem("Outgoing messages", "http://localhost/freeside/search/cust_msg.html", "View outgoing message log" ));
+myMenu39.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Logs", null, "System and email logs", myMenu39 ));
+myMenu0.width = 256;
+
+          myBar.add(new WebFXMenuButton('Reports', null, 'Lists, reporting and graphing', myMenu0 ));
+
+
+          var myMenu40 = new WebFXMenu;
+myMenu40.emptyText = '';
+myMenu40.add(new WebFXMenuItem("Quick payment entry", "http://localhost/freeside/misc/batch-cust_pay.html", "Enter multiple payments in a batch" ));
+myMenu40.add(new WebFXMenuItem("Download invoice batches", "http://localhost/freeside/search/bill_batch.cgi", "" ));
+myMenu40.add(new WebFXMenuItem("Bulk DID Orders", "http://localhost/freeside/browse/did_order.html", "View/manage bulk DID orders" ));
+myMenu40.add(new WebFXMenuItem("Job Queue", "http://localhost/freeside/search/queue.html", "View pending job queue" ));
+var myMenu41 = new WebFXMenu;
+myMenu41.emptyText = '';
+var myMenu42 = new WebFXMenu;
+myMenu42.emptyText = '';
+myMenu42.add(new WebFXMenuItem("Overview", "http://localhost/freeside/rt/Articles/index.html", "" ));
+myMenu42.add(new WebFXMenuItem("Search", "http://localhost/freeside/rt/Articles/Article/Search.html", "" ));
+myMenu42.add(new WebFXMenuItem("Topics", "http://localhost/freeside/rt/Articles/Topics.html", "" ));
+myMenu42.width = 256;
+
+myMenu41.add(new WebFXMenuItem("Articles", null, "", myMenu42 ));
+myMenu41.add(new WebFXMenuItem("My Day", "http://localhost/freeside/rt/Tools/MyDay.html", "" ));
+myMenu41.add(new WebFXMenuItem("My Reminders", "http://localhost/freeside/rt/Tools/MyReminders.html", "" ));
+myMenu41.add(new WebFXMenuItem("Offline", "http://localhost/freeside/rt/Tools/Offline.html", "" ));
+myMenu41.add(new WebFXMenuItem("Approval", "http://localhost/freeside/rt/Approvals/", "" ));
+myMenu41.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Ticketing", null, "Ticketing tools", myMenu41 ));
+myMenu40.add(new WebFXMenuItem("Customer email settings", "http://localhost/freeside/misc/manage_cust_email.html", "" ));
+myMenu40.add(new WebFXMenuItem("Business card scan", "http://localhost/freeside/edit/prospect_main-upload.html", "" ));
+myMenu40.add(new WebFXMenuItem("Attachments", "http://localhost/freeside/browse/cust_attachment.html", "View customer attachments" ));
+var myMenu43 = new WebFXMenu;
+myMenu43.emptyText = '';
+myMenu43.add(new WebFXMenuItem("Customers", "http://localhost/freeside/misc/cust_main-import.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Package definitions", "http://localhost/freeside/misc/part_pkg-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Customer packages", "http://localhost/freeside/misc/cust_pkg-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Customer comments", "http://localhost/freeside/misc/cust_main_note-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("One-time charges", "http://localhost/freeside/misc/cust_main-import_charges.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Payments", "http://localhost/freeside/misc/cust_pay-import.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Credits", "http://localhost/freeside/misc/cust_credit-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Phone numbers (DIDs)", "http://localhost/freeside/misc/phone_avail-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/misc/cdr-import.html", "" ));
+myMenu43.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Importing", null, "Import tools", myMenu43 ));
+var myMenu44 = new WebFXMenu;
+myMenu44.emptyText = '';
+myMenu44.add(new WebFXMenuItem("Download database dump", "http://localhost/freeside/misc/dump.cgi", "" ));
+myMenu44.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Exporting", null, "Export tools", myMenu44 ));
+myMenu40.add(new WebFXMenuItem("Status", "http://localhost/freeside/view/Status.html", "System status" ));
+myMenu40.width = 256;
+
+          myBar.add(new WebFXMenuButton('Tools', null, 'Tools', myMenu40 ));
+
+
+          var myMenu45 = new WebFXMenu;
+myMenu45.emptyText = '';
+myMenu45.add(new WebFXMenuItem("Settings", "http://localhost/freeside/config/config-view.cgi", "" ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu46 = new WebFXMenu;
+myMenu46.emptyText = '';
+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" ));
+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)" ));
+myMenu46.add(new WebFXMenuItem("Agent payment gateways", "http://localhost/freeside/browse/payment_gateway.html", "Credit card and electronic check processors for agent overrides" ));
+myMenu46.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Companies", null, "", myMenu46 ));
+var myMenu47 = new WebFXMenu;
+myMenu47.emptyText = '';
+myMenu47.add(new WebFXMenuItem("Sales People", "http://localhost/freeside/browse/sales.html", "Sales people bring in new business." ));
+myMenu47.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Sales People", null, "", myMenu47 ));
+var myMenu48 = new WebFXMenu;
+myMenu48.emptyText = '';
+myMenu48.add(new WebFXMenuItem("Employees", "http://localhost/freeside/browse/access_user.html", "Setup internal users" ));
+myMenu48.add(new WebFXMenuItem("Employee groups", "http://localhost/freeside/browse/access_group.html", "Employee groups allow you to control access to the backend" ));
+myMenu48.add(new WebFXMenuItem("Installer availability", "http://localhost/freeside/browse/sched_item.html", "Installer availability" ));
+myMenu48.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Employees", null, "", myMenu48 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu49 = new WebFXMenu;
+myMenu49.emptyText = '';
+myMenu49.add(new WebFXMenuItem("Customer tags", "http://localhost/freeside/browse/part_tag.html", "" ));
+myMenu49.add(new WebFXMenuItem("Customer classes", "http://localhost/freeside/browse/cust_class.html", "Customer classes define groups of customers for reporting." ));
+myMenu49.add(new WebFXMenuItem("Customer categories", "http://localhost/freeside/browse/cust_category.html", "Customer categories define groups of customer classes." ));
+myMenu49.add(new WebFXMenuSeparator());
+myMenu49.add(new WebFXMenuItem("Contact types", "http://localhost/freeside/browse/contact_class.html", "" ));
+myMenu49.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Customers", null, "", myMenu49 ));
+var myMenu50 = new WebFXMenu;
+myMenu50.emptyText = '';
+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" ));
+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." ));
+myMenu50.add(new WebFXMenuItem("Package categories", "http://localhost/freeside/browse/pkg_category.html", "Package categories define groups of package classes, for invoice sections." ));
+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." ));
+myMenu50.add(new WebFXMenuItem("Fees", "http://localhost/freeside/browse/part_fee.html", "" ));
+myMenu50.add(new WebFXMenuItem("Discounts", "http://localhost/freeside/browse/discount.html", "" ));
+myMenu50.add(new WebFXMenuItem("Discount classes", "http://localhost/freeside/browse/discount_class.html", "" ));
+var myMenu51 = new WebFXMenu;
+myMenu51.emptyText = '';
+myMenu51.add(new WebFXMenuItem("Cancel reasons", "http://localhost/freeside/browse/reason.html?class=C", "Cancel reasons explain why a service was cancelled." ));
+myMenu51.add(new WebFXMenuItem("Cancel reason types", "http://localhost/freeside/browse/reason_type.html?class=C", "Cancel reason types define groups of reasons." ));
+myMenu51.add(new WebFXMenuItem("Suspend reasons", "http://localhost/freeside/browse/reason.html?class=S", "Suspend reasons explain why a service was suspended." ));
+myMenu51.add(new WebFXMenuItem("Suspend reason types", "http://localhost/freeside/browse/reason_type.html?class=S", "Suspend reason types define groups of reasons." ));
+myMenu51.width = 256;
+
+myMenu50.add(new WebFXMenuItem("Cancel/Suspend Reasons", null, "", myMenu51 ));
+myMenu50.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Packages", null, "", myMenu50 ));
+var myMenu52 = new WebFXMenu;
+myMenu52.emptyText = '';
+myMenu52.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi", "Services are items you offer to your customers" ));
+myMenu52.add(new WebFXMenuItem("Service classes", "http://localhost/freeside/browse/part_svc_class.html", "Services classes are user-defined, informational types for services" ));
+myMenu52.add(new WebFXMenuItem("Provisioning exports", "http://localhost/freeside/browse/part_export.cgi", "Provisioning services to external machines, databases and APIs" ));
+var myMenu53 = new WebFXMenu;
+myMenu53.emptyText = '';
+myMenu53.add(new WebFXMenuItem("Access numbers", "http://localhost/freeside/browse/svc_acct_pop.cgi", "Points of Presence" ));
+myMenu53.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Dialup", null, "", myMenu53 ));
+var myMenu54 = new WebFXMenu;
+myMenu54.emptyText = '';
+myMenu54.add(new WebFXMenuItem("Towers", "http://localhost/freeside/browse/tower.html", "Towers and sectors" ));
+myMenu54.add(new WebFXMenuItem("Routers", "http://localhost/freeside/browse/router.cgi", "Broadband access routers" ));
+myMenu54.add(new WebFXMenuItem("Address blocks", "http://localhost/freeside/browse/addr_block.cgi", "Manage address blocks and block assignments to broadband routers" ));
+myMenu54.add(new WebFXMenuItem("Address ranges", "http://localhost/freeside/browse/addr_range.html", "Designate special address ranges" ));
+myMenu54.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Wireless broadband", null, "", myMenu54 ));
+var myMenu55 = new WebFXMenu;
+myMenu55.emptyText = '';
+myMenu55.add(new WebFXMenuItem("View/Edit phone device types", "http://localhost/freeside/browse/part_device.html", "Phone device types" ));
+myMenu55.add(new WebFXMenuItem("View/Edit bulk DID vendors", "http://localhost/freeside/browse/did_vendor.html", "Bulk DID vendors" ));
+myMenu55.add(new WebFXMenuItem("View/Edit Carriers", "http://localhost/freeside/browse/cdr_carrier.html", "Carriers" ));
+myMenu55.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Phone", null, "", myMenu55 ));
+var myMenu56 = new WebFXMenu;
+myMenu56.emptyText = '';
+myMenu56.add(new WebFXMenuItem("RADIUS Groups", "http://localhost/freeside/browse/radius_group.html", "Manage RADIUS groups" ));
+myMenu56.add(new WebFXMenuItem("RADIUS Clients", "http://localhost/freeside/browse/nas.html", "Manage RADIUS clients" ));
+myMenu56.width = 256;
+
+myMenu52.add(new WebFXMenuItem("RADIUS", null, "", myMenu56 ));
+var myMenu57 = new WebFXMenu;
+myMenu57.emptyText = '';
+myMenu57.add(new WebFXMenuItem("Cable providers", "http://localhost/freeside/browse/cable_provider.html", "" ));
+myMenu57.add(new WebFXMenuItem("Cable modem models", "http://localhost/freeside/browse/cable_model.html", "" ));
+myMenu57.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Cable", null, "", myMenu57 ));
+var myMenu58 = new WebFXMenu;
+myMenu58.emptyText = '';
+myMenu58.add(new WebFXMenuItem("Alarm system vendors", "http://localhost/freeside/browse/alarm_system.html", "" ));
+myMenu58.add(new WebFXMenuItem("Alarm system types", "http://localhost/freeside/browse/alarm_type.html", "" ));
+myMenu58.add(new WebFXMenuItem("Alarm central stations", "http://localhost/freeside/browse/alarm_station.html", "" ));
+myMenu58.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Alarm", null, "", myMenu58 ));
+var myMenu59 = new WebFXMenu;
+myMenu59.emptyText = '';
+myMenu59.add(new WebFXMenuItem("Circuit types", "http://localhost/freeside/browse/circuit_type.html", "" ));
+myMenu59.add(new WebFXMenuItem("Circuit providers", "http://localhost/freeside/browse/circuit_provider.html", "" ));
+myMenu59.add(new WebFXMenuItem("Termination types", "http://localhost/freeside/browse/circuit_termination.html", "" ));
+myMenu59.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Circuits", null, "", myMenu59 ));
+myMenu52.add(new WebFXMenuItem("Hardware types", "http://localhost/freeside/browse/hardware_class.html", "Set up hardware type catalog" ));
+myMenu52.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Services", null, "", myMenu52 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu60 = new WebFXMenu;
+myMenu60.emptyText = '';
+myMenu60.add(new WebFXMenuItem("Billing events", "http://localhost/freeside/browse/part_event.html", "Billing actions for customers, invoices and packages" ));
+myMenu60.add(new WebFXMenuItem("Invoice configurations", "http://localhost/freeside/browse/invoice_conf.html", "Adjust invoice settings for special-purpose notices" ));
+myMenu60.add(new WebFXMenuItem("Invoice templates", "http://localhost/freeside/browse/invoice_template.html", "Edit templates for HTML, plaintext and typeset invoices" ));
+myMenu60.add(new WebFXMenuItem("Prepaid cards", "http://localhost/freeside/search/prepay_credit.html", "View outstanding cards, generate new cards" ));
+var myMenu61 = new WebFXMenu;
+myMenu61.emptyText = '';
+myMenu61.add(new WebFXMenuItem("Rate plans", "http://localhost/freeside/browse/rate.cgi", "Manage rate plans" ));
+myMenu61.add(new WebFXMenuItem("Regions and prefixes", "http://localhost/freeside/browse/rate_region.html", "Manage regions and prefixes" ));
+myMenu61.add(new WebFXMenuItem("Usage classes", "http://localhost/freeside/browse/usage_class.html", "Usage classes define groups of usage for taxation." ));
+myMenu61.add(new WebFXMenuItem("Time periods", "http://localhost/freeside/browse/rate_time.html", "Time periods define days and hours for rate plans" ));
+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." ));
+myMenu61.add(new WebFXMenuSeparator());
+myMenu61.add(new WebFXMenuItem("Tiering plans", "http://localhost/freeside/browse/rate_tier.html", "Rating tiers" ));
+myMenu61.width = 256;
+
+myMenu60.add(new WebFXMenuItem("Call rates and regions", null, "Manage rate plans, regions and prefixes for VoIP and call billing", myMenu61 ));
+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" ));
+myMenu60.add(new WebFXMenuItem("Tax classes", "http://localhost/freeside/browse/part_pkg_taxclass.html", "Tax classes" ));
+myMenu60.add(new WebFXMenuItem("Credit reasons", "http://localhost/freeside/browse/reason.html?class=R", "Credit reasons explain why a credit was issued." ));
+myMenu60.add(new WebFXMenuItem("Credit reason types", "http://localhost/freeside/browse/reason_type.html?class=R", "Credit reason types define groups of reasons." ));
+myMenu60.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Billing", null, "", myMenu60 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu62 = new WebFXMenu;
+myMenu62.emptyText = '';
+myMenu62.add(new WebFXMenuItem("Message templates", "http://localhost/freeside/browse/msg_template.html", "Templates for customer notices" ));
+myMenu62.add(new WebFXMenuItem("Advertising sources", "http://localhost/freeside/browse/part_referral.html", "Where a customer heard about your service." ));
+myMenu62.add(new WebFXMenuItem("Custom fields", "http://localhost/freeside/browse/part_virtual_field.html", "Locally defined fields" ));
+myMenu62.add(new WebFXMenuItem("Translation strings", "http://localhost/freeside/browse/msgcat.html", "Translations and other customizable labels for each locale" ));
+myMenu62.add(new WebFXMenuItem("Inventory classes and inventory", "http://localhost/freeside/browse/inventory_class.html", "Setup inventory classes and stock inventory" ));
+myMenu62.add(new WebFXMenuItem("Upload targets", "http://localhost/freeside/browse/upload_target.html", "Billing and payment upload destinations" ));
+myMenu62.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Miscellaneous", null, "", myMenu62 ));
+myMenu45.width = 256;
+
+          myBar.add(new WebFXMenuButton('Configuration', null, 'Configuration and setup', myMenu45 ));
+
+
+          var myMenu63 = new WebFXMenu;
+myMenu63.emptyText = '';
+myMenu63.add(new WebFXMenuItem("Billing documentation", "http://www.freeside.biz/mediawiki/index.php/Freeside:3:Documentation", "Freeside documentation" ));
+myMenu63.add(new WebFXMenuItem("Ticketing documentation", "http://wiki.bestpractical.com/", "Request Tracker Wiki" ));
+myMenu63.add(new WebFXMenuSeparator());
+myMenu63.add(new WebFXMenuItem("About Freeside v3.8git", "javascript:about_freeside()", "" ));
+myMenu63.add(new WebFXMenuItem("About RT v4.0.23", "http://www.bestpractical.com/rt", "Request Tracker Homepage" ));
+myMenu63.width = 256;
+
+          myBar.add(new WebFXMenuButton('Help', null, '', myMenu63 ));
+
+
+  myBar.show( null, 'vertical' );
+  myBar.width = 154;
+
+</SCRIPT>
+
+
+
+
+      <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_iframe.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_draggable.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_crossframe.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/iframecontentmws.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/ajaxcontentmws.js"></SCRIPT>
+
+    <SCRIPT TYPE="text/javascript">
+
+  function rs_init_object() {
+    var A;
+    try {
+      A=new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+      try {
+        A=new ActiveXObject("Microsoft.XMLHTTP");
+      } catch (oc) {
+        A=null;
+      }
+    }
+    if(!A && typeof XMLHttpRequest != "undefined")
+      A = new XMLHttpRequest();
+    if (!A)
+      alert("Can't create XMLHttpRequest object");
+    return A;
+
+  }
+
+</SCRIPT>
+
+    <SCRIPT TYPE="text/javascript">
+
+  function logout() {
+    // count args; build URL
+    var url = "http://localhost/freeside/loginout/logout.html";
+
+    var xmlhttp = rs_init_object();
+    xmlhttp.open("GET", url, false, "magic", "notyet");
+    xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
+    xmlhttp.send(null);
+
+    if (xmlhttp.readyState != 4) {
+      alert("Logout failed: readyState is " + xmlhttp.readyState);
+      return;
+    }
+
+    if (xmlhttp.status != 200) {
+      alert("Logout failed: status is " + xmlhttp.status);
+    } else {
+      var data = xmlhttp.responseText;
+      // alert('received response: ' + data);
+      if ( data.indexOf("<b>System error</b>") > -1 ) {
+        var w;
+        if ( w = window.open("about:blank") ) {
+          w.document.write(data);
+        } else {
+          // popup blocking?  should use an overlib popup instead 
+          alert("Error popup disabled; try disabling popup blocking to see");
+        }
+      } else {
+        window.location = "http://localhost/freeside/loginout/logout.html";
+      }
+    }
+  }
+
+</SCRIPT>
+
+
+    
+
+  </HEAD>
+  <BODY BGCOLOR="#f8f8f8"  STYLE="margin-top:0; margin-bottom:0; margin-left:0px; margin-right:0px">
+    <table width="100%" CELLPADDING=0 CELLSPACING=0 STYLE="padding-left:0px; padding-right:4px" CLASS="fshead">
+      <tr>
+        <td BGCOLOR="#ffffff"><IMG BORDER=0 ALT="freeside" HEIGHT="36" SRC="http://localhost/freeside/view/REAL_logo.cgi"></td>
+        <td align=left BGCOLOR="#ffffff"> <!-- valign="top" -->
+          <font size=6>Freeside Test 3.8.1</font>
+        </td>
+        <td align=right valign=top BGCOLOR="#ffffff"><FONT SIZE="-1">Logged in as <b>test&nbsp;</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>
+          <BR></FONT>
+        </td>
+      </tr>
+    </table>
+
+    <TABLE WIDTH="100%" CELLSPACING=0 CELLPADDING=0>
+
+<link href="http://localhost/freeside/elements/freeside-menu.css" type="text/css" rel="stylesheet">
+
+
+      <TR CLASS="fsmenubar">
+
+
+        <TD COLSPAN="7" WIDTH="100%" STYLE="padding:1px 0px 0px 0px;border-top: 1px solid #7e0079" BGCOLOR="#cccccc">
+          <SCRIPT TYPE="text/javascript">
+            document.write(myBar);
+          </SCRIPT>
+        </TD>
+
+      </TR>
+
+      <TR CLASS="fssearchbar">
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/prospect_main.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside/search/report_prospect_main.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A>
+    <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">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_prospect (what) {
+    if ( what.value == '(name, company or phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_main.cgi" METHOD="POST" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside/search/report_cust_main.html" CLASS="fslink" STYLE="font-size: 11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search customers" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_cust (what) {
+    if ( what.value == '(cust #, name, company or contact phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="center">
+          
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_address2 (what) {
+    if ( what.value == '(Unit #)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_bill.html" METHOD="GET" STYLE="margin:0;display:inline">
+    <INPUT NAME="invnum" TYPE="text" VALUE="(inv #)" STYLE="width:56px" onFocus="clearhint_search_invoice(this);" onClick="clearhint_search_invoice(this);" CLASS="fstext">
+    <A HREF="http://localhost/freeside/search/report_cust_bill.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A>    <BR>
+    <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">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_invoice (what) {
+    if ( what.value == '(inv #)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_svc.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A NOTYET="http://localhost/freeside/search/svc_Smarter.html" STYLE="color: #cccccc; font-size:11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search services" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_svc (what) {
+    if ( what.value == '(user, email, ip, mac, domain or service phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px;padding-right:2px">
+          
+  <FORM ACTION="http://localhost/freeside//rt/index.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside//rt/Search/Build.html?NewQuery=1" CLASS="fslink" STYLE="font-size:11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search tickets" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_ticket (what) {
+    if ( what.value == '(ticket #, subject, email or fulltext:text)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+      </TR>
+    </TABLE>
+
+
+
+    <TABLE WIDTH="100%" HEIGHT="100%" CELLSPACING=0 CELLPADDING=4>
+
+      <TR HEIGHT="100%">
+
+        <TD CLASS="background" HEIGHT="100%" VALIGN="top"> <!-- WIDTH="100%"> -->
+
+          <FONT SIZE=6>
+            Package Definitions
+          </FONT>
+
+          <BR><BR>
+
+          
+
+
+
+
+        
+    One or more service definitions are grouped together into a package 
+    definition and given pricing information.  Customers purchase packages
+    rather than purchase services directly.<BR><BR>
+    <FORM METHOD="GET" ACTION="http://localhost/freeside/edit/part_pkg.cgi">
+    <A HREF="http://localhost/freeside/edit/part_pkg.cgi"><I>Add a new package definition</I></A>
+    or
+    
+
+<SELECT 
+        NAME = "clone"
+        ID   = "pkgpart"
+        
+        
+        
+>
+
+
+    <OPTION VALUE="">Select package
+
+    <OPTION VALUE="4"
+            
+    >
+     4: Annual subscription domain
+    <OPTION VALUE="5"
+            
+    >
+     5: Monthly anniversary phone x4
+    <OPTION VALUE="2"
+            
+    >
+     2: Monthly prorated account
+    <OPTION VALUE="3"
+            
+    >
+     3: Monthly prorated broadband
+    <OPTION VALUE="1"
+            
+    >
+     1: System Domain - (NOT FOR CUSTOMERS)
+
+
+</SELECT>
+
+
+
+    <INPUT TYPE="submit" VALUE="Clone existing package">
+    </FORM>
+    <BR><BR>
+  
+
+
+
+        <TABLE>
+          <TR>
+
+            <TD VALIGN="bottom">
+
+              <FORM>
+
+                  5 total package definitions
+
+
+                    
+<SCRIPT TYPE="text/javascript">
+function filter_change() {  window.location = 'http://localhost/freeside/browse/part_pkg.cgi?active=1;dummy=1;classnum=' + document.getElementById('classnum').options[document.getElementById('classnum').selectedIndex].value}
+</SCRIPT>
+
+<BR>( show class: 
+<SELECT 
+        NAME = "classnum"
+        ID   = "classnum"
+        onChange="filter_change()"
+        
+        
+>
+
+    <OPTION VALUE="-1"
+            
+    >all
+    <OPTION VALUE="0"
+            
+    >(none)
+
+
+    <OPTION VALUE="1"
+            
+    >
+     Fees
+
+
+</SELECT>
+
+
+ )( <A HREF="http://localhost/freeside/browse/part_pkg.cgi?active=1;dummy=1;recurring=1">hide one-time charges</A> )( <a href="http://localhost/freeside/browse/part_pkg.cgi?active=1;dummy=1;recurring=0;showdisabled=1">show disabled package definitions</a> )
+                <BR>
+
+              </FORM>
+
+            </TD>
+
+
+          </TR>
+          <TR>
+            <TD COLSPAN=2>
+
+
+                
+
+
+                <FORM ACTION="http://localhost/freeside/edit/bulk-part_pkg.html" METHOD="POST">
+
+
+              
+<TABLE CLASS="grid" CELLSPACING=0 CELLPADDING=0 >
+
+
+
+
+<THEAD>
+
+  <TR>
+    <TH CLASS   = "grid"
+        BGCOLOR = "#cccccc"
+        ROWSPAN = "2"
+        
+        
+
+    >
+      <A HREF="http://localhost/freeside/browse/part_pkg.cgi?active=1;dummy=1;recurring=0;showdisabled=0;order_by=pkgpart">#</A>
+    </TH>
+    <TH CLASS   = "grid"
+        BGCOLOR = "#cccccc"
+        ROWSPAN = "1"
+        
+        
+
+    >
+      <A HREF="http://localhost/freeside/browse/part_pkg.cgi?active=1;dummy=1;recurring=0;showdisabled=0;order_by=pkg">Package</A>
+    </TH>
+    <TH CLASS   = "grid"
+        BGCOLOR = "#cccccc"
+        ROWSPAN = "1"
+        
+        
+
+    >
+      <A HREF="http://localhost/freeside/browse/part_pkg.cgi?active=1;dummy=1;recurring=0;showdisabled=0;order_by=comment">Comment</A>
+    </TH>
+    <TH CLASS   = "grid"
+        BGCOLOR = "#cccccc"
+        ROWSPAN = "1"
+        
+        
+
+    >
+      Custom
+    </TH>
+    <TH CLASS   = "grid"
+        BGCOLOR = "#cccccc"
+        ROWSPAN = "1"
+        
+        
+
+    >
+      Class
+    </TH>
+    <TH CLASS   = "grid"
+        BGCOLOR = "#cccccc"
+        ROWSPAN = "1"
+        
+        
+
+    >
+      Pricing
+    </TH>
+    <TH CLASS   = "grid"
+        BGCOLOR = "#cccccc"
+        ROWSPAN = "1"
+        
+        
+
+    >
+      Cost&nbsp;tracking
+    </TH>
+    <TH CLASS   = "grid"
+        BGCOLOR = "#cccccc"
+        ROWSPAN = "1"
+        
+        
+
+    >
+      Customer<BR>packages
+    </TH>
+    <TH CLASS   = "grid"
+        BGCOLOR = "#cccccc"
+        ROWSPAN = "1"
+        
+        
+
+    >
+      Plan options
+    </TH>
+    <TH CLASS   = "grid"
+        BGCOLOR = "#cccccc"
+        ROWSPAN = "1"
+        
+        
+
+    >
+      Services
+    </TH>
+    <TH CLASS   = "grid"
+        BGCOLOR = "#cccccc"
+        ROWSPAN = "1"
+        
+        
+
+    >
+      
+    </TH>
+  </TR>
+
+
+</THEAD>
+
+<TBODY>
+
+
+    <TR ID="2" CLASS="row0">
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><A HREF="http://localhost/freeside/edit/part_pkg.cgi?2">2</A></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><A HREF="http://localhost/freeside/edit/part_pkg.cgi?2">Monthly prorated account</A></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=center ><B><FONT COLOR="#0000CC"></FONT></B></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left >(none)</TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="center" COLSPAN="2">Prorate&nbsp;(Nth&nbsp;of&nbsp;month&nbsp;billing)</td></tr><tr><TD ALIGN="right">$20.00 </td><TD ALIGN="left"> &nbsp; setup</td></tr><tr><TD ALIGN="right" COLSPAN="1">$30.00</td><TD ALIGN="left"> &nbsp; monthly</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="center" COLSPAN="2">&nbsp;</td></tr><tr><TD ALIGN="right">$0.00 </td><TD ALIGN="left">&nbsp;setup</td></tr><tr><TD ALIGN="right" COLSPAN="1">$0.00</td><TD ALIGN="left">&nbsp;monthly</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right"><B><FONT COLOR="#FF00F5">0</FONT></B></td><TD ALIGN="left">on hold</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#009999">0</FONT></B></td><TD ALIGN="left">not yet billed</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#00CC00">150</FONT></B></td><TD ALIGN="left"><A HREF="http://localhost/freeside/search/cust_pkg.cgi?pkgpart=2;magic=active">active</A></td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#FF9900">0</FONT></B></td><TD ALIGN="left">suspended</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#FF0000">0</FONT></B></td><TD ALIGN="left">cancelled</td></tr><tr><TD ></td><TD ALIGN="left"><FONT SIZE="-1">[ <A HREF="javascript:void(0);"
+   onClick="overlib( OLiframeContent('http://localhost/freeside/edit/bulk-cust_pkg.html?pkgpart=2', 569, 210, 'popup-0000000000-0000-000000000.000000', 0, 'auto' ), CAPTION, 'Change Packages', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '#333399', CGCOLOR, '#333399', CLOSETEXT, 'Close'); return false;"
+   
+   
+   
+>change</A> ]</FONT></td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right">prorate_verbose: </td><TD ALIGN="left">1</td></tr><tr><TD ALIGN="right">prorate_round_day: </td><TD ALIGN="left">1</td></tr><tr><TD ALIGN="right">cutoff_day: </td><TD ALIGN="left">1</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right"><B>1</B></td><TD ALIGN="left"><A HREF="http://localhost/freeside/edit/part_svc.cgi?2">Test&nbsp;svc_acct</A></td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><INPUT TYPE="checkbox" NAME="pkgpart" VALUE=2></TD>
+
+
+    </TR>
+
+    <TR ID="3" CLASS="row1">
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><A HREF="http://localhost/freeside/edit/part_pkg.cgi?3">3</A></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><A HREF="http://localhost/freeside/edit/part_pkg.cgi?3">Monthly prorated broadband</A></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=center ><B><FONT COLOR="#0000CC"></FONT></B></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left >(none)</TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="center" COLSPAN="2">Prorate&nbsp;(Nth&nbsp;of&nbsp;month&nbsp;billing)</td></tr><tr><TD ALIGN="right">$40.00 </td><TD ALIGN="left"> &nbsp; setup</td></tr><tr><TD ALIGN="right" COLSPAN="1">$90.00</td><TD ALIGN="left"> &nbsp; monthly</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="center" COLSPAN="2">&nbsp;</td></tr><tr><TD ALIGN="right">$0.00 </td><TD ALIGN="left">&nbsp;setup</td></tr><tr><TD ALIGN="right" COLSPAN="1">$0.00</td><TD ALIGN="left">&nbsp;monthly</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right"><B><FONT COLOR="#FF00F5">0</FONT></B></td><TD ALIGN="left">on hold</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#009999">0</FONT></B></td><TD ALIGN="left">not yet billed</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#00CC00">150</FONT></B></td><TD ALIGN="left"><A HREF="http://localhost/freeside/search/cust_pkg.cgi?pkgpart=3;magic=active">active</A></td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#FF9900">0</FONT></B></td><TD ALIGN="left">suspended</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#FF0000">0</FONT></B></td><TD ALIGN="left">cancelled</td></tr><tr><TD ></td><TD ALIGN="left"><FONT SIZE="-1">[ <A HREF="javascript:void(0);"
+   onClick="overlib( OLiframeContent('http://localhost/freeside/edit/bulk-cust_pkg.html?pkgpart=3', 569, 210, 'popup-0000000000-0000-000000000.000000', 0, 'auto' ), CAPTION, 'Change Packages', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '#333399', CGCOLOR, '#333399', CLOSETEXT, 'Close'); return false;"
+   
+   
+   
+>change</A> ]</FONT></td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right">prorate_round_day: </td><TD ALIGN="left">1</td></tr><tr><TD ALIGN="right">cutoff_day: </td><TD ALIGN="left">1</td></tr><tr><TD ALIGN="right">prorate_verbose: </td><TD ALIGN="left">1</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right"><B>1</B></td><TD ALIGN="left"><A HREF="http://localhost/freeside/edit/part_svc.cgi?4">Test&nbsp;svc_broadband</A></td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><INPUT TYPE="checkbox" NAME="pkgpart" VALUE=3></TD>
+
+
+    </TR>
+
+    <TR ID="4" CLASS="row0">
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><A HREF="http://localhost/freeside/edit/part_pkg.cgi?4">4</A></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><A HREF="http://localhost/freeside/edit/part_pkg.cgi?4">Annual subscription domain</A></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=center ><B><FONT COLOR="#0000CC"></FONT></B></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left >(none)</TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="center" COLSPAN="2">Subscription&nbsp;(Nth&nbsp;of&nbsp;month,&nbsp;full&nbsp;charge&nbsp;for&nbsp;first)</td></tr><tr><TD ALIGN="right">$0.00 </td><TD ALIGN="left"> &nbsp; setup</td></tr><tr><TD ALIGN="right" COLSPAN="1">$25.00</td><TD ALIGN="left"> &nbsp; annually</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="center" COLSPAN="2">&nbsp;</td></tr><tr><TD ALIGN="right">$0.00 </td><TD ALIGN="left">&nbsp;setup</td></tr><tr><TD ALIGN="right" COLSPAN="1">$0.00</td><TD ALIGN="left">&nbsp;annually</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right"><B><FONT COLOR="#FF00F5">0</FONT></B></td><TD ALIGN="left">on hold</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#009999">0</FONT></B></td><TD ALIGN="left">not yet billed</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#00CC00">150</FONT></B></td><TD ALIGN="left"><A HREF="http://localhost/freeside/search/cust_pkg.cgi?pkgpart=4;magic=active">active</A></td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#FF9900">0</FONT></B></td><TD ALIGN="left">suspended</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#FF0000">0</FONT></B></td><TD ALIGN="left">cancelled</td></tr><tr><TD ></td><TD ALIGN="left"><FONT SIZE="-1">[ <A HREF="javascript:void(0);"
+   onClick="overlib( OLiframeContent('http://localhost/freeside/edit/bulk-cust_pkg.html?pkgpart=4', 569, 210, 'popup-0000000000-0000-000000000.000000', 0, 'auto' ), CAPTION, 'Change Packages', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '#333399', CGCOLOR, '#333399', CLOSETEXT, 'Close'); return false;"
+   
+   
+   
+>change</A> ]</FONT></td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right">cutoff_day: </td><TD ALIGN="left">1</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right"><B>1</B></td><TD ALIGN="left"><A HREF="http://localhost/freeside/edit/part_svc.cgi?3">Test&nbsp;svc_domain</A></td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><INPUT TYPE="checkbox" NAME="pkgpart" VALUE=4></TD>
+
+
+    </TR>
+
+    <TR ID="5" CLASS="row1">
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><A HREF="http://localhost/freeside/edit/part_pkg.cgi?5">5</A></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><A HREF="http://localhost/freeside/edit/part_pkg.cgi?5">Monthly anniversary phone x4</A></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=center ><B><FONT COLOR="#0000CC"></FONT></B></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left >(none)</TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="center" COLSPAN="2">Anniversary</td></tr><tr><TD ALIGN="right">$0.00 </td><TD ALIGN="left"> &nbsp; setup</td></tr><tr><TD ALIGN="right" COLSPAN="1">$60.00</td><TD ALIGN="left"> &nbsp; monthly</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="center" COLSPAN="2">&nbsp;</td></tr><tr><TD ALIGN="right">$0.00 </td><TD ALIGN="left">&nbsp;setup</td></tr><tr><TD ALIGN="right" COLSPAN="1">$0.00</td><TD ALIGN="left">&nbsp;monthly</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right"><B><FONT COLOR="#FF00F5">0</FONT></B></td><TD ALIGN="left">on hold</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#009999">0</FONT></B></td><TD ALIGN="left">not yet billed</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#00CC00">150</FONT></B></td><TD ALIGN="left"><A HREF="http://localhost/freeside/search/cust_pkg.cgi?pkgpart=5;magic=active">active</A></td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#FF9900">0</FONT></B></td><TD ALIGN="left">suspended</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#FF0000">0</FONT></B></td><TD ALIGN="left">cancelled</td></tr><tr><TD ></td><TD ALIGN="left"><FONT SIZE="-1">[ <A HREF="javascript:void(0);"
+   onClick="overlib( OLiframeContent('http://localhost/freeside/edit/bulk-cust_pkg.html?pkgpart=5', 569, 210, 'popup-0000000000-0000-000000000.000000', 0, 'auto' ), CAPTION, 'Change Packages', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '#333399', CGCOLOR, '#333399', CLOSETEXT, 'Close'); return false;"
+   
+   
+   
+>change</A> ]</FONT></td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right">recur_temporality: </td><TD ALIGN="left">upcoming</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right"><B>4</B></td><TD ALIGN="left"><A HREF="http://localhost/freeside/edit/part_svc.cgi?5">Test&nbsp;svc_phone</A></td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><INPUT TYPE="checkbox" NAME="pkgpart" VALUE=5></TD>
+
+
+    </TR>
+
+    <TR ID="1" CLASS="row0">
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><A HREF="http://localhost/freeside/edit/part_pkg.cgi?1">1</A></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><A HREF="http://localhost/freeside/edit/part_pkg.cgi?1">System Domain</A></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left >(NOT FOR CUSTOMERS)</TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=center ><B><FONT COLOR="#0000CC"></FONT></B></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left >(none)</TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="center" COLSPAN="2">Anniversary</td></tr><tr><TD ALIGN="right">$0.00 </td><TD ALIGN="left"> &nbsp; one-time</td></tr><tr><TD ALIGN="center" COLSPAN="2">(no recurring fee)</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="center" COLSPAN="2">&nbsp;</td></tr><tr><TD ALIGN="right">$0.00 </td><TD ALIGN="left">&nbsp;one-time</td></tr><tr><TD ALIGN="center" COLSPAN="2">(no&nbsp;recurring)</td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right"><B><FONT COLOR="#FF00F5">0</FONT></B></td><TD ALIGN="left">on hold</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#009999">1</FONT></B></td><TD ALIGN="left"><A HREF="http://localhost/freeside/search/cust_pkg.cgi?pkgpart=1;magic=not_yet_billed">not yet billed</A></td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#">0</FONT></B></td><TD ALIGN="left">charges</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#FF9900">0</FONT></B></td><TD ALIGN="left">suspended</td></tr><tr><TD ALIGN="right"><B><FONT COLOR="#FF0000">0</FONT></B></td><TD ALIGN="left">cancelled</td></tr><tr><TD ></td><TD ALIGN="left"><FONT SIZE="-1">[ <A HREF="javascript:void(0);"
+   onClick="overlib( OLiframeContent('http://localhost/freeside/edit/bulk-cust_pkg.html?pkgpart=1', 569, 210, 'popup-0000000000-0000-000000000.000000', 0, 'auto' ), CAPTION, 'Change Packages', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '#333399', CGCOLOR, '#333399', CLOSETEXT, 'Close'); return false;"
+   
+   
+   
+>change</A> ]</FONT></td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=right ><TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><tr><TD ALIGN="right"><B>1</B></td><TD ALIGN="left"><A HREF="http://localhost/freeside/edit/part_svc.cgi?1"><B>Domain&nbsp;(PRIMARY)</B></A></td></tr></table></TD>
+
+
+
+        <TD CLASS="grid"  ALIGN=left ><INPUT TYPE="checkbox" NAME="pkgpart" VALUE=1></TD>
+
+
+    </TR>
+
+
+</TBODY>
+
+</TABLE>
+
+
+              
+
+  
+            </TD>
+          </TR>
+        </TABLE>
+
+
+        <DIV ID="checkbox_footer" STYLE="display:block">
+<INPUT TYPE="button" VALUE="select all" onclick="setAll(true)">
+<INPUT TYPE="button" VALUE="unselect all" onclick="setAll(false)">
+<BR>
+<INPUT TYPE="submit"    VALUE="edit report classes">
+</DIV>
+<SCRIPT>
+var checkboxes = [];
+var inputs = document.getElementsByTagName('input');
+for (var i = 0; i < inputs.length; i++) {
+  var obj = inputs[i];
+  if ( obj.type == "checkbox" && true ) {
+    checkboxes.push(obj);
+  }
+}
+if ( checkboxes.length == 0 ) {
+  document.getElementById('checkbox_footer').style.display = 'none';
+}
+function setAll(setTo) {
+  for (var i = 0; i < checkboxes.length; i++) {
+    checkboxes[i].checked = setTo;
+  }
+}
+function toCGIString() {
+  var out = '';
+  for (var i = 0; i < checkboxes.length; i++) {
+    if (checkboxes[i].checked) {
+      out += '&' + checkboxes[i].name + '=' + checkboxes[i].value;
+    }
+  }
+  return out;
+}
+</SCRIPT>
+</FORM>
+
+                </TD>
+      </TR>
+    </TABLE>
+  </BODY>
+</HTML>
+
+
+
+
+
+
+
diff --git a/FS-Test/share/output/browse/part_svc.cgi/orderby=active b/FS-Test/share/output/browse/part_svc.cgi/orderby=active
new file mode 100644 (file)
index 0000000..9002503
--- /dev/null
@@ -0,0 +1,1915 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>
+      Service Definition Listing
+    </TITLE>
+    <!-- per RT, to prevent IE compatibility mode -->
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <!-- The X-UA-Compatible <meta> tag above must be very early in <head> -->
+    <META HTTP-Equiv="Cache-Control" Content="no-cache">
+    <META HTTP-Equiv="Pragma" Content="no-cache">
+    <META HTTP-Equiv="Expires" Content="0"> 
+
+    <script type="text/javascript" src="http://localhost/freeside/elements/cssexpr.js"></script>
+
+
+  <script type="text/javascript" src="http://localhost/freeside/elements/xmenu.top.js"></script>
+  <link href="http://localhost/freeside/elements/xmenu.top.css" type="text/css" rel="stylesheet">
+
+
+  <link href="http://localhost/freeside/elements/freeside.css" type="text/css" rel="stylesheet">
+  <link href="http://localhost/freeside/elements/freeside-print.css" type="text/css" rel="stylesheet" media="print">
+<link href="http://localhost/freeside/elements/freeside-menu.css" type="text/css" rel="stylesheet">
+
+<SCRIPT TYPE="text/javascript">
+
+  function about_freeside() {
+    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'); 
+  }
+
+  webfxMenuImagePath      = "http://localhost/freeside/images/";
+  webfxMenuUseHover       = 1;
+  webfxMenuShowTime       = 300;
+  webfxMenuHideTime       = 500;
+
+  var myBar = new WebFXMenuBar;
+
+    
+          myBar.add(new WebFXMenuButton('Billing Main', "http://localhost/freeside/", 'Billing start page' ));
+
+    
+          myBar.add(new WebFXMenuButton('Ticketing Main', "http://localhost/freeside/rt/", 'Ticketing start page' ));
+
+    
+          myBar.add(new WebFXMenuButton('New prospect', "http://localhost/freeside/edit/prospect_main.html", 'Add a new prospect' ));
+
+    
+          myBar.add(new WebFXMenuButton('New customer', "http://localhost/freeside/edit/cust_main.cgi", 'Add a new customer' ));
+
+
+          var myMenu0 = new WebFXMenu;
+myMenu0.emptyText = '';
+var myMenu1 = new WebFXMenu;
+myMenu1.emptyText = '';
+myMenu1.add(new WebFXMenuItem("List prospects", "http://localhost/freeside/search/prospect_main.html", "" ));
+myMenu1.add(new WebFXMenuItem("Advanced prospect reports", "http://localhost/freeside/search/report_prospect_main.html", "" ));
+myMenu1.add(new WebFXMenuSeparator());
+myMenu1.add(new WebFXMenuItem("Prospect contacts", "http://localhost/freeside/search/report_contact.html?link=prospect_main", "" ));
+myMenu1.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Prospects", null, "Prospect reports", myMenu1 ));
+var myMenu2 = new WebFXMenu;
+myMenu2.emptyText = '';
+myMenu2.add(new WebFXMenuItem("List quotations", "http://localhost/freeside/search/quotation.html", "" ));
+myMenu2.add(new WebFXMenuItem("Advanced quotation reports", "http://localhost/freeside/search/report_quotation.html", "" ));
+myMenu2.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Quotations", null, "Quotation reports", myMenu2 ));
+var myMenu3 = new WebFXMenu;
+myMenu3.emptyText = '';
+var myMenu4 = new WebFXMenu;
+myMenu4.emptyText = '';
+myMenu4.add(new WebFXMenuItem("by customer number", "http://localhost/freeside/search/cust_main.cgi?browse=custnum", "" ));
+myMenu4.add(new WebFXMenuItem("by last name", "http://localhost/freeside/search/cust_main.cgi?browse=last", "" ));
+myMenu4.add(new WebFXMenuItem("by company name", "http://localhost/freeside/search/cust_main.cgi?browse=company", "" ));
+myMenu4.add(new WebFXMenuItem("by active trouble tickets", "http://localhost/freeside/search/cust_main.cgi?browse=tickets", "" ));
+myMenu4.width = 256;
+
+myMenu3.add(new WebFXMenuItem("List customers", null, "List customers", myMenu4 ));
+myMenu3.add(new WebFXMenuItem("Zip code distribution", "http://localhost/freeside/search/report_cust_main-zip.html", "Zip codes by number of customers" ));
+myMenu3.add(new WebFXMenuItem("Customer signup report", "http://localhost/freeside/graph/report_cust_signup.html", "New customer signups by date" ));
+myMenu3.add(new WebFXMenuItem("Customer churn report", "http://localhost/freeside/graph/report_cust_churn.html", "New customers, suspensions, and cancellations summary" ));
+myMenu3.add(new WebFXMenuItem("Signup date report", "http://localhost/freeside/graph/report_signupdate.html", "Signup date report (by date of signup)" ));
+myMenu3.add(new WebFXMenuItem("Advanced customer reports", "http://localhost/freeside/search/report_cust_main.html", "by status, signup date, agent, etc." ));
+myMenu3.add(new WebFXMenuSeparator());
+myMenu3.add(new WebFXMenuItem("Customer contacts", "http://localhost/freeside/search/report_contact.html?link=cust_main", "" ));
+myMenu3.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Customers", null, "Customer reports", myMenu3 ));
+var myMenu5 = new WebFXMenu;
+myMenu5.emptyText = '';
+var myMenu6 = new WebFXMenu;
+myMenu6.emptyText = '';
+myMenu6.add(new WebFXMenuItem("All open invoices", "http://localhost/freeside/search/cust_bill.html?OPEN_date", "All invoices with an unpaid balance" ));
+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" ));
+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" ));
+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" ));
+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" ));
+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" ));
+myMenu6.width = 256;
+
+myMenu5.add(new WebFXMenuItem("Open invoices", null, "Open invoices", myMenu6 ));
+myMenu5.add(new WebFXMenuItem("All invoices", "http://localhost/freeside/search/cust_bill.html?date", "List all invoices" ));
+myMenu5.add(new WebFXMenuItem("Advanced invoice reports", "http://localhost/freeside/search/report_cust_bill.html", "by agent, date range, etc." ));
+myMenu5.add(new WebFXMenuSeparator());
+myMenu5.add(new WebFXMenuItem("Line items", "http://localhost/freeside/search/report_cust_bill_pkg.html", "Individual line item detail" ));
+myMenu5.add(new WebFXMenuItem("Voided invoices", "http://localhost/freeside/search/report_cust_bill_void.html", "Search for voided invoices" ));
+myMenu5.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Invoices", null, "Invoice reports", myMenu5 ));
+var myMenu7 = new WebFXMenu;
+myMenu7.emptyText = '';
+myMenu7.add(new WebFXMenuItem("Discount graph", "http://localhost/freeside/graph/report_cust_bill_pkg_discount.html", "Discount overview per month" ));
+myMenu7.add(new WebFXMenuItem("Discount detail", "http://localhost/freeside/search/report_cust_bill_pkg_discount.html", "Discount report (by employee and/or date range)" ));
+myMenu7.add(new WebFXMenuItem("Package discounts", "http://localhost/freeside/search/report_cust_pkg_discount.html", "Active/inactive discounts by package" ));
+myMenu7.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Discounts", null, "Discount reports", myMenu7 ));
+var myMenu8 = new WebFXMenu;
+myMenu8.emptyText = '';
+myMenu8.add(new WebFXMenuItem("Payments", "http://localhost/freeside/search/report_cust_pay.html", "Payment report (by type and/or date range)" ));
+myMenu8.add(new WebFXMenuItem("Payment application detail", "http://localhost/freeside/search/report_cust_bill_pay_pkg.html", "Line item application detail" ));
+myMenu8.add(new WebFXMenuItem("Pending Payments", "http://localhost/freeside/search/cust_pay_pending.html?magic=_date;statusNOT=done", "Pending real-time payments" ));
+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)" ));
+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)" ));
+myMenu8.add(new WebFXMenuItem("Unapplied Payment Aging", "http://localhost/freeside/search/report_unapplied_cust_pay.html", "Unapplied payment aging report" ));
+myMenu8.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Payments", null, "Payment reports", myMenu8 ));
+var myMenu9 = new WebFXMenu;
+myMenu9.emptyText = '';
+myMenu9.add(new WebFXMenuItem("Package definitions (by # active)", "http://localhost/freeside/browse/part_pkg.cgi?active=1", "Package definitions by number of active packages" ));
+myMenu9.add(new WebFXMenuItem("Package costs", "http://localhost/freeside/graph/report_cust_pkg_cost.html", "Package setup and recurring costs graph" ));
+myMenu9.add(new WebFXMenuSeparator());
+myMenu9.add(new WebFXMenuItem("Package churn", "http://localhost/freeside/graph/report_cust_pkg.html", "Orders, suspensions and cancellations summary graph" ));
+myMenu9.add(new WebFXMenuSeparator());
+myMenu9.add(new WebFXMenuItem("All customer packages", "http://localhost/freeside/search/cust_pkg.cgi?pkgnum", "List all customer packages" ));
+myMenu9.add(new WebFXMenuItem("Package summary", "http://localhost/freeside/search/cust_pkg_summary.html", "Show package sales summary" ));
+myMenu9.add(new WebFXMenuItem("Suspended customer packages", "http://localhost/freeside/search/cust_pkg.cgi?magic=suspended", "List suspended packages" ));
+myMenu9.add(new WebFXMenuItem("Suspension summary", "http://localhost/freeside/search/cust_pkg_susp.html", "Show suspension activity" ));
+myMenu9.add(new WebFXMenuItem("Customer packages with unconfigured services", "http://localhost/freeside/search/cust_pkg.cgi?APKG_pkgnum", "List packages which have provisionable services" ));
+myMenu9.add(new WebFXMenuItem("Advanced package reports", "http://localhost/freeside/search/report_cust_pkg.html", "by agent, date range, status, package definition" ));
+myMenu9.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Packages", null, "Package reports", myMenu9 ));
+var myMenu10 = new WebFXMenu;
+myMenu10.emptyText = '';
+myMenu10.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi?orderby=active", "Service definitions by number of active packages" ));
+myMenu10.add(new WebFXMenuSeparator());
+myMenu10.add(new WebFXMenuItem("Unprovisioned services", "http://localhost/freeside/search/report_unprovisioned_services.html", "Unprovisioned services" ));
+myMenu10.add(new WebFXMenuSeparator());
+var myMenu11 = new WebFXMenu;
+myMenu11.emptyText = '';
+myMenu11.add(new WebFXMenuItem("All accounts by Username", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=username", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts by UID", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=uid", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts with Time Remaining", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=seconds", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts by Last login", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=last_login", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts never logged in", "http://localhost/freeside/search/svc_acct.cgi?magic=nologin;sortby=svcnum", "" ));
+myMenu11.add(new WebFXMenuItem("Advanced account reports", "http://localhost/freeside/search/report_svc_acct.html", "" ));
+myMenu11.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Accounts", null, "Access accounts and mailboxes", myMenu11 ));
+var myMenu12 = new WebFXMenu;
+myMenu12.emptyText = '';
+myMenu12.add(new WebFXMenuItem("All domains", "http://localhost/freeside/search/svc_domain.cgi?magic=all;sortby=domain", "" ));
+myMenu12.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Domains", null, "Domains", myMenu12 ));
+var myMenu13 = new WebFXMenu;
+myMenu13.emptyText = '';
+myMenu13.add(new WebFXMenuItem("All certificates", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cert;magic=all;sortby=svcnum", "" ));
+myMenu13.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Certificates", null, "Example services", myMenu13 ));
+var myMenu14 = new WebFXMenu;
+myMenu14.emptyText = '';
+myMenu14.add(new WebFXMenuItem("All mail forwards", "http://localhost/freeside/search/svc_forward.cgi?magic=all;sortby=svcnum", "" ));
+myMenu14.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Mail forwards", null, "Mail forwards", myMenu14 ));
+var myMenu15 = new WebFXMenu;
+myMenu15.emptyText = '';
+myMenu15.add(new WebFXMenuItem("All mailing lists", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_mailinglist;magic=all;sortby=svcnum", "" ));
+myMenu15.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Mailing lists", null, "Mailing lists", myMenu15 ));
+var myMenu16 = new WebFXMenu;
+myMenu16.emptyText = '';
+myMenu16.add(new WebFXMenuItem("All virtual hosting services", "http://localhost/freeside/search/svc_www.cgi?magic=all;sortby=svcnum", "" ));
+myMenu16.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Virtual hosting services", null, "Virtual hosting services", myMenu16 ));
+var myMenu17 = new WebFXMenu;
+myMenu17.emptyText = '';
+myMenu17.add(new WebFXMenuItem("All wireless broadband services", "http://localhost/freeside/search/svc_broadband.cgi?magic=all;sortby=svcnum", "" ));
+myMenu17.add(new WebFXMenuItem("Advanced wireless broadband reports", "http://localhost/freeside/search/report_svc_broadband.html", "" ));
+myMenu17.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Wireless broadband services", null, "Fixed wireless broadband services", myMenu17 ));
+var myMenu18 = new WebFXMenu;
+myMenu18.emptyText = '';
+myMenu18.add(new WebFXMenuItem("All cable subscribers by Service", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=svcnum", "" ));
+myMenu18.add(new WebFXMenuItem("All cable subscribers by Serial number", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=serialnum", "" ));
+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", "" ));
+myMenu18.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Cable Subscribers", null, "Cable Subscribers", myMenu18 ));
+var myMenu19 = new WebFXMenu;
+myMenu19.emptyText = '';
+myMenu19.add(new WebFXMenuItem("All DSLs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_dsl;magic=all;sortby=phonenum", "" ));
+myMenu19.add(new WebFXMenuItem("Qualifications", "http://localhost/freeside/search/qual.cgi", "" ));
+myMenu19.width = 256;
+
+myMenu10.add(new WebFXMenuItem("DSLs", null, "DSLs", myMenu19 ));
+var myMenu20 = new WebFXMenu;
+myMenu20.emptyText = '';
+myMenu20.add(new WebFXMenuItem("All dish services", "http://localhost/freeside/search/svc_dish.cgi?magic=all;sortby=svcnum", "" ));
+myMenu20.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Dish services", null, "Dish services", myMenu20 ));
+var myMenu21 = new WebFXMenu;
+myMenu21.emptyText = '';
+myMenu21.add(new WebFXMenuItem("All hardware", "http://localhost/freeside/search/svc_hardware.cgi?magic=all;sortby=svcnum", "" ));
+myMenu21.add(new WebFXMenuItem("Advanced hardware reports", "http://localhost/freeside/search/report_svc_hardware.html", "" ));
+myMenu21.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Hardware", null, "Hardware", myMenu21 ));
+var myMenu22 = new WebFXMenu;
+myMenu22.emptyText = '';
+myMenu22.add(new WebFXMenuItem("All phone numbers", "http://localhost/freeside/search/svc_phone.cgi?magic=all;sortby=phonenum", "" ));
+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." ));
+myMenu22.add(new WebFXMenuItem("Phone numbers by state", "http://localhost/freeside/search/phone_state.html", "Current or historical phone services broken down by state." ));
+myMenu22.add(new WebFXMenuItem("Advanced phone number reports", "http://localhost/freeside/search/report_svc_phone.html", "" ));
+myMenu22.add(new WebFXMenuItem("Phone number (DID) availability", "http://localhost/freeside/search/report_phone_avail.html", "" ));
+myMenu22.add(new WebFXMenuItem("Inventory/Provisioning Status", "http://localhost/freeside/search/phone_inventory_provisioned.html", "" ));
+myMenu22.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Phone numbers", null, "Phone numbers", myMenu22 ));
+var myMenu23 = new WebFXMenu;
+myMenu23.emptyText = '';
+myMenu23.add(new WebFXMenuItem("All PBXs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_pbx;magic=all;sortby=svcnum", "" ));
+myMenu23.width = 256;
+
+myMenu10.add(new WebFXMenuItem("PBXs", null, "PBXs", myMenu23 ));
+var myMenu24 = new WebFXMenu;
+myMenu24.emptyText = '';
+myMenu24.add(new WebFXMenuItem("All circuits", "http://localhost/freeside/search/svc_circuit.cgi?magic=all;sortby=svcnum", "" ));
+myMenu24.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Circuits", null, "Voice and data circuit services", myMenu24 ));
+var myMenu25 = new WebFXMenu;
+myMenu25.emptyText = '';
+myMenu25.add(new WebFXMenuItem("All ports", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_port;magic=all;sortby=serviceid", "" ));
+myMenu25.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Ports", null, "Ports", myMenu25 ));
+var myMenu26 = new WebFXMenu;
+myMenu26.emptyText = '';
+myMenu26.add(new WebFXMenuItem("All alarm services", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_alarm;magic=all;sortby=acctnum", "" ));
+myMenu26.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Alarm services", null, "Alarm services", myMenu26 ));
+var myMenu27 = new WebFXMenu;
+myMenu27.emptyText = '';
+myMenu27.add(new WebFXMenuItem("All external services", "http://localhost/freeside/search/svc_external.cgi?magic=all;sortby=id", "" ));
+myMenu27.width = 256;
+
+myMenu10.add(new WebFXMenuItem("External services", null, "External services", myMenu27 ));
+myMenu10.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Services", null, "Services reports", myMenu10 ));
+var myMenu28 = new WebFXMenu;
+myMenu28.emptyText = '';
+myMenu28.add(new WebFXMenuItem("Inventory by agent", "http://localhost/freeside/search/report_agent_inventory.html", "" ));
+myMenu28.add(new WebFXMenuItem("Inventory activity", "http://localhost/freeside/search/report_h_inventory_item.html", "" ));
+myMenu28.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Inventory", null, "Inventory reports", myMenu28 ));
+var myMenu29 = new WebFXMenu;
+myMenu29.emptyText = '';
+myMenu29.add(new WebFXMenuItem("RADIUS sessions", "http://localhost/freeside/search/sqlradius.html", "" ));
+myMenu29.add(new WebFXMenuItem("RADIUS data usage", "http://localhost/freeside/search/report_sqlradius_usage.html", "" ));
+myMenu29.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/search/report_cdr.html", "" ));
+myMenu29.add(new WebFXMenuItem("Unrateable CDRs", "http://localhost/freeside/search/cdr.html?freesidestatus=failed;cdrbatchnum=_ALL_", "" ));
+myMenu29.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Usage", null, "Usage reports", myMenu29 ));
+var myMenu30 = new WebFXMenu;
+myMenu30.emptyText = '';
+var myMenu31 = new WebFXMenu;
+myMenu31.emptyText = '';
+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" ));
+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" ));
+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" ));
+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" ));
+myMenu31.add(new WebFXMenuItem("Time to resolve", "http://localhost/freeside/rt/RTx/Statistics/Resolution", "View how long tickets take to be resolved by Queue" ));
+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" ));
+myMenu31.width = 256;
+
+myMenu30.add(new WebFXMenuItem("Statistics", null, "", myMenu31 ));
+myMenu30.add(new WebFXMenuSeparator());
+myMenu30.add(new WebFXMenuItem("Advanced ticket reports", "http://localhost/freeside/rt/Search/Build.html?NewQuery=1", "List tickets by any criteria" ));
+myMenu30.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Tickets", null, "Ticket reports", myMenu30 ));
+var myMenu32 = new WebFXMenu;
+myMenu32.emptyText = '';
+myMenu32.add(new WebFXMenuItem("Employee Commission Report", "http://localhost/freeside/search/report_employee_commission.html", "" ));
+myMenu32.add(new WebFXMenuItem("Employee Audit Report", "http://localhost/freeside/search/report_employee_audit.html", "Employee audit report" ));
+myMenu32.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Employees", null, "Employee reports", myMenu32 ));
+var myMenu33 = new WebFXMenu;
+myMenu33.emptyText = '';
+myMenu33.add(new WebFXMenuItem("All billing events", "http://localhost/freeside/search/report_cust_event.html", "All billing events for a date range" ));
+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." ));
+myMenu33.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Billing events", null, "Billing events", myMenu33 ));
+var myMenu34 = new WebFXMenu;
+myMenu34.emptyText = '';
+var myMenu35 = new WebFXMenu;
+myMenu35.emptyText = '';
+myMenu35.add(new WebFXMenuItem("Sales, Credits and Receipts", "http://localhost/freeside/graph/report_money_time.html", "Sales, credits and receipts summary graph" ));
+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" ));
+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)" ));
+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)" ));
+myMenu35.add(new WebFXMenuItem("Sales with Advertising Source", "http://localhost/freeside/search/report_cust_bill_pkg_referral.html", "" ));
+myMenu35.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Sales", null, "Sales reports", myMenu35 ));
+var myMenu36 = new WebFXMenu;
+myMenu36.emptyText = '';
+myMenu36.add(new WebFXMenuItem("Credit Report", "http://localhost/freeside/search/report_cust_credit.html", "Credit report (by employee and/or date range)" ));
+myMenu36.add(new WebFXMenuItem("Credit application detail", "http://localhost/freeside/search/report_cust_credit_bill_pkg.html", "Line item application detail" ));
+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)" ));
+myMenu36.add(new WebFXMenuItem("Voided Credits", "http://localhost/freeside/search/report_cust_credit_void.html", "Voided credit report (by employee and/or date range)" ));
+myMenu36.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Credits", null, "Credit reports", myMenu36 ));
+var myMenu37 = new WebFXMenu;
+myMenu37.emptyText = '';
+myMenu37.add(new WebFXMenuItem("Refund Report", "http://localhost/freeside/search/report_cust_refund.html", "Refund report (by type and/or date range)" ));
+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)" ));
+myMenu37.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Refunds", null, "Refund reports", myMenu37 ));
+var myMenu38 = new WebFXMenu;
+myMenu38.emptyText = '';
+myMenu38.add(new WebFXMenuItem("Agent Commissions", "http://localhost/freeside/search/report_agent_commission.html", "" ));
+myMenu38.add(new WebFXMenuItem("Agent Commissions Per Package", "http://localhost/freeside/search/report_agent_commission_pkg.html", "" ));
+myMenu38.add(new WebFXMenuItem("Sales Person Commissions", "http://localhost/freeside/search/report_sales_commission.html", "" ));
+myMenu38.add(new WebFXMenuItem("Sales Person Commissions Per Package", "http://localhost/freeside/search/report_sales_commission_pkg.html", "" ));
+myMenu38.add(new WebFXMenuItem("Employee Commissions", "http://localhost/freeside/search/report_employee_commission.html", "" ));
+myMenu38.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Commissions", null, "Commission reports", myMenu38 ));
+myMenu34.add(new WebFXMenuItem("A/R Aging", "http://localhost/freeside/search/report_receivables.html", "Accounts Receivable Aging report" ));
+myMenu34.add(new WebFXMenuItem("Prepaid Income", "http://localhost/freeside/search/report_prepaid_income.html", "Prepaid income (unearned revenue)  report" ));
+myMenu34.add(new WebFXMenuItem("Tax Liability", "http://localhost/freeside/search/report_tax.html", "Tax liability report (internal tax data)" ));
+myMenu34.add(new WebFXMenuItem("E911 Fee Summary", "http://localhost/freeside/search/report_e911.html", "E911 fee summary" ));
+myMenu34.add(new WebFXMenuItem("Customer Accounting Summary", "http://localhost/freeside/search/report_customer_accounting_summary.html", "Customer accounting summary report" ));
+myMenu34.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Financial", null, "Financial reports", myMenu34 ));
+var myMenu39 = new WebFXMenu;
+myMenu39.emptyText = '';
+myMenu39.add(new WebFXMenuItem("Credit limit incidents", "http://localhost/freeside/search/report_cust_main_credit_limit.html", "" ));
+myMenu39.add(new WebFXMenuItem("System log", "http://localhost/freeside/search/log.html", "View system events and debugging information." ));
+myMenu39.add(new WebFXMenuItem("Outgoing messages", "http://localhost/freeside/search/cust_msg.html", "View outgoing message log" ));
+myMenu39.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Logs", null, "System and email logs", myMenu39 ));
+myMenu0.width = 256;
+
+          myBar.add(new WebFXMenuButton('Reports', null, 'Lists, reporting and graphing', myMenu0 ));
+
+
+          var myMenu40 = new WebFXMenu;
+myMenu40.emptyText = '';
+myMenu40.add(new WebFXMenuItem("Quick payment entry", "http://localhost/freeside/misc/batch-cust_pay.html", "Enter multiple payments in a batch" ));
+myMenu40.add(new WebFXMenuItem("Download invoice batches", "http://localhost/freeside/search/bill_batch.cgi", "" ));
+myMenu40.add(new WebFXMenuItem("Bulk DID Orders", "http://localhost/freeside/browse/did_order.html", "View/manage bulk DID orders" ));
+myMenu40.add(new WebFXMenuItem("Job Queue", "http://localhost/freeside/search/queue.html", "View pending job queue" ));
+var myMenu41 = new WebFXMenu;
+myMenu41.emptyText = '';
+var myMenu42 = new WebFXMenu;
+myMenu42.emptyText = '';
+myMenu42.add(new WebFXMenuItem("Overview", "http://localhost/freeside/rt/Articles/index.html", "" ));
+myMenu42.add(new WebFXMenuItem("Search", "http://localhost/freeside/rt/Articles/Article/Search.html", "" ));
+myMenu42.add(new WebFXMenuItem("Topics", "http://localhost/freeside/rt/Articles/Topics.html", "" ));
+myMenu42.width = 256;
+
+myMenu41.add(new WebFXMenuItem("Articles", null, "", myMenu42 ));
+myMenu41.add(new WebFXMenuItem("My Day", "http://localhost/freeside/rt/Tools/MyDay.html", "" ));
+myMenu41.add(new WebFXMenuItem("My Reminders", "http://localhost/freeside/rt/Tools/MyReminders.html", "" ));
+myMenu41.add(new WebFXMenuItem("Offline", "http://localhost/freeside/rt/Tools/Offline.html", "" ));
+myMenu41.add(new WebFXMenuItem("Approval", "http://localhost/freeside/rt/Approvals/", "" ));
+myMenu41.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Ticketing", null, "Ticketing tools", myMenu41 ));
+myMenu40.add(new WebFXMenuItem("Customer email settings", "http://localhost/freeside/misc/manage_cust_email.html", "" ));
+myMenu40.add(new WebFXMenuItem("Business card scan", "http://localhost/freeside/edit/prospect_main-upload.html", "" ));
+myMenu40.add(new WebFXMenuItem("Attachments", "http://localhost/freeside/browse/cust_attachment.html", "View customer attachments" ));
+var myMenu43 = new WebFXMenu;
+myMenu43.emptyText = '';
+myMenu43.add(new WebFXMenuItem("Customers", "http://localhost/freeside/misc/cust_main-import.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Package definitions", "http://localhost/freeside/misc/part_pkg-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Customer packages", "http://localhost/freeside/misc/cust_pkg-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Customer comments", "http://localhost/freeside/misc/cust_main_note-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("One-time charges", "http://localhost/freeside/misc/cust_main-import_charges.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Payments", "http://localhost/freeside/misc/cust_pay-import.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Credits", "http://localhost/freeside/misc/cust_credit-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Phone numbers (DIDs)", "http://localhost/freeside/misc/phone_avail-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/misc/cdr-import.html", "" ));
+myMenu43.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Importing", null, "Import tools", myMenu43 ));
+var myMenu44 = new WebFXMenu;
+myMenu44.emptyText = '';
+myMenu44.add(new WebFXMenuItem("Download database dump", "http://localhost/freeside/misc/dump.cgi", "" ));
+myMenu44.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Exporting", null, "Export tools", myMenu44 ));
+myMenu40.add(new WebFXMenuItem("Status", "http://localhost/freeside/view/Status.html", "System status" ));
+myMenu40.width = 256;
+
+          myBar.add(new WebFXMenuButton('Tools', null, 'Tools', myMenu40 ));
+
+
+          var myMenu45 = new WebFXMenu;
+myMenu45.emptyText = '';
+myMenu45.add(new WebFXMenuItem("Settings", "http://localhost/freeside/config/config-view.cgi", "" ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu46 = new WebFXMenu;
+myMenu46.emptyText = '';
+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" ));
+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)" ));
+myMenu46.add(new WebFXMenuItem("Agent payment gateways", "http://localhost/freeside/browse/payment_gateway.html", "Credit card and electronic check processors for agent overrides" ));
+myMenu46.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Companies", null, "", myMenu46 ));
+var myMenu47 = new WebFXMenu;
+myMenu47.emptyText = '';
+myMenu47.add(new WebFXMenuItem("Sales People", "http://localhost/freeside/browse/sales.html", "Sales people bring in new business." ));
+myMenu47.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Sales People", null, "", myMenu47 ));
+var myMenu48 = new WebFXMenu;
+myMenu48.emptyText = '';
+myMenu48.add(new WebFXMenuItem("Employees", "http://localhost/freeside/browse/access_user.html", "Setup internal users" ));
+myMenu48.add(new WebFXMenuItem("Employee groups", "http://localhost/freeside/browse/access_group.html", "Employee groups allow you to control access to the backend" ));
+myMenu48.add(new WebFXMenuItem("Installer availability", "http://localhost/freeside/browse/sched_item.html", "Installer availability" ));
+myMenu48.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Employees", null, "", myMenu48 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu49 = new WebFXMenu;
+myMenu49.emptyText = '';
+myMenu49.add(new WebFXMenuItem("Customer tags", "http://localhost/freeside/browse/part_tag.html", "" ));
+myMenu49.add(new WebFXMenuItem("Customer classes", "http://localhost/freeside/browse/cust_class.html", "Customer classes define groups of customers for reporting." ));
+myMenu49.add(new WebFXMenuItem("Customer categories", "http://localhost/freeside/browse/cust_category.html", "Customer categories define groups of customer classes." ));
+myMenu49.add(new WebFXMenuSeparator());
+myMenu49.add(new WebFXMenuItem("Contact types", "http://localhost/freeside/browse/contact_class.html", "" ));
+myMenu49.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Customers", null, "", myMenu49 ));
+var myMenu50 = new WebFXMenu;
+myMenu50.emptyText = '';
+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" ));
+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." ));
+myMenu50.add(new WebFXMenuItem("Package categories", "http://localhost/freeside/browse/pkg_category.html", "Package categories define groups of package classes, for invoice sections." ));
+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." ));
+myMenu50.add(new WebFXMenuItem("Fees", "http://localhost/freeside/browse/part_fee.html", "" ));
+myMenu50.add(new WebFXMenuItem("Discounts", "http://localhost/freeside/browse/discount.html", "" ));
+myMenu50.add(new WebFXMenuItem("Discount classes", "http://localhost/freeside/browse/discount_class.html", "" ));
+var myMenu51 = new WebFXMenu;
+myMenu51.emptyText = '';
+myMenu51.add(new WebFXMenuItem("Cancel reasons", "http://localhost/freeside/browse/reason.html?class=C", "Cancel reasons explain why a service was cancelled." ));
+myMenu51.add(new WebFXMenuItem("Cancel reason types", "http://localhost/freeside/browse/reason_type.html?class=C", "Cancel reason types define groups of reasons." ));
+myMenu51.add(new WebFXMenuItem("Suspend reasons", "http://localhost/freeside/browse/reason.html?class=S", "Suspend reasons explain why a service was suspended." ));
+myMenu51.add(new WebFXMenuItem("Suspend reason types", "http://localhost/freeside/browse/reason_type.html?class=S", "Suspend reason types define groups of reasons." ));
+myMenu51.width = 256;
+
+myMenu50.add(new WebFXMenuItem("Cancel/Suspend Reasons", null, "", myMenu51 ));
+myMenu50.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Packages", null, "", myMenu50 ));
+var myMenu52 = new WebFXMenu;
+myMenu52.emptyText = '';
+myMenu52.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi", "Services are items you offer to your customers" ));
+myMenu52.add(new WebFXMenuItem("Service classes", "http://localhost/freeside/browse/part_svc_class.html", "Services classes are user-defined, informational types for services" ));
+myMenu52.add(new WebFXMenuItem("Provisioning exports", "http://localhost/freeside/browse/part_export.cgi", "Provisioning services to external machines, databases and APIs" ));
+var myMenu53 = new WebFXMenu;
+myMenu53.emptyText = '';
+myMenu53.add(new WebFXMenuItem("Access numbers", "http://localhost/freeside/browse/svc_acct_pop.cgi", "Points of Presence" ));
+myMenu53.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Dialup", null, "", myMenu53 ));
+var myMenu54 = new WebFXMenu;
+myMenu54.emptyText = '';
+myMenu54.add(new WebFXMenuItem("Towers", "http://localhost/freeside/browse/tower.html", "Towers and sectors" ));
+myMenu54.add(new WebFXMenuItem("Routers", "http://localhost/freeside/browse/router.cgi", "Broadband access routers" ));
+myMenu54.add(new WebFXMenuItem("Address blocks", "http://localhost/freeside/browse/addr_block.cgi", "Manage address blocks and block assignments to broadband routers" ));
+myMenu54.add(new WebFXMenuItem("Address ranges", "http://localhost/freeside/browse/addr_range.html", "Designate special address ranges" ));
+myMenu54.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Wireless broadband", null, "", myMenu54 ));
+var myMenu55 = new WebFXMenu;
+myMenu55.emptyText = '';
+myMenu55.add(new WebFXMenuItem("View/Edit phone device types", "http://localhost/freeside/browse/part_device.html", "Phone device types" ));
+myMenu55.add(new WebFXMenuItem("View/Edit bulk DID vendors", "http://localhost/freeside/browse/did_vendor.html", "Bulk DID vendors" ));
+myMenu55.add(new WebFXMenuItem("View/Edit Carriers", "http://localhost/freeside/browse/cdr_carrier.html", "Carriers" ));
+myMenu55.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Phone", null, "", myMenu55 ));
+var myMenu56 = new WebFXMenu;
+myMenu56.emptyText = '';
+myMenu56.add(new WebFXMenuItem("RADIUS Groups", "http://localhost/freeside/browse/radius_group.html", "Manage RADIUS groups" ));
+myMenu56.add(new WebFXMenuItem("RADIUS Clients", "http://localhost/freeside/browse/nas.html", "Manage RADIUS clients" ));
+myMenu56.width = 256;
+
+myMenu52.add(new WebFXMenuItem("RADIUS", null, "", myMenu56 ));
+var myMenu57 = new WebFXMenu;
+myMenu57.emptyText = '';
+myMenu57.add(new WebFXMenuItem("Cable providers", "http://localhost/freeside/browse/cable_provider.html", "" ));
+myMenu57.add(new WebFXMenuItem("Cable modem models", "http://localhost/freeside/browse/cable_model.html", "" ));
+myMenu57.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Cable", null, "", myMenu57 ));
+var myMenu58 = new WebFXMenu;
+myMenu58.emptyText = '';
+myMenu58.add(new WebFXMenuItem("Alarm system vendors", "http://localhost/freeside/browse/alarm_system.html", "" ));
+myMenu58.add(new WebFXMenuItem("Alarm system types", "http://localhost/freeside/browse/alarm_type.html", "" ));
+myMenu58.add(new WebFXMenuItem("Alarm central stations", "http://localhost/freeside/browse/alarm_station.html", "" ));
+myMenu58.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Alarm", null, "", myMenu58 ));
+var myMenu59 = new WebFXMenu;
+myMenu59.emptyText = '';
+myMenu59.add(new WebFXMenuItem("Circuit types", "http://localhost/freeside/browse/circuit_type.html", "" ));
+myMenu59.add(new WebFXMenuItem("Circuit providers", "http://localhost/freeside/browse/circuit_provider.html", "" ));
+myMenu59.add(new WebFXMenuItem("Termination types", "http://localhost/freeside/browse/circuit_termination.html", "" ));
+myMenu59.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Circuits", null, "", myMenu59 ));
+myMenu52.add(new WebFXMenuItem("Hardware types", "http://localhost/freeside/browse/hardware_class.html", "Set up hardware type catalog" ));
+myMenu52.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Services", null, "", myMenu52 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu60 = new WebFXMenu;
+myMenu60.emptyText = '';
+myMenu60.add(new WebFXMenuItem("Billing events", "http://localhost/freeside/browse/part_event.html", "Billing actions for customers, invoices and packages" ));
+myMenu60.add(new WebFXMenuItem("Invoice configurations", "http://localhost/freeside/browse/invoice_conf.html", "Adjust invoice settings for special-purpose notices" ));
+myMenu60.add(new WebFXMenuItem("Invoice templates", "http://localhost/freeside/browse/invoice_template.html", "Edit templates for HTML, plaintext and typeset invoices" ));
+myMenu60.add(new WebFXMenuItem("Prepaid cards", "http://localhost/freeside/search/prepay_credit.html", "View outstanding cards, generate new cards" ));
+var myMenu61 = new WebFXMenu;
+myMenu61.emptyText = '';
+myMenu61.add(new WebFXMenuItem("Rate plans", "http://localhost/freeside/browse/rate.cgi", "Manage rate plans" ));
+myMenu61.add(new WebFXMenuItem("Regions and prefixes", "http://localhost/freeside/browse/rate_region.html", "Manage regions and prefixes" ));
+myMenu61.add(new WebFXMenuItem("Usage classes", "http://localhost/freeside/browse/usage_class.html", "Usage classes define groups of usage for taxation." ));
+myMenu61.add(new WebFXMenuItem("Time periods", "http://localhost/freeside/browse/rate_time.html", "Time periods define days and hours for rate plans" ));
+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." ));
+myMenu61.add(new WebFXMenuSeparator());
+myMenu61.add(new WebFXMenuItem("Tiering plans", "http://localhost/freeside/browse/rate_tier.html", "Rating tiers" ));
+myMenu61.width = 256;
+
+myMenu60.add(new WebFXMenuItem("Call rates and regions", null, "Manage rate plans, regions and prefixes for VoIP and call billing", myMenu61 ));
+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" ));
+myMenu60.add(new WebFXMenuItem("Tax classes", "http://localhost/freeside/browse/part_pkg_taxclass.html", "Tax classes" ));
+myMenu60.add(new WebFXMenuItem("Credit reasons", "http://localhost/freeside/browse/reason.html?class=R", "Credit reasons explain why a credit was issued." ));
+myMenu60.add(new WebFXMenuItem("Credit reason types", "http://localhost/freeside/browse/reason_type.html?class=R", "Credit reason types define groups of reasons." ));
+myMenu60.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Billing", null, "", myMenu60 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu62 = new WebFXMenu;
+myMenu62.emptyText = '';
+myMenu62.add(new WebFXMenuItem("Message templates", "http://localhost/freeside/browse/msg_template.html", "Templates for customer notices" ));
+myMenu62.add(new WebFXMenuItem("Advertising sources", "http://localhost/freeside/browse/part_referral.html", "Where a customer heard about your service." ));
+myMenu62.add(new WebFXMenuItem("Custom fields", "http://localhost/freeside/browse/part_virtual_field.html", "Locally defined fields" ));
+myMenu62.add(new WebFXMenuItem("Translation strings", "http://localhost/freeside/browse/msgcat.html", "Translations and other customizable labels for each locale" ));
+myMenu62.add(new WebFXMenuItem("Inventory classes and inventory", "http://localhost/freeside/browse/inventory_class.html", "Setup inventory classes and stock inventory" ));
+myMenu62.add(new WebFXMenuItem("Upload targets", "http://localhost/freeside/browse/upload_target.html", "Billing and payment upload destinations" ));
+myMenu62.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Miscellaneous", null, "", myMenu62 ));
+myMenu45.width = 256;
+
+          myBar.add(new WebFXMenuButton('Configuration', null, 'Configuration and setup', myMenu45 ));
+
+
+          var myMenu63 = new WebFXMenu;
+myMenu63.emptyText = '';
+myMenu63.add(new WebFXMenuItem("Billing documentation", "http://www.freeside.biz/mediawiki/index.php/Freeside:3:Documentation", "Freeside documentation" ));
+myMenu63.add(new WebFXMenuItem("Ticketing documentation", "http://wiki.bestpractical.com/", "Request Tracker Wiki" ));
+myMenu63.add(new WebFXMenuSeparator());
+myMenu63.add(new WebFXMenuItem("About Freeside v3.8git", "javascript:about_freeside()", "" ));
+myMenu63.add(new WebFXMenuItem("About RT v4.0.23", "http://www.bestpractical.com/rt", "Request Tracker Homepage" ));
+myMenu63.width = 256;
+
+          myBar.add(new WebFXMenuButton('Help', null, '', myMenu63 ));
+
+
+  myBar.show( null, 'vertical' );
+  myBar.width = 154;
+
+</SCRIPT>
+
+
+
+
+      <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_iframe.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_draggable.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_crossframe.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/iframecontentmws.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/ajaxcontentmws.js"></SCRIPT>
+
+    <SCRIPT TYPE="text/javascript">
+
+  function rs_init_object() {
+    var A;
+    try {
+      A=new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+      try {
+        A=new ActiveXObject("Microsoft.XMLHTTP");
+      } catch (oc) {
+        A=null;
+      }
+    }
+    if(!A && typeof XMLHttpRequest != "undefined")
+      A = new XMLHttpRequest();
+    if (!A)
+      alert("Can't create XMLHttpRequest object");
+    return A;
+
+  }
+
+</SCRIPT>
+
+    <SCRIPT TYPE="text/javascript">
+
+  function logout() {
+    // count args; build URL
+    var url = "http://localhost/freeside/loginout/logout.html";
+
+    var xmlhttp = rs_init_object();
+    xmlhttp.open("GET", url, false, "magic", "notyet");
+    xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
+    xmlhttp.send(null);
+
+    if (xmlhttp.readyState != 4) {
+      alert("Logout failed: readyState is " + xmlhttp.readyState);
+      return;
+    }
+
+    if (xmlhttp.status != 200) {
+      alert("Logout failed: status is " + xmlhttp.status);
+    } else {
+      var data = xmlhttp.responseText;
+      // alert('received response: ' + data);
+      if ( data.indexOf("<b>System error</b>") > -1 ) {
+        var w;
+        if ( w = window.open("about:blank") ) {
+          w.document.write(data);
+        } else {
+          // popup blocking?  should use an overlib popup instead 
+          alert("Error popup disabled; try disabling popup blocking to see");
+        }
+      } else {
+        window.location = "http://localhost/freeside/loginout/logout.html";
+      }
+    }
+  }
+
+</SCRIPT>
+
+
+    
+
+  </HEAD>
+  <BODY BGCOLOR="#f8f8f8"  STYLE="margin-top:0; margin-bottom:0; margin-left:0px; margin-right:0px">
+    <table width="100%" CELLPADDING=0 CELLSPACING=0 STYLE="padding-left:0px; padding-right:4px" CLASS="fshead">
+      <tr>
+        <td BGCOLOR="#ffffff"><IMG BORDER=0 ALT="freeside" HEIGHT="36" SRC="http://localhost/freeside/view/REAL_logo.cgi"></td>
+        <td align=left BGCOLOR="#ffffff"> <!-- valign="top" -->
+          <font size=6>Freeside Test 3.8.1</font>
+        </td>
+        <td align=right valign=top BGCOLOR="#ffffff"><FONT SIZE="-1">Logged in as <b>test&nbsp;</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>
+          <BR></FONT>
+        </td>
+      </tr>
+    </table>
+
+    <TABLE WIDTH="100%" CELLSPACING=0 CELLPADDING=0>
+
+<link href="http://localhost/freeside/elements/freeside-menu.css" type="text/css" rel="stylesheet">
+
+
+      <TR CLASS="fsmenubar">
+
+
+        <TD COLSPAN="7" WIDTH="100%" STYLE="padding:1px 0px 0px 0px;border-top: 1px solid #7e0079" BGCOLOR="#cccccc">
+          <SCRIPT TYPE="text/javascript">
+            document.write(myBar);
+          </SCRIPT>
+        </TD>
+
+      </TR>
+
+      <TR CLASS="fssearchbar">
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/prospect_main.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside/search/report_prospect_main.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A>
+    <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">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_prospect (what) {
+    if ( what.value == '(name, company or phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_main.cgi" METHOD="POST" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside/search/report_cust_main.html" CLASS="fslink" STYLE="font-size: 11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search customers" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_cust (what) {
+    if ( what.value == '(cust #, name, company or contact phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="center">
+          
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_address2 (what) {
+    if ( what.value == '(Unit #)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_bill.html" METHOD="GET" STYLE="margin:0;display:inline">
+    <INPUT NAME="invnum" TYPE="text" VALUE="(inv #)" STYLE="width:56px" onFocus="clearhint_search_invoice(this);" onClick="clearhint_search_invoice(this);" CLASS="fstext">
+    <A HREF="http://localhost/freeside/search/report_cust_bill.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A>    <BR>
+    <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">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_invoice (what) {
+    if ( what.value == '(inv #)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_svc.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A NOTYET="http://localhost/freeside/search/svc_Smarter.html" STYLE="color: #cccccc; font-size:11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search services" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_svc (what) {
+    if ( what.value == '(user, email, ip, mac, domain or service phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px;padding-right:2px">
+          
+  <FORM ACTION="http://localhost/freeside//rt/index.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside//rt/Search/Build.html?NewQuery=1" CLASS="fslink" STYLE="font-size:11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search tickets" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_ticket (what) {
+    if ( what.value == '(ticket #, subject, email or fulltext:text)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+      </TR>
+    </TABLE>
+
+
+
+    <TABLE WIDTH="100%" HEIGHT="100%" CELLSPACING=0 CELLPADDING=4>
+
+      <TR HEIGHT="100%">
+
+        <TD CLASS="background" HEIGHT="100%" VALIGN="top"> <!-- WIDTH="100%"> -->
+
+          <FONT SIZE=6>
+            Service Definition Listing
+          </FONT>
+
+          <BR><BR>
+
+          
+
+
+<SCRIPT>
+function part_export_areyousure(href) {
+  if (confirm("Are you sure you want to delete this export?") == true)
+    window.location.href = href;
+}
+</SCRIPT>
+
+    Service definitions are the templates for items you offer to your customers.<BR><BR>
+
+<FORM METHOD="POST" ACTION="http://localhost/freeside/edit/part_svc.cgi">
+<A HREF="http://localhost/freeside/edit/part_svc.cgi"><I>Add a new service definition</I></A>
+&nbsp;or&nbsp;<SELECT NAME="clone"><OPTION></OPTION>
+
+  <OPTION VALUE="2">Test svc_acct</OPTION>
+
+  <OPTION VALUE="3">Test svc_domain</OPTION>
+
+  <OPTION VALUE="4">Test svc_broadband</OPTION>
+
+  <OPTION VALUE="5">Test svc_phone</OPTION>
+
+  <OPTION VALUE="1">Domain</OPTION>
+
+</SELECT><INPUT TYPE="submit" VALUE="Clone existing service">
+
+</FORM><BR>
+
+5 service definitions
+( <a href="http://localhost/freeside/browse/part_svc.cgi?orderby=active;showdisabled=1">show disabled services</a> )
+
+<TABLE CLASS="grid" CELLSPACING=0 CELLPADDING=0 >
+
+
+
+
+  <TR>
+
+    <TH CLASS="grid" BGCOLOR="#cccccc"><A HREF="http://localhost/freeside/browse/part_svc.cgi?orderby=svcpart;showdisabled=0">#</A></TH>
+
+
+    <TH CLASS="grid" BGCOLOR="#cccccc"><A HREF="http://localhost/freeside/browse/part_svc.cgi?orderby=svc;showdisabled=0">Service</A></TH>
+
+    <TH CLASS="grid" BGCOLOR="#cccccc">Table</TH>
+
+    <TH CLASS="grid" BGCOLOR="#cccccc"><A HREF="http://localhost/freeside/browse/part_svc.cgi?orderby=active;showdisabled=0"><FONT SIZE=-1>Customer<BR>Services</FONT></A></TH>
+
+    <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Customer<BR>Self-service</FONT></TH>
+
+    <TH CLASS="grid" BGCOLOR="#cccccc">Export</TH>
+
+    <TH CLASS="grid" BGCOLOR="#cccccc">Field</TH>
+
+    <TH CLASS="grid" BGCOLOR="#cccccc">Label</TH>
+
+    <TH COLSPAN=2 CLASS="grid" BGCOLOR="#cccccc">Modifier</TH>
+
+    <TH CLASS="grid" BGCOLOR="#cccccc" STYLE="font-size: smaller;">Required</TH>
+
+  </TR>
+
+
+  <TR>
+
+    <TD ROWSPAN=17 CLASS="grid" BGCOLOR="#eeeeee">
+      <A HREF="http://localhost/freeside/edit/part_svc.cgi?2">2</A>
+    </TD>
+
+
+    <TD ROWSPAN=17 CLASS="grid" BGCOLOR="#eeeeee"><A HREF="http://localhost/freeside/edit/part_svc.cgi?2">
+      Test svc_acct</A></TD>
+
+    <TD ROWSPAN=17 CLASS="grid" BGCOLOR="#eeeeee">
+      svc_acct</TD>
+
+    <TD ROWSPAN=17 CLASS="grid" BGCOLOR="#eeeeee">
+      <FONT COLOR="#00CC00"><B>150</B></FONT>&nbsp;<A HREF="http://localhost/freeside/search/svc_acct.cgi?svcpart=2">active</A>
+
+        <BR><FONT SIZE="-1">[ <A HREF="http://localhost/freeside/edit/bulk-cust_svc.html?svcpart=2">change</A> ]</FONT>
+
+    </TD>
+
+    <TD ROWSPAN=17 CLASS="grid" BGCOLOR="#eeeeee" ALIGN="center">
+      Yes</TD>
+
+    <TD ROWSPAN=17 CLASS="inv" BGCOLOR="#eeeeee">
+      <TABLE CLASS="inv">
+
+      </TABLE>
+    </TD>
+
+
+     
+     <TD CLASS="grid" BGCOLOR="#eeeeee">_password_encoding</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee"></TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">sec_phrase</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee"></TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">popnum</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Access number</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">sectornum</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Tower sector</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">uid</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">UID</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">gid</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">GID</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">finger</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Real name</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">dir</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Home directory</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">shell</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Shell</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">quota</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Quota</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">slipip</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">IP address</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">routernum</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee"></TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">blocknum</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee"></TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">domsvc</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Domain</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            1
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+       Yes
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">pbxsvc</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">PBX</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">cf_privatekey</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee"></TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">usergroup</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">RADIUS groups</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+  </TR>
+
+
+  <TR>
+
+    <TD ROWSPAN=10 CLASS="grid" BGCOLOR="#ffffff">
+      <A HREF="http://localhost/freeside/edit/part_svc.cgi?3">3</A>
+    </TD>
+
+
+    <TD ROWSPAN=10 CLASS="grid" BGCOLOR="#ffffff"><A HREF="http://localhost/freeside/edit/part_svc.cgi?3">
+      Test svc_domain</A></TD>
+
+    <TD ROWSPAN=10 CLASS="grid" BGCOLOR="#ffffff">
+      svc_domain</TD>
+
+    <TD ROWSPAN=10 CLASS="grid" BGCOLOR="#ffffff">
+      <FONT COLOR="#00CC00"><B>150</B></FONT>&nbsp;<A HREF="http://localhost/freeside/search/svc_domain.cgi?svcpart=3">active</A>
+
+        <BR><FONT SIZE="-1">[ <A HREF="http://localhost/freeside/edit/bulk-cust_svc.html?svcpart=3">change</A> ]</FONT>
+
+    </TD>
+
+    <TD ROWSPAN=10 CLASS="grid" BGCOLOR="#ffffff" ALIGN="center">
+      Yes</TD>
+
+    <TD ROWSPAN=10 CLASS="inv" BGCOLOR="#ffffff">
+      <TABLE CLASS="inv">
+
+      </TABLE>
+    </TD>
+
+
+     
+     <TD CLASS="grid" BGCOLOR="#ffffff">suffix</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff"></TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">catchall</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff"></TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">quota</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Quota</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">registrarnum</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff"></TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">registrarkey</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff"></TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">setup_date</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff"></TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">renewal_interval</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff"></TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">expiration_date</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff"></TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">au_registrant_name</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">AU Registrant Name</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">au_eligibility_type</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">AU Eligibility Type</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+  </TR>
+
+
+  <TR>
+
+    <TD ROWSPAN=20 CLASS="grid" BGCOLOR="#eeeeee">
+      <A HREF="http://localhost/freeside/edit/part_svc.cgi?4">4</A>
+    </TD>
+
+
+    <TD ROWSPAN=20 CLASS="grid" BGCOLOR="#eeeeee"><A HREF="http://localhost/freeside/edit/part_svc.cgi?4">
+      Test svc_broadband</A></TD>
+
+    <TD ROWSPAN=20 CLASS="grid" BGCOLOR="#eeeeee">
+      svc_broadband</TD>
+
+    <TD ROWSPAN=20 CLASS="grid" BGCOLOR="#eeeeee">
+      <FONT COLOR="#00CC00"><B>150</B></FONT>&nbsp;<A HREF="http://localhost/freeside/search/svc_broadband.cgi?svcpart=4">active</A>
+
+        <BR><FONT SIZE="-1">[ <A HREF="http://localhost/freeside/edit/bulk-cust_svc.html?svcpart=4">change</A> ]</FONT>
+
+    </TD>
+
+    <TD ROWSPAN=20 CLASS="grid" BGCOLOR="#eeeeee" ALIGN="center">
+      Yes</TD>
+
+    <TD ROWSPAN=20 CLASS="inv" BGCOLOR="#eeeeee">
+      <TABLE CLASS="inv">
+
+      </TABLE>
+    </TD>
+
+
+     
+     <TD CLASS="grid" BGCOLOR="#eeeeee">description</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Descriptive label</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">routernum</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Router/block</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">blocknum</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Address block</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">sectornum</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Tower/sector</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">speed_up</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Upload speed (Kbps)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            1024
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">speed_down</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Download speed (Kbps)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            1024
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">authkey</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Authentication key</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">latitude</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Latitude</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">longitude</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Longitude</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">altitude</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Altitude</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">vlan_profile</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">VLAN profile</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">performance_profile</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Peformance Profile</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">plan_id</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Service Plan Id</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">radio_serialnum</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Radio Serial Number</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">radio_location</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Radio Location</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">poe_location</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">POE Location</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">rssi</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">RSSI</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">suid</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">SUID</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">shared_svcnum</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Shared Service</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">serviceid</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Torrus serviceid</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#eeeeee">
+     </TD>
+
+  </TR>
+
+
+  <TR>
+
+    <TD ROWSPAN=22 CLASS="grid" BGCOLOR="#ffffff">
+      <A HREF="http://localhost/freeside/edit/part_svc.cgi?5">5</A>
+    </TD>
+
+
+    <TD ROWSPAN=22 CLASS="grid" BGCOLOR="#ffffff"><A HREF="http://localhost/freeside/edit/part_svc.cgi?5">
+      Test svc_phone</A></TD>
+
+    <TD ROWSPAN=22 CLASS="grid" BGCOLOR="#ffffff">
+      svc_phone</TD>
+
+    <TD ROWSPAN=22 CLASS="grid" BGCOLOR="#ffffff">
+      <FONT COLOR="#00CC00"><B>150</B></FONT>&nbsp;<A HREF="http://localhost/freeside/search/svc_phone.cgi?svcpart=5">active</A>
+
+        <BR><FONT SIZE="-1">[ <A HREF="http://localhost/freeside/edit/bulk-cust_svc.html?svcpart=5">change</A> ]</FONT>
+
+    </TD>
+
+    <TD ROWSPAN=22 CLASS="grid" BGCOLOR="#ffffff" ALIGN="center">
+      Yes</TD>
+
+    <TD ROWSPAN=22 CLASS="inv" BGCOLOR="#ffffff">
+      <TABLE CLASS="inv">
+
+      </TABLE>
+    </TD>
+
+
+     
+     <TD CLASS="grid" BGCOLOR="#ffffff">countrycode</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Country code</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            1
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">sim_imsi</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">IMSI</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">phone_name</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Name</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">pbxsvc</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">PBX</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">domsvc</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Domain</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">forwarddst</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Forward Destination</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">email</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Email</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">lnp_status</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">LNP Status</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">portable</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Portable?</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">lrn</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">LRN</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">lnp_desired_due_date</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">LNP Desired Due Date</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">lnp_due_date</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">LNP Due Date</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">lnp_other_provider</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">LNP Other Provider</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">lnp_other_provider_account</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">LNP Other Provider Account #</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">lnp_reject_reason</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">LNP Reject Reason</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">sms_carrierid</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">SMS Carrier</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">sms_account</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">SMS Carrier Account</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">max_simultaneous</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Maximum number of simultaneous users</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">e911_class</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">E911 Service Class</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">e911_type</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">E911 Service Type</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">circuit_svcnum</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Circuit</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            1
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+     </TR><TR>
+     <TD CLASS="grid" BGCOLOR="#ffffff">sip_server</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">SIP Host</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">Fixed (unchangeable)</TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+
+            
+
+     </TD>
+     <TD CLASS="grid" BGCOLOR="#ffffff">
+     </TD>
+
+  </TR>
+
+
+  <TR>
+
+    <TD ROWSPAN=1 CLASS="grid" BGCOLOR="#eeeeee">
+      <A HREF="http://localhost/freeside/edit/part_svc.cgi?1">1</A>
+    </TD>
+
+
+    <TD ROWSPAN=1 CLASS="grid" BGCOLOR="#eeeeee"><A HREF="http://localhost/freeside/edit/part_svc.cgi?1">
+      Domain</A></TD>
+
+    <TD ROWSPAN=1 CLASS="grid" BGCOLOR="#eeeeee">
+      svc_domain</TD>
+
+    <TD ROWSPAN=1 CLASS="grid" BGCOLOR="#eeeeee">
+      <FONT COLOR="#00CC00"><B>1</B></FONT>&nbsp;<A HREF="http://localhost/freeside/search/svc_domain.cgi?svcpart=1">active</A>
+
+        <BR><FONT SIZE="-1">[ <A HREF="http://localhost/freeside/edit/bulk-cust_svc.html?svcpart=1">change</A> ]</FONT>
+
+    </TD>
+
+    <TD ROWSPAN=1 CLASS="grid" BGCOLOR="#eeeeee" ALIGN="center">
+      Yes</TD>
+
+    <TD ROWSPAN=1 CLASS="inv" BGCOLOR="#eeeeee">
+      <TABLE CLASS="inv">
+
+      </TABLE>
+    </TD>
+
+         <TD CLASS="grid" BGCOLOR="#eeeeee"</TD>
+         <TD CLASS="grid" BGCOLOR="#eeeeee"</TD>
+         <TD CLASS="grid" BGCOLOR="#eeeeee"</TD>
+         <TD CLASS="grid" BGCOLOR="#eeeeee"</TD>
+         <TD CLASS="grid" BGCOLOR="#eeeeee"</TD>
+
+  </TR>
+
+</TABLE>
+</BODY>
+</HTML>
diff --git a/FS-Test/share/output/edit/cust_main-contacts.html/135 b/FS-Test/share/output/edit/cust_main-contacts.html/135
new file mode 100644 (file)
index 0000000..24cc47f
--- /dev/null
@@ -0,0 +1,1157 @@
+
+
+
+  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>
+      Edit customer contacts
+    </TITLE>
+    <!-- per RT, to prevent IE compatibility mode -->
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <!-- The X-UA-Compatible <meta> tag above must be very early in <head> -->
+    <META HTTP-Equiv="Cache-Control" Content="no-cache">
+    <META HTTP-Equiv="Pragma" Content="no-cache">
+    <META HTTP-Equiv="Expires" Content="0"> 
+
+    <script type="text/javascript" src="http://localhost/freeside/elements/cssexpr.js"></script>
+
+
+  <script type="text/javascript" src="http://localhost/freeside/elements/xmenu.top.js"></script>
+  <link href="http://localhost/freeside/elements/xmenu.top.css" type="text/css" rel="stylesheet">
+
+
+  <link href="http://localhost/freeside/elements/freeside.css" type="text/css" rel="stylesheet">
+  <link href="http://localhost/freeside/elements/freeside-print.css" type="text/css" rel="stylesheet" media="print">
+<link href="http://localhost/freeside/elements/freeside-menu.css" type="text/css" rel="stylesheet">
+
+<SCRIPT TYPE="text/javascript">
+
+  function about_freeside() {
+    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'); 
+  }
+
+  webfxMenuImagePath      = "http://localhost/freeside/images/";
+  webfxMenuUseHover       = 1;
+  webfxMenuShowTime       = 300;
+  webfxMenuHideTime       = 500;
+
+  var myBar = new WebFXMenuBar;
+
+    
+          myBar.add(new WebFXMenuButton('Billing Main', "http://localhost/freeside/", 'Billing start page' ));
+
+    
+          myBar.add(new WebFXMenuButton('Ticketing Main', "http://localhost/freeside/rt/", 'Ticketing start page' ));
+
+    
+          myBar.add(new WebFXMenuButton('New prospect', "http://localhost/freeside/edit/prospect_main.html", 'Add a new prospect' ));
+
+    
+          myBar.add(new WebFXMenuButton('New customer', "http://localhost/freeside/edit/cust_main.cgi", 'Add a new customer' ));
+
+
+          var myMenu0 = new WebFXMenu;
+myMenu0.emptyText = '';
+var myMenu1 = new WebFXMenu;
+myMenu1.emptyText = '';
+myMenu1.add(new WebFXMenuItem("List prospects", "http://localhost/freeside/search/prospect_main.html", "" ));
+myMenu1.add(new WebFXMenuItem("Advanced prospect reports", "http://localhost/freeside/search/report_prospect_main.html", "" ));
+myMenu1.add(new WebFXMenuSeparator());
+myMenu1.add(new WebFXMenuItem("Prospect contacts", "http://localhost/freeside/search/report_contact.html?link=prospect_main", "" ));
+myMenu1.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Prospects", null, "Prospect reports", myMenu1 ));
+var myMenu2 = new WebFXMenu;
+myMenu2.emptyText = '';
+myMenu2.add(new WebFXMenuItem("List quotations", "http://localhost/freeside/search/quotation.html", "" ));
+myMenu2.add(new WebFXMenuItem("Advanced quotation reports", "http://localhost/freeside/search/report_quotation.html", "" ));
+myMenu2.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Quotations", null, "Quotation reports", myMenu2 ));
+var myMenu3 = new WebFXMenu;
+myMenu3.emptyText = '';
+var myMenu4 = new WebFXMenu;
+myMenu4.emptyText = '';
+myMenu4.add(new WebFXMenuItem("by customer number", "http://localhost/freeside/search/cust_main.cgi?browse=custnum", "" ));
+myMenu4.add(new WebFXMenuItem("by last name", "http://localhost/freeside/search/cust_main.cgi?browse=last", "" ));
+myMenu4.add(new WebFXMenuItem("by company name", "http://localhost/freeside/search/cust_main.cgi?browse=company", "" ));
+myMenu4.add(new WebFXMenuItem("by active trouble tickets", "http://localhost/freeside/search/cust_main.cgi?browse=tickets", "" ));
+myMenu4.width = 256;
+
+myMenu3.add(new WebFXMenuItem("List customers", null, "List customers", myMenu4 ));
+myMenu3.add(new WebFXMenuItem("Zip code distribution", "http://localhost/freeside/search/report_cust_main-zip.html", "Zip codes by number of customers" ));
+myMenu3.add(new WebFXMenuItem("Customer signup report", "http://localhost/freeside/graph/report_cust_signup.html", "New customer signups by date" ));
+myMenu3.add(new WebFXMenuItem("Customer churn report", "http://localhost/freeside/graph/report_cust_churn.html", "New customers, suspensions, and cancellations summary" ));
+myMenu3.add(new WebFXMenuItem("Signup date report", "http://localhost/freeside/graph/report_signupdate.html", "Signup date report (by date of signup)" ));
+myMenu3.add(new WebFXMenuItem("Advanced customer reports", "http://localhost/freeside/search/report_cust_main.html", "by status, signup date, agent, etc." ));
+myMenu3.add(new WebFXMenuSeparator());
+myMenu3.add(new WebFXMenuItem("Customer contacts", "http://localhost/freeside/search/report_contact.html?link=cust_main", "" ));
+myMenu3.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Customers", null, "Customer reports", myMenu3 ));
+var myMenu5 = new WebFXMenu;
+myMenu5.emptyText = '';
+var myMenu6 = new WebFXMenu;
+myMenu6.emptyText = '';
+myMenu6.add(new WebFXMenuItem("All open invoices", "http://localhost/freeside/search/cust_bill.html?OPEN_date", "All invoices with an unpaid balance" ));
+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" ));
+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" ));
+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" ));
+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" ));
+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" ));
+myMenu6.width = 256;
+
+myMenu5.add(new WebFXMenuItem("Open invoices", null, "Open invoices", myMenu6 ));
+myMenu5.add(new WebFXMenuItem("All invoices", "http://localhost/freeside/search/cust_bill.html?date", "List all invoices" ));
+myMenu5.add(new WebFXMenuItem("Advanced invoice reports", "http://localhost/freeside/search/report_cust_bill.html", "by agent, date range, etc." ));
+myMenu5.add(new WebFXMenuSeparator());
+myMenu5.add(new WebFXMenuItem("Line items", "http://localhost/freeside/search/report_cust_bill_pkg.html", "Individual line item detail" ));
+myMenu5.add(new WebFXMenuItem("Voided invoices", "http://localhost/freeside/search/report_cust_bill_void.html", "Search for voided invoices" ));
+myMenu5.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Invoices", null, "Invoice reports", myMenu5 ));
+var myMenu7 = new WebFXMenu;
+myMenu7.emptyText = '';
+myMenu7.add(new WebFXMenuItem("Discount graph", "http://localhost/freeside/graph/report_cust_bill_pkg_discount.html", "Discount overview per month" ));
+myMenu7.add(new WebFXMenuItem("Discount detail", "http://localhost/freeside/search/report_cust_bill_pkg_discount.html", "Discount report (by employee and/or date range)" ));
+myMenu7.add(new WebFXMenuItem("Package discounts", "http://localhost/freeside/search/report_cust_pkg_discount.html", "Active/inactive discounts by package" ));
+myMenu7.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Discounts", null, "Discount reports", myMenu7 ));
+var myMenu8 = new WebFXMenu;
+myMenu8.emptyText = '';
+myMenu8.add(new WebFXMenuItem("Payments", "http://localhost/freeside/search/report_cust_pay.html", "Payment report (by type and/or date range)" ));
+myMenu8.add(new WebFXMenuItem("Payment application detail", "http://localhost/freeside/search/report_cust_bill_pay_pkg.html", "Line item application detail" ));
+myMenu8.add(new WebFXMenuItem("Pending Payments", "http://localhost/freeside/search/cust_pay_pending.html?magic=_date;statusNOT=done", "Pending real-time payments" ));
+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)" ));
+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)" ));
+myMenu8.add(new WebFXMenuItem("Unapplied Payment Aging", "http://localhost/freeside/search/report_unapplied_cust_pay.html", "Unapplied payment aging report" ));
+myMenu8.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Payments", null, "Payment reports", myMenu8 ));
+var myMenu9 = new WebFXMenu;
+myMenu9.emptyText = '';
+myMenu9.add(new WebFXMenuItem("Package definitions (by # active)", "http://localhost/freeside/browse/part_pkg.cgi?active=1", "Package definitions by number of active packages" ));
+myMenu9.add(new WebFXMenuItem("Package costs", "http://localhost/freeside/graph/report_cust_pkg_cost.html", "Package setup and recurring costs graph" ));
+myMenu9.add(new WebFXMenuSeparator());
+myMenu9.add(new WebFXMenuItem("Package churn", "http://localhost/freeside/graph/report_cust_pkg.html", "Orders, suspensions and cancellations summary graph" ));
+myMenu9.add(new WebFXMenuSeparator());
+myMenu9.add(new WebFXMenuItem("All customer packages", "http://localhost/freeside/search/cust_pkg.cgi?pkgnum", "List all customer packages" ));
+myMenu9.add(new WebFXMenuItem("Package summary", "http://localhost/freeside/search/cust_pkg_summary.html", "Show package sales summary" ));
+myMenu9.add(new WebFXMenuItem("Suspended customer packages", "http://localhost/freeside/search/cust_pkg.cgi?magic=suspended", "List suspended packages" ));
+myMenu9.add(new WebFXMenuItem("Suspension summary", "http://localhost/freeside/search/cust_pkg_susp.html", "Show suspension activity" ));
+myMenu9.add(new WebFXMenuItem("Customer packages with unconfigured services", "http://localhost/freeside/search/cust_pkg.cgi?APKG_pkgnum", "List packages which have provisionable services" ));
+myMenu9.add(new WebFXMenuItem("Advanced package reports", "http://localhost/freeside/search/report_cust_pkg.html", "by agent, date range, status, package definition" ));
+myMenu9.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Packages", null, "Package reports", myMenu9 ));
+var myMenu10 = new WebFXMenu;
+myMenu10.emptyText = '';
+myMenu10.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi?orderby=active", "Service definitions by number of active packages" ));
+myMenu10.add(new WebFXMenuSeparator());
+myMenu10.add(new WebFXMenuItem("Unprovisioned services", "http://localhost/freeside/search/report_unprovisioned_services.html", "Unprovisioned services" ));
+myMenu10.add(new WebFXMenuSeparator());
+var myMenu11 = new WebFXMenu;
+myMenu11.emptyText = '';
+myMenu11.add(new WebFXMenuItem("All accounts by Username", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=username", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts by UID", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=uid", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts with Time Remaining", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=seconds", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts by Last login", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=last_login", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts never logged in", "http://localhost/freeside/search/svc_acct.cgi?magic=nologin;sortby=svcnum", "" ));
+myMenu11.add(new WebFXMenuItem("Advanced account reports", "http://localhost/freeside/search/report_svc_acct.html", "" ));
+myMenu11.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Accounts", null, "Access accounts and mailboxes", myMenu11 ));
+var myMenu12 = new WebFXMenu;
+myMenu12.emptyText = '';
+myMenu12.add(new WebFXMenuItem("All domains", "http://localhost/freeside/search/svc_domain.cgi?magic=all;sortby=domain", "" ));
+myMenu12.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Domains", null, "Domains", myMenu12 ));
+var myMenu13 = new WebFXMenu;
+myMenu13.emptyText = '';
+myMenu13.add(new WebFXMenuItem("All certificates", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cert;magic=all;sortby=svcnum", "" ));
+myMenu13.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Certificates", null, "Example services", myMenu13 ));
+var myMenu14 = new WebFXMenu;
+myMenu14.emptyText = '';
+myMenu14.add(new WebFXMenuItem("All mail forwards", "http://localhost/freeside/search/svc_forward.cgi?magic=all;sortby=svcnum", "" ));
+myMenu14.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Mail forwards", null, "Mail forwards", myMenu14 ));
+var myMenu15 = new WebFXMenu;
+myMenu15.emptyText = '';
+myMenu15.add(new WebFXMenuItem("All mailing lists", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_mailinglist;magic=all;sortby=svcnum", "" ));
+myMenu15.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Mailing lists", null, "Mailing lists", myMenu15 ));
+var myMenu16 = new WebFXMenu;
+myMenu16.emptyText = '';
+myMenu16.add(new WebFXMenuItem("All virtual hosting services", "http://localhost/freeside/search/svc_www.cgi?magic=all;sortby=svcnum", "" ));
+myMenu16.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Virtual hosting services", null, "Virtual hosting services", myMenu16 ));
+var myMenu17 = new WebFXMenu;
+myMenu17.emptyText = '';
+myMenu17.add(new WebFXMenuItem("All wireless broadband services", "http://localhost/freeside/search/svc_broadband.cgi?magic=all;sortby=svcnum", "" ));
+myMenu17.add(new WebFXMenuItem("Advanced wireless broadband reports", "http://localhost/freeside/search/report_svc_broadband.html", "" ));
+myMenu17.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Wireless broadband services", null, "Fixed wireless broadband services", myMenu17 ));
+var myMenu18 = new WebFXMenu;
+myMenu18.emptyText = '';
+myMenu18.add(new WebFXMenuItem("All cable subscribers by Service", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=svcnum", "" ));
+myMenu18.add(new WebFXMenuItem("All cable subscribers by Serial number", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=serialnum", "" ));
+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", "" ));
+myMenu18.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Cable Subscribers", null, "Cable Subscribers", myMenu18 ));
+var myMenu19 = new WebFXMenu;
+myMenu19.emptyText = '';
+myMenu19.add(new WebFXMenuItem("All DSLs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_dsl;magic=all;sortby=phonenum", "" ));
+myMenu19.add(new WebFXMenuItem("Qualifications", "http://localhost/freeside/search/qual.cgi", "" ));
+myMenu19.width = 256;
+
+myMenu10.add(new WebFXMenuItem("DSLs", null, "DSLs", myMenu19 ));
+var myMenu20 = new WebFXMenu;
+myMenu20.emptyText = '';
+myMenu20.add(new WebFXMenuItem("All dish services", "http://localhost/freeside/search/svc_dish.cgi?magic=all;sortby=svcnum", "" ));
+myMenu20.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Dish services", null, "Dish services", myMenu20 ));
+var myMenu21 = new WebFXMenu;
+myMenu21.emptyText = '';
+myMenu21.add(new WebFXMenuItem("All hardware", "http://localhost/freeside/search/svc_hardware.cgi?magic=all;sortby=svcnum", "" ));
+myMenu21.add(new WebFXMenuItem("Advanced hardware reports", "http://localhost/freeside/search/report_svc_hardware.html", "" ));
+myMenu21.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Hardware", null, "Hardware", myMenu21 ));
+var myMenu22 = new WebFXMenu;
+myMenu22.emptyText = '';
+myMenu22.add(new WebFXMenuItem("All phone numbers", "http://localhost/freeside/search/svc_phone.cgi?magic=all;sortby=phonenum", "" ));
+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." ));
+myMenu22.add(new WebFXMenuItem("Phone numbers by state", "http://localhost/freeside/search/phone_state.html", "Current or historical phone services broken down by state." ));
+myMenu22.add(new WebFXMenuItem("Advanced phone number reports", "http://localhost/freeside/search/report_svc_phone.html", "" ));
+myMenu22.add(new WebFXMenuItem("Phone number (DID) availability", "http://localhost/freeside/search/report_phone_avail.html", "" ));
+myMenu22.add(new WebFXMenuItem("Inventory/Provisioning Status", "http://localhost/freeside/search/phone_inventory_provisioned.html", "" ));
+myMenu22.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Phone numbers", null, "Phone numbers", myMenu22 ));
+var myMenu23 = new WebFXMenu;
+myMenu23.emptyText = '';
+myMenu23.add(new WebFXMenuItem("All PBXs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_pbx;magic=all;sortby=svcnum", "" ));
+myMenu23.width = 256;
+
+myMenu10.add(new WebFXMenuItem("PBXs", null, "PBXs", myMenu23 ));
+var myMenu24 = new WebFXMenu;
+myMenu24.emptyText = '';
+myMenu24.add(new WebFXMenuItem("All circuits", "http://localhost/freeside/search/svc_circuit.cgi?magic=all;sortby=svcnum", "" ));
+myMenu24.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Circuits", null, "Voice and data circuit services", myMenu24 ));
+var myMenu25 = new WebFXMenu;
+myMenu25.emptyText = '';
+myMenu25.add(new WebFXMenuItem("All ports", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_port;magic=all;sortby=serviceid", "" ));
+myMenu25.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Ports", null, "Ports", myMenu25 ));
+var myMenu26 = new WebFXMenu;
+myMenu26.emptyText = '';
+myMenu26.add(new WebFXMenuItem("All alarm services", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_alarm;magic=all;sortby=acctnum", "" ));
+myMenu26.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Alarm services", null, "Alarm services", myMenu26 ));
+var myMenu27 = new WebFXMenu;
+myMenu27.emptyText = '';
+myMenu27.add(new WebFXMenuItem("All external services", "http://localhost/freeside/search/svc_external.cgi?magic=all;sortby=id", "" ));
+myMenu27.width = 256;
+
+myMenu10.add(new WebFXMenuItem("External services", null, "External services", myMenu27 ));
+myMenu10.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Services", null, "Services reports", myMenu10 ));
+var myMenu28 = new WebFXMenu;
+myMenu28.emptyText = '';
+myMenu28.add(new WebFXMenuItem("Inventory by agent", "http://localhost/freeside/search/report_agent_inventory.html", "" ));
+myMenu28.add(new WebFXMenuItem("Inventory activity", "http://localhost/freeside/search/report_h_inventory_item.html", "" ));
+myMenu28.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Inventory", null, "Inventory reports", myMenu28 ));
+var myMenu29 = new WebFXMenu;
+myMenu29.emptyText = '';
+myMenu29.add(new WebFXMenuItem("RADIUS sessions", "http://localhost/freeside/search/sqlradius.html", "" ));
+myMenu29.add(new WebFXMenuItem("RADIUS data usage", "http://localhost/freeside/search/report_sqlradius_usage.html", "" ));
+myMenu29.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/search/report_cdr.html", "" ));
+myMenu29.add(new WebFXMenuItem("Unrateable CDRs", "http://localhost/freeside/search/cdr.html?freesidestatus=failed;cdrbatchnum=_ALL_", "" ));
+myMenu29.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Usage", null, "Usage reports", myMenu29 ));
+var myMenu30 = new WebFXMenu;
+myMenu30.emptyText = '';
+var myMenu31 = new WebFXMenu;
+myMenu31.emptyText = '';
+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" ));
+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" ));
+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" ));
+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" ));
+myMenu31.add(new WebFXMenuItem("Time to resolve", "http://localhost/freeside/rt/RTx/Statistics/Resolution", "View how long tickets take to be resolved by Queue" ));
+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" ));
+myMenu31.width = 256;
+
+myMenu30.add(new WebFXMenuItem("Statistics", null, "", myMenu31 ));
+myMenu30.add(new WebFXMenuSeparator());
+myMenu30.add(new WebFXMenuItem("Advanced ticket reports", "http://localhost/freeside/rt/Search/Build.html?NewQuery=1", "List tickets by any criteria" ));
+myMenu30.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Tickets", null, "Ticket reports", myMenu30 ));
+var myMenu32 = new WebFXMenu;
+myMenu32.emptyText = '';
+myMenu32.add(new WebFXMenuItem("Employee Commission Report", "http://localhost/freeside/search/report_employee_commission.html", "" ));
+myMenu32.add(new WebFXMenuItem("Employee Audit Report", "http://localhost/freeside/search/report_employee_audit.html", "Employee audit report" ));
+myMenu32.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Employees", null, "Employee reports", myMenu32 ));
+var myMenu33 = new WebFXMenu;
+myMenu33.emptyText = '';
+myMenu33.add(new WebFXMenuItem("All billing events", "http://localhost/freeside/search/report_cust_event.html", "All billing events for a date range" ));
+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." ));
+myMenu33.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Billing events", null, "Billing events", myMenu33 ));
+var myMenu34 = new WebFXMenu;
+myMenu34.emptyText = '';
+var myMenu35 = new WebFXMenu;
+myMenu35.emptyText = '';
+myMenu35.add(new WebFXMenuItem("Sales, Credits and Receipts", "http://localhost/freeside/graph/report_money_time.html", "Sales, credits and receipts summary graph" ));
+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" ));
+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)" ));
+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)" ));
+myMenu35.add(new WebFXMenuItem("Sales with Advertising Source", "http://localhost/freeside/search/report_cust_bill_pkg_referral.html", "" ));
+myMenu35.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Sales", null, "Sales reports", myMenu35 ));
+var myMenu36 = new WebFXMenu;
+myMenu36.emptyText = '';
+myMenu36.add(new WebFXMenuItem("Credit Report", "http://localhost/freeside/search/report_cust_credit.html", "Credit report (by employee and/or date range)" ));
+myMenu36.add(new WebFXMenuItem("Credit application detail", "http://localhost/freeside/search/report_cust_credit_bill_pkg.html", "Line item application detail" ));
+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)" ));
+myMenu36.add(new WebFXMenuItem("Voided Credits", "http://localhost/freeside/search/report_cust_credit_void.html", "Voided credit report (by employee and/or date range)" ));
+myMenu36.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Credits", null, "Credit reports", myMenu36 ));
+var myMenu37 = new WebFXMenu;
+myMenu37.emptyText = '';
+myMenu37.add(new WebFXMenuItem("Refund Report", "http://localhost/freeside/search/report_cust_refund.html", "Refund report (by type and/or date range)" ));
+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)" ));
+myMenu37.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Refunds", null, "Refund reports", myMenu37 ));
+var myMenu38 = new WebFXMenu;
+myMenu38.emptyText = '';
+myMenu38.add(new WebFXMenuItem("Agent Commissions", "http://localhost/freeside/search/report_agent_commission.html", "" ));
+myMenu38.add(new WebFXMenuItem("Agent Commissions Per Package", "http://localhost/freeside/search/report_agent_commission_pkg.html", "" ));
+myMenu38.add(new WebFXMenuItem("Sales Person Commissions", "http://localhost/freeside/search/report_sales_commission.html", "" ));
+myMenu38.add(new WebFXMenuItem("Sales Person Commissions Per Package", "http://localhost/freeside/search/report_sales_commission_pkg.html", "" ));
+myMenu38.add(new WebFXMenuItem("Employee Commissions", "http://localhost/freeside/search/report_employee_commission.html", "" ));
+myMenu38.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Commissions", null, "Commission reports", myMenu38 ));
+myMenu34.add(new WebFXMenuItem("A/R Aging", "http://localhost/freeside/search/report_receivables.html", "Accounts Receivable Aging report" ));
+myMenu34.add(new WebFXMenuItem("Prepaid Income", "http://localhost/freeside/search/report_prepaid_income.html", "Prepaid income (unearned revenue)  report" ));
+myMenu34.add(new WebFXMenuItem("Tax Liability", "http://localhost/freeside/search/report_tax.html", "Tax liability report (internal tax data)" ));
+myMenu34.add(new WebFXMenuItem("E911 Fee Summary", "http://localhost/freeside/search/report_e911.html", "E911 fee summary" ));
+myMenu34.add(new WebFXMenuItem("Customer Accounting Summary", "http://localhost/freeside/search/report_customer_accounting_summary.html", "Customer accounting summary report" ));
+myMenu34.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Financial", null, "Financial reports", myMenu34 ));
+var myMenu39 = new WebFXMenu;
+myMenu39.emptyText = '';
+myMenu39.add(new WebFXMenuItem("Credit limit incidents", "http://localhost/freeside/search/report_cust_main_credit_limit.html", "" ));
+myMenu39.add(new WebFXMenuItem("System log", "http://localhost/freeside/search/log.html", "View system events and debugging information." ));
+myMenu39.add(new WebFXMenuItem("Outgoing messages", "http://localhost/freeside/search/cust_msg.html", "View outgoing message log" ));
+myMenu39.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Logs", null, "System and email logs", myMenu39 ));
+myMenu0.width = 256;
+
+          myBar.add(new WebFXMenuButton('Reports', null, 'Lists, reporting and graphing', myMenu0 ));
+
+
+          var myMenu40 = new WebFXMenu;
+myMenu40.emptyText = '';
+myMenu40.add(new WebFXMenuItem("Quick payment entry", "http://localhost/freeside/misc/batch-cust_pay.html", "Enter multiple payments in a batch" ));
+myMenu40.add(new WebFXMenuItem("Download invoice batches", "http://localhost/freeside/search/bill_batch.cgi", "" ));
+myMenu40.add(new WebFXMenuItem("Bulk DID Orders", "http://localhost/freeside/browse/did_order.html", "View/manage bulk DID orders" ));
+myMenu40.add(new WebFXMenuItem("Job Queue", "http://localhost/freeside/search/queue.html", "View pending job queue" ));
+var myMenu41 = new WebFXMenu;
+myMenu41.emptyText = '';
+var myMenu42 = new WebFXMenu;
+myMenu42.emptyText = '';
+myMenu42.add(new WebFXMenuItem("Overview", "http://localhost/freeside/rt/Articles/index.html", "" ));
+myMenu42.add(new WebFXMenuItem("Search", "http://localhost/freeside/rt/Articles/Article/Search.html", "" ));
+myMenu42.add(new WebFXMenuItem("Topics", "http://localhost/freeside/rt/Articles/Topics.html", "" ));
+myMenu42.width = 256;
+
+myMenu41.add(new WebFXMenuItem("Articles", null, "", myMenu42 ));
+myMenu41.add(new WebFXMenuItem("My Day", "http://localhost/freeside/rt/Tools/MyDay.html", "" ));
+myMenu41.add(new WebFXMenuItem("My Reminders", "http://localhost/freeside/rt/Tools/MyReminders.html", "" ));
+myMenu41.add(new WebFXMenuItem("Offline", "http://localhost/freeside/rt/Tools/Offline.html", "" ));
+myMenu41.add(new WebFXMenuItem("Approval", "http://localhost/freeside/rt/Approvals/", "" ));
+myMenu41.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Ticketing", null, "Ticketing tools", myMenu41 ));
+myMenu40.add(new WebFXMenuItem("Customer email settings", "http://localhost/freeside/misc/manage_cust_email.html", "" ));
+myMenu40.add(new WebFXMenuItem("Business card scan", "http://localhost/freeside/edit/prospect_main-upload.html", "" ));
+myMenu40.add(new WebFXMenuItem("Attachments", "http://localhost/freeside/browse/cust_attachment.html", "View customer attachments" ));
+var myMenu43 = new WebFXMenu;
+myMenu43.emptyText = '';
+myMenu43.add(new WebFXMenuItem("Customers", "http://localhost/freeside/misc/cust_main-import.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Package definitions", "http://localhost/freeside/misc/part_pkg-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Customer packages", "http://localhost/freeside/misc/cust_pkg-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Customer comments", "http://localhost/freeside/misc/cust_main_note-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("One-time charges", "http://localhost/freeside/misc/cust_main-import_charges.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Payments", "http://localhost/freeside/misc/cust_pay-import.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Credits", "http://localhost/freeside/misc/cust_credit-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Phone numbers (DIDs)", "http://localhost/freeside/misc/phone_avail-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/misc/cdr-import.html", "" ));
+myMenu43.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Importing", null, "Import tools", myMenu43 ));
+var myMenu44 = new WebFXMenu;
+myMenu44.emptyText = '';
+myMenu44.add(new WebFXMenuItem("Download database dump", "http://localhost/freeside/misc/dump.cgi", "" ));
+myMenu44.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Exporting", null, "Export tools", myMenu44 ));
+myMenu40.add(new WebFXMenuItem("Status", "http://localhost/freeside/view/Status.html", "System status" ));
+myMenu40.width = 256;
+
+          myBar.add(new WebFXMenuButton('Tools', null, 'Tools', myMenu40 ));
+
+
+          var myMenu45 = new WebFXMenu;
+myMenu45.emptyText = '';
+myMenu45.add(new WebFXMenuItem("Settings", "http://localhost/freeside/config/config-view.cgi", "" ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu46 = new WebFXMenu;
+myMenu46.emptyText = '';
+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" ));
+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)" ));
+myMenu46.add(new WebFXMenuItem("Agent payment gateways", "http://localhost/freeside/browse/payment_gateway.html", "Credit card and electronic check processors for agent overrides" ));
+myMenu46.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Companies", null, "", myMenu46 ));
+var myMenu47 = new WebFXMenu;
+myMenu47.emptyText = '';
+myMenu47.add(new WebFXMenuItem("Sales People", "http://localhost/freeside/browse/sales.html", "Sales people bring in new business." ));
+myMenu47.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Sales People", null, "", myMenu47 ));
+var myMenu48 = new WebFXMenu;
+myMenu48.emptyText = '';
+myMenu48.add(new WebFXMenuItem("Employees", "http://localhost/freeside/browse/access_user.html", "Setup internal users" ));
+myMenu48.add(new WebFXMenuItem("Employee groups", "http://localhost/freeside/browse/access_group.html", "Employee groups allow you to control access to the backend" ));
+myMenu48.add(new WebFXMenuItem("Installer availability", "http://localhost/freeside/browse/sched_item.html", "Installer availability" ));
+myMenu48.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Employees", null, "", myMenu48 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu49 = new WebFXMenu;
+myMenu49.emptyText = '';
+myMenu49.add(new WebFXMenuItem("Customer tags", "http://localhost/freeside/browse/part_tag.html", "" ));
+myMenu49.add(new WebFXMenuItem("Customer classes", "http://localhost/freeside/browse/cust_class.html", "Customer classes define groups of customers for reporting." ));
+myMenu49.add(new WebFXMenuItem("Customer categories", "http://localhost/freeside/browse/cust_category.html", "Customer categories define groups of customer classes." ));
+myMenu49.add(new WebFXMenuSeparator());
+myMenu49.add(new WebFXMenuItem("Contact types", "http://localhost/freeside/browse/contact_class.html", "" ));
+myMenu49.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Customers", null, "", myMenu49 ));
+var myMenu50 = new WebFXMenu;
+myMenu50.emptyText = '';
+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" ));
+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." ));
+myMenu50.add(new WebFXMenuItem("Package categories", "http://localhost/freeside/browse/pkg_category.html", "Package categories define groups of package classes, for invoice sections." ));
+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." ));
+myMenu50.add(new WebFXMenuItem("Fees", "http://localhost/freeside/browse/part_fee.html", "" ));
+myMenu50.add(new WebFXMenuItem("Discounts", "http://localhost/freeside/browse/discount.html", "" ));
+myMenu50.add(new WebFXMenuItem("Discount classes", "http://localhost/freeside/browse/discount_class.html", "" ));
+var myMenu51 = new WebFXMenu;
+myMenu51.emptyText = '';
+myMenu51.add(new WebFXMenuItem("Cancel reasons", "http://localhost/freeside/browse/reason.html?class=C", "Cancel reasons explain why a service was cancelled." ));
+myMenu51.add(new WebFXMenuItem("Cancel reason types", "http://localhost/freeside/browse/reason_type.html?class=C", "Cancel reason types define groups of reasons." ));
+myMenu51.add(new WebFXMenuItem("Suspend reasons", "http://localhost/freeside/browse/reason.html?class=S", "Suspend reasons explain why a service was suspended." ));
+myMenu51.add(new WebFXMenuItem("Suspend reason types", "http://localhost/freeside/browse/reason_type.html?class=S", "Suspend reason types define groups of reasons." ));
+myMenu51.width = 256;
+
+myMenu50.add(new WebFXMenuItem("Cancel/Suspend Reasons", null, "", myMenu51 ));
+myMenu50.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Packages", null, "", myMenu50 ));
+var myMenu52 = new WebFXMenu;
+myMenu52.emptyText = '';
+myMenu52.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi", "Services are items you offer to your customers" ));
+myMenu52.add(new WebFXMenuItem("Service classes", "http://localhost/freeside/browse/part_svc_class.html", "Services classes are user-defined, informational types for services" ));
+myMenu52.add(new WebFXMenuItem("Provisioning exports", "http://localhost/freeside/browse/part_export.cgi", "Provisioning services to external machines, databases and APIs" ));
+var myMenu53 = new WebFXMenu;
+myMenu53.emptyText = '';
+myMenu53.add(new WebFXMenuItem("Access numbers", "http://localhost/freeside/browse/svc_acct_pop.cgi", "Points of Presence" ));
+myMenu53.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Dialup", null, "", myMenu53 ));
+var myMenu54 = new WebFXMenu;
+myMenu54.emptyText = '';
+myMenu54.add(new WebFXMenuItem("Towers", "http://localhost/freeside/browse/tower.html", "Towers and sectors" ));
+myMenu54.add(new WebFXMenuItem("Routers", "http://localhost/freeside/browse/router.cgi", "Broadband access routers" ));
+myMenu54.add(new WebFXMenuItem("Address blocks", "http://localhost/freeside/browse/addr_block.cgi", "Manage address blocks and block assignments to broadband routers" ));
+myMenu54.add(new WebFXMenuItem("Address ranges", "http://localhost/freeside/browse/addr_range.html", "Designate special address ranges" ));
+myMenu54.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Wireless broadband", null, "", myMenu54 ));
+var myMenu55 = new WebFXMenu;
+myMenu55.emptyText = '';
+myMenu55.add(new WebFXMenuItem("View/Edit phone device types", "http://localhost/freeside/browse/part_device.html", "Phone device types" ));
+myMenu55.add(new WebFXMenuItem("View/Edit bulk DID vendors", "http://localhost/freeside/browse/did_vendor.html", "Bulk DID vendors" ));
+myMenu55.add(new WebFXMenuItem("View/Edit Carriers", "http://localhost/freeside/browse/cdr_carrier.html", "Carriers" ));
+myMenu55.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Phone", null, "", myMenu55 ));
+var myMenu56 = new WebFXMenu;
+myMenu56.emptyText = '';
+myMenu56.add(new WebFXMenuItem("RADIUS Groups", "http://localhost/freeside/browse/radius_group.html", "Manage RADIUS groups" ));
+myMenu56.add(new WebFXMenuItem("RADIUS Clients", "http://localhost/freeside/browse/nas.html", "Manage RADIUS clients" ));
+myMenu56.width = 256;
+
+myMenu52.add(new WebFXMenuItem("RADIUS", null, "", myMenu56 ));
+var myMenu57 = new WebFXMenu;
+myMenu57.emptyText = '';
+myMenu57.add(new WebFXMenuItem("Cable providers", "http://localhost/freeside/browse/cable_provider.html", "" ));
+myMenu57.add(new WebFXMenuItem("Cable modem models", "http://localhost/freeside/browse/cable_model.html", "" ));
+myMenu57.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Cable", null, "", myMenu57 ));
+var myMenu58 = new WebFXMenu;
+myMenu58.emptyText = '';
+myMenu58.add(new WebFXMenuItem("Alarm system vendors", "http://localhost/freeside/browse/alarm_system.html", "" ));
+myMenu58.add(new WebFXMenuItem("Alarm system types", "http://localhost/freeside/browse/alarm_type.html", "" ));
+myMenu58.add(new WebFXMenuItem("Alarm central stations", "http://localhost/freeside/browse/alarm_station.html", "" ));
+myMenu58.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Alarm", null, "", myMenu58 ));
+var myMenu59 = new WebFXMenu;
+myMenu59.emptyText = '';
+myMenu59.add(new WebFXMenuItem("Circuit types", "http://localhost/freeside/browse/circuit_type.html", "" ));
+myMenu59.add(new WebFXMenuItem("Circuit providers", "http://localhost/freeside/browse/circuit_provider.html", "" ));
+myMenu59.add(new WebFXMenuItem("Termination types", "http://localhost/freeside/browse/circuit_termination.html", "" ));
+myMenu59.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Circuits", null, "", myMenu59 ));
+myMenu52.add(new WebFXMenuItem("Hardware types", "http://localhost/freeside/browse/hardware_class.html", "Set up hardware type catalog" ));
+myMenu52.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Services", null, "", myMenu52 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu60 = new WebFXMenu;
+myMenu60.emptyText = '';
+myMenu60.add(new WebFXMenuItem("Billing events", "http://localhost/freeside/browse/part_event.html", "Billing actions for customers, invoices and packages" ));
+myMenu60.add(new WebFXMenuItem("Invoice configurations", "http://localhost/freeside/browse/invoice_conf.html", "Adjust invoice settings for special-purpose notices" ));
+myMenu60.add(new WebFXMenuItem("Invoice templates", "http://localhost/freeside/browse/invoice_template.html", "Edit templates for HTML, plaintext and typeset invoices" ));
+myMenu60.add(new WebFXMenuItem("Prepaid cards", "http://localhost/freeside/search/prepay_credit.html", "View outstanding cards, generate new cards" ));
+var myMenu61 = new WebFXMenu;
+myMenu61.emptyText = '';
+myMenu61.add(new WebFXMenuItem("Rate plans", "http://localhost/freeside/browse/rate.cgi", "Manage rate plans" ));
+myMenu61.add(new WebFXMenuItem("Regions and prefixes", "http://localhost/freeside/browse/rate_region.html", "Manage regions and prefixes" ));
+myMenu61.add(new WebFXMenuItem("Usage classes", "http://localhost/freeside/browse/usage_class.html", "Usage classes define groups of usage for taxation." ));
+myMenu61.add(new WebFXMenuItem("Time periods", "http://localhost/freeside/browse/rate_time.html", "Time periods define days and hours for rate plans" ));
+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." ));
+myMenu61.add(new WebFXMenuSeparator());
+myMenu61.add(new WebFXMenuItem("Tiering plans", "http://localhost/freeside/browse/rate_tier.html", "Rating tiers" ));
+myMenu61.width = 256;
+
+myMenu60.add(new WebFXMenuItem("Call rates and regions", null, "Manage rate plans, regions and prefixes for VoIP and call billing", myMenu61 ));
+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" ));
+myMenu60.add(new WebFXMenuItem("Tax classes", "http://localhost/freeside/browse/part_pkg_taxclass.html", "Tax classes" ));
+myMenu60.add(new WebFXMenuItem("Credit reasons", "http://localhost/freeside/browse/reason.html?class=R", "Credit reasons explain why a credit was issued." ));
+myMenu60.add(new WebFXMenuItem("Credit reason types", "http://localhost/freeside/browse/reason_type.html?class=R", "Credit reason types define groups of reasons." ));
+myMenu60.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Billing", null, "", myMenu60 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu62 = new WebFXMenu;
+myMenu62.emptyText = '';
+myMenu62.add(new WebFXMenuItem("Message templates", "http://localhost/freeside/browse/msg_template.html", "Templates for customer notices" ));
+myMenu62.add(new WebFXMenuItem("Advertising sources", "http://localhost/freeside/browse/part_referral.html", "Where a customer heard about your service." ));
+myMenu62.add(new WebFXMenuItem("Custom fields", "http://localhost/freeside/browse/part_virtual_field.html", "Locally defined fields" ));
+myMenu62.add(new WebFXMenuItem("Translation strings", "http://localhost/freeside/browse/msgcat.html", "Translations and other customizable labels for each locale" ));
+myMenu62.add(new WebFXMenuItem("Inventory classes and inventory", "http://localhost/freeside/browse/inventory_class.html", "Setup inventory classes and stock inventory" ));
+myMenu62.add(new WebFXMenuItem("Upload targets", "http://localhost/freeside/browse/upload_target.html", "Billing and payment upload destinations" ));
+myMenu62.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Miscellaneous", null, "", myMenu62 ));
+myMenu45.width = 256;
+
+          myBar.add(new WebFXMenuButton('Configuration', null, 'Configuration and setup', myMenu45 ));
+
+
+          var myMenu63 = new WebFXMenu;
+myMenu63.emptyText = '';
+myMenu63.add(new WebFXMenuItem("Billing documentation", "http://www.freeside.biz/mediawiki/index.php/Freeside:3:Documentation", "Freeside documentation" ));
+myMenu63.add(new WebFXMenuItem("Ticketing documentation", "http://wiki.bestpractical.com/", "Request Tracker Wiki" ));
+myMenu63.add(new WebFXMenuSeparator());
+myMenu63.add(new WebFXMenuItem("About Freeside v3.8git", "javascript:about_freeside()", "" ));
+myMenu63.add(new WebFXMenuItem("About RT v4.0.23", "http://www.bestpractical.com/rt", "Request Tracker Homepage" ));
+myMenu63.width = 256;
+
+          myBar.add(new WebFXMenuButton('Help', null, '', myMenu63 ));
+
+
+  myBar.show( null, 'vertical' );
+  myBar.width = 154;
+
+</SCRIPT>
+
+
+
+
+      <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_iframe.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_draggable.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_crossframe.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/iframecontentmws.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/ajaxcontentmws.js"></SCRIPT>
+
+    <SCRIPT TYPE="text/javascript">
+
+  function rs_init_object() {
+    var A;
+    try {
+      A=new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+      try {
+        A=new ActiveXObject("Microsoft.XMLHTTP");
+      } catch (oc) {
+        A=null;
+      }
+    }
+    if(!A && typeof XMLHttpRequest != "undefined")
+      A = new XMLHttpRequest();
+    if (!A)
+      alert("Can't create XMLHttpRequest object");
+    return A;
+
+  }
+
+</SCRIPT>
+
+    <SCRIPT TYPE="text/javascript">
+
+  function logout() {
+    // count args; build URL
+    var url = "http://localhost/freeside/loginout/logout.html";
+
+    var xmlhttp = rs_init_object();
+    xmlhttp.open("GET", url, false, "magic", "notyet");
+    xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
+    xmlhttp.send(null);
+
+    if (xmlhttp.readyState != 4) {
+      alert("Logout failed: readyState is " + xmlhttp.readyState);
+      return;
+    }
+
+    if (xmlhttp.status != 200) {
+      alert("Logout failed: status is " + xmlhttp.status);
+    } else {
+      var data = xmlhttp.responseText;
+      // alert('received response: ' + data);
+      if ( data.indexOf("<b>System error</b>") > -1 ) {
+        var w;
+        if ( w = window.open("about:blank") ) {
+          w.document.write(data);
+        } else {
+          // popup blocking?  should use an overlib popup instead 
+          alert("Error popup disabled; try disabling popup blocking to see");
+        }
+      } else {
+        window.location = "http://localhost/freeside/loginout/logout.html";
+      }
+    }
+  }
+
+</SCRIPT>
+
+
+    
+
+  </HEAD>
+  <BODY BGCOLOR="#f8f8f8"  STYLE="margin-top:0; margin-bottom:0; margin-left:0px; margin-right:0px">
+    <table width="100%" CELLPADDING=0 CELLSPACING=0 STYLE="padding-left:0px; padding-right:4px" CLASS="fshead">
+      <tr>
+        <td BGCOLOR="#ffffff"><IMG BORDER=0 ALT="freeside" HEIGHT="36" SRC="http://localhost/freeside/view/REAL_logo.cgi"></td>
+        <td align=left BGCOLOR="#ffffff"> <!-- valign="top" -->
+          <font size=6>Freeside Test 3.8.1</font>
+        </td>
+        <td align=right valign=top BGCOLOR="#ffffff"><FONT SIZE="-1">Logged in as <b>test&nbsp;</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>
+          <BR></FONT>
+        </td>
+      </tr>
+    </table>
+
+    <TABLE WIDTH="100%" CELLSPACING=0 CELLPADDING=0>
+
+<link href="http://localhost/freeside/elements/freeside-menu.css" type="text/css" rel="stylesheet">
+
+
+      <TR CLASS="fsmenubar">
+
+
+        <TD COLSPAN="7" WIDTH="100%" STYLE="padding:1px 0px 0px 0px;border-top: 1px solid #7e0079" BGCOLOR="#cccccc">
+          <SCRIPT TYPE="text/javascript">
+            document.write(myBar);
+          </SCRIPT>
+        </TD>
+
+      </TR>
+
+      <TR CLASS="fssearchbar">
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/prospect_main.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside/search/report_prospect_main.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A>
+    <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">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_prospect (what) {
+    if ( what.value == '(name, company or phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_main.cgi" METHOD="POST" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside/search/report_cust_main.html" CLASS="fslink" STYLE="font-size: 11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search customers" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_cust (what) {
+    if ( what.value == '(cust #, name, company or contact phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="center">
+          
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_address2 (what) {
+    if ( what.value == '(Unit #)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_bill.html" METHOD="GET" STYLE="margin:0;display:inline">
+    <INPUT NAME="invnum" TYPE="text" VALUE="(inv #)" STYLE="width:56px" onFocus="clearhint_search_invoice(this);" onClick="clearhint_search_invoice(this);" CLASS="fstext">
+    <A HREF="http://localhost/freeside/search/report_cust_bill.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A>    <BR>
+    <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">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_invoice (what) {
+    if ( what.value == '(inv #)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_svc.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A NOTYET="http://localhost/freeside/search/svc_Smarter.html" STYLE="color: #cccccc; font-size:11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search services" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_svc (what) {
+    if ( what.value == '(user, email, ip, mac, domain or service phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px;padding-right:2px">
+          
+  <FORM ACTION="http://localhost/freeside//rt/index.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside//rt/Search/Build.html?NewQuery=1" CLASS="fslink" STYLE="font-size:11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search tickets" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_ticket (what) {
+    if ( what.value == '(ticket #, subject, email or fulltext:text)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+      </TR>
+    </TABLE>
+
+
+
+    <TABLE WIDTH="100%" HEIGHT="100%" CELLSPACING=0 CELLPADDING=4>
+
+      <TR HEIGHT="100%">
+
+        <TD CLASS="background" HEIGHT="100%" VALIGN="top"> <!-- WIDTH="100%"> -->
+
+          <FONT SIZE=6>
+            Edit customer contacts
+          </FONT>
+
+          <BR><BR>
+
+          
+
+
+  
+<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>
+
+
+  
+
+
+  <FORM NAME   = "edit_topform"
+        METHOD = POST
+        ACTION = "http://localhost/freeside/edit/process/cust_main-contacts.html"
+        
+  >
+
+  <INPUT TYPE="hidden" NAME="svcdb" VALUE="cust_main">
+  <INPUT TYPE="hidden" NAME="custnum" VALUE="135">
+
+  <FONT SIZE="+1"><B>
+   
+  </B></FONT>
+  #135
+
+
+<TABLE ID="TableNumber0" BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0>
+
+
+      <TR>
+
+  <TD ALIGN  = "right"
+      VALIGN = "top"
+      STYLE  = "padding-top: 3px"
+      ID     = "contactnum_label0"
+  > </TD>
+
+
+      <TD COLSPAN="6">
+      
+  <INPUT TYPE="hidden" NAME="contactnum0" ID="contactnum0" VALUE="">
+
+  <TABLE STYLE="display:inline">
+    <TR>
+        <TD>
+          <SELECT NAME="contactnum0_classnum" onChange="
+spawn_contactnum(this);">
+            <OPTION VALUE="">
+              <OPTION VALUE="1"
+                 
+              >Service
+          </SELECT><BR>
+          <FONT SIZE="-1">Type</FONT>
+        </TD>
+
+        <TD>
+            <INPUT TYPE  = "text"
+                   NAME  = "contactnum0_first"
+                   ID    = "contactnum0_first"
+                   SIZE  = "14"
+                   VALUE = ""
+                   onChange="
+spawn_contactnum(this);"
+            >
+          <BR>
+          <FONT SIZE="-1">First name</FONT>
+        </TD>
+
+        <TD>
+            <INPUT TYPE  = "text"
+                   NAME  = "contactnum0_last"
+                   ID    = "contactnum0_last"
+                   SIZE  = "14"
+                   VALUE = ""
+                   onChange="
+spawn_contactnum(this);"
+            >
+          <BR>
+          <FONT SIZE="-1">Last name</FONT>
+        </TD>
+
+        <TD>
+            <INPUT TYPE  = "text"
+                   NAME  = "contactnum0_title"
+                   ID    = "contactnum0_title"
+                   SIZE  = "12"
+                   VALUE = ""
+                   onChange="
+spawn_contactnum(this);"
+            >
+          <BR>
+          <FONT SIZE="-1">Title/Position</FONT>
+        </TD>
+
+        <TD>
+            <INPUT TYPE  = "text"
+                   NAME  = "contactnum0_emailaddress"
+                   ID    = "contactnum0_emailaddress"
+                   SIZE  = "14"
+                   VALUE = ""
+                   onChange="
+spawn_contactnum(this);"
+            >
+          <BR>
+          <FONT SIZE="-1">Email</FONT>
+        </TD>
+
+        <TD>
+            <SELECT NAME = "contactnum0_selfservice_access"
+                    ID   = "contactnum0_selfservice_access"
+            >
+              <OPTION VALUE="">Disabled
+            </SELECT>
+
+          <BR>
+          <FONT SIZE="-1">Self-service</FONT>
+        </TD>
+
+        <TD>
+            <INPUT TYPE  = "text"
+                   NAME  = "contactnum0_phonetypenum1"
+                   ID    = "contactnum0_phonetypenum1"
+                   SIZE  = "15"
+                   VALUE = ""
+                   onChange="
+spawn_contactnum(this);"
+            >
+          <BR>
+          <FONT SIZE="-1">Work phone</FONT>
+        </TD>
+
+        <TD>
+            <INPUT TYPE  = "text"
+                   NAME  = "contactnum0_phonetypenum3"
+                   ID    = "contactnum0_phonetypenum3"
+                   SIZE  = "10"
+                   VALUE = ""
+                   onChange="
+spawn_contactnum(this);"
+            >
+          <BR>
+          <FONT SIZE="-1">Mobile phone</FONT>
+        </TD>
+
+        <TD>
+            <INPUT TYPE  = "text"
+                   NAME  = "contactnum0_phonetypenum4"
+                   ID    = "contactnum0_phonetypenum4"
+                   SIZE  = "10"
+                   VALUE = ""
+                   onChange="
+spawn_contactnum(this);"
+            >
+          <BR>
+          <FONT SIZE="-1">Fax phone</FONT>
+        </TD>
+
+        <TD>
+            <INPUT TYPE  = "text"
+                   NAME  = "contactnum0_comment"
+                   ID    = "contactnum0_comment"
+                   SIZE  = "14"
+                   VALUE = ""
+                   onChange="
+spawn_contactnum(this);"
+            >
+          <BR>
+          <FONT SIZE="-1">Comment</FONT>
+        </TD>
+    </TR>
+  </TABLE>
+
+
+      </TD>
+
+
+      </TR>
+
+
+      <SCRIPT TYPE="text/javascript">
+
+        var contactnum_rownum = 1;
+        var contactnum_fieldnum = 0;
+
+        function spawn_contactnum(what) {
+
+          // only spawn if we're the last element... return if not
+
+          var field_regex = /(\d+)(_[a-z_]+)?$/;
+          var match = field_regex.exec(what.name);
+          if ( !match ) {
+            alert(what.name + " didn't match for " + what);
+            return;
+          }
+          if ( match[1] != contactnum_fieldnum ) {
+            return;
+          }
+
+          // change the label on the last entry & add a remove button
+          var prev_label = document.getElementById('contactnum_label' + contactnum_fieldnum );
+          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; ';
+
+          contactnum_fieldnum++;
+
+          //get the new widget
+
+
+          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';
+
+            var newfunc = '';
+
+          // substitute in the new field name
+          var magic_regex = /MAGIC_NUMBER/g;
+          newrow  = newrow.replace(  magic_regex, contactnum_fieldnum );
+          newfunc = newfunc.replace( magic_regex, contactnum_fieldnum );
+
+          // evaluate new_func
+          if (window.ActiveXObject) {
+            window.execScript(newfunc);
+          } else { /* (window.XMLHttpRequest) */
+            //window.eval(newfunc);
+            setTimeout(newfunc, 0);
+          }
+
+          // add new row
+
+          //hmm, can't use selectlayers after a tablebreak-title for now
+          var table = document.getElementById('TableNumber0');
+
+          var row = table.insertRow(contactnum_rownum++);
+
+          var label_cell = document.createElement('TD');
+
+          label_cell.id = 'contactnum_label' + contactnum_fieldnum;
+
+          label_cell.style.textAlign = "right";
+          label_cell.style.verticalAlign = "top";
+          label_cell.style.borderTop = "1px solid black";
+          label_cell.style.paddingTop = "5px";
+
+          label_cell.innerHTML = ' ';
+
+          row.appendChild(label_cell);
+          
+          var widget_cell = document.createElement('TD');
+
+          widget_cell.style.borderTop = "1px solid black";
+          widget_cell.style.paddingTop = "3px";
+          widget_cell.colSpan = "6";
+
+          widget_cell.innerHTML = newrow;
+
+          row.appendChild(widget_cell);
+
+
+
+        }
+
+        function remove_contactnum(remove_fieldnum) {
+          //alert("remove contactnum " + remove_fieldnum);
+          var select = document.getElementById('contactnum' + remove_fieldnum);
+
+          if ( ! select ) {
+            alert("can't find element contactnum" + remove_fieldnum);
+            return;
+          }
+
+
+          select.disabled = 'disabled'; // this seems to prevent it from being submitted on tested browsers so far (IE, moz, konq at least)
+          var label_td = document.getElementById('contactnum_label' + remove_fieldnum );
+          label_td.parentNode.style.display = 'none';
+
+
+        }
+
+      </SCRIPT>
+
+
+
+
+
+</TABLE>
+
+
+
+
+  <BR>
+
+      <INPUT TYPE     = "submit"
+             ID       = "submit"
+             VALUE    = "Apply changes"
+      >
+
+  </FORM>
+
+  
+
+          </TD>
+      </TR>
+    </TABLE>
+  </BODY>
+</HTML>
+
+
+
diff --git a/FS-Test/share/output/edit/cust_main.cgi/135 b/FS-Test/share/output/edit/cust_main.cgi/135
new file mode 100644 (file)
index 0000000..36b93f9
--- /dev/null
@@ -0,0 +1,7399 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>
+      Edit Customer: Olson Inc (Towne, Samara)
+    </TITLE>
+    <!-- per RT, to prevent IE compatibility mode -->
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <!-- The X-UA-Compatible <meta> tag above must be very early in <head> -->
+    <META HTTP-Equiv="Cache-Control" Content="no-cache">
+    <META HTTP-Equiv="Pragma" Content="no-cache">
+    <META HTTP-Equiv="Expires" Content="0"> 
+
+    <script type="text/javascript" src="http://localhost/freeside/elements/cssexpr.js"></script>
+
+
+  <script type="text/javascript" src="http://localhost/freeside/elements/xmenu.top.js"></script>
+  <link href="http://localhost/freeside/elements/xmenu.top.css" type="text/css" rel="stylesheet">
+
+
+  <link href="http://localhost/freeside/elements/freeside.css" type="text/css" rel="stylesheet">
+  <link href="http://localhost/freeside/elements/freeside-print.css" type="text/css" rel="stylesheet" media="print">
+<link href="http://localhost/freeside/elements/freeside-menu.css" type="text/css" rel="stylesheet">
+
+<SCRIPT TYPE="text/javascript">
+
+  function about_freeside() {
+    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'); 
+  }
+
+  webfxMenuImagePath      = "http://localhost/freeside/images/";
+  webfxMenuUseHover       = 1;
+  webfxMenuShowTime       = 300;
+  webfxMenuHideTime       = 500;
+
+  var myBar = new WebFXMenuBar;
+
+    
+          myBar.add(new WebFXMenuButton('Billing Main', "http://localhost/freeside/", 'Billing start page' ));
+
+    
+          myBar.add(new WebFXMenuButton('Ticketing Main', "http://localhost/freeside/rt/", 'Ticketing start page' ));
+
+    
+          myBar.add(new WebFXMenuButton('New prospect', "http://localhost/freeside/edit/prospect_main.html", 'Add a new prospect' ));
+
+    
+          myBar.add(new WebFXMenuButton('New customer', "http://localhost/freeside/edit/cust_main.cgi", 'Add a new customer' ));
+
+
+          var myMenu0 = new WebFXMenu;
+myMenu0.emptyText = '';
+var myMenu1 = new WebFXMenu;
+myMenu1.emptyText = '';
+myMenu1.add(new WebFXMenuItem("List prospects", "http://localhost/freeside/search/prospect_main.html", "" ));
+myMenu1.add(new WebFXMenuItem("Advanced prospect reports", "http://localhost/freeside/search/report_prospect_main.html", "" ));
+myMenu1.add(new WebFXMenuSeparator());
+myMenu1.add(new WebFXMenuItem("Prospect contacts", "http://localhost/freeside/search/report_contact.html?link=prospect_main", "" ));
+myMenu1.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Prospects", null, "Prospect reports", myMenu1 ));
+var myMenu2 = new WebFXMenu;
+myMenu2.emptyText = '';
+myMenu2.add(new WebFXMenuItem("List quotations", "http://localhost/freeside/search/quotation.html", "" ));
+myMenu2.add(new WebFXMenuItem("Advanced quotation reports", "http://localhost/freeside/search/report_quotation.html", "" ));
+myMenu2.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Quotations", null, "Quotation reports", myMenu2 ));
+var myMenu3 = new WebFXMenu;
+myMenu3.emptyText = '';
+var myMenu4 = new WebFXMenu;
+myMenu4.emptyText = '';
+myMenu4.add(new WebFXMenuItem("by customer number", "http://localhost/freeside/search/cust_main.cgi?browse=custnum", "" ));
+myMenu4.add(new WebFXMenuItem("by last name", "http://localhost/freeside/search/cust_main.cgi?browse=last", "" ));
+myMenu4.add(new WebFXMenuItem("by company name", "http://localhost/freeside/search/cust_main.cgi?browse=company", "" ));
+myMenu4.add(new WebFXMenuItem("by active trouble tickets", "http://localhost/freeside/search/cust_main.cgi?browse=tickets", "" ));
+myMenu4.width = 256;
+
+myMenu3.add(new WebFXMenuItem("List customers", null, "List customers", myMenu4 ));
+myMenu3.add(new WebFXMenuItem("Zip code distribution", "http://localhost/freeside/search/report_cust_main-zip.html", "Zip codes by number of customers" ));
+myMenu3.add(new WebFXMenuItem("Customer signup report", "http://localhost/freeside/graph/report_cust_signup.html", "New customer signups by date" ));
+myMenu3.add(new WebFXMenuItem("Customer churn report", "http://localhost/freeside/graph/report_cust_churn.html", "New customers, suspensions, and cancellations summary" ));
+myMenu3.add(new WebFXMenuItem("Signup date report", "http://localhost/freeside/graph/report_signupdate.html", "Signup date report (by date of signup)" ));
+myMenu3.add(new WebFXMenuItem("Advanced customer reports", "http://localhost/freeside/search/report_cust_main.html", "by status, signup date, agent, etc." ));
+myMenu3.add(new WebFXMenuSeparator());
+myMenu3.add(new WebFXMenuItem("Customer contacts", "http://localhost/freeside/search/report_contact.html?link=cust_main", "" ));
+myMenu3.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Customers", null, "Customer reports", myMenu3 ));
+var myMenu5 = new WebFXMenu;
+myMenu5.emptyText = '';
+var myMenu6 = new WebFXMenu;
+myMenu6.emptyText = '';
+myMenu6.add(new WebFXMenuItem("All open invoices", "http://localhost/freeside/search/cust_bill.html?OPEN_date", "All invoices with an unpaid balance" ));
+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" ));
+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" ));
+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" ));
+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" ));
+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" ));
+myMenu6.width = 256;
+
+myMenu5.add(new WebFXMenuItem("Open invoices", null, "Open invoices", myMenu6 ));
+myMenu5.add(new WebFXMenuItem("All invoices", "http://localhost/freeside/search/cust_bill.html?date", "List all invoices" ));
+myMenu5.add(new WebFXMenuItem("Advanced invoice reports", "http://localhost/freeside/search/report_cust_bill.html", "by agent, date range, etc." ));
+myMenu5.add(new WebFXMenuSeparator());
+myMenu5.add(new WebFXMenuItem("Line items", "http://localhost/freeside/search/report_cust_bill_pkg.html", "Individual line item detail" ));
+myMenu5.add(new WebFXMenuItem("Voided invoices", "http://localhost/freeside/search/report_cust_bill_void.html", "Search for voided invoices" ));
+myMenu5.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Invoices", null, "Invoice reports", myMenu5 ));
+var myMenu7 = new WebFXMenu;
+myMenu7.emptyText = '';
+myMenu7.add(new WebFXMenuItem("Discount graph", "http://localhost/freeside/graph/report_cust_bill_pkg_discount.html", "Discount overview per month" ));
+myMenu7.add(new WebFXMenuItem("Discount detail", "http://localhost/freeside/search/report_cust_bill_pkg_discount.html", "Discount report (by employee and/or date range)" ));
+myMenu7.add(new WebFXMenuItem("Package discounts", "http://localhost/freeside/search/report_cust_pkg_discount.html", "Active/inactive discounts by package" ));
+myMenu7.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Discounts", null, "Discount reports", myMenu7 ));
+var myMenu8 = new WebFXMenu;
+myMenu8.emptyText = '';
+myMenu8.add(new WebFXMenuItem("Payments", "http://localhost/freeside/search/report_cust_pay.html", "Payment report (by type and/or date range)" ));
+myMenu8.add(new WebFXMenuItem("Payment application detail", "http://localhost/freeside/search/report_cust_bill_pay_pkg.html", "Line item application detail" ));
+myMenu8.add(new WebFXMenuItem("Pending Payments", "http://localhost/freeside/search/cust_pay_pending.html?magic=_date;statusNOT=done", "Pending real-time payments" ));
+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)" ));
+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)" ));
+myMenu8.add(new WebFXMenuItem("Unapplied Payment Aging", "http://localhost/freeside/search/report_unapplied_cust_pay.html", "Unapplied payment aging report" ));
+myMenu8.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Payments", null, "Payment reports", myMenu8 ));
+var myMenu9 = new WebFXMenu;
+myMenu9.emptyText = '';
+myMenu9.add(new WebFXMenuItem("Package definitions (by # active)", "http://localhost/freeside/browse/part_pkg.cgi?active=1", "Package definitions by number of active packages" ));
+myMenu9.add(new WebFXMenuItem("Package costs", "http://localhost/freeside/graph/report_cust_pkg_cost.html", "Package setup and recurring costs graph" ));
+myMenu9.add(new WebFXMenuSeparator());
+myMenu9.add(new WebFXMenuItem("Package churn", "http://localhost/freeside/graph/report_cust_pkg.html", "Orders, suspensions and cancellations summary graph" ));
+myMenu9.add(new WebFXMenuSeparator());
+myMenu9.add(new WebFXMenuItem("All customer packages", "http://localhost/freeside/search/cust_pkg.cgi?pkgnum", "List all customer packages" ));
+myMenu9.add(new WebFXMenuItem("Package summary", "http://localhost/freeside/search/cust_pkg_summary.html", "Show package sales summary" ));
+myMenu9.add(new WebFXMenuItem("Suspended customer packages", "http://localhost/freeside/search/cust_pkg.cgi?magic=suspended", "List suspended packages" ));
+myMenu9.add(new WebFXMenuItem("Suspension summary", "http://localhost/freeside/search/cust_pkg_susp.html", "Show suspension activity" ));
+myMenu9.add(new WebFXMenuItem("Customer packages with unconfigured services", "http://localhost/freeside/search/cust_pkg.cgi?APKG_pkgnum", "List packages which have provisionable services" ));
+myMenu9.add(new WebFXMenuItem("Advanced package reports", "http://localhost/freeside/search/report_cust_pkg.html", "by agent, date range, status, package definition" ));
+myMenu9.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Packages", null, "Package reports", myMenu9 ));
+var myMenu10 = new WebFXMenu;
+myMenu10.emptyText = '';
+myMenu10.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi?orderby=active", "Service definitions by number of active packages" ));
+myMenu10.add(new WebFXMenuSeparator());
+myMenu10.add(new WebFXMenuItem("Unprovisioned services", "http://localhost/freeside/search/report_unprovisioned_services.html", "Unprovisioned services" ));
+myMenu10.add(new WebFXMenuSeparator());
+var myMenu11 = new WebFXMenu;
+myMenu11.emptyText = '';
+myMenu11.add(new WebFXMenuItem("All accounts by Username", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=username", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts by UID", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=uid", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts with Time Remaining", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=seconds", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts by Last login", "http://localhost/freeside/search/svc_acct.cgi?magic=all;sortby=last_login", "" ));
+myMenu11.add(new WebFXMenuItem("All accounts never logged in", "http://localhost/freeside/search/svc_acct.cgi?magic=nologin;sortby=svcnum", "" ));
+myMenu11.add(new WebFXMenuItem("Advanced account reports", "http://localhost/freeside/search/report_svc_acct.html", "" ));
+myMenu11.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Accounts", null, "Access accounts and mailboxes", myMenu11 ));
+var myMenu12 = new WebFXMenu;
+myMenu12.emptyText = '';
+myMenu12.add(new WebFXMenuItem("All domains", "http://localhost/freeside/search/svc_domain.cgi?magic=all;sortby=domain", "" ));
+myMenu12.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Domains", null, "Domains", myMenu12 ));
+var myMenu13 = new WebFXMenu;
+myMenu13.emptyText = '';
+myMenu13.add(new WebFXMenuItem("All certificates", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cert;magic=all;sortby=svcnum", "" ));
+myMenu13.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Certificates", null, "Example services", myMenu13 ));
+var myMenu14 = new WebFXMenu;
+myMenu14.emptyText = '';
+myMenu14.add(new WebFXMenuItem("All mail forwards", "http://localhost/freeside/search/svc_forward.cgi?magic=all;sortby=svcnum", "" ));
+myMenu14.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Mail forwards", null, "Mail forwards", myMenu14 ));
+var myMenu15 = new WebFXMenu;
+myMenu15.emptyText = '';
+myMenu15.add(new WebFXMenuItem("All mailing lists", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_mailinglist;magic=all;sortby=svcnum", "" ));
+myMenu15.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Mailing lists", null, "Mailing lists", myMenu15 ));
+var myMenu16 = new WebFXMenu;
+myMenu16.emptyText = '';
+myMenu16.add(new WebFXMenuItem("All virtual hosting services", "http://localhost/freeside/search/svc_www.cgi?magic=all;sortby=svcnum", "" ));
+myMenu16.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Virtual hosting services", null, "Virtual hosting services", myMenu16 ));
+var myMenu17 = new WebFXMenu;
+myMenu17.emptyText = '';
+myMenu17.add(new WebFXMenuItem("All wireless broadband services", "http://localhost/freeside/search/svc_broadband.cgi?magic=all;sortby=svcnum", "" ));
+myMenu17.add(new WebFXMenuItem("Advanced wireless broadband reports", "http://localhost/freeside/search/report_svc_broadband.html", "" ));
+myMenu17.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Wireless broadband services", null, "Fixed wireless broadband services", myMenu17 ));
+var myMenu18 = new WebFXMenu;
+myMenu18.emptyText = '';
+myMenu18.add(new WebFXMenuItem("All cable subscribers by Service", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=svcnum", "" ));
+myMenu18.add(new WebFXMenuItem("All cable subscribers by Serial number", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_cable;magic=all;sortby=serialnum", "" ));
+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", "" ));
+myMenu18.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Cable Subscribers", null, "Cable Subscribers", myMenu18 ));
+var myMenu19 = new WebFXMenu;
+myMenu19.emptyText = '';
+myMenu19.add(new WebFXMenuItem("All DSLs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_dsl;magic=all;sortby=phonenum", "" ));
+myMenu19.add(new WebFXMenuItem("Qualifications", "http://localhost/freeside/search/qual.cgi", "" ));
+myMenu19.width = 256;
+
+myMenu10.add(new WebFXMenuItem("DSLs", null, "DSLs", myMenu19 ));
+var myMenu20 = new WebFXMenu;
+myMenu20.emptyText = '';
+myMenu20.add(new WebFXMenuItem("All dish services", "http://localhost/freeside/search/svc_dish.cgi?magic=all;sortby=svcnum", "" ));
+myMenu20.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Dish services", null, "Dish services", myMenu20 ));
+var myMenu21 = new WebFXMenu;
+myMenu21.emptyText = '';
+myMenu21.add(new WebFXMenuItem("All hardware", "http://localhost/freeside/search/svc_hardware.cgi?magic=all;sortby=svcnum", "" ));
+myMenu21.add(new WebFXMenuItem("Advanced hardware reports", "http://localhost/freeside/search/report_svc_hardware.html", "" ));
+myMenu21.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Hardware", null, "Hardware", myMenu21 ));
+var myMenu22 = new WebFXMenu;
+myMenu22.emptyText = '';
+myMenu22.add(new WebFXMenuItem("All phone numbers", "http://localhost/freeside/search/svc_phone.cgi?magic=all;sortby=phonenum", "" ));
+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." ));
+myMenu22.add(new WebFXMenuItem("Phone numbers by state", "http://localhost/freeside/search/phone_state.html", "Current or historical phone services broken down by state." ));
+myMenu22.add(new WebFXMenuItem("Advanced phone number reports", "http://localhost/freeside/search/report_svc_phone.html", "" ));
+myMenu22.add(new WebFXMenuItem("Phone number (DID) availability", "http://localhost/freeside/search/report_phone_avail.html", "" ));
+myMenu22.add(new WebFXMenuItem("Inventory/Provisioning Status", "http://localhost/freeside/search/phone_inventory_provisioned.html", "" ));
+myMenu22.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Phone numbers", null, "Phone numbers", myMenu22 ));
+var myMenu23 = new WebFXMenu;
+myMenu23.emptyText = '';
+myMenu23.add(new WebFXMenuItem("All PBXs", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_pbx;magic=all;sortby=svcnum", "" ));
+myMenu23.width = 256;
+
+myMenu10.add(new WebFXMenuItem("PBXs", null, "PBXs", myMenu23 ));
+var myMenu24 = new WebFXMenu;
+myMenu24.emptyText = '';
+myMenu24.add(new WebFXMenuItem("All circuits", "http://localhost/freeside/search/svc_circuit.cgi?magic=all;sortby=svcnum", "" ));
+myMenu24.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Circuits", null, "Voice and data circuit services", myMenu24 ));
+var myMenu25 = new WebFXMenu;
+myMenu25.emptyText = '';
+myMenu25.add(new WebFXMenuItem("All ports", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_port;magic=all;sortby=serviceid", "" ));
+myMenu25.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Ports", null, "Ports", myMenu25 ));
+var myMenu26 = new WebFXMenu;
+myMenu26.emptyText = '';
+myMenu26.add(new WebFXMenuItem("All alarm services", "http://localhost/freeside/search/cust_svc.html?svcdb=svc_alarm;magic=all;sortby=acctnum", "" ));
+myMenu26.width = 256;
+
+myMenu10.add(new WebFXMenuItem("Alarm services", null, "Alarm services", myMenu26 ));
+var myMenu27 = new WebFXMenu;
+myMenu27.emptyText = '';
+myMenu27.add(new WebFXMenuItem("All external services", "http://localhost/freeside/search/svc_external.cgi?magic=all;sortby=id", "" ));
+myMenu27.width = 256;
+
+myMenu10.add(new WebFXMenuItem("External services", null, "External services", myMenu27 ));
+myMenu10.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Services", null, "Services reports", myMenu10 ));
+var myMenu28 = new WebFXMenu;
+myMenu28.emptyText = '';
+myMenu28.add(new WebFXMenuItem("Inventory by agent", "http://localhost/freeside/search/report_agent_inventory.html", "" ));
+myMenu28.add(new WebFXMenuItem("Inventory activity", "http://localhost/freeside/search/report_h_inventory_item.html", "" ));
+myMenu28.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Inventory", null, "Inventory reports", myMenu28 ));
+var myMenu29 = new WebFXMenu;
+myMenu29.emptyText = '';
+myMenu29.add(new WebFXMenuItem("RADIUS sessions", "http://localhost/freeside/search/sqlradius.html", "" ));
+myMenu29.add(new WebFXMenuItem("RADIUS data usage", "http://localhost/freeside/search/report_sqlradius_usage.html", "" ));
+myMenu29.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/search/report_cdr.html", "" ));
+myMenu29.add(new WebFXMenuItem("Unrateable CDRs", "http://localhost/freeside/search/cdr.html?freesidestatus=failed;cdrbatchnum=_ALL_", "" ));
+myMenu29.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Usage", null, "Usage reports", myMenu29 ));
+var myMenu30 = new WebFXMenu;
+myMenu30.emptyText = '';
+var myMenu31 = new WebFXMenu;
+myMenu31.emptyText = '';
+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" ));
+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" ));
+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" ));
+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" ));
+myMenu31.add(new WebFXMenuItem("Time to resolve", "http://localhost/freeside/rt/RTx/Statistics/Resolution", "View how long tickets take to be resolved by Queue" ));
+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" ));
+myMenu31.width = 256;
+
+myMenu30.add(new WebFXMenuItem("Statistics", null, "", myMenu31 ));
+myMenu30.add(new WebFXMenuSeparator());
+myMenu30.add(new WebFXMenuItem("Advanced ticket reports", "http://localhost/freeside/rt/Search/Build.html?NewQuery=1", "List tickets by any criteria" ));
+myMenu30.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Tickets", null, "Ticket reports", myMenu30 ));
+var myMenu32 = new WebFXMenu;
+myMenu32.emptyText = '';
+myMenu32.add(new WebFXMenuItem("Employee Commission Report", "http://localhost/freeside/search/report_employee_commission.html", "" ));
+myMenu32.add(new WebFXMenuItem("Employee Audit Report", "http://localhost/freeside/search/report_employee_audit.html", "Employee audit report" ));
+myMenu32.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Employees", null, "Employee reports", myMenu32 ));
+var myMenu33 = new WebFXMenu;
+myMenu33.emptyText = '';
+myMenu33.add(new WebFXMenuItem("All billing events", "http://localhost/freeside/search/report_cust_event.html", "All billing events for a date range" ));
+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." ));
+myMenu33.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Billing events", null, "Billing events", myMenu33 ));
+var myMenu34 = new WebFXMenu;
+myMenu34.emptyText = '';
+var myMenu35 = new WebFXMenu;
+myMenu35.emptyText = '';
+myMenu35.add(new WebFXMenuItem("Sales, Credits and Receipts", "http://localhost/freeside/graph/report_money_time.html", "Sales, credits and receipts summary graph" ));
+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" ));
+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)" ));
+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)" ));
+myMenu35.add(new WebFXMenuItem("Sales with Advertising Source", "http://localhost/freeside/search/report_cust_bill_pkg_referral.html", "" ));
+myMenu35.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Sales", null, "Sales reports", myMenu35 ));
+var myMenu36 = new WebFXMenu;
+myMenu36.emptyText = '';
+myMenu36.add(new WebFXMenuItem("Credit Report", "http://localhost/freeside/search/report_cust_credit.html", "Credit report (by employee and/or date range)" ));
+myMenu36.add(new WebFXMenuItem("Credit application detail", "http://localhost/freeside/search/report_cust_credit_bill_pkg.html", "Line item application detail" ));
+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)" ));
+myMenu36.add(new WebFXMenuItem("Voided Credits", "http://localhost/freeside/search/report_cust_credit_void.html", "Voided credit report (by employee and/or date range)" ));
+myMenu36.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Credits", null, "Credit reports", myMenu36 ));
+var myMenu37 = new WebFXMenu;
+myMenu37.emptyText = '';
+myMenu37.add(new WebFXMenuItem("Refund Report", "http://localhost/freeside/search/report_cust_refund.html", "Refund report (by type and/or date range)" ));
+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)" ));
+myMenu37.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Refunds", null, "Refund reports", myMenu37 ));
+var myMenu38 = new WebFXMenu;
+myMenu38.emptyText = '';
+myMenu38.add(new WebFXMenuItem("Agent Commissions", "http://localhost/freeside/search/report_agent_commission.html", "" ));
+myMenu38.add(new WebFXMenuItem("Agent Commissions Per Package", "http://localhost/freeside/search/report_agent_commission_pkg.html", "" ));
+myMenu38.add(new WebFXMenuItem("Sales Person Commissions", "http://localhost/freeside/search/report_sales_commission.html", "" ));
+myMenu38.add(new WebFXMenuItem("Sales Person Commissions Per Package", "http://localhost/freeside/search/report_sales_commission_pkg.html", "" ));
+myMenu38.add(new WebFXMenuItem("Employee Commissions", "http://localhost/freeside/search/report_employee_commission.html", "" ));
+myMenu38.width = 256;
+
+myMenu34.add(new WebFXMenuItem("Commissions", null, "Commission reports", myMenu38 ));
+myMenu34.add(new WebFXMenuItem("A/R Aging", "http://localhost/freeside/search/report_receivables.html", "Accounts Receivable Aging report" ));
+myMenu34.add(new WebFXMenuItem("Prepaid Income", "http://localhost/freeside/search/report_prepaid_income.html", "Prepaid income (unearned revenue)  report" ));
+myMenu34.add(new WebFXMenuItem("Tax Liability", "http://localhost/freeside/search/report_tax.html", "Tax liability report (internal tax data)" ));
+myMenu34.add(new WebFXMenuItem("E911 Fee Summary", "http://localhost/freeside/search/report_e911.html", "E911 fee summary" ));
+myMenu34.add(new WebFXMenuItem("Customer Accounting Summary", "http://localhost/freeside/search/report_customer_accounting_summary.html", "Customer accounting summary report" ));
+myMenu34.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Financial", null, "Financial reports", myMenu34 ));
+var myMenu39 = new WebFXMenu;
+myMenu39.emptyText = '';
+myMenu39.add(new WebFXMenuItem("Credit limit incidents", "http://localhost/freeside/search/report_cust_main_credit_limit.html", "" ));
+myMenu39.add(new WebFXMenuItem("System log", "http://localhost/freeside/search/log.html", "View system events and debugging information." ));
+myMenu39.add(new WebFXMenuItem("Outgoing messages", "http://localhost/freeside/search/cust_msg.html", "View outgoing message log" ));
+myMenu39.width = 256;
+
+myMenu0.add(new WebFXMenuItem("Logs", null, "System and email logs", myMenu39 ));
+myMenu0.width = 256;
+
+          myBar.add(new WebFXMenuButton('Reports', null, 'Lists, reporting and graphing', myMenu0 ));
+
+
+          var myMenu40 = new WebFXMenu;
+myMenu40.emptyText = '';
+myMenu40.add(new WebFXMenuItem("Quick payment entry", "http://localhost/freeside/misc/batch-cust_pay.html", "Enter multiple payments in a batch" ));
+myMenu40.add(new WebFXMenuItem("Download invoice batches", "http://localhost/freeside/search/bill_batch.cgi", "" ));
+myMenu40.add(new WebFXMenuItem("Bulk DID Orders", "http://localhost/freeside/browse/did_order.html", "View/manage bulk DID orders" ));
+myMenu40.add(new WebFXMenuItem("Job Queue", "http://localhost/freeside/search/queue.html", "View pending job queue" ));
+var myMenu41 = new WebFXMenu;
+myMenu41.emptyText = '';
+var myMenu42 = new WebFXMenu;
+myMenu42.emptyText = '';
+myMenu42.add(new WebFXMenuItem("Overview", "http://localhost/freeside/rt/Articles/index.html", "" ));
+myMenu42.add(new WebFXMenuItem("Search", "http://localhost/freeside/rt/Articles/Article/Search.html", "" ));
+myMenu42.add(new WebFXMenuItem("Topics", "http://localhost/freeside/rt/Articles/Topics.html", "" ));
+myMenu42.width = 256;
+
+myMenu41.add(new WebFXMenuItem("Articles", null, "", myMenu42 ));
+myMenu41.add(new WebFXMenuItem("My Day", "http://localhost/freeside/rt/Tools/MyDay.html", "" ));
+myMenu41.add(new WebFXMenuItem("My Reminders", "http://localhost/freeside/rt/Tools/MyReminders.html", "" ));
+myMenu41.add(new WebFXMenuItem("Offline", "http://localhost/freeside/rt/Tools/Offline.html", "" ));
+myMenu41.add(new WebFXMenuItem("Approval", "http://localhost/freeside/rt/Approvals/", "" ));
+myMenu41.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Ticketing", null, "Ticketing tools", myMenu41 ));
+myMenu40.add(new WebFXMenuItem("Customer email settings", "http://localhost/freeside/misc/manage_cust_email.html", "" ));
+myMenu40.add(new WebFXMenuItem("Business card scan", "http://localhost/freeside/edit/prospect_main-upload.html", "" ));
+myMenu40.add(new WebFXMenuItem("Attachments", "http://localhost/freeside/browse/cust_attachment.html", "View customer attachments" ));
+var myMenu43 = new WebFXMenu;
+myMenu43.emptyText = '';
+myMenu43.add(new WebFXMenuItem("Customers", "http://localhost/freeside/misc/cust_main-import.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Package definitions", "http://localhost/freeside/misc/part_pkg-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Customer packages", "http://localhost/freeside/misc/cust_pkg-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Customer comments", "http://localhost/freeside/misc/cust_main_note-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("One-time charges", "http://localhost/freeside/misc/cust_main-import_charges.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Payments", "http://localhost/freeside/misc/cust_pay-import.cgi", "" ));
+myMenu43.add(new WebFXMenuItem("Credits", "http://localhost/freeside/misc/cust_credit-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Phone numbers (DIDs)", "http://localhost/freeside/misc/phone_avail-import.html", "" ));
+myMenu43.add(new WebFXMenuItem("Call Detail Records (CDRs)", "http://localhost/freeside/misc/cdr-import.html", "" ));
+myMenu43.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Importing", null, "Import tools", myMenu43 ));
+var myMenu44 = new WebFXMenu;
+myMenu44.emptyText = '';
+myMenu44.add(new WebFXMenuItem("Download database dump", "http://localhost/freeside/misc/dump.cgi", "" ));
+myMenu44.width = 256;
+
+myMenu40.add(new WebFXMenuItem("Exporting", null, "Export tools", myMenu44 ));
+myMenu40.add(new WebFXMenuItem("Status", "http://localhost/freeside/view/Status.html", "System status" ));
+myMenu40.width = 256;
+
+          myBar.add(new WebFXMenuButton('Tools', null, 'Tools', myMenu40 ));
+
+
+          var myMenu45 = new WebFXMenu;
+myMenu45.emptyText = '';
+myMenu45.add(new WebFXMenuItem("Settings", "http://localhost/freeside/config/config-view.cgi", "" ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu46 = new WebFXMenu;
+myMenu46.emptyText = '';
+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" ));
+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)" ));
+myMenu46.add(new WebFXMenuItem("Agent payment gateways", "http://localhost/freeside/browse/payment_gateway.html", "Credit card and electronic check processors for agent overrides" ));
+myMenu46.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Companies", null, "", myMenu46 ));
+var myMenu47 = new WebFXMenu;
+myMenu47.emptyText = '';
+myMenu47.add(new WebFXMenuItem("Sales People", "http://localhost/freeside/browse/sales.html", "Sales people bring in new business." ));
+myMenu47.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Sales People", null, "", myMenu47 ));
+var myMenu48 = new WebFXMenu;
+myMenu48.emptyText = '';
+myMenu48.add(new WebFXMenuItem("Employees", "http://localhost/freeside/browse/access_user.html", "Setup internal users" ));
+myMenu48.add(new WebFXMenuItem("Employee groups", "http://localhost/freeside/browse/access_group.html", "Employee groups allow you to control access to the backend" ));
+myMenu48.add(new WebFXMenuItem("Installer availability", "http://localhost/freeside/browse/sched_item.html", "Installer availability" ));
+myMenu48.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Employees", null, "", myMenu48 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu49 = new WebFXMenu;
+myMenu49.emptyText = '';
+myMenu49.add(new WebFXMenuItem("Customer tags", "http://localhost/freeside/browse/part_tag.html", "" ));
+myMenu49.add(new WebFXMenuItem("Customer classes", "http://localhost/freeside/browse/cust_class.html", "Customer classes define groups of customers for reporting." ));
+myMenu49.add(new WebFXMenuItem("Customer categories", "http://localhost/freeside/browse/cust_category.html", "Customer categories define groups of customer classes." ));
+myMenu49.add(new WebFXMenuSeparator());
+myMenu49.add(new WebFXMenuItem("Contact types", "http://localhost/freeside/browse/contact_class.html", "" ));
+myMenu49.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Customers", null, "", myMenu49 ));
+var myMenu50 = new WebFXMenu;
+myMenu50.emptyText = '';
+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" ));
+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." ));
+myMenu50.add(new WebFXMenuItem("Package categories", "http://localhost/freeside/browse/pkg_category.html", "Package categories define groups of package classes, for invoice sections." ));
+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." ));
+myMenu50.add(new WebFXMenuItem("Fees", "http://localhost/freeside/browse/part_fee.html", "" ));
+myMenu50.add(new WebFXMenuItem("Discounts", "http://localhost/freeside/browse/discount.html", "" ));
+myMenu50.add(new WebFXMenuItem("Discount classes", "http://localhost/freeside/browse/discount_class.html", "" ));
+var myMenu51 = new WebFXMenu;
+myMenu51.emptyText = '';
+myMenu51.add(new WebFXMenuItem("Cancel reasons", "http://localhost/freeside/browse/reason.html?class=C", "Cancel reasons explain why a service was cancelled." ));
+myMenu51.add(new WebFXMenuItem("Cancel reason types", "http://localhost/freeside/browse/reason_type.html?class=C", "Cancel reason types define groups of reasons." ));
+myMenu51.add(new WebFXMenuItem("Suspend reasons", "http://localhost/freeside/browse/reason.html?class=S", "Suspend reasons explain why a service was suspended." ));
+myMenu51.add(new WebFXMenuItem("Suspend reason types", "http://localhost/freeside/browse/reason_type.html?class=S", "Suspend reason types define groups of reasons." ));
+myMenu51.width = 256;
+
+myMenu50.add(new WebFXMenuItem("Cancel/Suspend Reasons", null, "", myMenu51 ));
+myMenu50.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Packages", null, "", myMenu50 ));
+var myMenu52 = new WebFXMenu;
+myMenu52.emptyText = '';
+myMenu52.add(new WebFXMenuItem("Service definitions", "http://localhost/freeside/browse/part_svc.cgi", "Services are items you offer to your customers" ));
+myMenu52.add(new WebFXMenuItem("Service classes", "http://localhost/freeside/browse/part_svc_class.html", "Services classes are user-defined, informational types for services" ));
+myMenu52.add(new WebFXMenuItem("Provisioning exports", "http://localhost/freeside/browse/part_export.cgi", "Provisioning services to external machines, databases and APIs" ));
+var myMenu53 = new WebFXMenu;
+myMenu53.emptyText = '';
+myMenu53.add(new WebFXMenuItem("Access numbers", "http://localhost/freeside/browse/svc_acct_pop.cgi", "Points of Presence" ));
+myMenu53.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Dialup", null, "", myMenu53 ));
+var myMenu54 = new WebFXMenu;
+myMenu54.emptyText = '';
+myMenu54.add(new WebFXMenuItem("Towers", "http://localhost/freeside/browse/tower.html", "Towers and sectors" ));
+myMenu54.add(new WebFXMenuItem("Routers", "http://localhost/freeside/browse/router.cgi", "Broadband access routers" ));
+myMenu54.add(new WebFXMenuItem("Address blocks", "http://localhost/freeside/browse/addr_block.cgi", "Manage address blocks and block assignments to broadband routers" ));
+myMenu54.add(new WebFXMenuItem("Address ranges", "http://localhost/freeside/browse/addr_range.html", "Designate special address ranges" ));
+myMenu54.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Wireless broadband", null, "", myMenu54 ));
+var myMenu55 = new WebFXMenu;
+myMenu55.emptyText = '';
+myMenu55.add(new WebFXMenuItem("View/Edit phone device types", "http://localhost/freeside/browse/part_device.html", "Phone device types" ));
+myMenu55.add(new WebFXMenuItem("View/Edit bulk DID vendors", "http://localhost/freeside/browse/did_vendor.html", "Bulk DID vendors" ));
+myMenu55.add(new WebFXMenuItem("View/Edit Carriers", "http://localhost/freeside/browse/cdr_carrier.html", "Carriers" ));
+myMenu55.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Phone", null, "", myMenu55 ));
+var myMenu56 = new WebFXMenu;
+myMenu56.emptyText = '';
+myMenu56.add(new WebFXMenuItem("RADIUS Groups", "http://localhost/freeside/browse/radius_group.html", "Manage RADIUS groups" ));
+myMenu56.add(new WebFXMenuItem("RADIUS Clients", "http://localhost/freeside/browse/nas.html", "Manage RADIUS clients" ));
+myMenu56.width = 256;
+
+myMenu52.add(new WebFXMenuItem("RADIUS", null, "", myMenu56 ));
+var myMenu57 = new WebFXMenu;
+myMenu57.emptyText = '';
+myMenu57.add(new WebFXMenuItem("Cable providers", "http://localhost/freeside/browse/cable_provider.html", "" ));
+myMenu57.add(new WebFXMenuItem("Cable modem models", "http://localhost/freeside/browse/cable_model.html", "" ));
+myMenu57.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Cable", null, "", myMenu57 ));
+var myMenu58 = new WebFXMenu;
+myMenu58.emptyText = '';
+myMenu58.add(new WebFXMenuItem("Alarm system vendors", "http://localhost/freeside/browse/alarm_system.html", "" ));
+myMenu58.add(new WebFXMenuItem("Alarm system types", "http://localhost/freeside/browse/alarm_type.html", "" ));
+myMenu58.add(new WebFXMenuItem("Alarm central stations", "http://localhost/freeside/browse/alarm_station.html", "" ));
+myMenu58.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Alarm", null, "", myMenu58 ));
+var myMenu59 = new WebFXMenu;
+myMenu59.emptyText = '';
+myMenu59.add(new WebFXMenuItem("Circuit types", "http://localhost/freeside/browse/circuit_type.html", "" ));
+myMenu59.add(new WebFXMenuItem("Circuit providers", "http://localhost/freeside/browse/circuit_provider.html", "" ));
+myMenu59.add(new WebFXMenuItem("Termination types", "http://localhost/freeside/browse/circuit_termination.html", "" ));
+myMenu59.width = 256;
+
+myMenu52.add(new WebFXMenuItem("Circuits", null, "", myMenu59 ));
+myMenu52.add(new WebFXMenuItem("Hardware types", "http://localhost/freeside/browse/hardware_class.html", "Set up hardware type catalog" ));
+myMenu52.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Services", null, "", myMenu52 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu60 = new WebFXMenu;
+myMenu60.emptyText = '';
+myMenu60.add(new WebFXMenuItem("Billing events", "http://localhost/freeside/browse/part_event.html", "Billing actions for customers, invoices and packages" ));
+myMenu60.add(new WebFXMenuItem("Invoice configurations", "http://localhost/freeside/browse/invoice_conf.html", "Adjust invoice settings for special-purpose notices" ));
+myMenu60.add(new WebFXMenuItem("Invoice templates", "http://localhost/freeside/browse/invoice_template.html", "Edit templates for HTML, plaintext and typeset invoices" ));
+myMenu60.add(new WebFXMenuItem("Prepaid cards", "http://localhost/freeside/search/prepay_credit.html", "View outstanding cards, generate new cards" ));
+var myMenu61 = new WebFXMenu;
+myMenu61.emptyText = '';
+myMenu61.add(new WebFXMenuItem("Rate plans", "http://localhost/freeside/browse/rate.cgi", "Manage rate plans" ));
+myMenu61.add(new WebFXMenuItem("Regions and prefixes", "http://localhost/freeside/browse/rate_region.html", "Manage regions and prefixes" ));
+myMenu61.add(new WebFXMenuItem("Usage classes", "http://localhost/freeside/browse/usage_class.html", "Usage classes define groups of usage for taxation." ));
+myMenu61.add(new WebFXMenuItem("Time periods", "http://localhost/freeside/browse/rate_time.html", "Time periods define days and hours for rate plans" ));
+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." ));
+myMenu61.add(new WebFXMenuSeparator());
+myMenu61.add(new WebFXMenuItem("Tiering plans", "http://localhost/freeside/browse/rate_tier.html", "Rating tiers" ));
+myMenu61.width = 256;
+
+myMenu60.add(new WebFXMenuItem("Call rates and regions", null, "Manage rate plans, regions and prefixes for VoIP and call billing", myMenu61 ));
+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" ));
+myMenu60.add(new WebFXMenuItem("Tax classes", "http://localhost/freeside/browse/part_pkg_taxclass.html", "Tax classes" ));
+myMenu60.add(new WebFXMenuItem("Credit reasons", "http://localhost/freeside/browse/reason.html?class=R", "Credit reasons explain why a credit was issued." ));
+myMenu60.add(new WebFXMenuItem("Credit reason types", "http://localhost/freeside/browse/reason_type.html?class=R", "Credit reason types define groups of reasons." ));
+myMenu60.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Billing", null, "", myMenu60 ));
+myMenu45.add(new WebFXMenuSeparator());
+var myMenu62 = new WebFXMenu;
+myMenu62.emptyText = '';
+myMenu62.add(new WebFXMenuItem("Message templates", "http://localhost/freeside/browse/msg_template.html", "Templates for customer notices" ));
+myMenu62.add(new WebFXMenuItem("Advertising sources", "http://localhost/freeside/browse/part_referral.html", "Where a customer heard about your service." ));
+myMenu62.add(new WebFXMenuItem("Custom fields", "http://localhost/freeside/browse/part_virtual_field.html", "Locally defined fields" ));
+myMenu62.add(new WebFXMenuItem("Translation strings", "http://localhost/freeside/browse/msgcat.html", "Translations and other customizable labels for each locale" ));
+myMenu62.add(new WebFXMenuItem("Inventory classes and inventory", "http://localhost/freeside/browse/inventory_class.html", "Setup inventory classes and stock inventory" ));
+myMenu62.add(new WebFXMenuItem("Upload targets", "http://localhost/freeside/browse/upload_target.html", "Billing and payment upload destinations" ));
+myMenu62.width = 256;
+
+myMenu45.add(new WebFXMenuItem("Miscellaneous", null, "", myMenu62 ));
+myMenu45.width = 256;
+
+          myBar.add(new WebFXMenuButton('Configuration', null, 'Configuration and setup', myMenu45 ));
+
+
+          var myMenu63 = new WebFXMenu;
+myMenu63.emptyText = '';
+myMenu63.add(new WebFXMenuItem("Billing documentation", "http://www.freeside.biz/mediawiki/index.php/Freeside:3:Documentation", "Freeside documentation" ));
+myMenu63.add(new WebFXMenuItem("Ticketing documentation", "http://wiki.bestpractical.com/", "Request Tracker Wiki" ));
+myMenu63.add(new WebFXMenuSeparator());
+myMenu63.add(new WebFXMenuItem("About Freeside v3.8git", "javascript:about_freeside()", "" ));
+myMenu63.add(new WebFXMenuItem("About RT v4.0.23", "http://www.bestpractical.com/rt", "Request Tracker Homepage" ));
+myMenu63.width = 256;
+
+          myBar.add(new WebFXMenuButton('Help', null, '', myMenu63 ));
+
+
+  myBar.show( null, 'vertical' );
+  myBar.width = 154;
+
+</SCRIPT>
+
+
+
+
+      <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_iframe.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_draggable.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/overlibmws_crossframe.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/iframecontentmws.js"></SCRIPT>
+  <SCRIPT TYPE="text/javascript" SRC="http://localhost/freeside/elements/ajaxcontentmws.js"></SCRIPT>
+
+    <SCRIPT TYPE="text/javascript">
+
+  function rs_init_object() {
+    var A;
+    try {
+      A=new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+      try {
+        A=new ActiveXObject("Microsoft.XMLHTTP");
+      } catch (oc) {
+        A=null;
+      }
+    }
+    if(!A && typeof XMLHttpRequest != "undefined")
+      A = new XMLHttpRequest();
+    if (!A)
+      alert("Can't create XMLHttpRequest object");
+    return A;
+
+  }
+
+</SCRIPT>
+
+    <SCRIPT TYPE="text/javascript">
+
+  function logout() {
+    // count args; build URL
+    var url = "http://localhost/freeside/loginout/logout.html";
+
+    var xmlhttp = rs_init_object();
+    xmlhttp.open("GET", url, false, "magic", "notyet");
+    xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
+    xmlhttp.send(null);
+
+    if (xmlhttp.readyState != 4) {
+      alert("Logout failed: readyState is " + xmlhttp.readyState);
+      return;
+    }
+
+    if (xmlhttp.status != 200) {
+      alert("Logout failed: status is " + xmlhttp.status);
+    } else {
+      var data = xmlhttp.responseText;
+      // alert('received response: ' + data);
+      if ( data.indexOf("<b>System error</b>") > -1 ) {
+        var w;
+        if ( w = window.open("about:blank") ) {
+          w.document.write(data);
+        } else {
+          // popup blocking?  should use an overlib popup instead 
+          alert("Error popup disabled; try disabling popup blocking to see");
+        }
+      } else {
+        window.location = "http://localhost/freeside/loginout/logout.html";
+      }
+    }
+  }
+
+</SCRIPT>
+
+
+    
+
+  </HEAD>
+  <BODY BGCOLOR="#f8f8f8"  onUnload="myclose()" STYLE="margin-top:0; margin-bottom:0; margin-left:0px; margin-right:0px">
+    <table width="100%" CELLPADDING=0 CELLSPACING=0 STYLE="padding-left:0px; padding-right:4px" CLASS="fshead">
+      <tr>
+        <td BGCOLOR="#ffffff"><IMG BORDER=0 ALT="freeside" HEIGHT="36" SRC="http://localhost/freeside/view/REAL_logo.cgi"></td>
+        <td align=left BGCOLOR="#ffffff"> <!-- valign="top" -->
+          <font size=6>Freeside Test 3.8.1</font>
+        </td>
+        <td align=right valign=top BGCOLOR="#ffffff"><FONT SIZE="-1">Logged in as <b>test&nbsp;</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>
+          <BR></FONT>
+        </td>
+      </tr>
+    </table>
+
+    <TABLE WIDTH="100%" CELLSPACING=0 CELLPADDING=0>
+
+<link href="http://localhost/freeside/elements/freeside-menu.css" type="text/css" rel="stylesheet">
+
+
+      <TR CLASS="fsmenubar">
+
+
+        <TD COLSPAN="7" WIDTH="100%" STYLE="padding:1px 0px 0px 0px;border-top: 1px solid #7e0079" BGCOLOR="#cccccc">
+          <SCRIPT TYPE="text/javascript">
+            document.write(myBar);
+          </SCRIPT>
+        </TD>
+
+      </TR>
+
+      <TR CLASS="fssearchbar">
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/prospect_main.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside/search/report_prospect_main.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A>
+    <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">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_prospect (what) {
+    if ( what.value == '(name, company or phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_main.cgi" METHOD="POST" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside/search/report_cust_main.html" CLASS="fslink" STYLE="font-size: 11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search customers" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_cust (what) {
+    if ( what.value == '(cust #, name, company or contact phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="center">
+          
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_address2 (what) {
+    if ( what.value == '(Unit #)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_bill.html" METHOD="GET" STYLE="margin:0;display:inline">
+    <INPUT NAME="invnum" TYPE="text" VALUE="(inv #)" STYLE="width:56px" onFocus="clearhint_search_invoice(this);" onClick="clearhint_search_invoice(this);" CLASS="fstext">
+    <A HREF="http://localhost/freeside/search/report_cust_bill.html" CLASS="fslink" STYLE="font-size: 11px">Adv</A>    <BR>
+    <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">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_invoice (what) {
+    if ( what.value == '(inv #)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px">
+          
+  <FORM ACTION="http://localhost/freeside/search/cust_svc.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A NOTYET="http://localhost/freeside/search/svc_Smarter.html" STYLE="color: #cccccc; font-size:11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search services" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_svc (what) {
+    if ( what.value == '(user, email, ip, mac, domain or service phone)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+        <TD COLSPAN=1 BGCOLOR="#cccccc" ALIGN="right" STYLE="padding-left:2px;padding-right:2px">
+          
+  <FORM ACTION="http://localhost/freeside//rt/index.html" METHOD="GET" STYLE="margin:0">
+    <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>
+    <A HREF="http://localhost/freeside//rt/Search/Build.html?NewQuery=1" CLASS="fslink" STYLE="font-size:11px">Advanced</A>
+    <INPUT TYPE="submit" VALUE="Search tickets" CLASS="fsblackbutton" onMouseOver="this.className='fsblackbuttonselected'; return true;" onMouseOut="this.className='fsblackbutton'; return true;" STYLE="font-size:11px">
+  </FORM>
+  
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_search_ticket (what) {
+    if ( what.value == '(ticket #, subject, email or fulltext:text)' )
+      what.value = '';
+  }
+
+</SCRIPT>
+
+        </TD>
+
+      </TR>
+    </TABLE>
+
+
+
+    <TABLE WIDTH="100%" HEIGHT="100%" CELLSPACING=0 CELLPADDING=4>
+
+      <TR HEIGHT="100%">
+
+        <TD CLASS="background" HEIGHT="100%" VALIGN="top"> <!-- WIDTH="100%"> -->
+
+          <FONT SIZE=6>
+            Edit Customer: Olson Inc (Towne, Samara)
+          </FONT>
+
+          <BR><BR>
+
+          
+
+
+
+
+<FORM NAME   = "CustomerForm"
+      METHOD = "POST"
+      ACTION = "http://localhost/freeside/edit/process/cust_main.cgi"
+>
+
+<INPUT TYPE="hidden" NAME="custnum"     VALUE="135">
+<INPUT TYPE="hidden" NAME="prospectnum" VALUE="">
+
+  Customer #<B>135</B> - 
+  <B><FONT COLOR="#00CC00">
+    Active
+  </FONT></B>
+  <BR><BR>
+
+<FONT CLASS="fsinnerbox-title">Basics</FONT>
+<TABLE CLASS="fsinnerbox">
+
+<TR>
+  <TD ALIGN="right">Residential</TD>
+  <TD><INPUT TYPE     = "radio"
+             NAME     = "residential_commercial"
+             ID       = "residential_commercial_Residential"
+             VALUE    = "Residential"
+             onChange = "rescom_changed(this)"
+       
+  ></TD>
+</TR>
+<TR>
+  <TD ALIGN="right">Commercial</TD>
+  <TD><INPUT TYPE     = "radio"
+             NAME     = "residential_commercial"
+             ID       = "residential_commercial_Commercial"
+             VALUE    = "Commercial"
+             onChange = "rescom_changed(this)"
+       CHECKED
+  ></TD>
+</TR>
+
+<SCRIPT TYPE="text/javascript">
+
+  function rescom_changed(what) {
+    if ( what.checked == (what.value == 'Commercial' ) ) {
+      document.getElementById('company_row').style.display = '';
+      document.getElementById('contacts_div').style.display = '';
+      document.getElementById('spouse_row').style.display = 'none';
+    } else {
+      if ( document.getElementById('company').value.length == 0 ) {
+        document.getElementById('company_row').style.display = 'none';
+      }
+      document.getElementById('contacts_div').style.display = 'none';
+      document.getElementById('spouse_row').style.display = '';
+    }
+  }
+
+
+  var ship_locked_agents = {};
+  var ship_fields = [
+    'locationname', 'address1', 'city', 'state', 'zip', 'country', 
+    'latitude', 'longitude', 'district'
+  ];
+
+  function agent_changed(what) {
+    var agentnum = what.value;
+
+
+    var f = what.form;
+    if ( ship_locked_agents[agentnum] ) {
+      for(var x in ship_locked_agents[agentnum]) {
+        f['ship_'+x].value = ship_locked_agents[agentnum][x];
+        f['ship_'+x].disabled = true;
+      }
+      f['same'].checked = false;
+      f['same'].disabled = true;
+    } else {
+      for(var i=0; i<ship_fields.length; i++) {
+        x = ship_fields[i];
+        if ( f['ship_'+x].disabled )  {
+          f['ship_'+x].value  = f['old_ship_'+x].value;
+        }
+        f['ship_'+x].disabled = false;
+      }
+      f['same'].disabled = false;
+    }
+    samechanged(f['same']);
+
+    salesnum_agentnum_changed(what);
+
+  }
+
+  (function() {
+  var myonload = function() {
+
+  rescom_changed(document.getElementById('residential_commercial_Residential'));
+  agent_changed(document.getElementById('agentnum'))
+  
+  }
+  if ( window.addEventListener ) {
+    window.addEventListener('load', myonload);
+  } else if ( window.attachEvent ) {
+    window.attachEvent('onload', myonload);
+  }
+})();
+
+</SCRIPT>
+
+
+
+
+
+
+
+  
+  <INPUT TYPE  = "hidden"
+         NAME  = "agentnum"
+         ID    = "agentnum"
+         VALUE = "1"
+  >
+
+      <TR>
+      </TR>
+
+
+
+
+
+    <INPUT TYPE="hidden" NAME="agent_custid" VALUE="">
+
+
+
+  <INPUT TYPE="hidden" NAME="classnum" VALUE="">
+
+
+
+
+
+  <INPUT TYPE  = "hidden"
+         NAME  = "salesnum"
+         ID    = "salesnum"
+         VALUE = ""
+  >
+
+      <TR>
+      </TR>
+
+<SCRIPT TYPE="text/javascript">
+
+  function rs_init_object() {
+    var A;
+    try {
+      A=new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+      try {
+        A=new ActiveXObject("Microsoft.XMLHTTP");
+      } catch (oc) {
+        A=null;
+      }
+    }
+    if(!A && typeof XMLHttpRequest != "undefined")
+      A = new XMLHttpRequest();
+    if (!A)
+      alert("Can't create XMLHttpRequest object");
+    return A;
+
+  }
+
+</SCRIPT>
+
+
+<SCRIPT TYPE="text/javascript">
+
+
+    function get_sales() {
+        // count args; build URL
+        var url = "http://localhost/freeside/misc/sales.cgi?";
+        var a = get_sales.arguments;
+
+        var args;
+        var len;
+        var content = 'sub=get_sales';
+        if ( a && typeof a  == 'object'  && a[0].constructor == Array ) {
+            args = a[0];
+            len = args.length
+        } else {
+            args = a;
+            len = args.length - 1;
+        }
+        for (var i = 0; i < len; i++) 
+            content = content + "&arg=" + escape(args[i]);
+        content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs 
+
+        if ( 'GET' == 'GET' ) {
+          url = url + content;
+        }
+
+        //alert('GET ' + url);
+
+        var xmlhttp = rs_init_object();
+        xmlhttp.open("GET", url, true);
+
+        xmlhttp.onreadystatechange = function() {
+            if (xmlhttp.readyState != 4) 
+               return;
+
+            if (xmlhttp.status != 200) {
+              if ( xmlhttp.status != 0 ) {
+                //not warning on the 0 errors, they pop up when navagating away
+                // from the page
+                alert(xmlhttp.status + " status connecting to " + url);
+              }
+            } else {
+              var data = xmlhttp.responseText;
+              //alert('received response: ' + data);
+              if ( data.indexOf("<b>System error</b>") > -1 ) {
+                // trim this a little
+                var end = data.indexOf('<a href="#raw">') - 1;
+                data = data.substring(0, end);
+
+                overlib(data,
+                  WIDTH, 480, MIDX, 0, MIDY, 0,
+                  CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
+                  CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
+                );
+                //var w;
+                //if ( w = window.open("about:blank") ) {
+                //  w.document.write(data);
+                //} else {
+                //  // popup blocking?  should use an overlib popup instead 
+                //  alert("Error popup disabled; try disabling popup blocking to see");
+                //}
+              } else {
+                // invoke the callback
+                a[a.length-1](data);
+              }
+            }
+        }
+
+        if ( 'GET' == 'POST' ) {
+
+          xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+          xmlhttp.send(content);
+
+        } else {
+
+          xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
+          xmlhttp.send(null);
+
+        }
+
+        //rs_debug("x_$func_name url = " + url);
+        //rs_debug("x_$func_name waiting..");
+    }
+
+
+</SCRIPT>
+
+<SCRIPT TYPE="text/javascript">
+
+
+  function salesnum_opt(what, value, text) {
+    var optionName = new Option(text, value, false, false);
+    var length = what.length;
+    what.options[length] = optionName;
+  }
+
+  function salesnum_agentnum_changed(what) {
+    what.form.salesnum.disabled = 'disabled'; //disable sales dropdown
+
+    if ( what.type == 'hidden' ) { 
+      agentnum = what.value;
+    } else {
+      agentnum = what.options[what.selectedIndex].value;
+    }
+
+    function update_salesnum(sales) {
+
+      if ( what.form.salesnum.type == 'hidden' ) {
+        what.form.salesnum.disabled = ''; //re-enable sales dropdown
+        return;
+      }
+
+      // save the current salesnum
+      var salesnum = what.form.salesnum.value;
+
+      // blank the current sales people
+      for ( var i = what.form.salesnum.length; i>= 0; i-- )
+        what.form.salesnum.options[i] = null;
+
+      // add the new sales people
+
+
+        salesnum_opt( what.form.salesnum,
+                          '',
+                          '(none)'
+                        );
+
+      var salesArray = eval('(' + sales + ')' );
+      for ( var s = 0; s < salesArray.length; s=s+2 ) {
+        //surely this should be some kind of JSON structure
+        var salesLabel  = salesArray[s+1];
+        salesnum_opt( what.form.salesnum, salesArray[s], salesLabel );
+      }
+
+      what.form.salesnum.disabled = ''; //re-enable sales dropdown
+
+      //restore salesnum if possible
+      what.form.salesnum.value = salesnum;
+
+    }
+
+    get_sales( agentnum,
+               update_salesnum
+             );
+  }
+
+  (function() {
+  var myonload = function() {
+
+    salesnum_agentnum_changed(document.getElementById('agentnum'));
+  
+  }
+  if ( window.addEventListener ) {
+    window.addEventListener('load', myonload);
+  } else if ( window.attachEvent ) {
+    window.attachEvent('onload', myonload);
+  }
+})();
+
+
+</SCRIPT>
+
+
+
+
+  <INPUT TYPE="hidden" NAME="refnum" VALUE="1">
+
+
+
+
+  <TR>
+    <TD ALIGN="right">Referring customer</TD>
+    <TD>
+      <INPUT TYPE="hidden" NAME="referral_custnum" ID="referral_custnum" VALUE="">
+
+<!-- some false laziness w/ misc/batch-cust_pay.html, though not as bad as i'd thought at first... -->
+
+<INPUT TYPE = "text"
+       NAME = "referral_custnum_search"
+       ID   = "referral_custnum_search"
+       SIZE = "32"
+       VALUE="(cust #, name or company)"
+       onFocus="clearhint_referral_custnum_search(this);"
+       onClick="clearhint_referral_custnum_search(this);"
+       onChange="smart_referral_custnum_search(this);"
+>
+
+
+<SELECT NAME="referral_custnum_select" ID="referral_custnum_select" STYLE="color:#ff0000; display:none" onChange="select_referral_custnum(this);">
+</SELECT>
+
+<SCRIPT TYPE="text/javascript">
+
+  function rs_init_object() {
+    var A;
+    try {
+      A=new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+      try {
+        A=new ActiveXObject("Microsoft.XMLHTTP");
+      } catch (oc) {
+        A=null;
+      }
+    }
+    if(!A && typeof XMLHttpRequest != "undefined")
+      A = new XMLHttpRequest();
+    if (!A)
+      alert("Can't create XMLHttpRequest object");
+    return A;
+
+  }
+
+</SCRIPT>
+
+
+<SCRIPT TYPE="text/javascript">
+
+
+    function smart_search() {
+        // count args; build URL
+        var url = "http://localhost/freeside/misc/xmlhttp-cust_main-search.cgi?";
+        var a = smart_search.arguments;
+
+        var args;
+        var len;
+        var content = 'sub=smart_search';
+        if ( a && typeof a  == 'object'  && a[0].constructor == Array ) {
+            args = a[0];
+            len = args.length
+        } else {
+            args = a;
+            len = args.length - 1;
+        }
+        for (var i = 0; i < len; i++) 
+            content = content + "&arg=" + escape(args[i]);
+        content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs 
+
+        if ( 'GET' == 'GET' ) {
+          url = url + content;
+        }
+
+        //alert('GET ' + url);
+
+        var xmlhttp = rs_init_object();
+        xmlhttp.open("GET", url, true);
+
+        xmlhttp.onreadystatechange = function() {
+            if (xmlhttp.readyState != 4) 
+               return;
+
+            if (xmlhttp.status != 200) {
+              if ( xmlhttp.status != 0 ) {
+                //not warning on the 0 errors, they pop up when navagating away
+                // from the page
+                alert(xmlhttp.status + " status connecting to " + url);
+              }
+            } else {
+              var data = xmlhttp.responseText;
+              //alert('received response: ' + data);
+              if ( data.indexOf("<b>System error</b>") > -1 ) {
+                // trim this a little
+                var end = data.indexOf('<a href="#raw">') - 1;
+                data = data.substring(0, end);
+
+                overlib(data,
+                  WIDTH, 480, MIDX, 0, MIDY, 0,
+                  CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
+                  CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
+                );
+                //var w;
+                //if ( w = window.open("about:blank") ) {
+                //  w.document.write(data);
+                //} else {
+                //  // popup blocking?  should use an overlib popup instead 
+                //  alert("Error popup disabled; try disabling popup blocking to see");
+                //}
+              } else {
+                // invoke the callback
+                a[a.length-1](data);
+              }
+            }
+        }
+
+        if ( 'GET' == 'POST' ) {
+
+          xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+          xmlhttp.send(content);
+
+        } else {
+
+          xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
+          xmlhttp.send(null);
+
+        }
+
+        //rs_debug("x_$func_name url = " + url);
+        //rs_debug("x_$func_name waiting..");
+    }
+
+
+</SCRIPT>
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function clearhint_referral_custnum_search (what) {
+
+    what.style.color = '#000000';
+
+    if ( what.value == '(cust #, name or company)' )
+      what.value = '';
+
+    if ( what.value.indexOf('Customer not found: ') == 0 )
+      what.value = what.value.substr(20);
+
+  }
+
+  var referral_custnum_search_active = false;
+
+  function smart_referral_custnum_search(what) {
+
+    if ( referral_custnum_search_active )
+      return;
+
+    var customer = what.value;
+
+    if ( customer == 'searching...' || customer == ''
+         || customer.indexOf('Customer not found: ') == 0 )
+      return;
+
+    if ( what.getAttribute('magic') == 'nosearch' ) {
+      what.setAttribute('magic', '');
+      return;
+    }
+
+    //what.value = 'searching...'
+    what.disabled = true;
+    what.style.color= '#000000';
+    what.style.backgroundColor = '#dddddd';
+
+    var customer_select = document.getElementById('referral_custnum_select');
+
+    //alert("search for customer " + customer);
+
+    function referral_custnum_search_update(customers) {
+
+      //alert('customers returned: ' + customers);
+
+      var customerArray = eval('(' + customers + ')');
+
+      what.disabled = false;
+      what.style.backgroundColor = '#ffffff';
+
+      if ( customerArray.length == 0 ) {
+
+        what.form.referral_custnum.value = '';
+
+        what.value = 'Customer not found: ' + what.value;
+        what.style.color = '#ff0000';
+
+        what.style.display = '';
+        customer_select.style.display = 'none';
+
+      } else if ( customerArray.length == 1 ) {
+
+        //alert('one customer found: ' + customerArray[0]);
+
+        what.form.referral_custnum.value = customerArray[0][0];
+        what.value = customerArray[0][1];
+
+        what.style.display = '';
+        customer_select.style.display = 'none';
+
+      } else {
+
+        //alert('multiple customers found, have to create select dropdown');
+
+        //blank the current list
+        for ( var i = customer_select.length; i >= 0; i-- )
+          customer_select.options[i] = null;
+
+        opt(customer_select, '', 'Multiple customers match "' + customer + '" - select one', '#ff0000');
+
+        //add the multiple customers
+        for ( var s = 0; s < customerArray.length; s++ )
+          opt(customer_select, customerArray[s][0], customerArray[s][1], '#000000');
+
+        opt(customer_select, 'cancel', '(Edit search string)', '#000000');
+
+        what.style.display = 'none';
+        customer_select.style.display = '';
+
+      }
+
+      referral_custnum_search_active = false;
+
+    }
+
+    referral_custnum_search_active = true;
+
+    smart_search( customer, referral_custnum_search_update );
+
+
+  }
+
+  function select_referral_custnum (what) {
+
+    var custnum = what.options[what.selectedIndex].value;
+    var customer = what.options[what.selectedIndex].text;
+
+    var customer_obj = document.getElementById('referral_custnum_search');
+
+    if ( custnum == '' ) {
+      //what.style.color = '#ff0000';
+
+    } else if ( custnum == 'cancel' ) {
+
+      customer_obj.style.color = '#000000';
+
+      what.style.display = 'none';
+      customer_obj.style.display = '';
+      customer_obj.focus();
+
+    } else {
+    
+      what.form.referral_custnum.value = custnum;
+
+      customer_obj.value = customer;
+      customer_obj.style.color = '#000000';
+
+      what.style.display = 'none';
+      customer_obj.style.display = '';
+
+    }
+
+  }
+
+  function opt(what,value,text,color) {
+    var optionName = new Option(text, value, false, false);
+    optionName.style.color = color;
+    var length = what.length;
+    what.options[length] = optionName;
+  }
+
+</SCRIPT>
+
+    </TD>
+  </TR>
+
+
+
+  <INPUT TYPE="hidden" NAME="edit_subject" VALUE="">
+
+  <INPUT TYPE="hidden" NAME="calling_list_exempt" VALUE="">
+
+</TABLE>
+
+
+
+<BR>
+<TABLE> <TR>
+  <TD STYLE="width:650px">
+    <FONT CLASS="fsinnerbox-title">Billing address</FONT>
+    <TABLE CLASS="fsinnerbox" WIDTH="100%">
+    
+<TR>
+  <TD CLASS="required label">Contact name</TD>
+  <TD COLSPAN=6 STYLE="vertical-align:top">
+        
+<DIV STYLE="display: inline-block">
+  <INPUT TYPE="text" NAME="last" VALUE="Towne" ,>
+  <BR><FONT SIZE=-1>Last</FONT>
+</DIV>
+
+        
+<DIV STYLE="display: inline-block">
+  <INPUT TYPE="text" NAME="first" VALUE="Samara" >
+  <BR><FONT SIZE=-1>First</FONT>
+</DIV>
+
+        <INPUT TYPE="hidden" NAME="ss" VALUE="">
+  </TD>
+</TR>
+
+
+  <TR ID="company_row" >
+  <TD ALIGN="right">Company</TD>
+  <TD COLSPAN=6><INPUT TYPE="text" NAME="company" ID="company" SIZE=60
+             VALUE="Olson Inc">
+  </TD>
+</TR>
+
+
+    
+
+    <INPUT TYPE  = "hidden"
+       NAME  = "bill_locationname"
+       ID    = "bill_locationname"
+       VALUE = ""
+>
+
+
+
+
+<TR>
+  <TH STYLE="width:16ex" ALIGN="right"><font color="#ff0000">*</font>&nbsp;Address</TH>
+  <TD COLSPAN=7>
+    <INPUT TYPE     = "text"
+           NAME     = "bill_address1"
+           ID       = "bill_address1"
+           VALUE    = "46706 Kadin Hill #780"
+           SIZE     = 54
+           onChange = ""
+           
+           
+    >
+  </TD>
+</TR>
+
+
+<TR>
+      <TD ALIGN="right"><FONT ID="bill_address2_required" color="#ff0000" STYLE="visibility:hidden">*</FONT>&nbsp;<FONT ID="bill_address2_label" STYLE="visibility:hidden"><B>Unit&nbsp;#</B></FONT></TD>
+      <TD COLSPAN=7>
+        <INPUT TYPE     = "text"
+               NAME     = "bill_address2"
+               ID       = "bill_address2"
+               VALUE    = "Trailer W 2-E"
+               SIZE     = 54
+               onChange = ""
+               
+               
+        >
+      </TD>
+</TR>
+
+
+
+<TR>
+  <TH ALIGN="right">
+  <font color="#ff0000">*</font>&nbsp;City
+  </TH>
+  <TD WIDTH="1">
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function rs_init_object() {
+    var A;
+    try {
+      A=new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+      try {
+        A=new ActiveXObject("Microsoft.XMLHTTP");
+      } catch (oc) {
+        A=null;
+      }
+    }
+    if(!A && typeof XMLHttpRequest != "undefined")
+      A = new XMLHttpRequest();
+    if (!A)
+      alert("Can't create XMLHttpRequest object");
+    return A;
+
+  }
+
+</SCRIPT>
+
+
+<SCRIPT TYPE="text/javascript">
+
+
+    function bill_get_cities() {
+        // count args; build URL
+        var url = "http://localhost/freeside/misc/cities.cgi?";
+        var a = bill_get_cities.arguments;
+
+        var args;
+        var len;
+        var content = 'sub=bill_get_cities';
+        if ( a && typeof a  == 'object'  && a[0].constructor == Array ) {
+            args = a[0];
+            len = args.length
+        } else {
+            args = a;
+            len = args.length - 1;
+        }
+        for (var i = 0; i < len; i++) 
+            content = content + "&arg=" + escape(args[i]);
+        content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs 
+
+        if ( 'GET' == 'GET' ) {
+          url = url + content;
+        }
+
+        //alert('GET ' + url);
+
+        var xmlhttp = rs_init_object();
+        xmlhttp.open("GET", url, true);
+
+        xmlhttp.onreadystatechange = function() {
+            if (xmlhttp.readyState != 4) 
+               return;
+
+            if (xmlhttp.status != 200) {
+              if ( xmlhttp.status != 0 ) {
+                //not warning on the 0 errors, they pop up when navagating away
+                // from the page
+                alert(xmlhttp.status + " status connecting to " + url);
+              }
+            } else {
+              var data = xmlhttp.responseText;
+              //alert('received response: ' + data);
+              if ( data.indexOf("<b>System error</b>") > -1 ) {
+                // trim this a little
+                var end = data.indexOf('<a href="#raw">') - 1;
+                data = data.substring(0, end);
+
+                overlib(data,
+                  WIDTH, 480, MIDX, 0, MIDY, 0,
+                  CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
+                  CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
+                );
+                //var w;
+                //if ( w = window.open("about:blank") ) {
+                //  w.document.write(data);
+                //} else {
+                //  // popup blocking?  should use an overlib popup instead 
+                //  alert("Error popup disabled; try disabling popup blocking to see");
+                //}
+              } else {
+                // invoke the callback
+                a[a.length-1](data);
+              }
+            }
+        }
+
+        if ( 'GET' == 'POST' ) {
+
+          xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+          xmlhttp.send(content);
+
+        } else {
+
+          xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
+          xmlhttp.send(null);
+
+        }
+
+        //rs_debug("x_$func_name url = " + url);
+        //rs_debug("x_$func_name waiting..");
+    }
+
+
+</SCRIPT>
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function opt(what,value,text) {
+    var optionName = new Option(text, value, false, false);
+    var length = what.length;
+    what.options[length] = optionName;
+  }
+
+  var saved_bill_city= 'Owensboro';
+
+  function bill_county_changed(what, callback) {
+
+    what.form.bill_city_select.disabled = 'disabled';
+
+    county  = what.options[what.selectedIndex].value;
+    state   = what.form.bill_state.options[what.form.bill_state.selectedIndex].value;
+    country = what.form.bill_country.options[what.form.bill_country.selectedIndex].value;
+
+    function bill_update_cities(cities) {
+
+      // blank the current city list
+      for ( var i = what.form.bill_city_select.length; i >= 0; i-- )
+          what.form.bill_city_select.options[i] = null;
+
+
+      // add the new cities
+      var citiesArray = eval('(' + cities + ')' );
+
+      for ( var s = 0; s < citiesArray.length; s++ ) {
+          var cityLabel = citiesArray[s];
+          if ( cityLabel == "" )
+              cityLabel = '(n/a)';
+          opt(what.form.bill_city_select, citiesArray[s], cityLabel);
+      }
+
+     if ( citiesArray.length > 1 || (citiesArray[0] && citiesArray[0].length) ){
+        // turn off the text city, turn on the select
+        saved_bill_city = what.form.bill_city.value;
+        bill_city_select_changed(what.form.bill_city_select);
+        what.form.bill_city.style.display = 'none';
+        what.form.bill_city_select.style.display = '';
+      } else if ( what.form.bill_city.style.display == 'none' ) {
+        // turn on the text city, turn off the select
+        what.form.bill_city.value = saved_bill_city;
+        what.form.bill_city.style.display = '';
+        what.form.bill_city_select.style.display = 'none';
+      }
+
+      what.form.bill_city_select.disabled = '';
+
+      //run the callback
+      if ( callback != null )
+        callback();
+    }
+
+    // go get the new cities
+    bill_get_cities( county, state, country, bill_update_cities );
+
+  }
+
+  function bill_city_select_changed(what) {
+    what.form.bill_city.value = what.options[what.selectedIndex].value;
+  }
+
+</SCRIPT>
+
+
+<INPUT TYPE     = "text"
+       NAME     = "bill_city"
+       ID       = "bill_city"
+       VALUE    = "Owensboro"
+       onChange = ""
+       
+       
+>
+
+
+    <SELECT NAME     = "bill_city_select"
+            ID       = "bill_city_select"
+            onChange = "bill_city_select_changed(this); "
+            
+            STYLE="display:none"
+    >
+
+
+
+      <OPTION VALUE=""
+              
+      >
+
+
+    </SELECT>
+
+</TD>
+  <TH ALIGN="right" WIDTH="1" ID="bill_countylabel" STYLE="display:none"><font color="#ff0000">*</font>&nbsp;County</TH>
+  <TD WIDTH="1">
+  <SCRIPT TYPE="text/javascript">
+    function bill_state_changed(what) {
+    }
+  </SCRIPT>
+
+  <SELECT NAME  = "bill_county"
+           ID   = "bill_county"
+          STYLE = "display:none"
+  >
+    <OPTION SELECTED VALUE="">
+  </SELECT>
+
+
+</TD>
+  <TH ALIGN="right" WIDTH="1"><font color="#ff0000">*</font>&nbsp;State</TH>
+  <TD WIDTH="1">
+    
+<SELECT NAME     = "bill_state"
+        ID       = "bill_state"
+        onChange = "bill_state_changed(this); "
+        
+        
+>
+
+
+
+  <OPTION VALUE="AK">AK
+
+
+  <OPTION VALUE="AL">AL
+
+
+  <OPTION VALUE="AR">AR
+
+
+  <OPTION VALUE="AS">AS
+
+
+  <OPTION VALUE="AZ">AZ
+
+
+  <OPTION VALUE="CA">CA
+
+
+  <OPTION VALUE="CO">CO
+
+
+  <OPTION VALUE="CT">CT
+
+
+  <OPTION VALUE="DC">DC
+
+
+  <OPTION VALUE="DE">DE
+
+
+  <OPTION VALUE="FL">FL
+
+
+  <OPTION VALUE="GA">GA
+
+
+  <OPTION VALUE="GU">GU
+
+
+  <OPTION VALUE="HI">HI
+
+
+  <OPTION VALUE="IA">IA
+
+
+  <OPTION VALUE="ID">ID
+
+
+  <OPTION VALUE="IL">IL
+
+
+  <OPTION VALUE="IN">IN
+
+
+  <OPTION VALUE="KS" SELECTED>KS
+
+
+  <OPTION VALUE="KY">KY
+
+
+  <OPTION VALUE="LA">LA
+
+
+  <OPTION VALUE="MA">MA
+
+
+  <OPTION VALUE="MD">MD
+
+
+  <OPTION VALUE="ME">ME
+
+
+  <OPTION VALUE="MI">MI
+
+
+  <OPTION VALUE="MN">MN
+
+
+  <OPTION VALUE="MO">MO
+
+
+  <OPTION VALUE="MP">MP
+
+
+  <OPTION VALUE="MS">MS
+
+
+  <OPTION VALUE="MT">MT
+
+
+  <OPTION VALUE="NC">NC
+
+
+  <OPTION VALUE="ND">ND
+
+
+  <OPTION VALUE="NE">NE
+
+
+  <OPTION VALUE="NH">NH
+
+
+  <OPTION VALUE="NJ">NJ
+
+
+  <OPTION VALUE="NM">NM
+
+
+  <OPTION VALUE="NV">NV
+
+
+  <OPTION VALUE="NY">NY
+
+
+  <OPTION VALUE="OH">OH
+
+
+  <OPTION VALUE="OK">OK
+
+
+  <OPTION VALUE="OR">OR
+
+
+  <OPTION VALUE="PA">PA
+
+
+  <OPTION VALUE="PR">PR
+
+
+  <OPTION VALUE="RI">RI
+
+
+  <OPTION VALUE="SC">SC
+
+
+  <OPTION VALUE="SD">SD
+
+
+  <OPTION VALUE="TN">TN
+
+
+  <OPTION VALUE="TX">TX
+
+
+  <OPTION VALUE="UM">UM
+
+
+  <OPTION VALUE="UT">UT
+
+
+  <OPTION VALUE="VA">VA
+
+
+  <OPTION VALUE="VI">VI
+
+
+  <OPTION VALUE="VT">VT
+
+
+  <OPTION VALUE="WA">WA
+
+
+  <OPTION VALUE="WI">WI
+
+
+  <OPTION VALUE="WV">WV
+
+
+  <OPTION VALUE="WY">WY
+
+
+
+</SELECT>
+
+
+
+  </TD>
+  <TH ALIGN="right" WIDTH="1"><font color="#ff0000">*</font>&nbsp;Zip</TH>
+  <TD>
+    <INPUT TYPE     = "text"
+           NAME     = "bill_zip"
+           ID       = "bill_zip"
+           VALUE    = "69113"
+           SIZE     = 11
+           onChange = ""
+           
+           
+    >
+  </TD>
+</TR>
+
+<TR>
+  <TH ALIGN="right"><font color="#ff0000">*</font>&nbsp;Country</TH>
+  <TD COLSPAN=6>
+  <SCRIPT TYPE="text/javascript">
+
+  function rs_init_object() {
+    var A;
+    try {
+      A=new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+      try {
+        A=new ActiveXObject("Microsoft.XMLHTTP");
+      } catch (oc) {
+        A=null;
+      }
+    }
+    if(!A && typeof XMLHttpRequest != "undefined")
+      A = new XMLHttpRequest();
+    if (!A)
+      alert("Can't create XMLHttpRequest object");
+    return A;
+
+  }
+
+</SCRIPT>
+
+
+<SCRIPT TYPE="text/javascript">
+
+
+    function bill_get_states() {
+        // count args; build URL
+        var url = "http://localhost/freeside/misc/states.cgi?";
+        var a = bill_get_states.arguments;
+
+        var args;
+        var len;
+        var content = 'sub=bill_get_states';
+        if ( a && typeof a  == 'object'  && a[0].constructor == Array ) {
+            args = a[0];
+            len = args.length
+        } else {
+            args = a;
+            len = args.length - 1;
+        }
+        for (var i = 0; i < len; i++) 
+            content = content + "&arg=" + escape(args[i]);
+        content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs 
+
+        if ( 'GET' == 'GET' ) {
+          url = url + content;
+        }
+
+        //alert('GET ' + url);
+
+        var xmlhttp = rs_init_object();
+        xmlhttp.open("GET", url, true);
+
+        xmlhttp.onreadystatechange = function() {
+            if (xmlhttp.readyState != 4) 
+               return;
+
+            if (xmlhttp.status != 200) {
+              if ( xmlhttp.status != 0 ) {
+                //not warning on the 0 errors, they pop up when navagating away
+                // from the page
+                alert(xmlhttp.status + " status connecting to " + url);
+              }
+            } else {
+              var data = xmlhttp.responseText;
+              //alert('received response: ' + data);
+              if ( data.indexOf("<b>System error</b>") > -1 ) {
+                // trim this a little
+                var end = data.indexOf('<a href="#raw">') - 1;
+                data = data.substring(0, end);
+
+                overlib(data,
+                  WIDTH, 480, MIDX, 0, MIDY, 0,
+                  CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
+                  CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
+                );
+                //var w;
+                //if ( w = window.open("about:blank") ) {
+                //  w.document.write(data);
+                //} else {
+                //  // popup blocking?  should use an overlib popup instead 
+                //  alert("Error popup disabled; try disabling popup blocking to see");
+                //}
+              } else {
+                // invoke the callback
+                a[a.length-1](data);
+              }
+            }
+        }
+
+        if ( 'GET' == 'POST' ) {
+
+          xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+          xmlhttp.send(content);
+
+        } else {
+
+          xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
+          xmlhttp.send(null);
+
+        }
+
+        //rs_debug("x_$func_name url = " + url);
+        //rs_debug("x_$func_name waiting..");
+    }
+
+
+</SCRIPT>
+
+  
+  <SCRIPT TYPE="text/javascript">
+  
+    function opt(what,value,text) {
+      var optionName = new Option(text, value, false, false);
+      var length = what.length;
+      what.options[length] = optionName;
+    }
+  
+    function bill_country_changed(what, callback) {
+
+      what.form.bill_state.disabled = 'disabled';
+  
+      country = what.options[what.selectedIndex].value;
+  
+      function bill_update_states(states) {
+  
+        // blank the current state list
+        for ( var i = what.form.bill_state.length; i >= 0; i-- )
+            what.form.bill_state.options[i] = null;
+  
+        // add the new states
+        var statesArray = eval('(' + states + ')' );
+
+        for ( var s = 0; s < statesArray.length; s=s+2 ) {
+            var stateLabel = statesArray[s+1];
+            if ( stateLabel == "" )
+                stateLabel = '(n/a)';
+            opt(what.form.bill_state, statesArray[s], stateLabel);
+        }
+
+        what.form.bill_state.disabled = '';
+  
+        //run the callback
+        if ( callback != null ) {
+          callback();
+        } else {
+          bill_state_changed(what.form.bill_state);
+        }
+      }
+  
+      // go get the new states
+      bill_get_states( country, bill_update_states );
+  
+    }
+  
+  </SCRIPT>
+
+
+<SELECT NAME     = "bill_country"
+        ID       = "bill_country"
+        onChange = "bill_country_changed(this); "
+        
+        
+>
+
+
+
+  <OPTION VALUE="US"
+           SELECTED
+  >United States (US)
+
+
+  <OPTION VALUE="AF"
+          
+  >Afghanistan (AF)
+
+
+  <OPTION VALUE="AX"
+          
+  >Aland Islands (AX)
+
+
+  <OPTION VALUE="AL"
+          
+  >Albania (AL)
+
+
+  <OPTION VALUE="DZ"
+          
+  >Algeria (DZ)
+
+
+  <OPTION VALUE="AS"
+          
+  >American Samoa (AS)
+
+
+  <OPTION VALUE="AD"
+          
+  >Andorra (AD)
+
+
+  <OPTION VALUE="AO"
+          
+  >Angola (AO)
+
+
+  <OPTION VALUE="AI"
+          
+  >Anguilla (AI)
+
+
+  <OPTION VALUE="AQ"
+          
+  >Antarctica (AQ)
+
+
+  <OPTION VALUE="AG"
+          
+  >Antigua and Barbuda (AG)
+
+
+  <OPTION VALUE="AR"
+          
+  >Argentina (AR)
+
+
+  <OPTION VALUE="AM"
+          
+  >Armenia (AM)
+
+
+  <OPTION VALUE="AW"
+          
+  >Aruba (AW)
+
+
+  <OPTION VALUE="AU"
+          
+  >Australia (AU)
+
+
+  <OPTION VALUE="AT"
+          
+  >Austria (AT)
+
+
+  <OPTION VALUE="AZ"
+          
+  >Azerbaijan (AZ)
+
+
+  <OPTION VALUE="BS"
+          
+  >Bahamas (BS)
+
+
+  <OPTION VALUE="BH"
+          
+  >Bahrain (BH)
+
+
+  <OPTION VALUE="BD"
+          
+  >Bangladesh (BD)
+
+
+  <OPTION VALUE="BB"
+          
+  >Barbados (BB)
+
+
+  <OPTION VALUE="BY"
+          
+  >Belarus (BY)
+
+
+  <OPTION VALUE="BE"
+          
+  >Belgium (BE)
+
+
+  <OPTION VALUE="BZ"
+          
+  >Belize (BZ)
+
+
+  <OPTION VALUE="BJ"
+          
+  >Benin (BJ)
+
+
+  <OPTION VALUE="BM"
+          
+  >Bermuda (BM)
+
+
+  <OPTION VALUE="BT"
+          
+  >Bhutan (BT)
+
+
+  <OPTION VALUE="BO"
+          
+  >Bolivia, Plurinational State of (BO)
+
+
+  <OPTION VALUE="BQ"
+          
+  >Bonaire, Sint Eustatius and Saba (BQ)
+
+
+  <OPTION VALUE="BA"
+          
+  >Bosnia and Herzegovina (BA)
+
+
+  <OPTION VALUE="BW"
+          
+  >Botswana (BW)
+
+
+  <OPTION VALUE="BV"
+          
+  >Bouvet Island (BV)
+
+
+  <OPTION VALUE="BR"
+          
+  >Brazil (BR)
+
+
+  <OPTION VALUE="IO"
+          
+  >British Indian Ocean Territory (IO)
+
+
+  <OPTION VALUE="BN"
+          
+  >Brunei Darussalam (BN)
+
+
+  <OPTION VALUE="BG"
+          
+  >Bulgaria (BG)
+
+
+  <OPTION VALUE="BF"
+          
+  >Burkina Faso (BF)
+
+
+  <OPTION VALUE="BI"
+          
+  >Burundi (BI)
+
+
+  <OPTION VALUE="KH"
+          
+  >Cambodia (KH)
+
+
+  <OPTION VALUE="CM"
+          
+  >Cameroon (CM)
+
+
+  <OPTION VALUE="CA"
+          
+  >Canada (CA)
+
+
+  <OPTION VALUE="CV"
+          
+  >Cape Verde (CV)
+
+
+  <OPTION VALUE="KY"
+          
+  >Cayman Islands (KY)
+
+
+  <OPTION VALUE="CF"
+          
+  >Central African Republic (CF)
+
+
+  <OPTION VALUE="TD"
+          
+  >Chad (TD)
+
+
+  <OPTION VALUE="CL"
+          
+  >Chile (CL)
+
+
+  <OPTION VALUE="CN"
+          
+  >China (CN)
+
+
+  <OPTION VALUE="CX"
+          
+  >Christmas Island (CX)
+
+
+  <OPTION VALUE="CC"
+          
+  >Cocos (Keeling) Islands (CC)
+
+
+  <OPTION VALUE="CO"
+          
+  >Colombia (CO)
+
+
+  <OPTION VALUE="KM"
+          
+  >Comoros (KM)
+
+
+  <OPTION VALUE="CG"
+          
+  >Congo (CG)
+
+
+  <OPTION VALUE="CD"
+          
+  >Congo (The Democratic Republic of the) (CD)
+
+
+  <OPTION VALUE="CK"
+          
+  >Cook Islands (CK)
+
+
+  <OPTION VALUE="CR"
+          
+  >Costa Rica (CR)
+
+
+  <OPTION VALUE="CI"
+          
+  >Cote d'Ivoire (CI)
+
+
+  <OPTION VALUE="HR"
+          
+  >Croatia (HR)
+
+
+  <OPTION VALUE="CU"
+          
+  >Cuba (CU)
+
+
+  <OPTION VALUE="CW"
+          
+  >Curacao (CW)
+
+
+  <OPTION VALUE="CY"
+          
+  >Cyprus (CY)
+
+
+  <OPTION VALUE="CZ"
+          
+  >Czech Republic (CZ)
+
+
+  <OPTION VALUE="DK"
+          
+  >Denmark (DK)
+
+
+  <OPTION VALUE="DJ"
+          
+  >Djibouti (DJ)
+
+
+  <OPTION VALUE="DM"
+          
+  >Dominica (DM)
+
+
+  <OPTION VALUE="DO"
+          
+  >Dominican Republic (DO)
+
+
+  <OPTION VALUE="EC"
+          
+  >Ecuador (EC)
+
+
+  <OPTION VALUE="EG"
+          
+  >Egypt (EG)
+
+
+  <OPTION VALUE="SV"
+          
+  >El Salvador (SV)
+
+
+  <OPTION VALUE="GQ"
+          
+  >Equatorial Guinea (GQ)
+
+
+  <OPTION VALUE="ER"
+          
+  >Eritrea (ER)
+
+
+  <OPTION VALUE="EE"
+          
+  >Estonia (EE)
+
+
+  <OPTION VALUE="ET"
+          
+  >Ethiopia (ET)
+
+
+  <OPTION VALUE="FK"
+          
+  >Falkland Islands (The) [Malvinas] (FK)
+
+
+  <OPTION VALUE="FO"
+          
+  >Faroe Islands (FO)
+
+
+  <OPTION VALUE="FJ"
+          
+  >Fiji (FJ)
+
+
+  <OPTION VALUE="FI"
+          
+  >Finland (FI)
+
+
+  <OPTION VALUE="FR"
+          
+  >France (FR)
+
+
+  <OPTION VALUE="GF"
+          
+  >French Guiana (GF)
+
+
+  <OPTION VALUE="PF"
+          
+  >French Polynesia (PF)
+
+
+  <OPTION VALUE="TF"
+          
+  >French Southern Territories (TF)
+
+
+  <OPTION VALUE="GA"
+          
+  >Gabon (GA)
+
+
+  <OPTION VALUE="GM"
+          
+  >Gambia (GM)
+
+
+  <OPTION VALUE="GE"
+          
+  >Georgia (GE)
+
+
+  <OPTION VALUE="DE"
+          
+  >Germany (DE)
+
+
+  <OPTION VALUE="GH"
+          
+  >Ghana (GH)
+
+
+  <OPTION VALUE="GI"
+          
+  >Gibraltar (GI)
+
+
+  <OPTION VALUE="GR"
+          
+  >Greece (GR)
+
+
+  <OPTION VALUE="GL"
+          
+  >Greenland (GL)
+
+
+  <OPTION VALUE="GD"
+          
+  >Grenada (GD)
+
+
+  <OPTION VALUE="GP"
+          
+  >Guadeloupe (GP)
+
+
+  <OPTION VALUE="GU"
+          
+  >Guam (GU)
+
+
+  <OPTION VALUE="GT"
+          
+  >Guatemala (GT)
+
+
+  <OPTION VALUE="GG"
+          
+  >Guernsey (GG)
+
+
+  <OPTION VALUE="GN"
+          
+  >Guinea (GN)
+
+
+  <OPTION VALUE="GW"
+          
+  >Guinea-Bissau (GW)
+
+
+  <OPTION VALUE="GY"
+          
+  >Guyana (GY)
+
+
+  <OPTION VALUE="HT"
+          
+  >Haiti (HT)
+
+
+  <OPTION VALUE="HM"
+          
+  >Heard Island and McDonald Islands (HM)
+
+
+  <OPTION VALUE="VA"
+          
+  >Holy See (The) [Vatican City State] (VA)
+
+
+  <OPTION VALUE="HN"
+          
+  >Honduras (HN)
+
+
+  <OPTION VALUE="HK"
+          
+  >Hong Kong (HK)
+
+
+  <OPTION VALUE="HU"
+          
+  >Hungary (HU)
+
+
+  <OPTION VALUE="IS"
+          
+  >Iceland (IS)
+
+
+  <OPTION VALUE="IN"
+          
+  >India (IN)
+
+
+  <OPTION VALUE="ID"
+          
+  >Indonesia (ID)
+
+
+  <OPTION VALUE="IR"
+          
+  >Iran, The Islamic Republic of (IR)
+
+
+  <OPTION VALUE="IQ"
+          
+  >Iraq (IQ)
+
+
+  <OPTION VALUE="IE"
+          
+  >Ireland (IE)
+
+
+  <OPTION VALUE="IM"
+          
+  >Isle of Man (IM)
+
+
+  <OPTION VALUE="IL"
+          
+  >Israel (IL)
+
+
+  <OPTION VALUE="IT"
+          
+  >Italy (IT)
+
+
+  <OPTION VALUE="JM"
+          
+  >Jamaica (JM)
+
+
+  <OPTION VALUE="JP"
+          
+  >Japan (JP)
+
+
+  <OPTION VALUE="JE"
+          
+  >Jersey (JE)
+
+
+  <OPTION VALUE="JO"
+          
+  >Jordan (JO)
+
+
+  <OPTION VALUE="KZ"
+          
+  >Kazakhstan (KZ)
+
+
+  <OPTION VALUE="KE"
+          
+  >Kenya (KE)
+
+
+  <OPTION VALUE="KI"
+          
+  >Kiribati (KI)
+
+
+  <OPTION VALUE="KP"
+          
+  >Korea, The Democratic People's Republic of (KP)
+
+
+  <OPTION VALUE="KR"
+          
+  >Korea, The Republic of (KR)
+
+
+  <OPTION VALUE="KW"
+          
+  >Kuwait (KW)
+
+
+  <OPTION VALUE="KG"
+          
+  >Kyrgyzstan (KG)
+
+
+  <OPTION VALUE="LA"
+          
+  >Lao People's Democratic Republic (LA)
+
+
+  <OPTION VALUE="LV"
+          
+  >Latvia (LV)
+
+
+  <OPTION VALUE="LB"
+          
+  >Lebanon (LB)
+
+
+  <OPTION VALUE="LS"
+          
+  >Lesotho (LS)
+
+
+  <OPTION VALUE="LR"
+          
+  >Liberia (LR)
+
+
+  <OPTION VALUE="LY"
+          
+  >Libya (LY)
+
+
+  <OPTION VALUE="LI"
+          
+  >Liechtenstein (LI)
+
+
+  <OPTION VALUE="LT"
+          
+  >Lithuania (LT)
+
+
+  <OPTION VALUE="LU"
+          
+  >Luxembourg (LU)
+
+
+  <OPTION VALUE="MO"
+          
+  >Macao (MO)
+
+
+  <OPTION VALUE="MK"
+          
+  >Macedonia, The former Yugoslav Republic of (MK)
+
+
+  <OPTION VALUE="MG"
+          
+  >Madagascar (MG)
+
+
+  <OPTION VALUE="MW"
+          
+  >Malawi (MW)
+
+
+  <OPTION VALUE="MY"
+          
+  >Malaysia (MY)
+
+
+  <OPTION VALUE="MV"
+          
+  >Maldives (MV)
+
+
+  <OPTION VALUE="ML"
+          
+  >Mali (ML)
+
+
+  <OPTION VALUE="MT"
+          
+  >Malta (MT)
+
+
+  <OPTION VALUE="MH"
+          
+  >Marshall Islands (MH)
+
+
+  <OPTION VALUE="MQ"
+          
+  >Martinique (MQ)
+
+
+  <OPTION VALUE="MR"
+          
+  >Mauritania (MR)
+
+
+  <OPTION VALUE="MU"
+          
+  >Mauritius (MU)
+
+
+  <OPTION VALUE="YT"
+          
+  >Mayotte (YT)
+
+
+  <OPTION VALUE="MX"
+          
+  >Mexico (MX)
+
+
+  <OPTION VALUE="FM"
+          
+  >Micronesia, The Federated States of (FM)
+
+
+  <OPTION VALUE="MD"
+          
+  >Moldova, The Republic of (MD)
+
+
+  <OPTION VALUE="MC"
+          
+  >Monaco (MC)
+
+
+  <OPTION VALUE="MN"
+          
+  >Mongolia (MN)
+
+
+  <OPTION VALUE="ME"
+          
+  >Montenegro (ME)
+
+
+  <OPTION VALUE="MS"
+          
+  >Montserrat (MS)
+
+
+  <OPTION VALUE="MA"
+          
+  >Morocco (MA)
+
+
+  <OPTION VALUE="MZ"
+          
+  >Mozambique (MZ)
+
+
+  <OPTION VALUE="MM"
+          
+  >Myanmar (MM)
+
+
+  <OPTION VALUE="NA"
+          
+  >Namibia (NA)
+
+
+  <OPTION VALUE="NR"
+          
+  >Nauru (NR)
+
+
+  <OPTION VALUE="NP"
+          
+  >Nepal (NP)
+
+
+  <OPTION VALUE="NL"
+          
+  >Netherlands (NL)
+
+
+  <OPTION VALUE="NC"
+          
+  >New Caledonia (NC)
+
+
+  <OPTION VALUE="NZ"
+          
+  >New Zealand (NZ)
+
+
+  <OPTION VALUE="NI"
+          
+  >Nicaragua (NI)
+
+
+  <OPTION VALUE="NE"
+          
+  >Niger (NE)
+
+
+  <OPTION VALUE="NG"
+          
+  >Nigeria (NG)
+
+
+  <OPTION VALUE="NU"
+          
+  >Niue (NU)
+
+
+  <OPTION VALUE="NF"
+          
+  >Norfolk Island (NF)
+
+
+  <OPTION VALUE="MP"
+          
+  >Northern Mariana Islands (MP)
+
+
+  <OPTION VALUE="NO"
+          
+  >Norway (NO)
+
+
+  <OPTION VALUE="OM"
+          
+  >Oman (OM)
+
+
+  <OPTION VALUE="PK"
+          
+  >Pakistan (PK)
+
+
+  <OPTION VALUE="PW"
+          
+  >Palau (PW)
+
+
+  <OPTION VALUE="PS"
+          
+  >Palestine, State of (PS)
+
+
+  <OPTION VALUE="PA"
+          
+  >Panama (PA)
+
+
+  <OPTION VALUE="PG"
+          
+  >Papua New Guinea (PG)
+
+
+  <OPTION VALUE="PY"
+          
+  >Paraguay (PY)
+
+
+  <OPTION VALUE="PE"
+          
+  >Peru (PE)
+
+
+  <OPTION VALUE="PH"
+          
+  >Philippines (PH)
+
+
+  <OPTION VALUE="PN"
+          
+  >Pitcairn (PN)
+
+
+  <OPTION VALUE="PL"
+          
+  >Poland (PL)
+
+
+  <OPTION VALUE="PT"
+          
+  >Portugal (PT)
+
+
+  <OPTION VALUE="PR"
+          
+  >Puerto Rico (PR)
+
+
+  <OPTION VALUE="QA"
+          
+  >Qatar (QA)
+
+
+  <OPTION VALUE="RE"
+          
+  >Reunion (RE)
+
+
+  <OPTION VALUE="RO"
+          
+  >Romania (RO)
+
+
+  <OPTION VALUE="RU"
+          
+  >Russian Federation (RU)
+
+
+  <OPTION VALUE="RW"
+          
+  >Rwanda (RW)
+
+
+  <OPTION VALUE="BL"
+          
+  >Saint Barthelemy (BL)
+
+
+  <OPTION VALUE="SH"
+          
+  >Saint Helena, Ascension and Tristan da Cunha (SH)
+
+
+  <OPTION VALUE="KN"
+          
+  >Saint Kitts and Nevis (KN)
+
+
+  <OPTION VALUE="LC"
+          
+  >Saint Lucia (LC)
+
+
+  <OPTION VALUE="MF"
+          
+  >Saint Martin (French part) (MF)
+
+
+  <OPTION VALUE="PM"
+          
+  >Saint Pierre and Miquelon (PM)
+
+
+  <OPTION VALUE="VC"
+          
+  >Saint Vincent and the Grenadines (VC)
+
+
+  <OPTION VALUE="WS"
+          
+  >Samoa (WS)
+
+
+  <OPTION VALUE="SM"
+          
+  >San Marino (SM)
+
+
+  <OPTION VALUE="ST"
+          
+  >Sao Tome and Principe (ST)
+
+
+  <OPTION VALUE="SA"
+          
+  >Saudi Arabia (SA)
+
+
+  <OPTION VALUE="SN"
+          
+  >Senegal (SN)
+
+
+  <OPTION VALUE="RS"
+          
+  >Serbia (RS)
+
+
+  <OPTION VALUE="SC"
+          
+  >Seychelles (SC)
+
+
+  <OPTION VALUE="SL"
+          
+  >Sierra Leone (SL)
+
+
+  <OPTION VALUE="SG"
+          
+  >Singapore (SG)
+
+
+  <OPTION VALUE="SX"
+          
+  >Sint Maarten (Dutch part) (SX)
+
+
+  <OPTION VALUE="SK"
+          
+  >Slovakia (SK)
+
+
+  <OPTION VALUE="SI"
+          
+  >Slovenia (SI)
+
+
+  <OPTION VALUE="SB"
+          
+  >Solomon Islands (SB)
+
+
+  <OPTION VALUE="SO"
+          
+  >Somalia (SO)
+
+
+  <OPTION VALUE="ZA"
+          
+  >South Africa (ZA)
+
+
+  <OPTION VALUE="GS"
+          
+  >South Georgia and the South Sandwich Islands (GS)
+
+
+  <OPTION VALUE="SS"
+          
+  >South Sudan (SS)
+
+
+  <OPTION VALUE="ES"
+          
+  >Spain (ES)
+
+
+  <OPTION VALUE="LK"
+          
+  >Sri Lanka (LK)
+
+
+  <OPTION VALUE="SD"
+          
+  >Sudan (SD)
+
+
+  <OPTION VALUE="SR"
+          
+  >Suriname (SR)
+
+
+  <OPTION VALUE="SJ"
+          
+  >Svalbard and Jan Mayen (SJ)
+
+
+  <OPTION VALUE="SZ"
+          
+  >Swaziland (SZ)
+
+
+  <OPTION VALUE="SE"
+          
+  >Sweden (SE)
+
+
+  <OPTION VALUE="CH"
+          
+  >Switzerland (CH)
+
+
+  <OPTION VALUE="SY"
+          
+  >Syrian Arab Republic (SY)
+
+
+  <OPTION VALUE="TW"
+          
+  >Taiwan (Province of China) (TW)
+
+
+  <OPTION VALUE="TJ"
+          
+  >Tajikistan (TJ)
+
+
+  <OPTION VALUE="TZ"
+          
+  >Tanzania, United Republic of (TZ)
+
+
+  <OPTION VALUE="TH"
+          
+  >Thailand (TH)
+
+
+  <OPTION VALUE="TL"
+          
+  >Timor-Leste (TL)
+
+
+  <OPTION VALUE="TG"
+          
+  >Togo (TG)
+
+
+  <OPTION VALUE="TK"
+          
+  >Tokelau (TK)
+
+
+  <OPTION VALUE="TO"
+          
+  >Tonga (TO)
+
+
+  <OPTION VALUE="TT"
+          
+  >Trinidad and Tobago (TT)
+
+
+  <OPTION VALUE="TN"
+          
+  >Tunisia (TN)
+
+
+  <OPTION VALUE="TR"
+          
+  >Turkey (TR)
+
+
+  <OPTION VALUE="TM"
+          
+  >Turkmenistan (TM)
+
+
+  <OPTION VALUE="TC"
+          
+  >Turks and Caicos Islands (TC)
+
+
+  <OPTION VALUE="TV"
+          
+  >Tuvalu (TV)
+
+
+  <OPTION VALUE="UG"
+          
+  >Uganda (UG)
+
+
+  <OPTION VALUE="UA"
+          
+  >Ukraine (UA)
+
+
+  <OPTION VALUE="AE"
+          
+  >United Arab Emirates (AE)
+
+
+  <OPTION VALUE="GB"
+          
+  >United Kingdom (GB)
+
+
+  <OPTION VALUE="UM"
+          
+  >United States Minor Outlying Islands (UM)
+
+
+  <OPTION VALUE="UY"
+          
+  >Uruguay (UY)
+
+
+  <OPTION VALUE="UZ"
+          
+  >Uzbekistan (UZ)
+
+
+  <OPTION VALUE="VU"
+          
+  >Vanuatu (VU)
+
+
+  <OPTION VALUE="VE"
+          
+  >Venezuela, Bolivarian Republic of  (VE)
+
+
+  <OPTION VALUE="VN"
+          
+  >Viet Nam (VN)
+
+
+  <OPTION VALUE="VG"
+          
+  >Virgin Islands (British) (VG)
+
+
+  <OPTION VALUE="VI"
+          
+  >Virgin Islands (U.S.) (VI)
+
+
+  <OPTION VALUE="WF"
+          
+  >Wallis and Futuna (WF)
+
+
+  <OPTION VALUE="EH"
+          
+  >Western Sahara (EH)
+
+
+  <OPTION VALUE="YE"
+          
+  >Yemen (YE)
+
+
+  <OPTION VALUE="ZM"
+          
+  >Zambia (ZM)
+
+
+  <OPTION VALUE="ZW"
+          
+  >Zimbabwe (ZW)
+
+
+</SELECT>
+
+</TD>
+</TR>
+
+<TR>
+  <TD ALIGN="right">Latitude</TD>
+  <TD COLSPAN=7>
+    <INPUT TYPE  = "text"
+           NAME  = "bill_latitude"
+           ID    = "bill_latitude"
+           VALUE = "38.5000000"
+           
+           
+    >
+    Longitude
+    <INPUT TYPE  = "text"
+           NAME  = "bill_longitude"
+           ID    = "bill_longitude"
+           VALUE = "-121.5000000"
+           
+           
+    >
+  </TD>
+</TR>
+  <INPUT TYPE  = "hidden"
+       NAME  = "bill_coord_auto"
+       ID    = "bill_coord_auto"
+       VALUE = "Y"
+>
+
+
+  <INPUT TYPE  = "hidden"
+       NAME  = "bill_geocode"
+       ID    = "bill_geocode"
+       VALUE = ""
+>
+
+
+  <INPUT TYPE  = "hidden"
+       NAME  = "bill_censustract"
+       ID    = "bill_censustract"
+       VALUE = ""
+>
+
+
+  <INPUT TYPE  = "hidden"
+       NAME  = "bill_censusyear"
+       ID    = "bill_censusyear"
+       VALUE = ""
+>
+
+
+<TR>
+  <TD ALIGN="right">Census&nbsp;tract</TD>
+  <TD COLSPAN=8>
+    <INPUT TYPE="text" SIZE=15
+           ID="bill_enter_censustract" 
+           NAME="bill_enter_censustract" 
+           VALUE="">
+    (automatic)
+  </TD>
+</TR>
+  <INPUT TYPE  = "hidden"
+       NAME  = "bill_district"
+       ID    = "bill_district"
+       VALUE = ""
+>
+
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "old_bill_address1"
+       ID    = "old_bill_address1"
+       VALUE = "46706 Kadin Hill #780"
+>
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "old_bill_city"
+       ID    = "old_bill_city"
+       VALUE = "Owensboro"
+>
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "old_bill_state"
+       ID    = "old_bill_state"
+       VALUE = "KS"
+>
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "old_bill_country"
+       ID    = "old_bill_country"
+       VALUE = "US"
+>
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "old_bill_zip"
+       ID    = "old_bill_zip"
+       VALUE = "69113"
+>
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "old_bill_latitude"
+       ID    = "old_bill_latitude"
+       VALUE = "38.5000000"
+>
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "old_bill_longitude"
+       ID    = "old_bill_longitude"
+       VALUE = "-121.5000000"
+>
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "old_bill_censustract"
+       ID    = "old_bill_censustract"
+       VALUE = ""
+>
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "old_bill_district"
+       ID    = "old_bill_district"
+       VALUE = ""
+>
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "old_bill_addr_clean"
+       ID    = "old_bill_addr_clean"
+       VALUE = ""
+>
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "bill_cachenum"
+       ID    = "bill_cachenum"
+       VALUE = ""
+>
+
+
+<INPUT TYPE  = "hidden"
+       NAME  = "bill_addr_clean"
+       ID    = "bill_addr_clean"
+       VALUE = ""
+>
+
+
+
+<SCRIPT TYPE="text/javascript">
+(function() {
+  var myonload = function() {
+
+  var clear_coords_ids = [
+    'bill_latitude',
+    'bill_longitude',
+    'bill_enter_censustract',
+    'bill_censustract',
+    'bill_district'
+  ];
+  function clear_coords() {
+    for (var i=0; i < clear_coords_ids.length; i++) {
+      var el = document.getElementById(clear_coords_ids[i]);
+      if ( el ) {
+        el.value = '';
+      }
+    }
+  }
+  var clear_coords_on_change = [
+    'bill_address1',
+    'bill_address2',
+    'bill_city',
+    'bill_state',
+    'bill_zip',
+    'bill_country'
+  ];
+  for (var i=0; i < clear_coords_on_change.length; i++) {
+    var el = document.getElementById(clear_coords_on_change[i]);
+    if ( el.addEventListener ) {
+      el.addEventListener('change', clear_coords);
+    } else if ( el.attachEvent ) {
+      el.attachEvent('onchange', clear_coords);
+    }
+  }
+  function clear_censustract() {
+    // if the user manually edits the census tract, clear the 'hard' census
+    // tract field so that we can re-verify and present a confirmation popup 
+
+    // get the ID of the hidden censustract field
+    var censustract_id = this.id.replace('enter_', '');
+    var el = document.getElementById(censustract_id);
+    if (el) {
+      el.value = '';
+    }
+  }
+  var el = document.getElementById('bill_enter_censustract');
+  if (el) {
+    if ( el.addEventListener ) {
+      el.addEventListener('change', clear_censustract);
+    } else if ( el.attachEvent ) {
+      el.attachEvent('onchange', clear_censustract);
+    }
+  }
+
+
+  }
+  if ( window.addEventListener ) {
+    window.addEventListener('load', myonload);
+  } else if ( window.attachEvent ) {
+    window.attachEvent('onload', myonload);
+  }
+})();
+
+</SCRIPT>
+
+
+      <TR>
+  <TD VALIGN="top" ALIGN="right">Phones</TD>
+  <TD COLSPAN=6>
+    <TABLE CELLSPACING=0 CELLPADDING=0>
+      <TR>
+        <TD>
+          <INPUT TYPE="text"
+                 NAME="daytime"
+                 VALUE="297-868-7684 x427"
+                 SIZE=18
+          >
+          <BR><FONT SIZE=-1>Day Phone</FONT>
+        </TD>
+        <TD>&nbsp;</TD>
+        <TD>
+          <INPUT TYPE="text"
+                 NAME="night"
+                 VALUE="538-045-0820"
+                 SIZE=18
+          >
+          <BR><FONT SIZE=-1>Night Phone</FONT>
+        </TD>
+        <TD>&nbsp;</TD>
+        <TD>
+          <INPUT TYPE="text"
+                 NAME="mobile"
+                 VALUE=""
+                 SIZE=18
+          >
+          <BR><FONT SIZE=-1>Mobile</FONT>
+        </TD>
+        <TD>&nbsp;</TD>
+      </TR>
+    </TABLE>
+  </TD>
+</TR>
+
+  <TR>
+  <TD ALIGN="right">Fax</TD>
+  <TD><INPUT TYPE="text" NAME="fax" VALUE="" SIZE=18></TD>
+</TR>
+
+<INPUT TYPE="hidden" NAME="stateid" VALUE="">
+<INPUT TYPE="hidden" NAME="stateid_state" VALUE="KS">
+
+
+
+    </TABLE>
+  </TD>
+</TR>
+<TR><TD STYLE="height:40px"></TD></TR>
+<TR>
+  <TD STYLE="width:650px">
+    <FONT CLASS="fsinnerbox-title">Service address</FONT>
+    <INPUT TYPE="checkbox" 
+           NAME="same"
+           ID="same"
+           onclick="samechanged(this)"
+           onkeyup="samechanged(this)"
+           VALUE="Y"
+           CHECKED
+    >same as billing address
+    <DIV CLASS="fsinnerbox">
+      <TABLE ID="table_ship_location" WIDTH="100%">
+      
+      
+
+    <INPUT TYPE  = "hidden"
+       NAME  = "ship_locationname"
+       ID    = "ship_locationname"
+       VALUE = ""
+>
+
+
+
+
+<TR>
+  <TH STYLE="width:16ex" ALIGN="right"><font color="#ff0000">*</font>&nbsp;Address</TH>
+  <TD COLSPAN=7>
+    <INPUT TYPE     = "text"
+           NAME     = "ship_address1"
+           ID       = "ship_address1"
+           VALUE    = "46706 Kadin Hill #780"
+           SIZE     = 54
+           onChange = ""
+           
+           
+    >
+  </TD>
+</TR>
+
+
+<TR>
+      <TD ALIGN="right"><FONT ID="ship_address2_required" color="#ff0000" STYLE="visibility:hidden">*</FONT>&nbsp;<FONT ID="ship_address2_label" STYLE="visibility:hidden"><B>Unit&nbsp;#</B></FONT></TD>
+      <TD COLSPAN=7>
+        <INPUT TYPE     = "text"
+               NAME     = "ship_address2"
+               ID       = "ship_address2"
+               VALUE    = "Trailer W 2-E"
+               SIZE     = 54
+               onChange = ""
+               
+               
+        >
+      </TD>
+</TR>
+
+
+
+<TR>
+  <TH ALIGN="right">
+  <font color="#ff0000">*</font>&nbsp;City
+  </TH>
+  <TD WIDTH="1">
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function rs_init_object() {
+    var A;
+    try {
+      A=new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+      try {
+        A=new ActiveXObject("Microsoft.XMLHTTP");
+      } catch (oc) {
+        A=null;
+      }
+    }
+    if(!A && typeof XMLHttpRequest != "undefined")
+      A = new XMLHttpRequest();
+    if (!A)
+      alert("Can't create XMLHttpRequest object");
+    return A;
+
+  }
+
+</SCRIPT>
+
+
+<SCRIPT TYPE="text/javascript">
+
+
+    function ship_get_cities() {
+        // count args; build URL
+        var url = "http://localhost/freeside/misc/cities.cgi?";
+        var a = ship_get_cities.arguments;
+
+        var args;
+        var len;
+        var content = 'sub=ship_get_cities';
+        if ( a && typeof a  == 'object'  && a[0].constructor == Array ) {
+            args = a[0];
+            len = args.length
+        } else {
+            args = a;
+            len = args.length - 1;
+        }
+        for (var i = 0; i < len; i++) 
+            content = content + "&arg=" + escape(args[i]);
+        content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs 
+
+        if ( 'GET' == 'GET' ) {
+          url = url + content;
+        }
+
+        //alert('GET ' + url);
+
+        var xmlhttp = rs_init_object();
+        xmlhttp.open("GET", url, true);
+
+        xmlhttp.onreadystatechange = function() {
+            if (xmlhttp.readyState != 4) 
+               return;
+
+            if (xmlhttp.status != 200) {
+              if ( xmlhttp.status != 0 ) {
+                //not warning on the 0 errors, they pop up when navagating away
+                // from the page
+                alert(xmlhttp.status + " status connecting to " + url);
+              }
+            } else {
+              var data = xmlhttp.responseText;
+              //alert('received response: ' + data);
+              if ( data.indexOf("<b>System error</b>") > -1 ) {
+                // trim this a little
+                var end = data.indexOf('<a href="#raw">') - 1;
+                data = data.substring(0, end);
+
+                overlib(data,
+                  WIDTH, 480, MIDX, 0, MIDY, 0,
+                  CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
+                  CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
+                );
+                //var w;
+                //if ( w = window.open("about:blank") ) {
+                //  w.document.write(data);
+                //} else {
+                //  // popup blocking?  should use an overlib popup instead 
+                //  alert("Error popup disabled; try disabling popup blocking to see");
+                //}
+              } else {
+                // invoke the callback
+                a[a.length-1](data);
+              }
+            }
+        }
+
+        if ( 'GET' == 'POST' ) {
+
+          xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+          xmlhttp.send(content);
+
+        } else {
+
+          xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
+          xmlhttp.send(null);
+
+        }
+
+        //rs_debug("x_$func_name url = " + url);
+        //rs_debug("x_$func_name waiting..");
+    }
+
+
+</SCRIPT>
+
+
+<SCRIPT TYPE="text/javascript">
+
+  function opt(what,value,text) {
+    var optionName = new Option(text, value, false, false);
+    var length = what.length;
+    what.options[length] = optionName;
+  }
+
+  var saved_ship_city= 'Owensboro';
+
+  function ship_county_changed(what, callback) {
+
+    what.form.ship_city_select.disabled = 'disabled';
+
+    county  = what.options[what.selectedIndex].value;
+    state   = what.form.ship_state.options[what.form.ship_state.selectedIndex].value;
+    country = what.form.ship_country.options[what.form.ship_country.selectedIndex].value;
+
+    function ship_update_cities(cities) {
+
+      // blank the current city list
+      for ( var i = what.form.ship_city_select.length; i >= 0; i-- )
+          what.form.ship_city_select.options[i] = null;
+
+
+      // add the new cities
+      var citiesArray = eval('(' + cities + ')' );
+
+      for ( var s = 0; s < citiesArray.length; s++ ) {
+          var cityLabel = citiesArray[s];
+          if ( cityLabel == "" )
+              cityLabel = '(n/a)';
+          opt(what.form.ship_city_select, citiesArray[s], cityLabel);
+      }
+
+     if ( citiesArray.length > 1 || (citiesArray[0] && citiesArray[0].length) ){
+        // turn off the text city, turn on the select
+        saved_ship_city = what.form.ship_city.value;
+        ship_city_select_changed(what.form.ship_city_select);
+        what.form.ship_city.style.display = 'none';
+        what.form.ship_city_select.style.display = '';
+      } else if ( what.form.ship_city.style.display == 'none' ) {
+        // turn on the text city, turn off the select
+        what.form.ship_city.value = saved_ship_city;
+        what.form.ship_city.style.display = '';
+        what.form.ship_city_select.style.display = 'none';
+      }
+
+      what.form.ship_city_select.disabled = '';
+
+      //run the callback
+      if ( callback != null )
+        callback();
+    }
+
+    // go get the new cities
+    ship_get_cities( county, state, country, ship_update_cities );
+
+  }
+
+  function ship_city_select_changed(what) {
+    what.form.ship_city.value = what.options[what.selectedIndex].value;
+  }
+
+</SCRIPT>
+
+
+<INPUT TYPE     = "text"
+       NAME     = "ship_city"
+       ID       = "ship_city"
+       VALUE    = "Owensboro"
+       onChange = ""
+       
+       
+>
+
+
+    <SELECT NAME     = "ship_city_select"
+            ID       = "ship_city_select"
+            onChange = "ship_city_select_changed(this); "
+            
+            STYLE="display:none"
+    >
+
+
+
+      <OPTION VALUE=""
+              
+      >
+
+
+    </SELECT>
+
+</TD>
+  <TH ALIGN="right" WIDTH="1" ID="ship_countylabel" STYLE="display:none"><font color="#ff0000">*</font>&nbsp;County</TH>
+  <TD WIDTH="1">
+  <SCRIPT TYPE="text/javascript">
+    function ship_state_changed(what) {
+    }
+  </SCRIPT>
+
+  <SELECT NAME  = "ship_county"
+           ID   = "ship_county"
+          STYLE = "display:none"
+  >
+    <OPTION SELECTED VALUE="">
+  </SELECT>
+
+
+</TD>
+  <TH ALIGN="right" WIDTH="1"><font color="#ff0000">*</font>&nbsp;State</TH>
+  <TD WIDTH="1">
+    
+<SELECT NAME     = "ship_state"
+        ID       = "ship_state"
+        onChange = "ship_state_changed(this); "
+        
+        
+>
+
+
+
+  <OPTION VALUE="AK">AK
+
+
+  <OPTION VALUE="AL">AL
+
+
+  <OPTION VALUE="AR">AR
+
+
+  <OPTION VALUE="AS">AS
+
+
+  <OPTION VALUE="AZ">AZ
+
+
+  <OPTION VALUE="CA">CA
+
+
+  <OPTION VALUE="CO">CO
+
+
+  <OPTION VALUE="CT">CT
+
+
+  <OPTION VALUE="DC">DC
+
+
+  <OPTION VALUE="DE">DE
+
+
+  <OPTION VALUE="FL">FL
+
+
+  <OPTION VALUE="GA">GA
+
+
+  <OPTION VALUE="GU">GU
+
+
+  <OPTION VALUE="HI">HI
+
+
+  <OPTION VALUE="IA">IA
+
+
+  <OPTION VALUE="ID">ID
+
+
+  <OPTION VALUE="IL">IL
+
+
+  <OPTION VALUE="IN">IN
+
+
+  <OPTION VALUE="KS" SELECTED>KS
+
+
+  <OPTION VALUE="KY">KY
+
+
+  <OPTION VALUE="LA">LA
+
+
+  <OPTION VALUE="MA">MA
+
+
+  <OPTION VALUE="MD">MD
+
+
+  <OPTION VALUE="ME">ME
+
+
+  <OPTION VALUE="MI">MI
+
+
+  <OPTION VALUE="MN">MN
+
+
+  <OPTION VALUE="MO">MO
+
+
+  <OPTION VALUE="MP">MP
+
+
+  <OPTION VALUE="MS">MS
+
+
+  <OPTION VALUE="MT">MT
+
+
+  <OPTION VALUE="NC">NC
+
+
+  <OPTION VALUE="ND">ND
+
+
+  <OPTION VALUE="NE">NE
+
+
+  <OPTION VALUE="NH">NH
+
+
+  <OPTION VALUE="NJ">NJ
+
+
+  <OPTION VALUE="NM">NM
+
+
+  <OPTION VALUE="NV">NV
+
+
+  <OPTION VALUE="NY">NY
+
+
+  <OPTION VALUE="OH">OH
+
+
+  <OPTION VALUE="OK">OK
+
+
+  <OPTION VALUE="OR">OR
+
+
+  <OPTION VALUE="PA">PA
+
+
+  <OPTION VALUE="PR">PR
+
+
+  <OPTION VALUE="RI">RI
+
+
+  <OPTION VALUE="SC">SC
+
+
+  <OPTION VALUE="SD">SD
+
+
+  <OPTION VALUE="TN">TN
+
+
+  <OPTION VALUE="TX">TX
+
+
+  <OPTION VALUE="UM">UM
+
+
+  <OPTION VALUE="UT">UT
+
+
+  <OPTION VALUE="VA">VA
+
+
+  <OPTION VALUE="VI">VI
+
+
+  <OPTION VALUE="VT">VT
+
+
+  <OPTION VALUE="WA">WA
+
+
+  <OPTION VALUE="WI">WI
+
+
+  <OPTION VALUE="WV">WV
+
+
+  <OPTION VALUE="WY">WY
+
+
+
+</SELECT>
+
+
+
+  </TD>
+  <TH ALIGN="right" WIDTH="1"><font color="#ff0000">*</font>&nbsp;Zip</TH>
+  <TD>
+    <INPUT TYPE     = "text"
+           NAME     = "ship_zip"
+           ID       = "ship_zip"
+           VALUE    = "69113"
+           SIZE     = 11
+           onChange = ""
+           
+           
+    >
+  </TD>
+</TR>
+
+<TR>
+  <TH ALIGN="right"><font color="#ff0000">*</font>&nbsp;Country</TH>
+  <TD COLSPAN=6>
+  <SCRIPT TYPE="text/javascript">
+
+  function rs_init_object() {
+    var A;
+    try {
+      A=new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+      try {
+        A=new ActiveXObject("Microsoft.XMLHTTP");
+      } catch (oc) {
+        A=null;
+      }
+    }
+    if(!A && typeof XMLHttpRequest != "undefined")
+      A = new XMLHttpRequest();
+    if (!A)
+      alert("Can't create XMLHttpRequest object");
+    return A;
+
+  }
+
+</SCRIPT>
+
+
+<SCRIPT TYPE="text/javascript">
+
+
+    function ship_get_states() {
+        // count args; build URL
+        var url = "http://localhost/freeside/misc/states.cgi?";
+        var a = ship_get_states.arguments;
+
+        var args;
+        var len;
+        var content = 'sub=ship_get_states';
+        if ( a && typeof a  == 'object'  && a[0].constructor == Array ) {
+            args = a[0];
+            len = args.length
+        } else {
+            args = a;
+            len = args.length - 1;
+        }
+        for (var i = 0; i < len; i++) 
+            content = content + "&arg=" + escape(args[i]);
+        content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs 
+
+        if ( 'GET' == 'GET' ) {
+          url = url + content;
+        }
+
+        //alert('GET ' + url);
+
+        var xmlhttp = rs_init_object();
+        xmlhttp.open("GET", url, true);
+
+        xmlhttp.onreadystatechange = function() {
+            if (xmlhttp.readyState != 4) 
+               return;
+
+            if (xmlhttp.status != 200) {
+              if ( xmlhttp.status != 0 ) {
+                //not warning on the 0 errors, they pop up when navagating away
+                // from the page
+                alert(xmlhttp.status + " status connecting to " + url);
+              }
+            } else {
+              var data = xmlhttp.responseText;
+              //alert('received response: ' + data);
+              if ( data.indexOf("<b>System error</b>") > -1 ) {
+                // trim this a little
+                var end = data.indexOf('<a href="#raw">') - 1;
+                data = data.substring(0, end);
+
+                overlib(data,
+                  WIDTH, 480, MIDX, 0, MIDY, 0,
+                  CAPTION, 'Error', STICKY, AUTOSTATUSCAP, DRAGGABLE,
+                  CLOSECLICK, BGCOLOR, '#f00', CGCOLOR, '#f00'
+                );
+                //var w;
+                //if ( w = window.open("about:blank") ) {
+                //  w.document.write(data);
+                //} else {
+                //  // popup blocking?  should use an overlib popup instead 
+                //  alert("Error popup disabled; try disabling popup blocking to see");
+                //}
+              } else {
+                // invoke the callback
+                a[a.length-1](data);
+              }
+            }
+        }
+
+        if ( 'GET' == 'POST' ) {
+
+          xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+          xmlhttp.send(content);
+
+        } else {
+
+          xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
+          xmlhttp.send(null);
+
+        }
+
+        //rs_debug("x_$func_name url = " + url);
+        //rs_debug("x_$func_name waiting..");
+    }
+
+
+</SCRIPT>
+
+  
+  <SCRIPT TYPE="text/javascript">
+  
+    function opt(what,value,text) {
+      var optionName = new Option(text, value, false, false);
+      var length = what.length;
+      what.options[length] = optionName;
+    }
+  
+    function ship_country_changed(what, callback) {
+
+      what.form.ship_state.disabled = 'disabled';
+  
+      country = what.options[what.selectedIndex].value;
+  
+      function ship_update_states(states) {
+  
+        // blank the current state list
+        for ( var i = what.form.ship_state.length; i >= 0; i-- )
+            what.form.ship_state.options[i] = null;
+  
+        // add the new states
+        var statesArray = eval('(' + states + ')' );
+
+        for ( var s = 0; s < statesArray.length; s=s+2 ) {
+            var stateLabel = statesArray[s+1];
+            if ( stateLabel == "" )
+                stateLabel = '(n/a)';
+            opt(what.form.ship_state, statesArray[s], stateLabel);
+        }
+
+        what.form.ship_state.disabled = '';
+  
+        //run the callback
+        if ( callback != null ) {
+          callback();
+        } else {
+          ship_state_changed(what.form.ship_state);
+        }
+      }
+  
+      // go get the new states
+      ship_get_states( country, ship_update_states );
+  
+    }
+  
+  </SCRIPT>
+
+
+<SELECT NAME     = "ship_country"
+        ID       = "ship_country"
+        onChange = "ship_country_changed(this); "
+        
+        
+>
+
+
+
+  <OPTION VALUE="US"
+           SELECTED
+  >United States (US)
+
+
+  <OPTION VALUE="AF"
+          
+  >Afghanistan (AF)
+
+
+  <OPTION VALUE="AX"
+          
+  >Aland Islands (AX)
+
+
+  <OPTION VALUE="AL"
+          
+  >Albania (AL)
+
+
+  <OPTION VALUE="DZ"
+          
+  >Algeria (DZ)
+
+
+  <OPTION VALUE="AS"
+          
+  >American Samoa (AS)
+
+
+  <OPTION VALUE="AD"
+          
+  >Andorra (AD)
+
+
+  <OPTION VALUE="AO"
+          
+  >Angola (AO)
+
+
+  <OPTION VALUE="AI"
+          
+  >Anguilla (AI)
+
+
+  <OPTION VALUE="AQ"
+          
+  >Antarctica (AQ)
+
+
+  <OPTION VALUE="AG"
+          
+  >Antigua and Barbuda (AG)
+
+
+  <OPTION VALUE="AR"
+          
+  >Argentina (AR)
+
+
+  <OPTION VALUE="AM"
+          
+  >Armenia (AM)
+
+
+  <OPTION VALUE="AW"
+          
+  >Aruba (AW)
+
+
+  <OPTION VALUE="AU"
+          
+  >Australia (AU)
+
+
+  <OPTION VALUE="AT"
+          
+  >Austria (AT)
+
+
+  <OPTION VALUE="AZ"
+          
+  >Azerbaijan (AZ)
+
+
+  <OPTION VALUE="BS"
+          
+  >Bahamas (BS)
+
+
+  <OPTION VALUE="BH"
+          
+  >Bahrain (BH)
+
+
+  <OPTION VALUE="BD"
+          
+  >Bangladesh (BD)
+
+
+  <OPTION VALUE="BB"
+          
+  >Barbados (BB)
+
+
+  <OPTION VALUE="BY"
+          
+  >Belarus (BY)
+
+
+  <OPTION VALUE="BE"
+          
+  >Belgium (BE)
+
+
+  <OPTION VALUE="BZ"
+          
+  >Belize (BZ)
+
+
+  <OPTION VALUE="BJ"
+          
+  >Benin (BJ)
+
+
+  <OPTION VALUE="BM"
+          
+  >Bermuda (BM)
+
+
+  <OPTION VALUE="BT"
+          
+  >Bhutan (BT)
+
+
+  <OPTION VALUE="BO"
+          
+  >Bolivia, Plurinational State of (BO)
+
+
+  <OPTION VALUE="BQ"
+          
+  >Bonaire, Sint Eustatius and Saba (BQ)
+
+
+  <OPTION VALUE="BA"
+          
+  >Bosnia and Herzegovina (BA)
+
+
+  <OPTION VALUE="BW"
+          
+  >Botswana (BW)
+
+
+  <OPTION VALUE="BV"
+          
+  >Bouvet Island (BV)
+
+
+  <OPTION VALUE="BR"
+          
+  >Brazil (BR)
+
+
+  <OPTION VALUE="IO"
+          
+  >British Indian Ocean Territory (IO)
+
+
+  <OPTION VALUE="BN"
+          
+  >Brunei Darussalam (BN)
+
+
+  <OPTION VALUE="BG"
+          
+  >Bulgaria (BG)
+
+
+  <OPTION VALUE="BF"
+          
+  >Burkina Faso (BF)
+
+
+  <OPTION VALUE="BI"
+          
+  >Burundi (BI)
+
+
+  <OPTION VALUE="KH"
+          
+  >Cambodia (KH)
+
+
+  <OPTION VALUE="CM"
+          
+  >Cameroon (CM)
+
+
+  <OPTION VALUE="CA"
+          
+  >Canada (CA)
+
+
+  <OPTION VALUE="CV"
+          
+  >Cape Verde (CV)
+
+
+  <OPTION VALUE="KY"
+          
+  >Cayman Islands (KY)
+
+
+  <OPTION VALUE="CF"
+          
+  >Central African Republic (CF)
+
+
+  <OPTION VALUE="TD"
+          
+  >Chad (TD)
+
+
+  <OPTION VALUE="CL"
+          
+  >Chile (CL)
+
+
+  <OPTION VALUE="CN"
+          
+  >China (CN)
+
+
+  <OPTION VALUE="CX"
+          
+  >Christmas Island (CX)
+
+
+  <OPTION VALUE="CC"
+          
+  >Cocos (Keeling) Islands (CC)
+
+
+  <OPTION VALUE="CO"
+          
+  >Colombia (CO)
+
+
+  <OPTION VALUE="KM"
+          
+  >Comoros (KM)
+
+
+  <OPTION VALUE="CG"
+          
+  >Congo (CG)
+
+
+  <OPTION VALUE="CD"
+          
+  >Congo (The Democratic Republic of the) (CD)
+
+
+  <OPTION VALUE="CK"
+          
+  >Cook Islands (CK)
+
+
+  <OPTION VALUE="CR"
+          
+  >Costa Rica (CR)
+
+
+  <OPTION VALUE="CI"
+          
+  >Cote d'Ivoire (CI)
+
+
+  <OPTION VALUE="HR"
+          
+  >Croatia (HR)
+
+
+  <OPTION VALUE="CU"
+          
+  >Cuba (CU)
+
+
+  <OPTION VALUE="CW"
+          
+  >Curacao (CW)
+
+
+  <OPTION VALUE="CY"
+          
+  >Cyprus (CY)
+
+
+  <OPTION VALUE="CZ"
+          
+  >Czech Republic (CZ)
+
+
+  <OPTION VALUE="DK"
+          
+  >Denmark (DK)
+
+
+  <OPTION VALUE="DJ"
+          
+  >Djibouti (DJ)
+
+
+  <OPTION VALUE="DM"
+          
+  >Dominica (DM)
+
+
+  <OPTION VALUE="DO"
+          
+  >Dominican Republic (DO)
+
+
+  <OPTION VALUE="EC"
+          
+  >Ecuador (EC)
+
+
+  <OPTION VALUE="EG"
+          
+  >Egypt (EG)
+
+
+  <OPTION VALUE="SV"
+          
+  >El Salvador (SV)
+
+
+  <OPTION VALUE="GQ"
+          
+  >Equatorial Guinea (GQ)
+
+
+  <OPTION VALUE="ER"
+          
+  >Eritrea (ER)
+
+
+  <OPTION VALUE="EE"
+          
+  >Estonia (EE)
+
+
+  <OPTION VALUE="ET"
+          
+  >Ethiopia (ET)
+
+
+  <OPTION VALUE="FK"
+          
+  >Falkland Islands (The) [Malvinas] (FK)
+
+
+  <OPTION VALUE="FO"
+          
+  >Faroe Islands (FO)
+
+
+  <OPTION VALUE="FJ"
+          
+  >Fiji (FJ)
+
+
+  <OPTION VALUE="FI"
+          
+  >Finland (FI)
+
+
+  <OPTION VALUE="FR"
+          
+  >France (FR)
+
+
+  <OPTION VALUE="GF"
+