diff --git a/COPYRIGHT b/COPYRIGHT
new file mode 100644
index 0000000000..cf4dcc2f13
--- /dev/null
+++ b/COPYRIGHT
@@ -0,0 +1,12 @@
+Project Observer Copyright (C) 2007 Adam Armstrong
+
+This program is free software; you can redistribute it and/or modify it under the terms of the 
+GNU General Public License as published by the Free Software Foundation; either version 2 of the 
+License, or (at your option) any later version. 
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
+even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+See the GNU General Public License for more details. 
+
+You should have received a copy of the GNU General Public License along with this program; if not, write to the 
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
diff --git a/DejaVuSansCondensed.ttf b/DejaVuSansCondensed.ttf
new file mode 100644
index 0000000000..e58bd15bd5
Binary files /dev/null and b/DejaVuSansCondensed.ttf differ
diff --git a/DejaVuSansMono.ttf b/DejaVuSansMono.ttf
new file mode 100644
index 0000000000..bf798a860f
Binary files /dev/null and b/DejaVuSansMono.ttf differ
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000000..39e87326f5
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,26 @@
+Basic Installation Instructions
+-------------------------------
+
+Point apache to the html directory. Give apache read/write access to rrd and graphs (check symlinks in html/ work!)
+
+Create a database, give a user full privileges on it. Insert the mysql schema file into it.
+
+Edit your config.php
+
+Customise html/includes/topnav.inc to be useful for your organisation (put some handy links in it!)
+
+Put cron.sh into your crontab for every 5 mins and cron-hourly.sh into your crontab for every hour.
+
+add a host with 'host-add.php <hostname> <snmp community>'
+
+Cisco network devices with cdp enabled should be detected automatically in waves each hour as it spiders outwards
+(run discover.php manually to speed it up!)
+
+Servers will need to be added manually.
+
+Replace the logo!
+
+Login to the web interface with the username 'admin' and the password 'observer'.
+
+*** Drop me an email to adama@memetic.org ***
+
diff --git a/LICENCE b/LICENCE
new file mode 100644
index 0000000000..8377aa61ab
--- /dev/null
+++ b/LICENCE
@@ -0,0 +1,11 @@
+Copyright � 2006-2007 by Adam Armstrong. 
+All rights reserved. 
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 
+
+THIS SOFTWARE IS PROVIDED "AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+
diff --git a/README b/README
new file mode 100644
index 0000000000..6dc00e6685
--- /dev/null
+++ b/README
@@ -0,0 +1,67 @@
+Copyright (C) 2007 Adam Armstrong <adama@memetic.org>
+
+Released under the GNU Public License
+
+Introduction
+------------
+
+Project Observer is an auto-discovering network monitoring system. It's not designed to be a drop-in replacement for 
+Nagios, Mon, JFFNMS or similar applications. It's designed to be an easily-navigable interface to the health of your 
+network.
+
+***********************************************************
+Release 0.2.4
+Fixed some misnamed files
+Fixed some hardcoded binary locations
+Removed some messy AJAX
+Replaced the menu bar
+Added some new menu items
+Cleaned up presentation of some pages
+
+Release 0.2.3
+Fixed some broken graphing code
+Added host add/remove to web interface
+Added host/interface/service status to web interface
+Tidied up some code
+
+Release 0.2.2
+Replaced old layout with new 'Project Observer' layout
+Added recognition of SNOM SIP phones, data collection and some graphing
+Modified standard layout to remove Vostron-specific elements
+Added cpu graphing for ProCurve devices
+Added tabs for device page and AJAX loading of contents
+Detection of HP ProCurve devices
+Detection of m0n0wall devices by new snmp-id
+Can now disable the Transit, Peering and Customer sections
+Added some tabbing to Interface
+Added detection of Net/Open/DragonFlyBSD
+
+Release 0.2.1 - 19th January 2007
+Modification of graphing disply style
+Seperatation of device types
+Implementation of storage graphing
+
+Release 0.2.0 - 20th December 2006
+Cleanup of graphing code
+Seperation of customer-accessible interface
+Preliminary alerting system
+
+Release 0.1.2 - Late November 2006
+Graphing of additional server-related data
+
+Release 0.1.1 - November 2006
+Removal of large amounts of perl.
+
+Release 0.1.0 - October 2006
+Initial Release.
+Basic discovery in place. Graphing in place.
+
+Feature Waiting List
+--------------------
+
+* Verification of discovered devices and interfaces
+* Serial number tracking
+* Manual layer 1 linking
+* Service Monitoring
+* Alerting
+* Temperature Monitoring
diff --git a/alerts.php b/alerts.php
new file mode 100755
index 0000000000..748089c339
--- /dev/null
+++ b/alerts.php
@@ -0,0 +1,25 @@
+#!/usr/bin/php
+<?php
+
+include("config.php");
+include("includes/functions.php");
+
+$alert_query = mysql_query("SELECT *, A.id as id FROM `alerts` as A, `devices` as D where A.device_id = D.id AND alerted = '0'");
+while ($alert = mysql_fetch_array($alert_query)) {
+  $id = $alert['id'];
+  $host = $alert['hostname'];
+  $date = $alert['time_logged'];
+  $msg = $alert['message'];
+  $alert_text .= "$date $host $msg";
+
+  mysql_query("UPDATE `alerts` SET alerted = '1' WHERE `id` = '$id'");
+
+}
+
+if($alert_text) {
+  echo("$alert_text");
+#  `echo '$alert_text' | gnokii --sendsms 07885729982`;
+}
+
+
+?>
diff --git a/cdp.php b/cdp.php
new file mode 100755
index 0000000000..73cd989657
--- /dev/null
+++ b/cdp.php
@@ -0,0 +1,25 @@
+#!/usr/bin/php
+<?php
+
+include("config.php");
+include("includes/functions.php");
+include("includes/cdp.php");
+
+$device_query = mysql_query("SELECT id,hostname,community FROM `devices` WHERE `ignore` = '0' AND status = '1' AND `os` = 'IOS' ORDER BY `id` ASC");
+while ($device = mysql_fetch_row($device_query)) {
+
+  echo("Detecting CDP neighbours on $device[1]...\n");
+  $snmp = new snmpCDP($device[1], $device[2]);
+  $ports = $snmp->getports();
+  $cdp = $snmp->explore_cdp($ports);
+
+  foreach (array_keys($cdp) as $key) {
+    $port = $ports[$key];
+    $link = $cdp[$key];
+    $loc_if[$key] = @mysql_result(mysql_query("SELECT `id` FROM `interfaces` WHERE host = '" . $device['id'] . "' AND `if` = '" . $port['desc'] . "'"), 0);
+    echo( $key . "||" . $hostname . "||" . $loc_if[$key] . "||" . $port['desc'] . "||" . $link['host'] . "||" . $link['port'] . "\n" );
+  }
+
+}
+
+?>
diff --git a/check-device.php b/check-device.php
new file mode 100755
index 0000000000..a6166314a4
--- /dev/null
+++ b/check-device.php
@@ -0,0 +1,150 @@
+#!/usr/bin/php
+<?
+
+include("config.php");
+include("includes/functions.php");
+
+$device_query = mysql_query("SELECT * FROM `devices` WHERE id = '$argv[1]'");
+while ($device = mysql_fetch_array($device_query)) {
+
+  $hostname = $device['hostname'];
+  $id = $device['id'];
+  $status = $device['status'];
+  unset($update);
+  unset($update_query);
+  unset($seperator);
+  unset($newversion);
+  unset($newuptime);
+  unset($newfeatures);
+  unset($newlocation);
+  unset($newhardware);
+  $pingable = isPingable($hostname);
+  $snmpable = FALSE;
+  if($pingable) {
+    $snmpable = isSNMPable($hostname);
+  }
+  echo("$snmpable");
+  if ($pingable !== FALSE && $snmpable !== FALSE ) {
+    $newstatus = '1';
+    $hardware = $device['hardware'];
+    $version = $device['version'];
+    $old_rebooted = $device['rebooted'];
+    $features = $device['features'];
+    $location = $device['location'];
+    $uptime = $device['uptime'];
+    $os = $device['os'];
+    if($os == "FreeBSD" || $os == "Linux" || $os == "Windows") { $uptimeoid = ".1.3.6.1.2.1.25.1.1.0"; } else { $uptimeoid = "1.3.6.1.2.1.1.3.0"; }
+    $snmp = "$uptimeoid sysLocation.0 .1.3.6.1.2.1.47.1.1.1.1.13.1 sysDescr.0";
+    $snmpdata = `snmpget -O qv -v2c -c $community $hostname $snmp | grep -v "Cisco Internetwork Operating System Software"`;
+    $snmpdata = preg_replace("/^.*IOS/","", $snmpdata);
+    $snmpdata = trim($snmpdata);
+    list($sysUptime, $sysLocation, $ciscomodel, $sysDescr) = explode("\n", $snmpdata);
+    $sysUptime = str_replace("(", "", $sysUptime);
+    $sysUptime = str_replace(")", "", $sysUptime); 
+    list($days, $hours, $mins, $secs) = explode(":", $sysUptime);
+    list($secs, $microsecs) = explode(".", $secs);
+    $timeticks =  mktime(0, $secs, $mins, $hours, $days, 0);
+    $hours = $hours + ($days * 24);
+    $mins = $mins + ($hours * 60);
+    $secs = $secs + ($mins * 60);
+    $newuptime = $secs;
+    if($os == "Windows") {
+	if(strstr($sysDescr, "x86")) { $newhardware = "x86 PC"; }
+	if(strstr($sysDescr, "Windows Version 5.2")) { $newversion = "2003 Server"; }
+	if(strstr($sysDescr, "Uniprocessor Free")) { $newfeatures = "Uniprocessor"; }
+        if(strstr($sysDescr, "Multiprocessor Free")) { $newfeatures = "Multiprocessor"; }
+    }
+    if($os == "FreeBSD") {
+      $sysDescr = str_replace(" 0 ", " ", $sysDescr);
+      list(,,$newversion) = explode (" ", $sysDescr);
+      $newhardware = "Generic";
+      list($newversion,$newfeatures) = explode("-", $newversion);
+    }
+    if($os == "Linux") {
+      list(,,$newversion) = explode (" ", $sysDescr); 
+      if(strstr($sysDescr, "386")|| strstr($sysDescr, "486")||strstr($sysDescr, "586")||strstr($sysDescr, "686")) { $newhardware = "Generic x86"; }
+      list($newversion,$newfeatures,$newfeaturesb) = explode("-", $newversion);
+    }
+    if ($os == "IOS") {
+      $newversion = str_replace("Cisco IOS Software,", "", $sysDescr);
+      $newversion = str_replace("IOS (tm) ", "", $newversion);
+      $newversion = str_replace(",RELEASE SOFTWARE", "", $newversion);
+      $newversion = str_replace(",MAINTENANCE INTERIM SOFTWARE", "", $newversion);
+      $newversion = str_replace("Version ","", $newversion);
+      $newversion = str_replace("Cisco Internetwork Operating System Software", "", $newversion);
+      $newversion = trim($newversion);
+      list($newversion) = explode("\n", $newversion);
+      $newversion = preg_replace("/^[A-Za-z0-9\ \_]*\(([A-Za-z0-9\-\_]*)\), (.+), .*/", "\\1|\\2", $newversion);
+      $newversion = str_replace("-M|", "|", $newversion);
+      $newversion = str_replace("-", "|", $newversion);
+      echo("$newversion");
+      list($newhardware, $newfeatures, $newversion) = explode("|", $newversion);;
+      $newfeatures = fixIOSFeatures($newfeatures);
+      $newhardware = fixIOSHardware($newhardware);
+      if(!strstr($ciscomodel, " ")) {
+        echo("$ciscomodel");
+        $newhardware = str_replacE("\"", "", $ciscomodel);
+      }
+    }
+    $newlocation = str_replace("\"","", $sysLocation); 
+
+  } else {
+    $newstatus = '0';
+  }
+
+  if ( $newlocation && $location != $newlocation ) {
+     $update = "`location` = '$newlocation'";
+     $seperator = ", ";
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed location from $location to $newlocation')");
+  }
+  if ( $newversion && $version != $newversion ) {
+     $update .= $seperator . "`version` = '$newversion'";
+     $seperator = ", ";
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed version from $version to $newversion')");
+  }
+  if ( $newfeatures && $newfeatures != $features ) {
+     $update .= $seperator . "`features` = '$newfeatures'";
+     $seperator = ", ";
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed features from $features to $newfeatures')");
+  }
+
+  if ( $newhardware && $newhardware != $hardware ) {
+     $update .= $seperator . "`hardware` = '$newhardware'";
+     $seperator = ", ";
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed hardware from $hardware to $newhardware')");
+  }
+
+  if ( $newuptime && $uptime != $newuptime ) {
+     $update .= $seperator . "`uptime` = '$newuptime'";
+     $seperator = ", ";
+  }
+  if ( $newuptime && $newuptime < $uptime  ) {
+     $update .= $seperator . "`lastchange` = NOW()";
+     $seperator = ", ";
+  } elseif($status != $newstatus) { 
+     $update .= $seperator . "`lastchange` = NOW()";
+     $seperator = ", ";
+  }
+  if( $status != $newstatus ) {
+     $update .= $seperator . "`status` = '$newstatus'";
+     $seperator = ", ";
+     if ($newstatus == '1') { $stat = "Up"; 
+       mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('0', '$id', 'Device is up\n')");
+     } else { 
+       $stat = "Down"; 
+       mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('9', '$id', 'Device is down\n')");
+     }
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Device status changed to $stat')");
+  }
+  if ($update) {
+     $update_query  = "UPDATE `devices` SET ";
+     $update_query .= $update;
+     $update_query .= " WHERE `id` = '$id'";
+     echo("Updating : $hostname\n$update_query\n\n");
+     $update_result = mysql_query($update_query);
+  } else {
+     echo("Not Updating : $hostname \n\n");
+  }
+}   
+
+?>
diff --git a/check-services.php b/check-services.php
new file mode 100755
index 0000000000..76dd735842
--- /dev/null
+++ b/check-services.php
@@ -0,0 +1,30 @@
+#!/usr/bin/php
+<?php
+include("config.php");
+include("includes/functions.php");
+  
+$sql = "SELECT * FROM devices AS D, services AS S WHERE D.status = '1' AND S.service_host = D.id ORDER by D.id DESC";
+$query = mysql_query($sql);
+while ($service = mysql_fetch_array($query)) {
+
+  unset($check, $service_status, $time, $status);
+
+  $service_status = $service['service_status'];
+
+  $service_type = strtolower($service[service_type]);
+
+  $service_param = $service['service_param'];
+
+  $checker_script = "includes/services/" . $service_type . "/check.inc";
+
+  if(is_file($checker_script)) {
+    include($checker_script);
+  } else {
+    $status = "2";
+    $check = "Error : Script not found ($checker_script)";
+  }
+  if($service_status != $status) { $updated = ", `service_changed` = '" . time() . "' "; } else { unset($updated); }
+  mysql_query("UPDATE `services` SET `service_status` = '$status', `service_message` = '$check', `service_checked` = '" . time() . "' $updated WHERE `service_id` = '$service[service_id]'");
+
+}
+?>
diff --git a/checkers/check_bl b/checkers/check_bl
new file mode 100755
index 0000000000..f0632d27e1
--- /dev/null
+++ b/checkers/check_bl
@@ -0,0 +1,160 @@
+#!/usr/bin/perl -w
+#
+# check_bl plugin for nagios
+# $Revision: 1.0 $ 
+# 
+# Nagios plugin designed to warn you if you mail servers appear in one of the 
+# many anti-spam 'blacklists'
+#
+# By Sam Bashton, Bashton Ltd
+# bashton.com/content/nagios-plugins
+#
+#    This program is free software; you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation; either version 2 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program; if not, write to the Free Software
+#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+use strict;
+use lib "/usr/lib/nagios/plugins";
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+use Net::DNS;
+use vars qw($PROGNAME);
+my ($verbose,$host),;
+my ($opt_V,$opt_h,$opt_B,$opt_H,$opt_c);
+$opt_V = $opt_h = $opt_B = $opt_H = $opt_c = '';
+my $state = 'UNKNOWN';
+sub print_help();
+sub print_usage();
+
+$PROGNAME = "check_bl";
+
+$ENV{'BASH_ENV'}=''; 
+$ENV{'ENV'}='';
+$ENV{'PATH'}='';
+$ENV{'LC_ALL'}='C';
+
+use Getopt::Long;
+Getopt::Long::Configure('bundling');
+GetOptions(
+  "V"   => \$opt_V,   "version"       => \$opt_V,
+  "h"   => \$opt_h,   "help"          => \$opt_h,
+  "H=s" => \$opt_H,   "hostname=s"    => \$opt_H,
+  "B=s" => \$opt_B,   "blacklists=s"  => \$opt_B,
+  "c=s" => \$opt_c,   "critical=s"    => \$opt_c
+);
+
+# -h means display verbose help screen
+if ($opt_h) { print_help(); exit $ERRORS{'OK'}; }
+
+# -V means display version number
+if ($opt_V) { 
+  print_revision($PROGNAME,'$Revision: 1.0 $ '); 
+  exit $ERRORS{'OK'}; 
+}
+
+# First check the hostname is OK..
+unless ($opt_H) { print_usage(); exit $ERRORS{'UNKNOWN'}; }
+
+if (! utils::is_hostname($opt_H)){
+  print "$opt_H is not a valid host name\n";
+  print_usage();
+  exit $ERRORS{"UNKNOWN"};
+}else{
+  if ($opt_H =~ /[a-zA-Z]/ )
+  # If the host contains letters we assume it's a hostname, not an IP
+  {  
+    $host = lookup($opt_H);
+  }
+  else { $host = $opt_H }
+}
+
+
+# $opt_c is a count of the blacklists a mail server is in,
+# after which state will be CRITICAL rather than WARNING
+# By default any listing is CRITICAL
+my $critcount = 0;
+if ($opt_c) { $critcount = $opt_c };
+
+# $opt_B is a comma seperated list of blacklists
+$opt_B = shift unless ($opt_B);
+unless ($opt_B) { print_usage(); exit -1 }
+my @bls = split(/,/, $opt_B);
+
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+  print ("ERROR: No response from BL server (alarm)\n");
+  exit $ERRORS{"UNKNOWN"};
+};
+alarm($TIMEOUT);
+
+my %listed; # Hash of blacklists we're listed in.
+foreach(@bls)
+{
+  if (blcheck($host,$_)) { $listed{$_} = 1 }
+}
+
+if (scalar(keys(%listed)) == 0) { $state = 'OK' }
+elsif (scalar(keys(%listed)) < $critcount) { $state = 'WARNING' }
+else { $state = 'CRITICAL' }
+
+if (%listed) 
+{
+  print "Listed at"; 
+  foreach (keys(%listed)) { print " $_" }
+  print "\n";
+}
+else { print "Not black-listed\n" }
+
+exit $ERRORS{$state};
+
+
+########  Subroutines ==========================
+
+
+sub print_help() {
+  print_revision($PROGNAME,'$Revision: 1.0 $ ');
+  print "\n";
+  support();
+}
+
+sub print_usage () {
+  print "Usage: \n";
+  print " $PROGNAME -H host -B [blacklist1],[blacklist2] [-c critnum]\n";
+  print " $PROGNAME [-h | --help]\n";
+  print " $PROGNAME [-V | --version]\n";
+}
+
+sub blcheck
+{
+  my ($ip, $bl) = @_;
+  my $lookupip = $ip;
+  $lookupip =~
+  s/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/$4.$3.$2.$1.$bl/;
+  if (lookup($lookupip)) { return 1 }
+  else { return 0 }
+}
+
+sub lookup
+{
+  my $tolookup = shift;
+  my $res = Net::DNS::Resolver->new;
+  my $query = $res->search($tolookup);
+  if ($query)
+  {
+    foreach my $rr ($query->answer)
+    {
+      next unless $rr->type eq "A"; # We're not interested in TXT records
+      return $rr->address;
+    }
+  }
+}
diff --git a/checkers/check_breeze b/checkers/check_breeze
new file mode 100755
index 0000000000..990e981636
--- /dev/null
+++ b/checkers/check_breeze
@@ -0,0 +1,87 @@
+#! /usr/bin/perl -wT
+
+
+use strict;
+use Getopt::Long;
+use vars qw($opt_V $opt_h $opt_w $opt_c $opt_H $opt_C $PROGNAME);
+use lib "/usr/lib/nagios/plugins" ;
+use utils qw(%ERRORS &print_revision &support &usage);
+
+$PROGNAME = "check_breeze";
+
+sub print_help ();
+sub print_usage ();
+
+$ENV{'PATH'}='';
+$ENV{'BASH_ENV'}=''; 
+$ENV{'ENV'}='';
+
+Getopt::Long::Configure('bundling');
+GetOptions
+	("V"   => \$opt_V, "version"    => \$opt_V,
+	 "h"   => \$opt_h, "help"       => \$opt_h,
+	 "w=s" => \$opt_w, "warning=s"  => \$opt_w,
+	 "c=s" => \$opt_c, "critical=s" => \$opt_c,
+	 "H=s" => \$opt_H, "hostname=s" => \$opt_H,
+	 "C=s" => \$opt_C, "community=s" => \$opt_C);
+
+if ($opt_V) {
+	print_revision($PROGNAME,'$Revision: 1.5 $');
+	exit $ERRORS{'OK'};
+}
+
+if ($opt_h) {print_help(); exit $ERRORS{'OK'};}
+
+($opt_H) || usage("Host name/address not specified\n");
+my $host = $1 if ($opt_H =~ /([-.A-Za-z0-9]+)/);
+($host) || usage("Invalid host: $opt_H\n");
+
+($opt_w) || usage("Warning threshold not specified\n");
+my $warning = $1 if ($opt_w =~ /([0-9]{1,2}|100)+/);
+($warning) || usage("Invalid warning threshold: $opt_w\n");
+
+($opt_c) || usage("Critical threshold not specified\n");
+my $critical = $1 if ($opt_c =~ /([0-9]{1,2}|100)/);
+($critical) || usage("Invalid critical threshold: $opt_c\n");
+
+($opt_C) || ($opt_C = "public") ;
+
+my $sig=0;
+$sig = `/usr/bin/snmpget $host $opt_C .1.3.6.1.4.1.710.3.2.3.1.3.0`;
+my @test=split(/ /,$sig);
+$sig=$test[2];
+$sig=int($sig);
+if ($sig>100){$sig=100}
+
+print "Signal Strength at: $sig%\n";
+
+exit $ERRORS{'CRITICAL'} if ($sig<$critical);
+exit $ERRORS{'WARNING'} if ($sig<$warning);
+exit $ERRORS{'OK'};
+
+
+sub print_usage () {
+	print "Usage: $PROGNAME -H <host> [-C community] -w <warn> -c <crit>\n";
+}
+
+sub print_help () {
+	print_revision($PROGNAME,'$Revision: 1.5 $');
+	print "Copyright (c) 2000 Jeffrey Blank/Karl DeBisschop
+
+This plugin reports the signal strength of a Breezecom wireless equipment
+
+";
+	print_usage();
+	print "
+-H, --hostname=HOST
+   Name or IP address of host to check
+-C, --community=community
+   SNMPv1 community (default public)
+-w, --warning=INTEGER
+   Percentage strength below which a WARNING status will result
+-c, --critical=INTEGER
+   Percentage strength below which a CRITICAL status will result
+
+";
+	support();
+}
diff --git a/checkers/check_by_ssh b/checkers/check_by_ssh
new file mode 100755
index 0000000000..9d3d1e5b18
Binary files /dev/null and b/checkers/check_by_ssh differ
diff --git a/checkers/check_dhcp b/checkers/check_dhcp
new file mode 100755
index 0000000000..9a4e4a3ef1
Binary files /dev/null and b/checkers/check_dhcp differ
diff --git a/checkers/check_dig b/checkers/check_dig
new file mode 100755
index 0000000000..cd9af25c86
Binary files /dev/null and b/checkers/check_dig differ
diff --git a/checkers/check_disk b/checkers/check_disk
new file mode 100755
index 0000000000..26f20d852d
Binary files /dev/null and b/checkers/check_disk differ
diff --git a/checkers/check_disk_smb b/checkers/check_disk_smb
new file mode 100755
index 0000000000..80b3e2d930
--- /dev/null
+++ b/checkers/check_disk_smb
@@ -0,0 +1,296 @@
+#! /usr/bin/perl -w
+#
+#
+# check_disk.pl <host> <share> <user> <pass> [warn] [critical] [port]
+#
+# Nagios host script to get the disk usage from a SMB share
+#
+# Changes and Modifications
+# =========================
+# 7-Aug-1999 - Michael Anthon
+#  Created from check_disk.pl script provided with netsaint_statd (basically
+#  cause I was too lazy (or is that smart?) to write it from scratch)
+# 8-Aug-1999 - Michael Anthon
+#  Modified [warn] and [critical] parameters to accept format of nnn[M|G] to
+#  allow setting of limits in MBytes or GBytes.  Percentage settings for large
+#  drives is a pain in the butt
+# 2-May-2002 - SGhosh fix for embedded perl
+#
+# $Id: check_disk_smb.pl,v 1.12 2005/04/17 22:22:41 seanius Exp $
+#
+
+require 5.004;
+use POSIX;
+use strict;
+use Getopt::Long;
+use vars qw($opt_P $opt_V $opt_h $opt_H $opt_s $opt_W $opt_u $opt_p $opt_w $opt_c $opt_a $verbose);
+use vars qw($PROGNAME);
+use lib "/usr/lib/nagios/plugins" ;
+use utils qw($TIMEOUT %ERRORS &print_revision &support &usage);
+
+sub print_help ();
+sub print_usage ();
+
+$PROGNAME = "check_disk_smb";
+
+$ENV{'PATH'}='';
+$ENV{'BASH_ENV'}=''; 
+$ENV{'ENV'}='';
+
+Getopt::Long::Configure('bundling');
+GetOptions
+	("v"   => \$verbose, "verbose"    => \$verbose,
+	 "P=s" => \$opt_P, "port=s"     => \$opt_P,
+	 "V"   => \$opt_V, "version"    => \$opt_V,
+	 "h"   => \$opt_h, "help"       => \$opt_h,
+	 "w=s" => \$opt_w, "warning=s"  => \$opt_w,
+	 "c=s" => \$opt_c, "critical=s" => \$opt_c,
+	 "p=s" => \$opt_p, "password=s" => \$opt_p,
+	 "u=s" => \$opt_u, "username=s" => \$opt_u,
+	 "s=s" => \$opt_s, "share=s"    => \$opt_s,
+	 "W=s" => \$opt_W, "workgroup=s" => \$opt_W,
+	 "H=s" => \$opt_H, "hostname=s" => \$opt_H,
+	 "a=s" => \$opt_a, "address=s" => \$opt_a);
+
+if ($opt_V) {
+	print_revision($PROGNAME,'$Revision: 1.12 $'); #'
+	exit $ERRORS{'OK'};
+}
+
+if ($opt_h) {print_help(); exit $ERRORS{'OK'};}
+
+my $smbclient= "$utils::PATH_TO_SMBCLIENT " ;
+my $smbclientoptions= $opt_P ? "-p $opt_P " : "";
+
+
+# Options checking
+
+($opt_H) || ($opt_H = shift) || usage("Host name not specified\n");
+my $host = $1 if ($opt_H =~ /^([-_.A-Za-z0-9 ]+\$?)$/);
+($host) || usage("Invalid host: $opt_H\n");
+
+($opt_s) || ($opt_s = shift) || usage("Share volume not specified\n");
+my $share = $1 if ($opt_s =~ /^([-_.A-Za-z0-9]+\$?)$/);
+($share) || usage("Invalid share: $opt_s\n");
+
+($opt_u) || ($opt_u = shift) || ($opt_u = "guest");
+my $user = $1 if ($opt_u =~ /^([-_.A-Za-z0-9\\]+)$/);
+($user) || usage("Invalid user: $opt_u\n");
+
+($opt_p) || ($opt_p = shift) || ($opt_p = "");
+my $pass = $1 if ($opt_p =~ /(.*)/);
+
+($opt_w) || ($opt_w = shift) || ($opt_w = 85);
+my $warn = $1 if ($opt_w =~ /^([0-9]{1,2}\%?|100\%?|[0-9]+[kMG])$/);
+($warn) || usage("Invalid warning threshold: $opt_w\n");
+
+($opt_c) || ($opt_c = shift) || ($opt_c = 95);
+my $crit = $1 if ($opt_c =~ /^([0-9]{1,2}\%?|100\%?|[0-9]+[kMG])$/);
+($crit) || usage("Invalid critical threshold: $opt_c\n");
+
+# split the type from the unit value
+#Check $warn and $crit for type (%/M/G) and set up for tests
+#P = Percent, K = KBytes
+my $warn_type;
+my $crit_type;
+
+if ($opt_w =~ /^([0-9]+)\%?$/) {
+	$warn = "$1";
+	$warn_type = "P";
+} elsif ($opt_w =~ /^([0-9]+)k$/) {
+	$warn_type = "K";
+	$warn = $1;
+} elsif ($opt_w =~ /^([0-9]+)M$/) {
+	$warn_type = "K";
+	$warn = $1 * 1024;
+} elsif ($opt_w =~ /^([0-9]+)G$/) {
+	$warn_type = "K";
+	$warn = $1 * 1048576;
+}
+if ($opt_c =~ /^([0-9]+)\%?$/) {
+	$crit = "$1";
+	$crit_type = "P";
+} elsif ($opt_c =~ /^([0-9]+)k$/) {
+	$crit_type = "K";
+	$crit = $1;
+} elsif ($opt_c =~ /^([0-9]+)M$/) {
+	$crit_type = "K";
+	$crit = $1 * 1024;
+} elsif ($opt_c =~ /^([0-9]+)G$/) {
+	$crit_type = "K";
+	$crit = $1 * 1048576;
+}
+
+# check if both warning and critical are percentage or size
+unless( ( $warn_type eq "P" && $crit_type eq "P" ) || ( $warn_type ne "P" && $crit_type ne "P" ) ){
+	$opt_w =~ s/\%/\%\%/g;
+	$opt_c =~ s/\%/\%\%/g;
+	usage("Both warning and critical should be same type- warning: $opt_w critical: $opt_c \n");
+}
+
+# verify warning is less than critical
+if ( $warn_type eq "K") {
+	unless ( $warn > $crit) {
+		usage("Disk size: warning ($opt_w) should be greater than critical ($opt_c) \n");
+	}
+}else{
+	unless ( $warn < $crit) {
+		$opt_w =~ s/\%/\%\%/g;
+		$opt_c =~ s/\%/\%\%/g;
+		usage("Percentage: warning ($opt_w) should be less than critical ($opt_c) \n");
+	}
+}
+
+my $workgroup = $1 if (defined($opt_W) && $opt_W =~ /(.*)/);
+
+my $address = $1 if (defined($opt_a) && $opt_a =~ /(.*)/);
+
+# end of options checking
+
+
+my $state = "OK";
+my $answer = undef;
+my $res = undef;
+my @lines = undef;
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub { 
+	print "No Answer from Client\n";
+	exit $ERRORS{"UNKNOWN"};
+};
+alarm($TIMEOUT);
+
+# Execute an "ls" on the share using smbclient program
+# get the results into $res
+if (defined($workgroup)) {
+	if (defined($address)) {
+		print "$smbclient " . "\/\/$host\/$share" ." $pass -W $workgroup -U $user $smbclientoptions -I $address -c ls\n" if ($verbose);
+		$res = qx/$smbclient "\/\/$host\/$share" $pass -W $workgroup -U $user $smbclientoptions -I $address -c ls/;
+	} else {
+		print "$smbclient " . "\/\/$host\/$share" ." $pass -W $workgroup -U $user $smbclientoptions -c ls\n" if ($verbose);
+		$res = qx/$smbclient "\/\/$host\/$share" $pass -W $workgroup -U $user $smbclientoptions -c ls/;
+	}
+} else {
+	if (defined($address)) {
+		print "$smbclient " . "\/\/$host\/$share" ." $pass -U $user $smbclientoptions -I $address -c ls\n" if ($verbose);
+		$res = qx/$smbclient "\/\/$host\/$share" $pass -U $user $smbclientoptions -I $address -c ls/;
+	} else {
+		print "$smbclient " . "\/\/$host\/$share" ." $pass -U $user $smbclientoptions -c ls\n" if ($verbose);
+		$res = qx/$smbclient "\/\/$host\/$share" $pass -U $user $smbclientoptions -c ls/;
+	}
+}
+#Turn off alarm
+alarm(0);
+
+#Split $res into an array of lines
+@lines = split /\n/, $res;
+
+#Get the last line into $_
+$_ = $lines[$#lines];
+#print "$_\n";
+
+#Process the last line to get free space.  
+#If line does not match required regexp, return an UNKNOWN error
+if (/\s*(\d*) blocks of size (\d*)\. (\d*) blocks available/) {
+
+	my ($avail) = ($3*$2)/1024;
+	my ($avail_bytes) = $avail;
+	my ($capper) = int(($3/$1)*100);
+	my ($mountpt) = "\\\\$host\\$share";
+
+
+	if (int($avail / 1024) > 0) {
+		$avail = int($avail / 1024);
+		if (int($avail /1024) > 0) {
+			$avail = (int(($avail / 1024)*100))/100;
+			$avail = $avail ."G";
+		} else {
+			$avail = $avail ."M";
+		}
+	} else {
+		$avail = $avail ."K";
+	}
+
+#print ":$warn:$warn_type:\n";
+#print ":$crit:$crit_type:\n";
+#print ":$avail:$avail_bytes:$capper:$mountpt:\n";
+
+	if ((($warn_type eq "P") && (100 - $capper) < $warn) || (($warn_type eq "K") && ($avail_bytes > $warn))) { 
+		$answer = "Disk ok - $avail ($capper%) free on $mountpt\n";
+	} elsif ((($crit_type eq "P") && (100 - $capper) < $crit) || (($crit_type eq "K") && ($avail_bytes > $crit))) {
+		$state = "WARNING";
+		$answer = "WARNING: Only $avail ($capper%) free on $mountpt\n";
+	} else {
+		$state = "CRITICAL";
+		$answer = "CRITICAL: Only $avail ($capper%) free on $mountpt\n";
+	}
+} else {
+	$answer = "Result from smbclient not suitable\n";
+	$state = "UNKNOWN";
+	foreach (@lines) {
+		if (/(Access denied|NT_STATUS_LOGON_FAILURE)/) {
+			$answer = "Access Denied\n";
+			$state = "CRITICAL";
+			last;
+		}
+		if (/(Unknown host \w*|Connection.*failed)/) {
+			$answer = "$1\n";
+			$state = "CRITICAL";
+			last;
+		}
+		if (/(You specified an invalid share name|NT_STATUS_BAD_NETWORK_NAME)/) {
+			$answer = "Invalid share name \\\\$host\\$share\n";
+			$state = "CRITICAL";
+			last;
+		}
+	}
+}
+
+
+print $answer;
+print "$state\n" if ($verbose);
+exit $ERRORS{$state};
+
+sub print_usage () {
+	print "Usage: $PROGNAME -H <host> -s <share> -u <user> -p <password> 
+      -w <warn> -c <crit> [-W <workgroup>] [-P <port>] [-a <IP>]\n";
+}
+
+sub print_help () {
+	print_revision($PROGNAME,'$Revision: 1.12 $');
+	print "Copyright (c) 2000 Michael Anthon/Karl DeBisschop
+
+Perl Check SMB Disk plugin for Nagios
+
+";
+	print_usage();
+	print "
+-H, --hostname=HOST
+   NetBIOS name of the server
+-s, --share=STRING
+   Share name to be tested
+-W, --workgroup=STRING
+   Workgroup or Domain used (Defaults to \"WORKGROUP\")
+-a, --address=IP
+   IP-address of HOST (only necessary if HOST is in another network)
+-u, --user=STRING
+   Username to log in to server. (Defaults to \"guest\")
+-p, --password=STRING
+   Password to log in to server. (Defaults to an empty password)
+-w, --warning=INTEGER or INTEGER[kMG]
+   Percent of used space at which a warning will be generated (Default: 85%)
+      
+-c, --critical=INTEGER or INTEGER[kMG]
+   Percent of used space at which a critical will be generated (Defaults: 95%)
+-P, --port=INTEGER
+   Port to be used to connect to. Some Windows boxes use 139, others 445 (Defaults to smbclient default)
+   
+   If thresholds are followed by either a k, M, or G then check to see if that
+   much disk space is available (kilobytes, Megabytes, Gigabytes)
+
+   Warning percentage should be less than critical
+   Warning (remaining) disk space should be greater than critical.
+
+";
+	support();
+}
diff --git a/checkers/check_dns b/checkers/check_dns
new file mode 100755
index 0000000000..02e164e79f
Binary files /dev/null and b/checkers/check_dns differ
diff --git a/checkers/check_dummy b/checkers/check_dummy
new file mode 100755
index 0000000000..e1d1319712
Binary files /dev/null and b/checkers/check_dummy differ
diff --git a/checkers/check_file_age b/checkers/check_file_age
new file mode 100755
index 0000000000..a1ed17cebb
--- /dev/null
+++ b/checkers/check_file_age
@@ -0,0 +1,113 @@
+#! /usr/bin/perl -w
+# $Id: check_file_age.pl,v 1.2 2003/10/21 15:56:35 tonvoon Exp $
+
+# check_file_age.pl Copyright (C) 2003 Steven Grimm <koreth-nagios@midwinter.com>
+#
+# Checks a file's size and modification time to make sure it's not empty
+# and that it's sufficiently recent.
+#
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# you should have received a copy of the GNU General Public License
+# along with this program (or with Nagios);  if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA
+
+use strict;
+use English;
+use Getopt::Long;
+use File::stat;
+use vars qw($PROGNAME);
+use lib "/usr/lib/nagios/plugins";
+use utils qw (%ERRORS &print_revision &support);
+
+sub print_help ();
+sub print_usage ();
+
+my ($opt_c, $opt_f, $opt_w, $opt_C, $opt_W, $opt_h, $opt_V);
+my ($result, $message, $age, $size, $st);
+
+$PROGNAME="check_file_age";
+
+$opt_w = 240;
+$opt_c = 600;
+$opt_W = 0;
+$opt_C = 0;
+$opt_f = "";
+
+Getopt::Long::Configure('bundling');
+GetOptions(
+	"V"   => \$opt_V, "version"	=> \$opt_V,
+	"h"   => \$opt_h, "help"	=> \$opt_h,
+	"f=s" => \$opt_f, "file"	=> \$opt_f,
+	"w=f" => \$opt_w, "warning-age=f" => \$opt_w,
+	"W=f" => \$opt_W, "warning-size=f" => \$opt_W,
+	"c=f" => \$opt_c, "critical-age=f" => \$opt_c,
+	"C=f" => \$opt_C, "critical-size=f" => \$opt_C);
+
+if ($opt_V) {
+	print_revision($PROGNAME, '$Id: check_file_age.pl,v 1.2 2003/10/21 15:56:35 tonvoon Exp $');
+	exit $ERRORS{'OK'};
+}
+
+if ($opt_h) {
+	print_help();
+	exit $ERRORS{'OK'};
+}
+
+$opt_f = shift unless ($opt_f);
+
+if (! $opt_f) {
+	print "No file specified\n";
+	exit $ERRORS{'UNKNOWN'};
+}
+
+# Examine the file.
+unless (-f $opt_f) {
+	print "$opt_f: File not found\n";
+	exit $ERRORS{'UNKNOWN'};
+}
+
+$st = File::stat::stat($opt_f);
+$age = time - $st->mtime;
+$size = $st->size;
+
+
+$result = 'OK';
+
+if (($opt_c and $age > $opt_c) or ($opt_C and $size < $opt_C)) {
+	$result = 'CRITICAL';
+}
+elsif (($opt_w and $age > $opt_w) or ($opt_W and $size < $opt_W)) {
+	$result = 'WARNING';
+}
+
+print "$result - $opt_f is $age seconds old and $size bytes\n";
+exit $ERRORS{$result};
+
+sub print_usage () {
+	print "Usage:\n";
+	print "  $PROGNAME [-w <secs>] [-c <secs>] [-W <size>] [-C <size>] -f <file>\n";
+	print "  $PROGNAME [-h | --help]\n";
+	print "  $PROGNAME [-V | --version]\n";
+}
+
+sub print_help () {
+	print_revision($PROGNAME, '$Id: check_file_age.pl,v 1.2 2003/10/21 15:56:35 tonvoon Exp $');
+	print "Copyright (c) 2003 Steven Grimm\n\n";
+	print_usage();
+	print "\n";
+	print "  <secs>  File must be no more than this many seconds old\n";
+	print "  <size>  File must be at least this many bytes long\n";
+	print "\n";
+	support();
+}
diff --git a/checkers/check_flexlm b/checkers/check_flexlm
new file mode 100755
index 0000000000..f77478a37d
--- /dev/null
+++ b/checkers/check_flexlm
@@ -0,0 +1,245 @@
+#! /usr/bin/perl -w
+#
+# usage: 
+#    check_flexlm.pl license_file
+#
+# Check available flexlm license managers.
+# Use lmstat to check the status of the license server
+# described by the license file given as argument.
+# Check and interpret the output of lmstat
+# and create returncodes and output.
+#
+# Contrary to the nagios concept, this script takes
+# a file, not a hostname as an argument and returns
+# the status of hosts and services described in that
+# file. Use these hosts.cfg entries as an example
+#
+#host[anchor]=any host will do;some.address.com;;check-host-alive;3;120;24x7;1;1;1;
+#service[anchor]=yodel;24x7;3;5;5;unix-admin;60;24x7;1;1;1;;check_flexlm!/opt/lic/licfiles/yodel_lic
+#service[anchor]=yeehaw;24x7;3;5;5;unix-admin;60;24x7;1;1;1;;check_flexlm!/opt/lic/licfiles/yeehaw_lic
+#command[check_flexlm]=/some/path/libexec/check_flexlm.pl $ARG1$
+#
+# Notes:
+# - you need the lmstat utility which comes with flexlm.
+# - set the correct path in the variable $lmstat.
+#
+# initial version: 9-10-99 Ernst-Dieter Martin edmt@infineon.com
+#
+# License: GPL
+# $Id: check_flexlm.pl,v 1.6 2003/02/04 06:16:16 sghosh Exp $
+#
+# lmstat output patches from Steve Rigler/Cliff Rice 13-Apr-2002
+# srigler@marathonoil.com,cerice@marathonoil.com
+
+
+
+use strict;
+use Getopt::Long;
+use vars qw($opt_V $opt_h $opt_F $opt_t $verbose $PROGNAME);
+use lib "/usr/lib/nagios/plugins";
+use utils qw(%ERRORS &print_revision &support &usage);
+
+$PROGNAME="check_flexlm";
+
+sub print_help ();
+sub print_usage ();
+
+$ENV{'PATH'}='';
+$ENV{'BASH_ENV'}=''; 
+$ENV{'ENV'}='';
+
+Getopt::Long::Configure('bundling');
+GetOptions
+	("V"   => \$opt_V,   "version"    => \$opt_V,
+	 "h"   => \$opt_h,   "help"       => \$opt_h,
+	 "v"   => \$verbose, "verbose"    => \$verbose,
+	 "F=s" => \$opt_F,   "filename=s" => \$opt_F,
+	 "t=i" => \$opt_t, "timeout=i"  => \$opt_t);
+
+if ($opt_V) {
+	print_revision($PROGNAME,'$Revision: 1.6 $');
+	exit $ERRORS{'OK'};
+}
+
+unless (defined $opt_t) {
+	$opt_t = $utils::TIMEOUT ;	# default timeout
+}
+
+
+if ($opt_h) {print_help(); exit $ERRORS{'OK'};}
+
+unless (defined $opt_F) {
+	print "Missing license.dat file\n";
+	print_usage();
+	exit $ERRORS{'UNKNOWN'};
+}
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+	print "Timeout: No Answer from Client\n";
+	exit $ERRORS{'UNKNOWN'};
+};
+alarm($opt_t);
+
+my $lmstat = $utils::PATH_TO_LMSTAT ;
+unless (-x $lmstat ) {
+	print "Cannot find \"lmstat\"\n";
+	exit $ERRORS{'UNKNOWN'};
+}
+
+($opt_F) || ($opt_F = shift) || usage("License file not specified\n");
+my $licfile = $1 if ($opt_F =~ /^(.*)$/);
+($licfile) || usage("Invalid filename: $opt_F\n");
+
+print "$licfile\n" if $verbose;
+
+if ( ! open(CMD,"$lmstat -c $licfile |") ) {
+	print "ERROR: Could not open \"$lmstat -c $licfile\" ($!)\n";
+	exit exit $ERRORS{'UNKNOWN'};
+}
+
+my $serverup = 0;
+my @upsrv; 
+my @downsrv;  # list of servers up and down
+
+#my ($ls1,$ls2,$ls3,$lf1,$lf2,$lf3,$servers);
+ 
+# key off of the term "license server" and 
+# grab the status.  Keep going until "Vendor" is found
+#
+
+#
+# Collect list of license servers by their status
+# Vendor daemon status is ignored for the moment.
+
+while ( <CMD> ) {
+	next if (/^lmstat/);   # ignore 1st line - copyright
+	next if (/^Flexible/); # ignore 2nd line - timestamp
+	(/^Vendor/) && last;   # ignore Vendor daemon status
+	print $_ if $verbose;
+	
+		if ($_ =~ /license server /) {	# matched 1 (of possibly 3) license server
+			s/^\s*//;					#some servers start at col 1, other have whitespace
+										# strip staring whitespace if any
+			if ( $_ =~ /UP/) {
+				$_ =~ /^(.*):/ ;
+				push(@upsrv, $1);
+				print "up:$1:\n" if $verbose;
+			} else {
+				$_ =~ /^(.*):/; 
+				push(@downsrv, $1);
+				print "down:$1:\n" if $verbose;
+			}
+		
+		}
+	
+
+#	if ( /^License server status: [0-9]*@([-0-9a-zA-Z_]*),[0-9]*@([-0-9a-zA-Z_]*),[0-9]*@([-0-9a-zA-Z_]*)/ ) {
+#	$ls1 = $1;
+#	$ls2 = $2;
+#	$ls3 = $3;
+#	$lf1 = $lf2 = $lf3 = 0;
+#	$servers = 3;
+#  } elsif ( /^License server status: [0-9]*@([-0-9a-zA-Z_]*)/ ) {
+#	$ls1 = $1;
+#	$ls2 = $ls3 = "";
+#	$lf1 = $lf2 = $lf3 = 0;
+#	$servers = 1;
+#  } elsif ( / *$ls1: license server UP/ ) {
+#	print "$ls1 UP, ";
+#	$lf1 = 1
+#  } elsif ( / *$ls2: license server UP/ ) {
+#	print "$ls2 UP, ";
+#	$lf2 = 1
+#  } elsif ( / *$ls3: license server UP/ ) {
+#	print "$ls3 UP, ";
+#	$lf3 = 1
+#  } elsif ( / *([^:]*: UP .*)/ ) {
+#	print " license server for $1\n";
+#	$serverup = 1;
+#  }
+
+}
+
+#if ( $serverup == 0 ) {
+#    print " license server not running\n";
+#    exit 2;	
+#}
+
+close CMD;
+
+if ($verbose) {
+	print "License Servers running: ".scalar(@upsrv) ."\n";
+	foreach my $upserver (@upsrv) {
+		print "$upserver\n";
+	}
+	print "License servers not running: ".scalar(@downsrv)."\n";
+	foreach my $downserver (@downsrv) {
+		print "$downserver\n";
+	}
+}
+
+#
+# print list of servers which are up. 
+#
+if (scalar(@upsrv) > 0) {
+   print "License Servers running:";
+   foreach my $upserver (@upsrv) {
+      print "$upserver,";
+   }
+}
+#
+# Ditto for those which are down.
+#
+if (scalar(@downsrv) > 0) {
+   print "License servers NOT running:";
+   foreach my $downserver (@downsrv) {
+      print "$downserver,";
+   }
+}
+
+# perfdata
+print "\n|flexlm::up:".scalar(@upsrv).";down:".scalar(@downsrv)."\n";
+
+exit $ERRORS{'OK'} if ( scalar(@downsrv) == 0 );
+exit $ERRORS{'WARNING'} if ( (scalar(@upsrv) > 0) && (scalar(@downsrv) > 0));
+
+#exit $ERRORS{'OK'} if ( $servers == $lf1 + $lf2 + $lf3 );
+#exit $ERRORS{'WARNING'} if ( $servers == 3 && $lf1 + $lf2 + $lf3 == 2 );
+exit $ERRORS{'CRITICAL'};
+
+
+sub print_usage () {
+	print "Usage:
+   $PROGNAME -F <filename> [-v] [-t] [-V] [-h]
+   $PROGNAME --help
+   $PROGNAME --version
+";
+}
+
+sub print_help () {
+	print_revision($PROGNAME,'$Revision: 1.6 $');
+	print "Copyright (c) 2000 Ernst-Dieter Martin/Karl DeBisschop
+
+Check available flexlm license managers
+
+";
+	print_usage();
+	print "
+-F, --filename=FILE
+   Name of license file (usually \"license.dat\")
+-v, --verbose
+   Print some extra debugging information (not advised for normal operation)
+-t, --timeout
+   Plugin time out in seconds (default = $utils::TIMEOUT )
+-V, --version
+   Show version and license information
+-h, --help
+   Show this help screen
+
+Flexlm license managers usually run as a single server or three servers and a
+quorum is needed.  The plugin return OK if 1 (single) or 3 (triple) servers
+are running, CRITICAL if 1(single) or 3 (triple) servers are down, and WARNING
+if 1 or 2 of 3 servers are running\n
+";
+	support();
+}
diff --git a/checkers/check_fping b/checkers/check_fping
new file mode 100755
index 0000000000..27f4bf8179
Binary files /dev/null and b/checkers/check_fping differ
diff --git a/checkers/check_ftp b/checkers/check_ftp
new file mode 120000
index 0000000000..e838da97eb
--- /dev/null
+++ b/checkers/check_ftp
@@ -0,0 +1 @@
+check_tcp
\ No newline at end of file
diff --git a/checkers/check_game b/checkers/check_game
new file mode 100755
index 0000000000..f1b47bb4e5
Binary files /dev/null and b/checkers/check_game differ
diff --git a/checkers/check_hpjd b/checkers/check_hpjd
new file mode 100755
index 0000000000..e59a7c1f8d
Binary files /dev/null and b/checkers/check_hpjd differ
diff --git a/checkers/check_http b/checkers/check_http
new file mode 100755
index 0000000000..a0520d4e60
Binary files /dev/null and b/checkers/check_http differ
diff --git a/checkers/check_icmp b/checkers/check_icmp
new file mode 100755
index 0000000000..aba7da4579
Binary files /dev/null and b/checkers/check_icmp differ
diff --git a/checkers/check_ifoperstatus b/checkers/check_ifoperstatus
new file mode 100755
index 0000000000..91c9b333c0
--- /dev/null
+++ b/checkers/check_ifoperstatus
@@ -0,0 +1,505 @@
+#! /usr/bin/perl -w
+#
+# check_ifoperstatus.pl - nagios plugin 
+#
+# Copyright (C) 2000 Christoph Kron,
+# Modified 5/2002 to conform to updated Nagios Plugin Guidelines
+# Added support for named interfaces per Valdimir Ivaschenko (S. Ghosh)
+# Added SNMPv3 support (10/2003)
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+#
+# Report bugs to:  nagiosplug-help@lists.sourceforge.net
+#
+# 11.01.2000 Version 1.0
+# $Id: check_ifoperstatus.pl,v 1.6 2004/12/07 03:13:14 mattkent Exp $
+#
+# Patches from Guy Van Den Bergh to warn on ifadminstatus down interfaces
+# instead of critical.
+#
+# Primary MIB reference - RFC 2863
+
+
+use POSIX;
+use strict;
+use lib "/usr/lib/nagios/plugins" ;
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+
+use Net::SNMP;
+use Getopt::Long;
+&Getopt::Long::config('bundling');
+
+my $PROGNAME = "check_ifoperstatus";
+sub print_help ();
+sub usage ();
+sub process_arguments ();
+
+my $timeout;
+my $status;
+my %ifOperStatus = 	('1','up',
+			 '2','down',
+			 '3','testing',
+			 '4','unknown',
+			 '5','dormant',
+			 '6','notPresent',
+			 '7','lowerLayerDown');  # down due to the state of lower layer interface(s)
+
+my $state = "UNKNOWN";
+my $answer = "";
+my $snmpkey = 0;
+my $community = "public";
+my $maxmsgsize = 1472 ; # Net::SNMP default is 1472
+my ($seclevel, $authproto, $secname, $authpass, $privpass, $auth, $priv, $context);
+my $port = 161;
+my @snmpoids;
+my $sysUptime        = '1.3.6.1.2.1.1.3.0';
+my $snmpIfDescr      = '1.3.6.1.2.1.2.2.1.2';
+my $snmpIfAdminStatus = '1.3.6.1.2.1.2.2.1.7';
+my $snmpIfOperStatus = '1.3.6.1.2.1.2.2.1.8';
+my $snmpIfName       = '1.3.6.1.2.1.31.1.1.1.1';
+my $snmpIfLastChange = '1.3.6.1.2.1.2.2.1.9';
+my $snmpIfAlias      = '1.3.6.1.2.1.31.1.1.1.18';
+my $snmpLocIfDescr   = '1.3.6.1.4.1.9.2.2.1.1.28';
+my $hostname;
+my $ifName;
+my $session;
+my $error;
+my $response;
+my $snmp_version = 1 ;
+my $ifXTable;
+my $opt_h ;
+my $opt_V ;
+my $ifdescr;
+my $key;
+my $lastc;
+my $dormantWarn;
+my $adminWarn;
+my $name;
+
+### Validate Arguments
+
+$status = process_arguments();
+
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+     print ("ERROR: No snmp response from $hostname (alarm)\n");
+     exit $ERRORS{"UNKNOWN"};
+};
+
+alarm($timeout);
+
+
+## map ifdescr to ifindex - should look at being able to cache this value
+
+if (defined $ifdescr) {
+	# escape "/" in ifdescr - very common in the Cisco world
+	$ifdescr =~ s/\//\\\//g;
+
+	$status=fetch_ifdescr();  # if using on device with large number of interfaces
+							  # recommend use of SNMP v2 (get-bulk)
+	if ($status==0) {
+		$state = "UNKNOWN";
+		printf "$state: could not retrive ifdescr snmpkey - $status-$snmpkey\n";
+		$session->close;
+		exit $ERRORS{$state};
+	}
+}
+
+
+## Main function
+
+$snmpIfAdminStatus = $snmpIfAdminStatus . "." . $snmpkey;
+$snmpIfOperStatus = $snmpIfOperStatus . "." . $snmpkey;
+$snmpIfDescr = $snmpIfDescr . "." . $snmpkey;
+$snmpIfName	= $snmpIfName . "." . $snmpkey ;
+$snmpIfAlias = $snmpIfAlias . "." . $snmpkey ; 
+
+push(@snmpoids,$snmpIfAdminStatus);
+push(@snmpoids,$snmpIfOperStatus);
+push(@snmpoids,$snmpIfDescr);
+push(@snmpoids,$snmpIfName) if (defined $ifXTable) ;
+push(@snmpoids,$snmpIfAlias) if (defined $ifXTable) ;
+
+   if (!defined($response = $session->get_request(@snmpoids))) {
+      $answer=$session->error;
+      $session->close;
+      $state = 'WARNING';
+      print ("$state: SNMP error: $answer\n");
+      exit $ERRORS{$state};
+   }
+
+   $answer = sprintf("host '%s', %s(%s) is %s\n", 
+      $hostname, 
+      $response->{$snmpIfDescr},
+      $snmpkey, 
+      $ifOperStatus{$response->{$snmpIfOperStatus}}
+   );
+
+
+   ## Check to see if ifName match is requested and it matches - exit if no match
+   ## not the interface we want to monitor
+   if ( defined $name && not ($response->{$snmpIfName} eq $name) ) {
+      $state = 'UNKNOWN';
+      $answer = "Interface name ($name) doesn't match snmp value ($response->{$snmpIfName}) (index $snmpkey)";
+      print ("$state: $answer");
+      exit $ERRORS{$state};
+   } 
+
+   ## define the interface name
+   if (defined $ifXTable) {
+     $name = $response->{$snmpIfName} ." - " .$response->{$snmpIfAlias} ; 
+   }else{
+     $name = $response->{$snmpIfDescr} ;
+   }
+   
+   ## if AdminStatus is down - some one made a consious effort to change config
+   ##
+   if ( not ($response->{$snmpIfAdminStatus} == 1) ) {
+     $answer = "Interface $name (index $snmpkey) is administratively down.";
+     if ( not defined $adminWarn or $adminWarn eq "w" ) {
+        $state = 'WARNING';
+     } elsif ( $adminWarn eq "i" ) {
+        $state = 'OK';
+     } elsif ( $adminWarn eq "c" ) {
+        $state = 'CRITICAL';
+     } else { # If wrong value for -a, say warning
+        $state = 'WARNING';
+     }
+   } 
+   ## Check operational status
+   elsif ( $response->{$snmpIfOperStatus} == 2 ) {
+      $state = 'CRITICAL';
+      $answer = "Interface $name (index $snmpkey) is down.";
+   } elsif ( $response->{$snmpIfOperStatus} == 5 ) {
+      if (defined $dormantWarn ) {
+				if ($dormantWarn eq "w") {
+		  	  $state = 'WARNING';
+				  $answer = "Interface $name (index $snmpkey) is dormant.";
+	  	  }elsif($dormantWarn eq "c") {
+	  	  	$state = 'CRITICAL';
+				  $answer = "Interface $name (index $snmpkey) is dormant.";
+        }elsif($dormantWarn eq "i") {
+	  		  $state = 'OK';
+		  		$answer = "Interface $name (index $snmpkey) is dormant.";
+        }
+			}else{
+	    	# dormant interface  - but warning/critical/ignore not requested
+	 	   $state = 'CRITICAL';
+		   $answer = "Interface $name (index $snmpkey) is dormant.";
+			}
+   } elsif ( $response->{$snmpIfOperStatus} == 6 ) {
+	   $state = 'CRITICAL';
+	   $answer = "Interface $name (index $snmpkey) notPresent - possible hotswap in progress.";
+   } elsif ( $response->{$snmpIfOperStatus} == 7 ) {
+	   $state = 'CRITICAL';
+	   $answer = "Interface $name (index $snmpkey) down due to lower layer being down.";
+
+   } elsif ( $response->{$snmpIfOperStatus} == 3 || $response->{$snmpIfOperStatus} == 4  ) {
+	   $state = 'CRITICAL';
+	   $answer = "Interface $name (index $snmpkey) down (testing/unknown).";
+
+   } else {
+      $state = 'OK';
+      $answer = "Interface $name (index $snmpkey) is up.";
+   }
+
+
+
+print ("$state: $answer");
+exit $ERRORS{$state};
+
+
+### subroutines
+
+sub fetch_ifdescr {
+	if (!defined ($response = $session->get_table($snmpIfDescr))) {
+		$answer=$session->error;
+		$session->close;
+		$state = 'CRITICAL';
+		printf ("$state: SNMP error with snmp version $snmp_version ($answer)\n");
+		$session->close;
+		exit $ERRORS{$state};
+	}
+	
+	foreach $key ( keys %{$response}) {
+		if ($response->{$key} =~ /^$ifdescr$/) {
+			$key =~ /.*\.(\d+)$/;
+			$snmpkey = $1;
+			#print "$ifdescr = $key / $snmpkey \n";  #debug
+		}
+	}
+	unless (defined $snmpkey) {
+		$session->close;
+		$state = 'CRITICAL';
+		printf "$state: Could not match $ifdescr on $hostname\n";
+		exit $ERRORS{$state};
+	}
+	
+	return $snmpkey;
+}
+
+sub usage() {
+  printf "\nMissing arguments!\n";
+  printf "\n";
+  printf "usage: \n";
+  printf "check_ifoperstatus -k <IF_KEY> -H <HOSTNAME> [-C <community>]\n";
+  printf "Copyright (C) 2000 Christoph Kron\n";
+  printf "check_ifoperstatus.pl comes with ABSOLUTELY NO WARRANTY\n";
+  printf "This programm is licensed under the terms of the ";
+  printf "GNU General Public License\n(check source code for details)\n";
+  printf "\n\n";
+  exit $ERRORS{"UNKNOWN"};
+}
+
+sub print_help() {
+	printf "check_ifoperstatus plugin for Nagios monitors operational \n";
+  	printf "status of a particular network interface on the target host\n";
+	printf "\nUsage:\n";
+	printf "   -H (--hostname)   Hostname to query - (required)\n";
+	printf "   -C (--community)  SNMP read community (defaults to public,\n";
+	printf "                     used with SNMP v1 and v2c\n";
+	printf "   -v (--snmp_version)  1 for SNMP v1 (default)\n";
+	printf "                        2 for SNMP v2c\n";
+	printf "                        SNMP v2c will use get_bulk for less overhead\n";
+	printf "                        if monitoring with -d\n";
+	printf "   -L (--seclevel)   choice of \"noAuthNoPriv\", \"authNoPriv\", or	\"authPriv\"\n";
+	printf "   -U (--secname)    username for SNMPv3 context\n";
+	printf "   -c (--context)    SNMPv3 context name (default is empty	string)";
+	printf "   -A (--authpass)   authentication password (cleartext ascii or localized key\n";
+	printf "                     in hex with 0x prefix generated by using	\"snmpkey\" utility\n"; 
+	printf "                     auth password and authEngineID\n";
+	printf "   -a (--authproto)  Authentication protocol ( MD5 or SHA1)\n";
+	printf "   -X (--privpass)   privacy password (cleartext ascii or localized key\n";
+	printf "                     in hex with 0x prefix generated by using	\"snmpkey\" utility\n"; 
+	printf "                     privacy password and authEngineID\n";
+	printf "   -k (--key)        SNMP IfIndex value\n";
+	printf "   -d (--descr)      SNMP ifDescr value\n";
+	printf "   -p (--port)       SNMP port (default 161)\n";
+	printf "   -I (--ifmib)      Agent supports IFMIB ifXTable.  Do not use if\n";
+	printf "                     you don't know what this is. \n";
+	printf "   -n (--name)       the value should match the returned ifName\n";
+	printf "                     (Implies the use of -I)\n";
+	printf "   -w (--warn =i|w|c) ignore|warn|crit if the interface is dormant (default critical)\n";
+	printf "   -D (--admin-down =i|w|c) same for administratively down interfaces (default warning)\n";
+	printf "   -M (--maxmsgsize) Max message size - usefull only for v1 or v2c\n";
+	printf "   -t (--timeout)    seconds before the plugin times out (default=$TIMEOUT)\n";
+	printf "   -V (--version)    Plugin version\n";
+	printf "   -h (--help)       usage help \n\n";
+	printf " -k or -d must be specified\n\n";
+	printf "Note: either -k or -d must be specified and -d is much more network \n";
+	printf "intensive.  Use it sparingly or not at all.  -n is used to match against\n";
+	printf "a much more descriptive ifName value in the IfXTable to verify that the\n";
+	printf "snmpkey has not changed to some other network interface after a reboot.\n\n";
+	print_revision($PROGNAME, '$Revision: 1.6 $');
+	
+}
+
+sub process_arguments() {
+	$status = GetOptions(
+			"V"   => \$opt_V, "version"    => \$opt_V,
+			"h"   => \$opt_h, "help"       => \$opt_h,
+			"v=i" => \$snmp_version, "snmp_version=i"  => \$snmp_version,
+			"C=s" => \$community, "community=s" => \$community,
+			"L=s" => \$seclevel, "seclevel=s" => \$seclevel,
+			"a=s" => \$authproto, "authproto=s" => \$authproto,
+			"U=s" => \$secname,   "secname=s"   => \$secname,
+			"A=s" => \$authpass,  "authpass=s"  => \$authpass,
+			"X=s" => \$privpass,  "privpass=s"  => \$privpass,
+			"c=s" => \$context,   "context=s"   => \$context,
+			"k=i" => \$snmpkey, "key=i",\$snmpkey,
+			"d=s" => \$ifdescr, "descr=s" => \$ifdescr,
+			"l=s" => \$lastc,  "lastchange=s" => \$lastc,
+			"p=i" => \$port,  "port=i" =>\$port,
+			"H=s" => \$hostname, "hostname=s" => \$hostname,
+			"I"   => \$ifXTable, "ifmib" => \$ifXTable,
+			"n=s" => \$ifName, "name=s" => \$ifName,
+			"w=s" => \$dormantWarn, "warn=s" => \$dormantWarn,
+			"D=s" => \$adminWarn, "admin-down=s" => \$adminWarn,
+			"M=i" => \$maxmsgsize, "maxmsgsize=i" => \$maxmsgsize,
+			"t=i" => \$timeout,    "timeout=i" => \$timeout,
+			);
+
+
+				
+	if ($status == 0){
+		print_help();
+		exit $ERRORS{'OK'};
+	}
+  
+	if ($opt_V) {
+		print_revision($PROGNAME,'$Revision: 1.6 $ ');
+		exit $ERRORS{'OK'};
+	}
+
+	if ($opt_h) {
+		print_help();
+		exit $ERRORS{'OK'};
+	}
+
+	if (! utils::is_hostname($hostname)){
+		usage();
+		exit $ERRORS{"UNKNOWN"};
+	}
+
+
+	unless ($snmpkey > 0 || defined $ifdescr){
+		printf "Either a valid snmpkey key (-k) or a ifDescr (-d) must be provided)\n";
+		usage();
+		exit $ERRORS{"UNKNOWN"};
+	}
+
+
+	if (defined $name) {
+		$ifXTable=1;
+	}	
+
+	if (defined $dormantWarn) {
+		unless ($dormantWarn =~ /^(w|c|i)$/ ) {
+			printf "Dormant alerts must be one of w|c|i \n";
+			exit $ERRORS{'UNKNOWN'};
+		}
+	}
+	
+	unless (defined $timeout) {
+		$timeout = $TIMEOUT;
+	}
+
+	if ($snmp_version =~ /3/ ) {
+		# Must define a security level even though default is noAuthNoPriv
+		# v3 requires a security username
+		if (defined $seclevel  && defined $secname) {
+		
+			# Must define a security level even though defualt is noAuthNoPriv
+			unless ($seclevel eq ('noAuthNoPriv' || 'authNoPriv' || 'authPriv' ) ) {
+				usage();
+				exit $ERRORS{"UNKNOWN"};
+			}
+			
+			# Authentication wanted
+			if ($seclevel eq ('authNoPriv' || 'authPriv') ) {
+		
+				unless ($authproto eq ('MD5' || 'SHA1') ) {
+					usage();
+					exit $ERRORS{"UNKNOWN"};
+				}
+
+				if ( !defined $authpass) {
+					usage();
+					exit $ERRORS{"UNKNOWN"};
+				}else{
+					if ($authpass =~ /^0x/ ) {
+						$auth = "-authkey => $authpass" ;
+					}else{
+						$auth = "-authpassword => $authpass";
+					}
+				}
+					
+			}
+			
+			# Privacy (DES encryption) wanted
+			if ($seclevel eq  'authPriv' ) {
+				if (! defined $privpass) {
+					usage();
+					exit $ERRORS{"UNKNOWN"};
+				}else{
+					if ($privpass =~ /^0x/){
+						$priv = "-privkey => $privpass";
+					}else{
+						$priv = "-privpassword => $privpass";
+					}
+				}
+			}
+
+			# Context name defined or default
+
+			unless ( defined $context) {
+				$context = "";
+			}
+		
+		
+		
+		}else {
+					usage();
+					exit $ERRORS{'UNKNOWN'}; ;
+		}
+	} # end snmpv3
+
+
+	if ( $snmp_version =~ /[12]/ ) {
+  	($session, $error) = Net::SNMP->session(
+			-hostname  => $hostname,
+			-community => $community,
+			-port      => $port,
+			-version	=> $snmp_version,
+			-maxmsgsize => $maxmsgsize
+		);
+
+		if (!defined($session)) {
+			$state='UNKNOWN';
+			$answer=$error;
+			print ("$state: $answer");
+			exit $ERRORS{$state};
+		}
+	
+	}elsif ( $snmp_version =~ /3/ ) {
+
+		if ($seclevel eq 'noAuthNoPriv') {
+			($session, $error) = Net::SNMP->session(
+				-hostname  => $hostname,
+				-port      => $port,
+				-version  => $snmp_version,
+				-username => $secname,
+			);
+
+		}elsif ( $seclevel eq 'authNoPriv' ) {
+			($session, $error) = Net::SNMP->session(
+				-hostname  => $hostname,
+				-port      => $port,
+				-version  => $snmp_version,
+				-username => $secname,
+				$auth,
+				-authprotocol => $authproto,
+			);	
+		}elsif ($seclevel eq 'authPriv' ) {
+			($session, $error) = Net::SNMP->session(
+				-hostname  => $hostname,
+				-port      => $port,
+				-version  => $snmp_version,
+				-username => $secname,
+				$auth,
+				-authprotocol => $authproto,
+				$priv
+			);
+		}
+					
+					
+		if (!defined($session)) {
+					$state='UNKNOWN';
+					$answer=$error;
+					print ("$state: $answer");
+					exit $ERRORS{$state};
+		}
+
+	}else{
+		$state='UNKNOWN';
+		print ("$state: No support for SNMP v$snmp_version yet\n");
+		exit $ERRORS{$state};
+	}
+
+}
+## End validation
+
diff --git a/checkers/check_ifstatus b/checkers/check_ifstatus
new file mode 100755
index 0000000000..3f3d70234f
--- /dev/null
+++ b/checkers/check_ifstatus
@@ -0,0 +1,459 @@
+#! /usr/bin/perl -w
+#
+# check_ifstatus.pl - nagios plugin 
+# 
+#
+# Copyright (C) 2000 Christoph Kron
+# Modified 5/2002 to conform to updated Nagios Plugin Guidelines (S. Ghosh)
+#  Added -x option (4/2003)
+#  Added -u option (4/2003)
+#  Added -M option (10/2003)
+#  Added SNMPv3 support (10/2003)
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+#
+# Report bugs to: ck@zet.net, nagiosplug-help@lists.sf.net
+# 
+# 11.01.2000 Version 1.0
+#
+# $Id: check_ifstatus.pl,v 1.9 2004/08/18 19:51:35 tonvoon Exp $
+
+use POSIX;
+use strict;
+use lib "/usr/lib/nagios/plugins" ;
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+
+use Net::SNMP;
+use Getopt::Long;
+Getopt::Long::Configure('bundling');
+
+my $PROGNAME = "check_ifstatus";
+
+sub print_help ();
+sub usage ();
+sub process_arguments ();
+
+
+my $status;
+my %ifOperStatus =	('1','up',
+			 '2','down',
+			 '3','testing',
+			 '4','unknown',
+			 '5','dormant',
+			 '6','notPresent',
+			 '7','lowerLayerDown');  # down due to the state of lower layer interface(s));
+
+my $timeout ;
+my $state = "UNKNOWN";
+my $answer = "";
+my $snmpkey=0;
+my $snmpoid=0;
+my $key=0;
+my $community = "public";
+my $maxmsgsize = 1472 ; # Net::SNMP default is 1472
+my ($seclevel, $authproto, $secname, $authpass, $privpass, $auth, $priv, $context);
+my $port = 161;
+my @snmpoids;
+my $snmpIfAdminStatus = '1.3.6.1.2.1.2.2.1.7';
+my $snmpIfDescr = '1.3.6.1.2.1.2.2.1.2';
+my $snmpIfOperStatus = '1.3.6.1.2.1.2.2.1.8';
+my $snmpIfName = '1.3.6.1.2.1.31.1.1.1.1';
+my $snmpIfAlias = '1.3.6.1.2.1.31.1.1.1.18';
+my $snmpLocIfDescr = '1.3.6.1.4.1.9.2.2.1.1.28';
+my $snmpIfType = '1.3.6.1.2.1.2.2.1.3';
+my $hostname;
+my $session;
+my $error;
+my $response;
+my %ifStatus;
+my $ifup =0 ;
+my $ifdown =0;
+my $ifdormant = 0;
+my $ifexclude = 0 ;
+my $ifunused = 0;
+my $ifmessage = "";
+my $snmp_version = 1;
+my $ifXTable;
+my $opt_h ;
+my $opt_V ;
+my $opt_u;
+my $opt_x ;
+my %excluded ;
+my @unused_ports ;
+
+
+
+
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+     print ("ERROR: No snmp response from $hostname (alarm timeout)\n");
+     exit $ERRORS{"UNKNOWN"};
+};
+
+
+#Option checking
+$status = process_arguments();
+
+if ($status != 0)
+{
+	print_help() ;
+	exit $ERRORS{'OK'};
+}
+
+
+alarm($timeout);
+
+push(@snmpoids,$snmpIfOperStatus);
+push(@snmpoids,$snmpIfAdminStatus);
+push(@snmpoids,$snmpIfDescr);
+push(@snmpoids,$snmpIfType);
+push(@snmpoids,$snmpIfName) if ( defined $ifXTable);
+push(@snmpoids,$snmpIfAlias) if ( defined $ifXTable);
+
+
+
+
+foreach $snmpoid (@snmpoids) {
+
+   if (!defined($response = $session->get_table($snmpoid))) {
+      $answer=$session->error;
+      $session->close;
+      $state = 'CRITICAL';
+			if ( ( $snmpoid =~ $snmpIfName ) && defined $ifXTable ) {
+				print ("$state: Device does not support ifTable - try without -I option\n");
+			}else{
+				print ("$state: $answer for $snmpoid  with snmp version $snmp_version\n");
+			}
+      exit $ERRORS{$state};
+   }
+
+   foreach $snmpkey (keys %{$response}) {
+      $snmpkey =~ /.*\.(\d+)$/;
+      $key = $1;
+      $ifStatus{$key}{$snmpoid} = $response->{$snmpkey};
+   }
+}
+
+
+$session->close;
+
+alarm(0);
+
+foreach $key (keys %ifStatus) {
+
+	# skip unused interfaces
+	if (!defined($ifStatus{$key}{'notInUse'})) {
+		# check only if interface is administratively up
+    if ($ifStatus{$key}{$snmpIfAdminStatus} == 1 ) {
+    
+			# check only if interface type is not listed in %excluded
+			if (!defined $excluded{$ifStatus{$key}{$snmpIfType}} ) {
+				if ($ifStatus{$key}{$snmpIfOperStatus} == 1 ) { $ifup++ ;}
+				if ($ifStatus{$key}{$snmpIfOperStatus} == 2 ) {
+								$ifdown++ ;
+								if (defined $ifXTable) {
+									$ifmessage .= sprintf("%s: down -> %s<BR>",
+                                $ifStatus{$key}{$snmpIfName},
+																$ifStatus{$key}{$snmpIfAlias});
+								}else{
+									$ifmessage .= sprintf("%s: down <BR>",
+																$ifStatus{$key}{$snmpIfDescr});
+								}
+				}
+				if ($ifStatus{$key}{$snmpIfOperStatus} == 5 ) { $ifdormant++ ;}
+			}else{
+				$ifexclude++;
+			}
+		
+		}
+	}else{
+		$ifunused++;
+	}
+}
+
+   if ($ifdown > 0) {
+      $state = 'CRITICAL';
+      $answer = sprintf("host '%s', interfaces up: %d, down: %d, dormant: %d, excluded: %d, unused: %d<BR>",
+                        $hostname,
+			$ifup,
+			$ifdown,
+			$ifdormant,
+			$ifexclude,
+			$ifunused);
+      $answer = $answer . $ifmessage . "\n";
+   }
+   else {
+      $state = 'OK';
+      $answer = sprintf("host '%s', interfaces up: %d, down: %d, dormant: %d, excluded: %d, unused: %d",
+                        $hostname,
+			$ifup,
+			$ifdown,
+			$ifdormant,
+			$ifexclude,
+			$ifunused);
+   }
+my $perfdata = sprintf("up=%d,down=%d,dormant=%d,excluded=%d,unused=%d",$ifup,$ifdown,$ifdormant,$ifexclude,$ifunused);
+print ("$state: $answer |$perfdata\n");
+exit $ERRORS{$state};
+
+
+sub usage (){
+	printf "\nMissing arguments!\n";
+	printf "\n";
+	printf "check_ifstatus -C <READCOMMUNITY> -p <PORT> -H <HOSTNAME>\n";
+	printf "Copyright (C) 2000 Christoph Kron\n";
+	printf "Updates 5/2002 Subhendu Ghosh\n";
+	printf "\n\n";
+	support();
+	exit $ERRORS{"UNKNOWN"};
+}
+
+sub print_help (){
+	printf "check_ifstatus plugin for Nagios monitors operational \n";
+	printf "status of each network interface on the target host\n";
+	printf "\nUsage:\n";
+	printf "   -H (--hostname)   Hostname to query - (required)\n";
+	printf "   -C (--community)  SNMP read community (defaults to public,\n";
+	printf "                     used with SNMP v1 and v2c\n";
+	printf "   -v (--snmp_version)  1 for SNMP v1 (default)\n";
+	printf "                        2 for SNMP v2c\n";
+	printf "                          SNMP v2c will use get_bulk for less overhead\n";
+	printf "                        3 for SNMPv3 (requires -U option)";
+	printf "   -p (--port)       SNMP port (default 161)\n";
+	printf "   -I (--ifmib)      Agent supports IFMIB ifXTable.  For Cisco - this will provide\n";
+	printf "                     the descriptive name.  Do not use if you don't know what this is. \n";
+	printf "   -x (--exclude)    A comma separated list of ifType values that should be excluded \n";
+	printf "                     from the report (default for an empty list is PPP(23).\n";
+	printf "   -u (--unused_ports) A comma separated list of ifIndex values that should be excluded \n";
+	printf "                     from the report (default is an empty exclusion list).\n";
+	printf "                     See the IANAifType-MIB for a list of interface types.\n";
+	printf "   -L (--seclevel)   choice of \"noAuthNoPriv\", \"authNoPriv\", or	\"authPriv\"\n";
+	printf "   -U (--secname)    username for SNMPv3 context\n";
+	printf "   -c (--context)    SNMPv3 context name (default is empty	string)";
+	printf "   -A (--authpass)   authentication password (cleartext ascii or localized key\n";
+	printf "                     in hex with 0x prefix generated by using	\"snmpkey\" utility\n"; 
+	printf "                     auth password and authEngineID\n";
+	printf "   -a (--authproto)  Authentication protocol ( MD5 or SHA1)\n";
+	printf "   -X (--privpass)   privacy password (cleartext ascii or localized key\n";
+	printf "                     in hex with 0x prefix generated by using	\"snmpkey\" utility\n"; 
+	printf "                     privacy password and authEngineID\n";
+	printf "   -M (--maxmsgsize) Max message size - usefull only for v1 or v2c\n";
+	printf "   -t (--timeout)    seconds before the plugin times out (default=$TIMEOUT)\n";
+	printf "   -V (--version)    Plugin version\n";
+	printf "   -h (--help)       usage help \n\n";
+	print_revision($PROGNAME, '$Revision: 1.9 $');
+	
+}
+
+sub process_arguments() {
+	$status = GetOptions(
+		"V"   => \$opt_V, "version"    => \$opt_V,
+		"h"   => \$opt_h, "help"       => \$opt_h,
+		"v=i" => \$snmp_version, "snmp_version=i"  => \$snmp_version,
+		"C=s" => \$community,"community=s" => \$community,
+		"L=s" => \$seclevel, "seclevel=s" => \$seclevel,
+		"a=s" => \$authproto, "authproto=s" => \$authproto,
+		"U=s" => \$secname,   "secname=s"   => \$secname,
+		"A=s" => \$authpass,  "authpass=s"  => \$authpass,
+		"X=s" => \$privpass,  "privpass=s"  => \$privpass,
+		"c=s" => \$context,   "context=s"   => \$context,
+		"p=i" =>\$port, "port=i" => \$port,
+		"H=s" => \$hostname, "hostname=s" => \$hostname,
+		"I"		=> \$ifXTable, "ifmib" => \$ifXTable,
+		"x:s"		=>	\$opt_x,   "exclude:s" => \$opt_x,
+		"u=s" => \$opt_u,  "unused_ports=s" => \$opt_u,
+		"M=i" => \$maxmsgsize, "maxmsgsize=i" => \$maxmsgsize,
+		"t=i" => \$timeout,    "timeout=i" => \$timeout,
+		);
+		
+	if ($status == 0){
+		print_help() ;
+		exit $ERRORS{'OK'};
+	}
+	if ($opt_V) {
+		print_revision($PROGNAME,'$Revision: 1.9 $ ');
+		exit $ERRORS{'OK'};
+	}
+
+	if ($opt_h) {
+		print_help();
+		exit $ERRORS{'OK'};
+	}
+
+	unless (defined $timeout) {
+		$timeout = $TIMEOUT;
+	}
+
+	if ($snmp_version =~ /3/ ) {
+		# Must define a security level even though default is noAuthNoPriv
+		# v3 requires a security username
+		if (defined $seclevel  && defined $secname) {
+		
+			# Must define a security level even though defualt is noAuthNoPriv
+			unless ($seclevel eq ('noAuthNoPriv' || 'authNoPriv' || 'authPriv' ) ) {
+				usage();
+				exit $ERRORS{"UNKNOWN"};
+			}
+			
+			# Authentication wanted
+			if ($seclevel eq ('authNoPriv' || 'authPriv') ) {
+		
+				unless ($authproto eq ('MD5' || 'SHA1') ) {
+					usage();
+					exit $ERRORS{"UNKNOWN"};
+				}
+
+				if ( !defined $authpass) {
+					usage();
+					exit $ERRORS{"UNKNOWN"};
+				}else{
+					if ($authpass =~ /^0x/ ) {
+						$auth = "-authkey => $authpass" ;
+					}else{
+						$auth = "-authpassword => $authpass";
+					}
+				}
+					
+			}
+			
+			# Privacy (DES encryption) wanted
+			if ($seclevel eq  'authPriv' ) {
+				if (! defined $privpass) {
+					usage();
+					exit $ERRORS{"UNKNOWN"};
+				}else{
+					if ($privpass =~ /^0x/){
+						$priv = "-privkey => $privpass";
+					}else{
+						$priv = "-privpassword => $privpass";
+					}
+				}
+			}
+
+			# Context name defined or default
+
+			unless ( defined $context) {
+				$context = "";
+			}
+		
+		
+		
+		}else {
+					usage();
+					exit $ERRORS{'UNKNOWN'}; ;
+		}
+	} # end snmpv3
+
+	# for snmp v1 & v2c we default to community = "public"
+	
+	# Excluded interfaces types (ifType) (backup interfaces, dial-on demand interfaces, PPP interfaces
+	if (defined $opt_x) {
+		my @x = split(/,/, $opt_x);
+		if ( @x) {
+			foreach $key (@x){
+				$excluded{$key} = 1;
+			}
+		}else{
+			$excluded{23} = 1; # default PPP(23) if empty list - note (AIX seems to think PPP is 22 according to a post)
+		}
+	}
+	
+	# Excluded interface ports (ifIndex) - management reasons
+	if ($opt_u) {
+		@unused_ports = split(/,/,$opt_u);
+		foreach $key (@unused_ports) { 
+			$ifStatus{$key}{'notInUse'}++ ;
+		}
+	}
+
+	if (! utils::is_hostname($hostname)){
+		usage();
+		exit $ERRORS{"UNKNOWN"};
+	}
+
+	# create SNMP session handle based on options passed.
+
+	if ( ! $snmp_version ) {
+		$snmp_version =1 ;
+	}else{
+		if ( $snmp_version =~ /[12]/ ) {
+	
+			($session, $error) = Net::SNMP->session(
+						-hostname  => $hostname,
+						-community => $community,
+						-port      => $port,
+						-version	=> $snmp_version,
+						-maxmsgsize => $maxmsgsize
+			 );
+
+		if (!defined($session)) {
+					$state='UNKNOWN';
+					$answer=$error;
+					print ("$state: $answer");
+					exit $ERRORS{$state};
+		}
+
+		
+	}elsif ( $snmp_version =~ /3/ ) {
+
+		if ($seclevel eq 'noAuthNoPriv') {
+			($session, $error) = Net::SNMP->session(
+				-hostname  => $hostname,
+				-port      => $port,
+				-version  => $snmp_version,
+				-username => $secname,
+			);
+
+		}elsif ( $seclevel eq 'authNoPriv' ) {
+			($session, $error) = Net::SNMP->session(
+				-hostname  => $hostname,
+				-port      => $port,
+				-version  => $snmp_version,
+				-username => $secname,
+				-authprotocol => $authproto,
+				$auth
+			);	
+		}elsif ($seclevel eq 'authPriv' ) {
+			($session, $error) = Net::SNMP->session(
+				-hostname  => $hostname,
+				-port      => $port,
+				-version  => $snmp_version,
+				-username => $secname,
+				-authprotocol => $authproto,
+				$auth,
+				$priv
+			);
+		}
+					
+					
+		if (!defined($session)) {
+					$state='UNKNOWN';
+					$answer=$error;
+					print ("$state: $answer");
+					exit $ERRORS{$state};
+		}
+			
+	}else{
+		$state='UNKNOWN';
+		print ("$state: No support for SNMP v$snmp_version yet\n");
+		exit $ERRORS{$state};
+	}
+}
+
+return $ERRORS{"OK"};
+				
+}
diff --git a/checkers/check_imap b/checkers/check_imap
new file mode 120000
index 0000000000..e838da97eb
--- /dev/null
+++ b/checkers/check_imap
@@ -0,0 +1 @@
+check_tcp
\ No newline at end of file
diff --git a/checkers/check_ircd b/checkers/check_ircd
new file mode 100755
index 0000000000..8900b8aeeb
--- /dev/null
+++ b/checkers/check_ircd
@@ -0,0 +1,250 @@
+#! /usr/bin/perl -wT
+
+# -----------------------------------------------------------------------------
+# File Name:		check_ircd.pl
+#
+# Author:		Richard Mayhew - South Africa
+#
+# Date:			1999/09/20
+#
+# $Id: check_ircd.pl,v 1.3 2002/05/07 05:35:49 sghosh Exp $
+#
+# Description:		This script will check to see if an IRCD is running
+#			about how many users it has
+#
+# Email:		netsaint@splash.co.za
+#
+# -----------------------------------------------------------------------------
+# Copyright 1999 (c) Richard Mayhew
+#
+# Credits go to Ethan Galstad for coding Nagios
+#
+# If any changes are made to this script, please mail me a copy of the
+# changes :)
+#
+# Some code taken from Charlie Cook (check_disk.pl)
+#
+# License GPL
+#
+# -----------------------------------------------------------------------------
+# Date		Author		Reason
+# ----		------		------
+#
+# 1999/09/20	RM		Creation
+#
+# 1999/09/20	TP		Changed script to use strict, more secure by
+#				specifying $ENV variables. The bind command is
+#				still insecure through.  Did most of my work
+#				with perl -wT and 'use strict'
+#
+# test using check_ircd.pl (irc-2.mit.edu|irc.erols.com|irc.core.com)
+# 2002/05/02    SG		Fixed for Embedded Perl
+#
+
+# ----------------------------------------------------------------[ Require ]--
+
+require 5.004;
+
+# -------------------------------------------------------------------[ Uses ]--
+
+use Socket;
+use strict;
+use Getopt::Long;
+use vars qw($opt_V $opt_h $opt_t $opt_p $opt_H $opt_w $opt_c $verbose);
+use vars qw($PROGNAME);
+use lib "/usr/lib/nagios/plugins";
+use utils qw($TIMEOUT %ERRORS &print_revision &support &usage);
+
+# ----------------------------------------------------[ Function Prototypes ]--
+
+sub print_help ();
+sub print_usage ();
+sub connection ($$$$);
+sub bindRemote ($$$);
+
+# -------------------------------------------------------------[ Enviroment ]--
+
+$ENV{PATH} = "";
+$ENV{ENV} = "";
+$ENV{BASH_ENV} = "";
+
+# -----------------------------------------------------------------[ Global ]--
+
+$PROGNAME = "check_ircd";
+my $NICK="ircd$$";
+my $USER_INFO="monitor localhost localhost : ";
+	
+# -------------------------------------------------------------[ connection ]--
+sub connection ($$$$)
+{
+	my ($in_remotehost,$in_users,$in_warn,$in_crit) = @_;
+	my $state;
+	my $answer;
+
+	print "connection(debug): users = $in_users\n" if $verbose;
+	$in_users =~ s/\ //g;
+	
+	if ($in_users >= 0) {
+
+		if ($in_users > $in_crit) {
+			$state = "CRITICAL";
+			$answer = "Critical Number Of Clients Connected : $in_users (Limit = $in_crit)\n";
+
+		} elsif ($in_users > $in_warn) {
+			$state = "WARNING";
+			$answer = "Warning Number Of Clients Connected : $in_users (Limit = $in_warn)\n";
+
+		} else {
+			$state = "OK";
+			$answer = "IRCD ok - Current Local Users: $in_users\n";
+		}
+
+	} else {
+		$state = "UNKNOWN";
+		$answer = "Server $in_remotehost has less than 0 users! Something is Really WRONG!\n";
+	}
+	
+	print ClientSocket "quit\n";
+	print $answer;
+	exit $ERRORS{$state};
+}
+
+# ------------------------------------------------------------[ print_usage ]--
+
+sub print_usage () {
+	print "Usage: $PROGNAME -H <host> [-w <warn>] [-c <crit>] [-p <port>]\n";
+}
+
+# -------------------------------------------------------------[ print_help ]--
+
+sub print_help ()
+{
+	print_revision($PROGNAME,'$Revision: 1.3 $ ');
+	print "Copyright (c) 2000 Richard Mayhew/Karl DeBisschop
+
+Perl Check IRCD plugin for Nagios
+
+";
+	print_usage();
+	print "
+-H, --hostname=HOST
+   Name or IP address of host to check
+-w, --warning=INTEGER
+   Number of connected users which generates a warning state (Default: 50)
+-c, --critical=INTEGER
+   Number of connected users which generates a critical state (Default: 100)
+-p, --port=INTEGER
+   Port that the ircd daemon is running on <host> (Default: 6667)
+-v, --verbose
+   Print extra debugging information
+";
+}
+
+# -------------------------------------------------------------[ bindRemote ]--
+
+sub bindRemote ($$$)
+{
+	my ($in_remotehost, $in_remoteport, $in_hostname) = @_;
+	my $proto = getprotobyname('tcp');
+	my $sockaddr;
+	my $this;
+	my $that;
+	my ($name, $aliases,$type,$len,$thataddr) = gethostbyname($in_remotehost);
+#	($name,$aliases,$type,$len,$thisaddr) = gethostbyname($in_hostname);
+
+	if (!socket(ClientSocket,AF_INET, SOCK_STREAM, $proto)) {
+	    print "IRCD UNKNOWN: Could not start socket ($!)\n";
+	    exit $ERRORS{"UNKNOWN"};
+	}
+	$sockaddr = 'S n a4 x8';
+	$this = pack($sockaddr, AF_INET, 0, INADDR_ANY);
+	$that = pack($sockaddr, AF_INET, $in_remoteport, $thataddr);
+	if (!bind(ClientSocket, $this)) {
+	    print "IRCD UNKNOWN: Could not bind socket ($!)\n";
+	    exit $ERRORS{"UNKNOWN"};
+	}
+	if (!connect(ClientSocket, $that)) { 
+	    print "IRCD UNKNOWN: Could not connect socket ($!)\n";
+	    exit $ERRORS{"UNKNOWN"};
+	}
+	select(ClientSocket); $| = 1; select(STDOUT);
+	return \*ClientSocket;
+}
+
+# ===================================================================[ MAIN ]==
+
+MAIN:
+{
+	my $hostname;
+
+	Getopt::Long::Configure('bundling');
+	GetOptions
+	 ("V"   => \$opt_V,  "version"    => \$opt_V,
+		"h"   => \$opt_h,  "help"       => \$opt_h,
+		"v"   => \$verbose,"verbose"    => \$verbose,
+		"t=i" => \$opt_t,  "timeout=i"  => \$opt_t,
+		"w=i" => \$opt_w,  "warning=i"  => \$opt_w,
+		"c=i" => \$opt_c,  "critical=i" => \$opt_c,
+		"p=i" => \$opt_p,  "port=i"     => \$opt_p,
+		"H=s" => \$opt_H,  "hostname=s" => \$opt_H);
+
+	if ($opt_V) {
+		print_revision($PROGNAME,'$Revision: 1.3 $ ');
+		exit $ERRORS{'OK'};
+	}
+
+	if ($opt_h) {print_help(); exit $ERRORS{'OK'};}
+
+	($opt_H) || ($opt_H = shift) || usage("Host name/address not specified\n");
+	my $remotehost = $1 if ($opt_H =~ /([-.A-Za-z0-9]+)/);
+	($remotehost) || usage("Invalid host: $opt_H\n");
+
+	($opt_w) || ($opt_w = shift) || ($opt_w = 50);
+	my $warn = $1 if ($opt_w =~ /^([0-9]+)$/);
+	($warn) || usage("Invalid warning threshold: $opt_w\n");
+
+	($opt_c) || ($opt_c = shift) || ($opt_c = 100);
+	my $crit = $1 if ($opt_c =~ /^([0-9]+)$/);
+	($crit) || usage("Invalid critical threshold: $opt_c\n");
+
+	($opt_p) || ($opt_p = shift) || ($opt_p = 6667);
+	my $remoteport = $1 if ($opt_p =~ /^([0-9]+)$/);
+	($remoteport) || usage("Invalid port: $opt_p\n");
+
+	if ($opt_t && $opt_t =~ /^([0-9]+)$/) { $TIMEOUT = $1; }
+
+	# Just in case of problems, let's not hang Nagios
+	$SIG{'ALRM'} = sub {
+		print "Somthing is Taking a Long Time, Increase Your TIMEOUT (Currently Set At $TIMEOUT Seconds)\n";
+		exit $ERRORS{"UNKNOWN"};
+	};
+	
+	alarm($TIMEOUT);
+
+	chomp($hostname = `/bin/hostname`);
+	$hostname = $1 if ($hostname =~ /([-.a-zA-Z0-9]+)/);
+	my ($name, $alias, $proto) = getprotobyname('tcp');
+	print "MAIN(debug): hostname = $hostname\n" if $verbose;
+
+	print "MAIN(debug): binding to remote host: $remotehost -> $remoteport -> $hostname\n" if $verbose;
+	my $ClientSocket = &bindRemote($remotehost,$remoteport,$hostname);
+	
+	print ClientSocket "NICK $NICK\nUSER $USER_INFO\n";
+	
+	while (<ClientSocket>) {
+		print "MAIN(debug): default var = $_\n" if $verbose;
+
+		# DALnet,LagNet,UnderNet etc. Require this!
+		# Replies with a PONG when presented with a PING query.
+		# If a server doesn't require it, it will be ignored.
+	
+		if (m/^PING (.*)/) {print ClientSocket "PONG $1\n";}
+	
+		alarm(0);
+	
+		# Look for pattern in IRCD Output to gather Client Connections total.
+		connection($remotehost,$1,$warn,$crit) if (m/:I have\s+(\d+)/);
+	}
+	print "IRCD UNKNOWN: Unknown error - maybe could not authenticate\n";
+	exit $ERRORS{"UNKNOWN"};
+}
diff --git a/checkers/check_jabber b/checkers/check_jabber
new file mode 120000
index 0000000000..e838da97eb
--- /dev/null
+++ b/checkers/check_jabber
@@ -0,0 +1 @@
+check_tcp
\ No newline at end of file
diff --git a/checkers/check_ldap b/checkers/check_ldap
new file mode 100755
index 0000000000..d7afad1d5b
Binary files /dev/null and b/checkers/check_ldap differ
diff --git a/checkers/check_ldaps b/checkers/check_ldaps
new file mode 100755
index 0000000000..d7afad1d5b
Binary files /dev/null and b/checkers/check_ldaps differ
diff --git a/checkers/check_load b/checkers/check_load
new file mode 100755
index 0000000000..4430d49cd5
Binary files /dev/null and b/checkers/check_load differ
diff --git a/checkers/check_log b/checkers/check_log
new file mode 100755
index 0000000000..8f55865af8
--- /dev/null
+++ b/checkers/check_log
@@ -0,0 +1,217 @@
+#! /bin/sh
+#
+# Log file pattern detector plugin for Nagios
+# Written by Ethan Galstad (nagios@nagios.org)
+# Last Modified: 07-31-1999
+#
+# Usage: ./check_log <log_file> <old_log_file> <pattern>
+#
+# Description:
+#
+# This plugin will scan a log file (specified by the <log_file> option)
+# for a specific pattern (specified by the <pattern> option).  Successive
+# calls to the plugin script will only report *new* pattern matches in the
+# log file, since an copy of the log file from the previous run is saved
+# to <old_log_file>.
+#
+# Output:
+#
+# On the first run of the plugin, it will return an OK state with a message
+# of "Log check data initialized".  On successive runs, it will return an OK
+# state if *no* pattern matches have been found in the *difference* between the
+# log file and the older copy of the log file.  If the plugin detects any 
+# pattern matches in the log diff, it will return a CRITICAL state and print
+# out a message is the following format: "(x) last_match", where "x" is the
+# total number of pattern matches found in the file and "last_match" is the
+# last entry in the log file which matches the pattern.
+#
+# Notes:
+#
+# If you use this plugin make sure to keep the following in mind:
+#
+#    1.  The "max_attempts" value for the service should be 1, as this
+#        will prevent Nagios from retrying the service check (the
+#        next time the check is run it will not produce the same results).
+#
+#    2.  The "notify_recovery" value for the service should be 0, so that
+#        Nagios does not notify you of "recoveries" for the check.  Since
+#        pattern matches in the log file will only be reported once and not
+#        the next time, there will always be "recoveries" for the service, even
+#        though recoveries really don't apply to this type of check.
+#
+#    3.  You *must* supply a different <old_file_log> for each service that
+#        you define to use this plugin script - even if the different services
+#        check the same <log_file> for pattern matches.  This is necessary
+#        because of the way the script operates.
+#
+# Examples:
+#
+# Check for login failures in the syslog...
+#
+#   check_log /var/log/messages ./check_log.badlogins.old "LOGIN FAILURE"
+#
+# Check for port scan alerts generated by Psionic's PortSentry software...
+#
+#   check_log /var/log/message ./check_log.portscan.old "attackalert"
+#
+
+# Paths to commands used in this script.  These
+# may have to be modified to match your system setup.
+
+PATH=""
+
+ECHO="/bin/echo"
+GREP="/bin/grep"
+DIFF="/usr/bin/diff"
+TAIL="/usr/bin/tail"
+CAT="/bin/cat"
+RM="/bin/rm"
+
+PROGNAME=`/usr/bin/basename $0`
+PROGPATH=`echo $0 | /bin/sed -e 's,[\\/][^\\/][^\\/]*$,,'`
+REVISION=`echo '$Revision: 1.4 $' | /bin/sed -e 's/[^0-9.]//g'`
+
+. $PROGPATH/utils.sh
+
+print_usage() {
+    echo "Usage: $PROGNAME -F logfile -O oldlog -q query"
+    echo "Usage: $PROGNAME --help"
+    echo "Usage: $PROGNAME --version"
+}
+
+print_help() {
+    print_revision $PROGNAME $REVISION
+    echo ""
+    print_usage
+    echo ""
+    echo "Log file pattern detector plugin for Nagios"
+    echo ""
+    support
+}
+
+# Make sure the correct number of command line
+# arguments have been supplied
+
+if [ $# -lt 1 ]; then
+    print_usage
+    exit $STATE_UNKNOWN
+fi
+
+# Grab the command line arguments
+
+#logfile=$1
+#oldlog=$2
+#query=$3
+exitstatus=$STATE_WARNING #default
+while test -n "$1"; do
+    case "$1" in
+        --help)
+            print_help
+            exit $STATE_OK
+            ;;
+        -h)
+            print_help
+            exit $STATE_OK
+            ;;
+        --version)
+            print_revision $PROGNAME $VERSION
+            exit $STATE_OK
+            ;;
+        -V)
+            print_revision $PROGNAME $VERSION
+            exit $STATE_OK
+            ;;
+        --filename)
+            logfile=$2
+            shift
+            ;;
+        -F)
+            logfile=$2
+            shift
+            ;;
+        --oldlog)
+            oldlog=$2
+            shift
+            ;;
+        -O)
+            oldlog=$2
+            shift
+            ;;
+        --query)
+            query=$2
+            shift
+            ;;
+        -q)
+            query=$2
+            shift
+            ;;
+        -x)
+            exitstatus=$2
+            shift
+            ;;
+        --exitstatus)
+            exitstatus=$2
+            shift
+            ;;
+        *)
+            echo "Unknown argument: $1"
+            print_usage
+            exit $STATE_UNKNOWN
+            ;;
+    esac
+    shift
+done
+
+# If the source log file doesn't exist, exit
+
+if [ ! -e $logfile ]; then
+    $ECHO "Log check error: Log file $logfile does not exist!\n"
+    exit $STATE_UNKNOWN
+elif [ ! -r $logfile ] ; then
+    $ECHO "Log check error: Log file $logfile is not readable!\n"
+    exit $STATE_UNKNOWN
+fi
+
+# If the old log file doesn't exist, this must be the first time
+# we're running this test, so copy the original log file over to
+# the old diff file and exit
+
+if [ ! -e $oldlog ]; then
+    $CAT $logfile > $oldlog
+    $ECHO "Log check data initialized...\n"
+    exit $STATE_OK
+fi
+
+# The old log file exists, so compare it to the original log now
+
+# The temporary file that the script should use while
+# processing the log file.
+if [ -x /bin/mktemp ]; then
+    tempdiff=`/bin/mktemp /tmp/check_log.XXXXXXXXXX`
+else
+    tempdiff=`/bin/date '+%H%M%S'`
+    tempdiff="/tmp/check_log.${tempdiff}"
+    /bin/touch $tempdiff
+    chmod 600 $tempdiff
+fi
+
+$DIFF $logfile $oldlog > $tempdiff
+
+# Count the number of matching log entries we have
+count=`$GREP -c "$query" $tempdiff`
+
+# Get the last matching entry in the diff file
+lastentry=`$GREP "$query" $tempdiff | $TAIL --lines=1`
+
+$RM -f $tempdiff
+$CAT $logfile > $oldlog
+
+if [ "$count" = "0" ]; then # no matches, exit with no error
+    $ECHO "Log check ok - 0 pattern matches found\n"
+    exitstatus=$STATE_OK
+else # Print total matche count and the last entry we found
+    $ECHO "($count) $lastentry"
+    exitstatus=$STATE_CRITICAL
+fi
+
+exit $exitstatus
diff --git a/checkers/check_mailq b/checkers/check_mailq
new file mode 100755
index 0000000000..a455665d6a
--- /dev/null
+++ b/checkers/check_mailq
@@ -0,0 +1,610 @@
+#! /usr/bin/perl -w
+
+# check_mailq - check to see how many messages are in the smtp queue awating
+#   transmittal.  
+#
+# Initial version support sendmail's mailq command
+#  Support for mutiple sendmail queues (Carlos Canau)
+#  Support for qmail (Benjamin Schmid)
+
+# License Information:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# $Id: check_mailq.pl,v 1.6 2005/04/14 04:13:13 seanius Exp $
+#
+############################################################################
+
+use POSIX;
+use strict;
+use Getopt::Long;
+use vars qw($opt_V $opt_h $opt_v $verbose $PROGNAME $opt_w $opt_c $opt_t
+					$opt_M $mailq $status $state $msg $msg_q $msg_p $opt_W $opt_C $mailq @lines
+					%srcdomains %dstdomains);
+use lib  "/usr/lib/nagios/plugins";
+use utils qw(%ERRORS &print_revision &support &usage );
+
+
+sub print_help ();
+sub print_usage ();
+sub process_arguments ();
+
+$ENV{'PATH'}='';
+$ENV{'BASH_ENV'}=''; 
+$ENV{'ENV'}='';
+$PROGNAME = "check_mailq";
+$mailq = 'sendmail';	# default
+$msg_q = 0 ;
+$msg_p = 0 ;
+$state = $ERRORS{'UNKNOWN'};
+
+Getopt::Long::Configure('bundling');
+$status = process_arguments();
+if ($status){
+	print "ERROR: processing arguments\n";
+	exit $ERRORS{"UNKNOWN"};
+}
+
+$SIG{'ALRM'} = sub {
+	print ("ERROR: timed out waiting for $utils::PATH_TO_MAILQ \n");
+	exit $ERRORS{"WARNING"};
+};
+alarm($opt_t);
+
+# switch based on MTA
+
+if ($mailq eq "sendmail") {
+
+	## open mailq 
+	if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
+		if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) {
+			print "ERROR: could not open $utils::PATH_TO_MAILQ \n";
+			exit $ERRORS{'UNKNOWN'};
+		}
+	}elsif( defined $utils::PATH_TO_MAILQ){
+		unless (-x $utils::PATH_TO_MAILQ) {
+			print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n";
+			exit $ERRORS{'UNKNOWN'};
+		}
+	} else {
+		print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n";
+		exit $ERRORS{'UNKNOWN'};
+	}
+#  single queue empty
+##/var/spool/mqueue is empty
+#  single queue: 1
+##                /var/spool/mqueue (1 request)
+##----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------
+##h32E30p01763     2782 Wed Apr  2 15:03 <silvaATkpnqwest.pt>
+##      8BITMIME
+##                                       <silvaATeunet.pt>
+
+#  multi queue empty
+##/var/spool/mqueue/q0/df is empty
+##/var/spool/mqueue/q1/df is empty
+##/var/spool/mqueue/q2/df is empty
+##/var/spool/mqueue/q3/df is empty
+##/var/spool/mqueue/q4/df is empty
+##/var/spool/mqueue/q5/df is empty
+##/var/spool/mqueue/q6/df is empty
+##/var/spool/mqueue/q7/df is empty
+##/var/spool/mqueue/q8/df is empty
+##/var/spool/mqueue/q9/df is empty
+##/var/spool/mqueue/qA/df is empty
+##/var/spool/mqueue/qB/df is empty
+##/var/spool/mqueue/qC/df is empty
+##/var/spool/mqueue/qD/df is empty
+##/var/spool/mqueue/qE/df is empty
+##/var/spool/mqueue/qF/df is empty
+##                Total Requests: 0
+#  multi queue: 1
+##/var/spool/mqueue/q0/df is empty
+##/var/spool/mqueue/q1/df is empty
+##/var/spool/mqueue/q2/df is empty
+##                /var/spool/mqueue/q3/df (1 request)
+##----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------
+##h32De2f23534*      48 Wed Apr  2 14:40 nocol
+##                                       nouserATEUnet.pt
+##                                       canau
+##/var/spool/mqueue/q4/df is empty
+##/var/spool/mqueue/q5/df is empty
+##/var/spool/mqueue/q6/df is empty
+##/var/spool/mqueue/q7/df is empty
+##/var/spool/mqueue/q8/df is empty
+##/var/spool/mqueue/q9/df is empty
+##/var/spool/mqueue/qA/df is empty
+##/var/spool/mqueue/qB/df is empty
+##/var/spool/mqueue/qC/df is empty
+##/var/spool/mqueue/qD/df is empty
+##/var/spool/mqueue/qE/df is empty
+##/var/spool/mqueue/qF/df is empty
+##                Total Requests: 1
+
+	
+	while (<MAILQ>) {
+	
+		# match email addr on queue listing
+		if ( (/<.*@.*\.(\w+\.\w+)>/) || (/<.*@(\w+\.\w+)>/) ) {
+			my $domain = $1;
+			if (/^\w+/) {
+	  		print "$utils::PATH_TO_MAILQ = srcdomain = $domain \n" if $verbose ;
+		    $srcdomains{$domain} ++;
+			}
+			next;
+		}
+	
+		#
+		# ...
+		# sendmail considers a message with more than one destiny, say N, to the same MX 
+		# to have N messages in queue.
+		# we will only consider one in this code
+		if (( /\s\(reply:\sread\serror\sfrom\s.*\.(\w+\.\w+)\.$/ ) || ( /\s\(reply:\sread\serror\sfrom\s(\w+\.\w+)\.$/ ) ||
+			( /\s\(timeout\swriting\smessage\sto\s.*\.(\w+\.\w+)\.:/ ) || ( /\s\(timeout\swriting\smessage\sto\s(\w+\.\w+)\.:/ ) ||
+			( /\s\(host\smap:\slookup\s\(.*\.(\w+\.\w+)\):/ ) || ( /\s\(host\smap:\slookup\s\((\w+\.\w+)\):/ ) || 
+			( /\s\(Deferred:\s.*\s.*\.(\w+\.\w+)\.\)/ ) || ( /\s\(Deferred:\s.*\s(\w+\.\w+)\.\)/ ) ) {
+	
+			print "$utils::PATH_TO_MAILQ = dstdomain = $1 \n" if $verbose ;
+			$dstdomains{$1} ++;
+		}
+	
+		if (/\s+\(I\/O\serror\)/) {
+			print "$utils::PATH_TO_MAILQ = dstdomain = UNKNOWN \n" if $verbose ;
+			$dstdomains{'UNKNOWN'} ++;
+		}
+
+		# Finally look at the overall queue length
+		#
+		if (/mqueue/) {
+			print "$utils::PATH_TO_MAILQ = $_ "if $verbose ;
+			if (/ \((\d+) request/) {
+	    	#
+		    # single queue: first line
+		    # multi queue: one for each queue. overwrite on multi queue below
+	  	  $msg_q = $1 ;
+			}
+		} elsif (/^\s+Total\sRequests:\s(\d+)$/i) {
+			print "$utils::PATH_TO_MAILQ = $_ \n" if $verbose ;
+			#
+			# multi queue: last line
+			$msg_q = $1 ;
+		}
+	
+	}
+	
+
+	## close mailq
+
+	close (MAILQ); 
+	# declare an error if we also get a non-zero return code from mailq
+	# unless already set to critical
+	if ( $? ) {
+		$state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"}  ;
+		print "STDERR $?: $!\n" if $verbose;
+		$msg = "$state: (stderr)\n";
+	}
+
+	## shut off the alarm
+	alarm(0);
+
+
+
+	## now check the queue length(s)
+
+	if ($msg_q == 0) {
+		$msg = "OK: mailq is empty";
+		$state = $ERRORS{'OK'};
+	} else {
+		print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose;
+	
+		# overall queue length
+		if ($msg_q < $opt_w) {
+			$msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)";
+			$state = $ERRORS{'OK'};
+		}elsif ($msg_q >= $opt_w  && $msg_q < $opt_c) {
+			$msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)";
+			$state = $ERRORS{'WARNING'};
+		}else {
+			$msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)";
+			$state = $ERRORS{'CRITICAL'};
+		}
+
+		# check for domain specific queue lengths if requested
+		if (defined $opt_W) {
+		
+			# Apply threshold to queue lengths FROM domain
+			my @srckeys = sort { $srcdomains{$b} <=> $srcdomains{$a} } keys %srcdomains;
+  	  my $srcmaxkey = $srckeys[0];
+    	print "src max is $srcmaxkey with $srcdomains{$srcmaxkey} messages\n" if $verbose;
+		
+			if ($srcdomains{$srcmaxkey} >= $opt_W && $srcdomains{$srcmaxkey} < $opt_C) {
+				if ($state == $ERRORS{'OK'}) {
+					$msg = "WARNING: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)";
+					$state = $ERRORS{'WARNING'};
+				} elsif (($state == $ERRORS{'WARNING'}) || ($state == $ERRORS{'CRITICAL'})){
+		    	$msg .= " -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)";
+				} else {
+					$msg = "WARNING: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)";
+					$state = $ERRORS{'WARNING'};
+				}
+  	  } elsif ($srcdomains{$srcmaxkey} >= $opt_C) {
+				if ($state == $ERRORS{'OK'}) {
+					$msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C)";
+					$state = $ERRORS{'CRITICAL'};
+				} elsif ($state == $ERRORS{'WARNING'}) {
+					$msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C) -and- " . $msg;
+					$msg =~ s/WARNING: //;
+				} elsif ($state == $ERRORS{'CRITICAL'}) {
+					$msg .= " -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)";
+				} else {
+					$msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)";
+					$state = $ERRORS{'CRITICAL'};
+				}
+	    } else {
+				if ($srcdomains{$srcmaxkey} > 0) {
+					$msg .= " $srcdomains{$srcmaxkey} msgs. FROM $srcmaxkey is below threshold ($opt_W/$opt_C)";
+				}
+			}
+
+			# Apply threshold to queue lengths TO domain
+			my @dstkeys = sort { $dstdomains{$b} <=> $dstdomains{$a} } keys %dstdomains;
+	    my $dstmaxkey = $dstkeys[0];
+  	  print "dst max is $dstmaxkey with $dstdomains{$dstmaxkey} messages\n" if $verbose;
+		
+			if ($dstdomains{$dstmaxkey} >= $opt_W && $dstdomains{$dstmaxkey} < $opt_C) {
+				if ($state == $ERRORS{'OK'}) {
+					$msg = "WARNING: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)";
+					$state = $ERRORS{'WARNING'};
+				} elsif (($state == $ERRORS{'WARNING'}) || ($state == $ERRORS{'CRITICAL'})){
+					$msg .= " -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)";
+				} else {
+					$msg = "WARNING: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)";
+					$state = $ERRORS{'WARNING'};
+				}
+			} elsif ($dstdomains{$dstmaxkey} >= $opt_C) {
+				if ($state == $ERRORS{'OK'}) {
+					$msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C)";
+					$state = $ERRORS{'CRITICAL'};
+				} elsif ($state == $ERRORS{'WARNING'}) {
+					$msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C) -and- " . $msg;
+					$msg =~ s/WARNING: //;
+				} elsif ($state == $ERRORS{'CRITICAL'}) {
+					$msg .= " -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)";
+				} else {
+					$msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)";
+					$state = $ERRORS{'CRITICAL'};
+				}
+			} else {
+				if ($dstdomains{$dstmaxkey} > 0) {
+					$msg .= " $dstdomains{$dstmaxkey} msgs. TO $dstmaxkey is below threshold ($opt_W/$opt_C)";
+				}
+			}
+
+		} # End of queue length thresholds
+
+	}
+
+} # end of ($mailq eq "sendmail")
+elsif ( $mailq eq "postfix" ) {
+
+     ## open mailq
+        if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
+                if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) {
+                        print "ERROR: could not open $utils::PATH_TO_MAILQ \n";
+                        exit $ERRORS{'UNKNOWN'};
+                }
+        }elsif( defined $utils::PATH_TO_MAILQ){
+                unless (-x $utils::PATH_TO_MAILQ) {
+                        print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n";
+                        exit $ERRORS{'UNKNOWN'};
+                }
+        } else {
+                print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n";
+                exit $ERRORS{'UNKNOWN'};
+        }
+
+
+        @lines = reverse <MAILQ>;
+
+        # close qmail-qstat
+        close MAILQ;
+        # declare an error if we also get a non-zero return code from mailq
+        # unless already set to critical
+        if ( $? ) {
+                $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"}  ;
+                print "STDERR $?: $!\n" if $verbose;
+                $msg = "$state: (stderr)\n";
+        }
+
+        ## shut off the alarm
+        alarm(0);
+
+        # check queue length
+        if ($lines[0]=~/Kbytes in (\d+)/) {
+                $msg_q = $1 ;
+	}elsif ($lines[0]=~/Mail queue is empty/) {
+		$msg_q = 0;
+        }else{
+                print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n";
+                exit   $ERRORS{'UNKNOWN'};
+        }
+
+        # check messages not processed
+        #if ($lines[1]=~/^messages in queue but not yet preprocessed: (\d+)/) {
+        #        my $msg_p = $1;
+        #}else{
+        #        print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n";
+        #        exit  $ERRORS{'UNKNOWN'};
+        #}
+
+        # check queue length(s)
+        if ($msg_q == 0){
+                $msg = "OK: mailq reports queue is empty";
+                $state = $ERRORS{'OK'};
+        } else {
+                print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose;
+
+                # overall queue length
+                if ($msg_q < $opt_w) {
+                        $msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)";
+                        $state = $ERRORS{'OK'};
+                }elsif  ($msg_q >= $opt_w  && $msg_q < $opt_c) {
+                        $msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)";
+                        $state = $ERRORS{'WARNING'};
+                }else {
+                        $msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)";
+                        $state = $ERRORS{'CRITICAL'};
+                }
+
+                # check messages not yet preprocessed (only compare is $opt_W and $opt_C
+                # are defined)
+
+                #if (defined $opt_W) {
+                #        $msg .= "[Preprocessed = $msg_p]";
+                #        if ($msg_p >= $opt_W && $msg_p < $opt_C ) {
+                #                $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"}  ;
+                #        }elsif ($msg_p >= $opt_C ) {
+                #                $state = $ERRORS{"CRITICAL"} ;
+                #        }
+                #}
+        }
+} # end of ($mailq eq "postfixl")
+elsif ( $mailq eq "qmail" ) {
+
+	# open qmail-qstat 
+	if ( defined $utils::PATH_TO_QMAIL_QSTAT && -x $utils::PATH_TO_QMAIL_QSTAT ) {
+		if (! open (MAILQ, "$utils::PATH_TO_QMAIL_QSTAT | " ) ) {
+			print "ERROR: could not open $utils::PATH_TO_QMAIL_QSTAT \n";
+			exit $ERRORS{'UNKNOWN'};
+		}
+	}elsif( defined $utils::PATH_TO_QMAIL_QSTAT){
+		unless (-x $utils::PATH_TO_QMAIL_QSTAT) {
+			print "ERROR: $utils::PATH_TO_QMAIL_QSTAT is not executable by (uid $>:gid($)))\n";
+			exit $ERRORS{'UNKNOWN'};
+		}
+	} else {
+		print "ERROR: \$utils::PATH_TO_QMAIL_QSTAT is not defined\n";
+		exit $ERRORS{'UNKNOWN'};
+	}
+
+	@lines = <MAILQ>;
+
+	# close qmail-qstat
+	close MAILQ;
+	# declare an error if we also get a non-zero return code from mailq
+	# unless already set to critical
+	if ( $? ) {
+		$state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"}  ;
+		print "STDERR $?: $!\n" if $verbose;
+		$msg = "$state: (stderr)\n";
+	}
+
+	## shut off the alarm
+	alarm(0);
+
+	# check queue length
+	if ($lines[0]=~/^messages in queue: (\d+)/) {
+		$msg_q = $1 ;
+	}else{
+		print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n";
+		exit   $ERRORS{'UNKNOWN'};
+	}
+
+	# check messages not processed
+	if ($lines[1]=~/^messages in queue but not yet preprocessed: (\d+)/) {
+		my $msg_p = $1;
+	}else{
+		print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n";
+		exit  $ERRORS{'UNKNOWN'};
+	}
+
+
+	# check queue length(s)
+	if ($msg_q == 0){
+		$msg = "OK: qmail-qstat reports queue is empty";
+		$state = $ERRORS{'OK'};
+	} else {
+		print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose;
+		
+		# overall queue length
+		if ($msg_q < $opt_w) {
+			$msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)";
+			$state = $ERRORS{'OK'};
+		}elsif ($msg_q >= $opt_w  && $msg_q < $opt_c) {
+			$msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)";
+			$state = $ERRORS{'WARNING'};
+		}else {
+			$msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)";
+			$state = $ERRORS{'CRITICAL'};
+		}
+
+		# check messages not yet preprocessed (only compare is $opt_W and $opt_C
+		# are defined)
+		
+		if (defined $opt_W) {
+			$msg .= "[Preprocessed = $msg_p]";
+			if ($msg_p >= $opt_W && $msg_p < $opt_C ) {
+				$state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"}  ;
+			}elsif ($msg_p >= $opt_C ) {
+				$state = $ERRORS{"CRITICAL"} ;
+			}
+		}
+	}				
+		
+
+
+} # end of ($mailq eq "qmail")
+elsif ( $mailq eq "exim" ) {
+	## open mailq 
+	if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
+		if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) {
+			print "ERROR: could not open $utils::PATH_TO_MAILQ \n";
+			exit $ERRORS{'UNKNOWN'};
+		}
+	}elsif( defined $utils::PATH_TO_MAILQ){
+		unless (-x $utils::PATH_TO_MAILQ) {
+			print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n";
+			exit $ERRORS{'UNKNOWN'};
+		}
+	} else {
+		print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n";
+		exit $ERRORS{'UNKNOWN'};
+	}
+
+	while (<MAILQ>) {
+	    #22m  1.7K 19aEEr-0007hx-Dy <> *** frozen ***
+            #root@exlixams.glups.fr
+
+	    if (/\s[\w\d]{6}-[\w\d]{6}-[\w\d]{2}\s/) { # message id 19aEEr-0007hx-Dy
+		$msg_q++ ;
+	    }
+	}
+	close(MAILQ) ;
+	if ($msg_q < $opt_w) {
+		$msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)";
+		$state = $ERRORS{'OK'};
+	}elsif ($msg_q >= $opt_w  && $msg_q < $opt_c) {
+		$msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)";
+		$state = $ERRORS{'WARNING'};
+	}else {
+		$msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)";
+		$state = $ERRORS{'CRITICAL'};
+	}
+} # end of ($mailq eq "exim")
+
+# Perfdata support
+print "$msg|unsent=$msg_q;$opt_w;$opt_c;0\n";
+exit $state;
+
+
+#####################################
+#### subs
+
+
+sub process_arguments(){
+	GetOptions
+		("V"   => \$opt_V, "version"	=> \$opt_V,
+		 "v"   => \$opt_v, "verbose"	=> \$opt_v,
+		 "h"   => \$opt_h, "help"		=> \$opt_h,
+		 "M:s" => \$opt_M, "mailserver:s" => \$opt_M, # mailserver (default	sendmail)
+		 "w=i" => \$opt_w, "warning=i"  => \$opt_w,   # warning if above this number
+		 "c=i" => \$opt_c, "critical=i" => \$opt_c,	  # critical if above this number
+		 "t=i" => \$opt_t, "timeout=i"  => \$opt_t 
+		 );
+
+	if ($opt_V) {
+		print_revision($PROGNAME,'$Revision: 1.6 $ ');
+		exit $ERRORS{'OK'};
+	}
+
+	if ($opt_h) {
+		print_help();
+		exit $ERRORS{'OK'};
+	}
+
+	if (defined $opt_v ){
+		$verbose = $opt_v;
+	}
+
+	unless (defined $opt_t) {
+		$opt_t = $utils::TIMEOUT ;	# default timeout
+	}
+
+	unless (  defined $opt_w &&  defined $opt_c ) {
+		print_usage();
+		exit $ERRORS{'UNKNOWN'};
+	}
+
+	if ( $opt_w >= $opt_c) {
+		print "Warning (-w) cannot be greater than Critical (-c)!\n";
+		exit $ERRORS{'UNKNOWN'};
+	}
+
+	if (defined $opt_W && ! defined !$opt_C) {
+		print "Need -C if using -W\n";
+		exit $ERRORS{'UNKNOWN'};
+	}elsif(defined $opt_W && defined $opt_C) {
+		if ($opt_W >= $opt_C) {
+			print "Warning (-W) cannot be greater than Critical (-C)!\n";
+			exit $ERRORS{'UNKNOWN'};
+		}
+	}
+
+	if (defined $opt_M) {
+		if ($opt_M =~ /^(sendmail|qmail|postfix|exim)$/) {
+			$mailq = $opt_M ;
+		}elsif( $opt_M eq ''){
+			$mailq = 'sendmail';
+		}else{
+			print "-M: $opt_M is not supported\n";
+			exit $ERRORS{'UNKNOWN'};
+		}
+	}else{
+		$mailq = 'sendmail' ;
+	}
+		
+	return $ERRORS{'OK'};
+}
+
+sub print_usage () {
+	print "Usage: $PROGNAME -w <warn> -c <crit> [-W <warn>] [-C <crit>] [-M <MTA>] [-t <timeout>] [-v verbose]\n";
+}
+
+sub print_help () {
+	print_revision($PROGNAME,'$Revision: 1.6 $');
+	print "Copyright (c) 2002 Subhendu Ghosh/Carlos Canau/Benjamin Schmid\n";
+	print "\n";
+	print_usage();
+	print "\n";
+	print "   Checks the number of messages in the mail queue (supports multiple sendmail queues, qmail)\n";
+	print "   Feedback/patches to support non-sendmail mailqueue welcome\n\n";
+	print "-w (--warning)   = Min. number of messages in queue to generate warning\n";
+	print "-c (--critical)  = Min. number of messages in queu to generate critical alert ( w < c )\n";
+	print "-W (--Warning)   = Min. number of messages for same domain in queue to generate warning\n";
+	print "-C (--Critical)  = Min. number of messages for same domain in queue to generate critical alert ( W < C )\n";
+	print "-t (--timeout)   = Plugin timeout in seconds (default = $utils::TIMEOUT)\n";
+	print "-M (--mailserver) = [ sendmail | qmail | postfix | exim ] (default = sendmail)\n";
+	print "-h (--help)\n";
+	print "-V (--version)\n";
+	print "-v (--verbose)   = debugging output\n";
+	print "\n\n";
+	print "Note: -w and -c are required arguments.  -W and -C are optional.\n";
+	print " -W and -C are applied to domains listed on the queues - both FROM and TO. (sendmail)\n";
+	print " -W and -C are applied message not yet preproccessed. (qmail)\n";
+	print " This plugin uses the system mailq command (sendmail) or qmail-stat (qmail)\n";
+	print " to look at the queues. Mailq can usually only be accessed by root or \n";
+	print " a TrustedUser. You will have to set appropriate permissions for the plugin to work.\n";
+	print "";
+	print "\n\n";
+	support();
+}
diff --git a/checkers/check_mrtg b/checkers/check_mrtg
new file mode 100755
index 0000000000..b5e0198b4d
Binary files /dev/null and b/checkers/check_mrtg differ
diff --git a/checkers/check_mrtgtraf b/checkers/check_mrtgtraf
new file mode 100755
index 0000000000..05670a29b9
Binary files /dev/null and b/checkers/check_mrtgtraf differ
diff --git a/checkers/check_mysql b/checkers/check_mysql
new file mode 100755
index 0000000000..7a15d43772
Binary files /dev/null and b/checkers/check_mysql differ
diff --git a/checkers/check_nagios b/checkers/check_nagios
new file mode 100755
index 0000000000..30b2d0cc28
Binary files /dev/null and b/checkers/check_nagios differ
diff --git a/checkers/check_nntp b/checkers/check_nntp
new file mode 120000
index 0000000000..e838da97eb
--- /dev/null
+++ b/checkers/check_nntp
@@ -0,0 +1 @@
+check_tcp
\ No newline at end of file
diff --git a/checkers/check_nntps b/checkers/check_nntps
new file mode 120000
index 0000000000..e838da97eb
--- /dev/null
+++ b/checkers/check_nntps
@@ -0,0 +1 @@
+check_tcp
\ No newline at end of file
diff --git a/checkers/check_nt b/checkers/check_nt
new file mode 100755
index 0000000000..907e3e19f1
Binary files /dev/null and b/checkers/check_nt differ
diff --git a/checkers/check_ntp b/checkers/check_ntp
new file mode 100755
index 0000000000..f8a503ceaf
--- /dev/null
+++ b/checkers/check_ntp
@@ -0,0 +1,465 @@
+#! /usr/bin/perl -w
+
+# (c)1999 Ian Cass, Knowledge Matters Ltd.
+# Read the GNU copyright stuff for all the legalese
+#
+# Check NTP time servers plugin. This plugin requires the ntpdate utility to
+# be installed on the system, however since it's part of the ntp suite, you 
+# should already have it installed.
+#
+# $Id: check_ntp.pl,v 1.29 2005/05/25 14:05:41 sghosh Exp $
+#
+# Nothing clever done in this program - its a very simple bare basics hack to
+# get the job done.
+#
+# Things to do...
+# check @words[9] for time differences greater than +/- x secs & return a
+# warning.
+#
+# (c) 1999 Mark Jewiss, Knowledge Matters Limited
+# 22-9-1999, 12:45
+#
+# Modified script to accept 2 parameters or set defaults.
+# Now issues warning or critical alert is time difference is greater than the 
+# time passed.
+#
+# These changes have not been tested completely due to the unavailability of a
+# server with the incorrect time.
+#
+# (c) 1999 Bo Kersey, VirCIO - Managed Server Solutions <bo@vircio.com>
+# 22-10-99, 12:17
+#
+# Modified the script to give useage if no parameters are input.
+#
+# Modified the script to check for negative as well as positive 
+# time differences.
+#
+# Modified the script to work with ntpdate 3-5.93e Wed Apr 14 20:23:03 EDT 1999
+#
+# Modified the script to work with ntpdate's that return adjust or offset...
+#
+#
+# Script modified 2000 June 01 by William Pietri <william@bianca.com>
+#
+# Modified script to handle weird cases:
+#     o NTP server doesn't respond (e.g., has died)
+#     o Server has correct time but isn't suitable synchronization
+#           source. This happens while starting up and if contact
+#           with master has been lost.
+#
+# Modifed to run under Embedded Perl  (sghosh@users.sf.net)
+#   - combined logic some blocks together..
+# 
+# Added ntpdate check for stratum 16 desynch peer (James Fidell) Feb 03, 2003
+#
+# ntpdate - offset is in seconds
+# changed ntpdc to ntpq - jitter/dispersion is in milliseconds
+#
+# Patch for for regex for stratum1 refid.
+
+require 5.004;
+use POSIX;
+use strict;
+use Getopt::Long;
+use vars qw($opt_V $opt_h $opt_H $opt_t $opt_w $opt_c $opt_O $opt_j $opt_k $verbose $PROGNAME $def_jitter $ipv4 $ipv6);
+use lib "/usr/lib/nagios/plugins";
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+
+$PROGNAME="check_ntp";
+
+sub print_help ();
+sub print_usage ();
+
+$ENV{'PATH'}='';
+$ENV{'BASH_ENV'}='';
+$ENV{'ENV'}='';
+
+# defaults in sec
+my $DEFAULT_OFFSET_WARN =  60;  # 1 minute
+my $DEFAULT_OFFSET_CRIT = 120;  # 2 minutes
+# default in millisec
+my $DEFAULT_JITTER_WARN =   5000; # 5 sec
+my $DEFAULT_JITTER_CRIT =  10000; # 10 sec
+
+Getopt::Long::Configure('bundling');
+GetOptions
+	("V"   => \$opt_V, "version"    => \$opt_V,
+	 "h"   => \$opt_h, "help"       => \$opt_h,
+	 "v"   => \$verbose, "verbose" 	=> \$verbose,
+	 "4"   => \$ipv4, "use-ipv4"	=> \$ipv4,
+	 "6"   => \$ipv6, "use-ipv6"	=> \$ipv6,
+	 "w=f" => \$opt_w, "warning=f"  => \$opt_w,   # offset|adjust warning if above this number
+	 "c=f" => \$opt_c, "critical=f" => \$opt_c,   # offset|adjust critical if above this number
+	 "O"   => \$opt_O, "zero-offset" => \$opt_O,  # zero-offset  bad
+	 "j=s" => \$opt_j, "jwarn=i"    => \$opt_j,   # jitter warning if above this number
+	 "k=s" => \$opt_k, "jcrit=i"    => \$opt_k,   # jitter critical if above this number
+	 "t=s" => \$opt_t, "timeout=i"  => \$opt_t,
+	 "H=s" => \$opt_H, "hostname=s" => \$opt_H);
+
+if ($opt_V) {
+	print_revision($PROGNAME,'$Revision: 1.29 $ ');
+	exit $ERRORS{'OK'};
+}
+
+if ($opt_h) {
+	print_help();
+	exit $ERRORS{'OK'};
+}
+
+# jitter test params specified
+if (defined $opt_j || defined $opt_k ) {
+	$def_jitter = 1;
+}
+
+$opt_H = shift unless ($opt_H);
+my $host = $1 if ($opt_H && $opt_H =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z][-a-zA-Z0-9]+(\.[a-zA-Z][-a-zA-Z0-9]+)*)$/);
+unless ($host) {
+	print "No target host specified\n";
+	print_usage();
+	exit $ERRORS{'UNKNOWN'};
+}
+
+my ($timeout, $owarn, $ocrit, $jwarn, $jcrit);
+
+$timeout = $TIMEOUT;
+($opt_t) && ($opt_t =~ /^([0-9]+)$/) && ($timeout = $1);
+
+$owarn = $DEFAULT_OFFSET_WARN;
+($opt_w) && ($opt_w =~ /^([0-9.]+)$/) && ($owarn = $1);
+
+$ocrit = $DEFAULT_OFFSET_CRIT;
+($opt_c) && ($opt_c =~ /^([0-9.]+)$/) && ($ocrit = $1);
+
+$jwarn = $DEFAULT_JITTER_WARN;
+($opt_j) && ($opt_j =~ /^([0-9]+)$/) && ($jwarn = $1);
+
+$jcrit = $DEFAULT_JITTER_CRIT;
+($opt_k) && ($opt_k =~ /^([0-9]+)$/) && ($jcrit = $1);
+
+if ($ocrit < $owarn ) {
+	print "Critical offset should be larger than warning offset\n";
+	print_usage();
+	exit $ERRORS{"UNKNOWN"};
+}
+
+if ($def_jitter) {
+	if ($opt_k < $opt_j) {
+		print "Critical jitter should be larger than warning jitter\n";
+		print_usage();
+		exit $ERRORS{'UNKNOWN'};
+	}
+}
+
+
+my $stratum = -1;
+my $ignoreret = 0;
+my $answer = undef;
+my $offset = undef;
+my $jitter = undef;
+my $syspeer = undef;
+my $candidate = 0;
+my @candidates;
+my $msg; # first line of output to print if format is invalid
+
+my $state = $ERRORS{'UNKNOWN'};
+my $ntpdate_error = $ERRORS{'UNKNOWN'};
+my $jitter_error = $ERRORS{'UNKNOWN'};
+
+# some systems don't have a proper ntpq  (migrated from ntpdc)
+my $have_ntpq = undef;
+if ($utils::PATH_TO_NTPQ && -x $utils::PATH_TO_NTPQ ) {
+	$have_ntpq = 1;  
+}else{
+	$have_ntpq = 0;
+}
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+	print ("ERROR: No response from ntp server (alarm)\n");
+	exit $ERRORS{"UNKNOWN"};
+};
+alarm($timeout);
+
+# Determine protocol to be used for ntpdate and ntpq
+my $ntpdate = $utils::PATH_TO_NTPDATE;
+my $ntpq    = $utils::PATH_TO_NTPQ;
+if ($ipv4) {
+        $ntpdate .= " -4";
+        $ntpq .= " -4";
+}
+elsif ($ipv6) {
+        $ntpdate .= " -6";
+        $ntpq .= " -6";
+}
+# else don't use any flags
+
+###
+###
+### First, check ntpdate
+###
+###
+
+if (!open (NTPDATE, $ntpdate . " -q $host 2>&1 |")) {
+	print "Could not open ntpdate\n";
+	exit $ERRORS{"UNKNOWN"};
+}
+
+while (<NTPDATE>) {
+	#print if ($verbose);  # noop
+	$msg = $_ unless ($msg);
+	
+	if (/stratum\s(\d+)/) {
+		$stratum = $1;
+	}
+	
+	if (/(offset|adjust)\s+([-.\d]+)/i) {
+		$offset = $2;
+
+		# An offset of 0.000000 with an error is probably bogus. Actually,
+		# it's probably always bogus, but let's be paranoid here.
+		# Has been reported that 0.0000 happens in a production environment
+		# on Solaris 8 so this check should be taken out - SF tracker 1150777
+		if (defined $opt_O ) {
+			if ($offset == 0) { undef $offset;}
+		}
+
+		$ntpdate_error = defined ($offset) ? $ERRORS{"OK"} : $ERRORS{"CRITICAL"};
+		print "ntperr = $ntpdate_error \n" if $verbose;
+	
+	}
+
+	if (/no server suitable for synchronization found/) {
+		if ($stratum == 16) {
+			$ntpdate_error = $ERRORS{"WARNING"};
+			$msg = "Desynchronized peer server found";
+			$ignoreret=1;
+		}
+		else {
+			$ntpdate_error = $ERRORS{"CRITICAL"};
+			$msg = "No suitable peer server found - ";
+		}
+	}
+
+}
+
+close (NTPDATE); 
+# declare an error if we also get a non-zero return code from ntpdate
+# unless already set to critical
+if ( $? && !$ignoreret ) {
+	print "stderr = $? : $! \n" if $verbose;
+	$ntpdate_error = $ntpdate_error == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"UNKNOWN"}  ;
+	print "ntperr = $ntpdate_error : $!\n" if $verbose;
+}
+
+###
+###
+### Then scan xntpq/ntpq if it exists
+### and look in the 11th column for jitter 
+###
+# Field 1: Tally Code ( Space, 'x','.','-','+','#','*','o')
+#           Only match for '*' which implies sys.peer 
+#           or 'o' which implies pps.peer
+#           If both exist, the last one is picked. 
+# Field 2: address of the remote peer
+# Field 3: Refid of the clock (0.0.0.0 if unknown, WWWV/PPS/GPS/ACTS/USNO/PCS/... if Stratum1)
+# Field 4: stratum (0-15)
+# Field 5: Type of the peer: local (l), unicast (u), multicast (m) 
+#          broadcast (b); not sure about multicast/broadcast
+# Field 6: last packet receive (in seconds)
+# Field 7: polling interval
+# Field 8: reachability resgister (octal) 
+# Field 9: delay
+# Field 10: offset
+# Field 11: dispersion/jitter
+# 
+# According to bug 773588 Some solaris xntpd implementations seemto match on
+# "#" even though the docs say it exceeds maximum distance. Providing patch
+# here which will generate a warining.
+
+if ($have_ntpq) {
+
+	if ( open(NTPQ, $ntpq . " -np $host 2>&1 |") ) {
+		while (<NTPQ>) {
+			print $_ if ($verbose);
+			if ( /timed out/ ){
+				$have_ntpq = 0 ;
+				last ;
+			}
+			# number of candidates on <host> for sys.peer
+			if (/^(\*|\+|\#|o])/) {
+				++$candidate;
+				push (@candidates, $_);
+				print "Candidate count= $candidate\n" if ($verbose);
+			}
+			
+			# match sys.peer or pps.peer
+			if (/^(\*|o)(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/) {
+				$syspeer = $2;
+				$stratum = $4;
+				$jitter = $11;
+				print "match $_ \n" if $verbose;
+				if ($jitter > $jcrit) {
+					print "Jitter_crit = $11 :$jcrit\n" if ($verbose);
+					$jitter_error = $ERRORS{'CRITICAL'};
+				} elsif ($jitter > $jwarn ) {
+					print "Jitter_warn = $11 :$jwarn\n" if ($verbose);
+					$jitter_error = $ERRORS{'WARNING'};
+				} else {
+					$jitter_error = $ERRORS{'OK'};
+				}
+			} else {
+				print "No match!\n" if $verbose;
+				$jitter = '(not parsed)';
+			}
+			
+		}
+		close NTPQ;
+
+		# if we did not match sys.peer or pps.peer but matched # candidates only
+		# generate a warning 
+		# based on bug id 773588
+		unless (defined $syspeer) {
+			if ($#candidates >=0) {
+				foreach my $c (@candidates) {
+					$c =~ /^(#)([-0-9.\s]+)\s+([-0-9A-Za-z_().]+)\s+([-0-9.]+)\s+([lumb-]+)\s+([-0-9m.]+)\s+([-0-9.]+)\s+([-0-9.]+)\s+([-0-9.]+)\s+([-0-9.]+)\s+([-0-9.]+)/;
+					$syspeer = $2;
+					$stratum = $4;
+					$jitter = $11;
+					print "candidate match $c \n" if $verbose;
+					if ($jitter > $jcrit) {
+						print "Candidate match - Jitter_crit = $11 :$jcrit\n" if ($verbose);
+						$jitter_error = $ERRORS{'CRITICAL'};
+					}elsif ($jitter > $jwarn ) {
+						print "Candidate match - Jitter_warn = $11 :$jwarn \n" if ($verbose);
+						$jitter_error = $ERRORS{'WARNING'};
+					} else {
+						$jitter_error = $ERRORS{'WARNING'};
+					}
+				}
+
+			}
+		}
+	}
+}
+
+
+if ($ntpdate_error != $ERRORS{'OK'}) {
+	$state = $ntpdate_error;
+	if ($ntpdate_error == $ERRORS{'WARNING'} ) {
+		$answer = $msg;
+	}
+	else {
+		$answer = $msg . "Server for ntp probably down";
+	}
+
+	if (defined($offset) && abs($offset) > $ocrit) {
+		$state = $ERRORS{'CRITICAL'};
+		$answer = "Server Error and offset $offset sec > +/- $ocrit sec";
+	} elsif (defined($offset) && abs($offset) > $owarn) {
+		$answer = "Server error and offset $offset sec > +/- $owarn sec";
+	} elsif (defined($jitter) && abs($jitter) > $jcrit) {
+		$answer = "Server error and jitter $jitter msec > +/- $jcrit msec";
+	} elsif (defined($jitter) && abs($jitter) > $jwarn) {
+		$answer = "Server error and jitter $jitter msec > +/- $jwarn msec";
+	}
+
+} elsif ($have_ntpq && $jitter_error != $ERRORS{'OK'}) {
+	$state = $jitter_error;
+	$answer = "Jitter $jitter too high";
+	if (defined($offset) && abs($offset) > $ocrit) {
+		$state = $ERRORS{'CRITICAL'};
+		$answer = "Jitter error and offset $offset sec > +/- $ocrit sec";
+	} elsif (defined($offset) && abs($offset) > $owarn) {
+		$answer = "Jitter error and offset $offset sec > +/- $owarn sec";
+	} elsif (defined($jitter) && abs($jitter) > $jcrit) {
+		$answer = "Jitter error and jitter $jitter msec > +/- $jcrit msec";
+	} elsif (defined($jitter) && abs($jitter) > $jwarn) {
+		$answer = "Jitter error and jitter $jitter msec > +/- $jwarn msec";
+	}
+
+} elsif( !$have_ntpq ) { # no errors from ntpdate and no ntpq or ntpq timed out
+	if (abs($offset) > $ocrit) {
+		$state = $ERRORS{'CRITICAL'};
+		$answer = "Offset $offset sec > +/- $ocrit sec";
+	} elsif (abs($offset) > $owarn) {
+		$state = $ERRORS{'WARNING'};
+		$answer = "Offset $offset sec > +/- $owarn sec";
+	} elsif (( abs($offset) > $owarn) && $def_jitter ) {
+		$state = $ERRORS{'WARNING'};
+		$answer = "Offset $offset sec > +/- $owarn sec, ntpq timed out";
+	} elsif ( $def_jitter ) {
+		$state = $ERRORS{'WARNING'};
+		$answer = "Offset $offset secs, ntpq timed out";
+	} else{
+		$state = $ERRORS{'OK'};
+		$answer = "Offset $offset secs";
+	}
+
+
+
+} else { # no errors from ntpdate or ntpq
+	if (abs($offset) > $ocrit) {
+		$state = $ERRORS{'CRITICAL'};
+		$answer = "Offset $offset sec > +/- $ocrit sec, jitter $jitter msec";
+	} elsif (abs($jitter) > $jcrit ) {
+		$state = $ERRORS{'CRITICAL'};
+		$answer = "Jitter $jitter msec> +/- $jcrit msec, offset $offset sec";
+	} elsif (abs($offset) > $owarn) {
+		$state = $ERRORS{'WARNING'};
+		$answer = "Offset $offset sec > +/- $owarn sec, jitter $jitter msec";
+	} elsif (abs($jitter) > $jwarn ) {
+		$state = $ERRORS{'WARNING'};
+		$answer = "Jitter $jitter msec> +/- $jwarn msec, offset $offset sec";
+
+	} else {
+		$state = $ERRORS{'OK'};
+		$answer = "Offset $offset secs, jitter $jitter msec, peer is stratum $stratum";
+	}
+	
+}
+
+foreach my $key (keys %ERRORS) {
+	if ($state==$ERRORS{$key}) {
+#		print ("NTP $key: $answer");
+		print ("NTP $key: $answer|offset=$offset, jitter=" . $jitter/1000 .	",peer_stratum=$stratum\n");
+		last;
+	}
+}
+exit $state;
+
+
+####
+#### subs
+
+sub print_usage () {
+	print "Usage: $PROGNAME -H <host> [-46] [-O] [-w <warn>] [-c <crit>] [-j <warn>] [-k <crit>] [-v verbose]\n";
+}
+
+sub print_help () {
+	print_revision($PROGNAME,'$Revision: 1.29 $');
+	print "Copyright (c) 2003 Bo Kersey/Karl DeBisschop\n";
+	print "\n";
+	print_usage();
+	print "
+Checks the local timestamp offset versus <host> with ntpdate
+Checks the jitter/dispersion of clock signal between <host> and its sys.peer with ntpq\n
+-O (--zero-offset)
+     A zero offset on \"ntpdate\" will generate a CRITICAL.\n
+-w (--warning)
+     Clock offset in seconds at which a warning message will be generated.\n	Defaults to $DEFAULT_OFFSET_WARN.
+-c (--critical) 
+     Clock offset in seconds at which a critical message will be generated.\n	Defaults to $DEFAULT_OFFSET_CRIT.
+-j (--jwarn)
+     Clock jitter in milliseconds at which a warning message will be generated.\n	Defaults to $DEFAULT_JITTER_WARN.
+-k (--jcrit)
+    Clock jitter in milliseconds at which a critical message will be generated.\n	Defaults to $DEFAULT_JITTER_CRIT.
+    
+    If jitter/dispersion is specified with -j or -k and ntpq times out, then a
+    warning is returned.\n
+-4 (--use-ipv4)
+    Use IPv4 connection
+-6 (--use-ipv6)
+    Use IPv6 connection
+\n";	
+support();
+}
diff --git a/checkers/check_nwstat b/checkers/check_nwstat
new file mode 100755
index 0000000000..3e82019dd7
Binary files /dev/null and b/checkers/check_nwstat differ
diff --git a/checkers/check_oracle b/checkers/check_oracle
new file mode 100755
index 0000000000..5bf9066c78
--- /dev/null
+++ b/checkers/check_oracle
@@ -0,0 +1,284 @@
+#! /bin/sh
+#
+# latigid010@yahoo.com
+# 01/06/2000
+#
+#  This Nagios plugin was created to check Oracle status
+#
+
+PROGNAME=`basename $0`
+PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
+REVISION=`echo '$Revision: 1.14 $' | sed -e 's/[^0-9.]//g'`
+
+. $PROGPATH/utils.sh
+
+
+print_usage() {
+  echo "Usage:"
+  echo "  $PROGNAME --tns <Oracle Sid or Hostname/IP address>"
+  echo "  $PROGNAME --db <ORACLE_SID>"
+  echo "  $PROGNAME --login <ORACLE_SID>"
+  echo "  $PROGNAME --cache <ORACLE_SID> <USER> <PASS> <CRITICAL> <WARNING>"
+  echo "  $PROGNAME --tablespace <ORACLE_SID> <USER> <PASS> <TABLESPACE> <CRITICAL> <WARNING>"
+  echo "  $PROGNAME --oranames <Hostname>"
+  echo "  $PROGNAME --help"
+  echo "  $PROGNAME --version"
+}
+
+print_help() {
+  print_revision $PROGNAME $REVISION
+  echo ""
+  print_usage
+  echo ""
+  echo "Check Oracle status"
+  echo ""
+  echo "--tns SID/IP Address"
+  echo "   Check remote TNS server"
+  echo "--db SID"
+  echo "   Check local database (search /bin/ps for PMON process) and check"
+  echo "   filesystem for sgadefORACLE_SID.dbf"
+  echo "--login SID"
+  echo "   Attempt a dummy login and alert if not ORA-01017: invalid username/password"
+  echo "--cache"
+  echo "   Check local database for library and buffer cache hit ratios"
+  echo "       --->  Requires Oracle user/password and SID specified."
+  echo "       		--->  Requires select on v_$sysstat and v_$librarycache"
+  echo "--tablespace"
+  echo "   Check local database for tablespace capacity in ORACLE_SID"
+  echo "       --->  Requires Oracle user/password specified."
+  echo "       		--->  Requires select on dba_data_files and dba_free_space"
+  echo "--oranames Hostname"
+  echo "   Check remote Oracle Names server"
+  echo "--help"
+  echo "   Print this help screen"
+  echo "--version"
+  echo "   Print version and license information"
+  echo ""
+  echo "If the plugin doesn't work, check that the ORACLE_HOME environment"
+  echo "variable is set, that ORACLE_HOME/bin is in your PATH, and the"
+  echo "tnsnames.ora file is locatable and is properly configured."
+  echo ""
+  echo "When checking local database status your ORACLE_SID is case sensitive."
+  echo ""
+  echo "If you want to use a default Oracle home, add in your oratab file:"
+  echo "*:/opt/app/oracle/product/7.3.4:N"
+  echo ""
+  support
+}
+
+case "$1" in
+1)
+    cmd='--tns'
+    ;;
+2)
+    cmd='--db'
+    ;;
+*)
+    cmd="$1"
+    ;;
+esac
+
+# Information options
+case "$cmd" in
+--help)
+		print_help
+    exit $STATE_OK
+    ;;
+-h)
+		print_help
+    exit $STATE_OK
+    ;;
+--version)
+		print_revision $PLUGIN $REVISION
+    exit $STATE_OK
+    ;;
+-V)
+		print_revision $PLUGIN $REVISION
+    exit $STATE_OK
+    ;;
+esac
+
+# Hunt down a reasonable ORACLE_HOME
+if [ -z "$ORACLE_HOME" ] ; then
+	# Adjust to taste
+	for oratab in /var/opt/oracle/oratab /etc/oratab
+	do
+	[ ! -f $oratab ] && continue
+	ORACLE_HOME=`IFS=:
+		while read SID ORACLE_HOME junk;
+		do
+			if [ "$SID" = "$2" -o "$SID" = "*" ] ; then
+				echo $ORACLE_HOME;
+				exit;
+			fi;
+		done < $oratab`
+	[ -n "$ORACLE_HOME" ] && break
+	done
+fi
+# Last resort
+[ -z "$ORACLE_HOME" -a -d $PROGPATH/oracle ] && ORACLE_HOME=$PROGPATH/oracle
+
+if [ -z "$ORACLE_HOME" -o ! -d "$ORACLE_HOME" ] ; then
+	echo "Cannot determine ORACLE_HOME for sid $2"
+	exit $STATE_UNKNOWN
+fi
+PATH=$PATH:$ORACLE_HOME/bin
+LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
+export ORACLE_HOME PATH LD_LIBRARY_PATH
+
+case "$cmd" in
+--tns)
+    tnschk=` tnsping $2`
+    tnschk2=` echo  $tnschk | grep -c OK`
+    if [ ${tnschk2} -eq 1 ] ; then 
+	tnschk3=` echo $tnschk | sed -e 's/.*(//' -e 's/).*//'`
+	echo "OK - reply time ${tnschk3} from $2"
+	exit $STATE_OK
+    else
+	echo "No TNS Listener on $2"
+	exit $STATE_CRITICAL
+    fi
+    ;;
+--oranames)
+    namesctl status $2 | awk '
+    /Server has been running for:/ {
+	msg = "OK: Up"
+	for (i = 6; i <= NF; i++) {
+	    msg = msg " " $i
+	}
+	status = '$STATE_OK'
+    }
+    /error/ {
+	msg = "CRITICAL: " $0
+	status = '$STATE_CRITICAL'
+    }
+    END {
+	print msg
+	exit status
+    }'
+    ;;
+--db)
+    pmonchk=`ps -ef | grep -v grep | grep -c "ora_pmon_${2}$"`
+    if [ ${pmonchk} -ge 1 ] ; then
+	echo "${2} OK - ${pmonchk} PMON process(es) running"
+	exit $STATE_OK
+    #if [ -f $ORACLE_HOME/dbs/sga*${2}* ] ; then
+	#if [ ${pmonchk} -eq 1 ] ; then
+    #utime=`ls -la $ORACLE_HOME/dbs/sga*$2* | cut -c 43-55`
+	    #echo "${2} OK - running since ${utime}"
+	    #exit $STATE_OK
+	#fi
+    else
+	echo "${2} Database is DOWN"
+	exit $STATE_CRITICAL
+    fi
+    ;;
+--login)
+    loginchk=`sqlplus dummy/user@$2 < /dev/null`
+    loginchk2=` echo  $loginchk | grep -c ORA-01017`
+    if [ ${loginchk2} -eq 1 ] ; then 
+	echo "OK - dummy login connected"
+	exit $STATE_OK
+    else
+	loginchk3=` echo "$loginchk" | grep "ORA-" | head -1`
+	echo "CRITICAL - $loginchk3"
+	exit $STATE_CRITICAL
+    fi
+    ;;
+--cache)
+    if [ ${5} -gt ${6} ] ; then
+	echo "UNKNOWN - Warning level is less then Crit"
+	exit $STATE_UNKNOWN
+    fi
+    result=`sqlplus -s ${3}/${4}@${2} << EOF
+set pagesize 0
+set numf '9999999.99'
+select (1-(pr.value/(dbg.value+cg.value)))*100
+from v\\$sysstat pr, v\\$sysstat dbg, v\\$sysstat cg
+where pr.name='physical reads'
+and dbg.name='db block gets'
+and cg.name='consistent gets';
+EOF`
+
+    if [ -n "`echo $result | grep ORA-`" ] ; then
+      error=` echo "$result" | grep "ORA-" | head -1`
+      echo "CRITICAL - $error"
+      exit $STATE_CRITICAL
+    fi
+
+    buf_hr=`echo "$result" | awk '/^[0-9\. \t]+$/ {print int($1)}'` 
+    buf_hrx=`echo "$result" | awk '/^[0-9\. \t]+$/ {print $1}'` 
+    result=`sqlplus -s ${3}/${4}@${2} << EOF
+set pagesize 0
+set numf '9999999.99'
+select sum(lc.pins)/(sum(lc.pins)+sum(lc.reloads))*100
+from v\\$librarycache lc;
+EOF`
+	
+    if [ -n "`echo $result | grep ORA-`" ] ; then
+      error=` echo "$result" | grep "ORA-" | head -1`
+      echo "CRITICAL - $error"
+      exit $STATE_CRITICAL
+    fi
+
+    lib_hr=`echo "$result" | awk '/^[0-9\. \t]+$/ {print int($1)}'`
+    lib_hrx=`echo "$result" | awk '/^[0-9\. \t]+$/ {print $1}'`
+
+    if [ $buf_hr -le ${5} -o $lib_hr -le ${5} ] ; then
+  	echo "${2} CRITICAL - Cache Hit Rates: $lib_hrx% Lib -- $buf_hrx% Buff|lib=$lib_hrx%;${6};${5};0;100 buffer=$buf_hrx%;${6};${5};0;100"
+	exit $STATE_CRITICAL
+    fi
+    if [ $buf_hr -le ${6} -o $lib_hr -le ${6} ] ; then
+  	echo "${2} WARNING  - Cache Hit Rates: $lib_hrx% Lib -- $buf_hrx% Buff|lib=$lib_hrx%;${6};${5};0;100 buffer=$buf_hrx%;${6};${5};0;100"
+	exit $STATE_WARNING
+    fi
+    echo "${2} OK - Cache Hit Rates: $lib_hrx% Lib -- $buf_hrx% Buff|lib=$lib_hrx%;${6};${5};0;100 buffer=$buf_hrx%;${6};${5};0;100"
+
+    exit $STATE_OK
+    ;;
+--tablespace)
+    if [ ${6} -lt ${7} ] ; then
+	echo "UNKNOWN - Warning level is more then Crit"
+	exit $STATE_UNKNOWN
+    fi
+    result=`sqlplus -s ${3}/${4}@${2} << EOF
+set pagesize 0
+set numf '9999999.99'
+select b.free,a.total,100 - trunc(b.free/a.total * 1000) / 10 prc
+from (
+select tablespace_name,sum(bytes)/1024/1024 total
+from dba_data_files group by tablespace_name) A,
+( select tablespace_name,sum(bytes)/1024/1024 free
+from dba_free_space group by tablespace_name) B
+where a.tablespace_name=b.tablespace_name and a.tablespace_name='${5}';
+EOF`
+
+    if [ -n "`echo $result | grep ORA-`" ] ; then
+      error=` echo "$result" | grep "ORA-" | head -1`
+      echo "CRITICAL - $error"
+      exit $STATE_CRITICAL
+    fi
+
+    ts_free=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print int($1)}'` 
+    ts_total=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print int($2)}'` 
+    ts_pct=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print int($3)}'` 
+    ts_pctx=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print $3}'` 
+    if [ "$ts_free" -eq 0 -a "$ts_total" -eq 0 -a "$ts_pct" -eq 0 ] ; then
+        echo "No data returned by Oracle - tablespace $5 not found?"
+        exit $STATE_UNKNOWN
+    fi
+    if [ "$ts_pct" -ge ${6} ] ; then
+  	echo "${2} : ${5} CRITICAL - $ts_pctx% used [ $ts_free / $ts_total MB available ]|${5}=$ts_pctx%;${7};${6};0;100"
+	exit $STATE_CRITICAL
+    fi
+    if [ "$ts_pct" -ge ${7} ] ; then
+  	echo "${2} : ${5} WARNING  - $ts_pctx% used [ $ts_free / $ts_total MB available ]|${5}=$ts_pctx%;${7};${6};0;100"
+	exit $STATE_WARNING
+    fi
+    echo "${2} : ${5} OK - $ts_pctx% used [ $ts_free / $ts_total MB available ]|${5}=$ts_pctx%;${7};${6};0;100"
+    exit $STATE_OK
+    ;;
+*)
+    print_usage
+		exit $STATE_UNKNOWN
+esac
diff --git a/checkers/check_overcr b/checkers/check_overcr
new file mode 100755
index 0000000000..8850dbee33
Binary files /dev/null and b/checkers/check_overcr differ
diff --git a/checkers/check_pgsql b/checkers/check_pgsql
new file mode 100755
index 0000000000..1847203517
Binary files /dev/null and b/checkers/check_pgsql differ
diff --git a/checkers/check_ping b/checkers/check_ping
new file mode 100755
index 0000000000..59ee1f0d6c
Binary files /dev/null and b/checkers/check_ping differ
diff --git a/checkers/check_pop b/checkers/check_pop
new file mode 120000
index 0000000000..e838da97eb
--- /dev/null
+++ b/checkers/check_pop
@@ -0,0 +1 @@
+check_tcp
\ No newline at end of file
diff --git a/checkers/check_procs b/checkers/check_procs
new file mode 100755
index 0000000000..73df901cb8
Binary files /dev/null and b/checkers/check_procs differ
diff --git a/checkers/check_radius b/checkers/check_radius
new file mode 100755
index 0000000000..f07273eacf
Binary files /dev/null and b/checkers/check_radius differ
diff --git a/checkers/check_real b/checkers/check_real
new file mode 100755
index 0000000000..8e1e98f521
Binary files /dev/null and b/checkers/check_real differ
diff --git a/checkers/check_rpc b/checkers/check_rpc
new file mode 100755
index 0000000000..cf3eb87e86
--- /dev/null
+++ b/checkers/check_rpc
@@ -0,0 +1,377 @@
+#! /usr/bin/perl -w
+#
+# check_rpc plugin for nagios
+#
+# usage:
+#    check_rpc host service
+#
+# Check if an rpc serice is registered and running
+# using rpcinfo - $proto $host $prognum 2>&1 |";
+#
+# Use these hosts.cfg entries as examples
+#
+# command[check_nfs]=/some/path/libexec/check_rpc $HOSTADDRESS$ nfs
+# service[check_nfs]=NFS;24x7;3;5;5;unix-admin;60;24x7;1;1;1;;check_rpc
+#
+# initial version: 3 May 2000 by Truongchinh Nguyen and Karl DeBisschop
+# Modified May 2002 Subhendu Ghosh - support for ePN and patches
+# current status: $Revision: 1.8 $
+#
+# Copyright Notice: GPL
+# $Id: check_rpc.pl,v 1.8 2003/08/10 12:11:49 kdebisschop Exp $
+#
+
+use strict;
+use lib "/usr/lib/nagios/plugins";
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+use vars qw($PROGNAME);
+my ($verbose,@proto,%prognum,$host,$response,$prognum,$port,$cmd,$progver,$state);
+my ($array_ref,$test,$element,@progkeys,$proto,$a,$b);
+my ($opt_V,$opt_h,$opt_C,$opt_p,$opt_H,$opt_c,$opt_u,$opt_t);
+my ($line, @progvers, $response2,$response3);
+$opt_V = $opt_h = $opt_C = $opt_p = $opt_H =  $opt_u = $opt_t ='';
+$state = 'UNKNOWN';
+$progver = $response=$response2= $response3 ='';
+
+$PROGNAME = "check_rpc";
+sub print_help ();
+sub print_usage ();
+sub in ($$);
+
+$ENV{'BASH_ENV'}=''; 
+$ENV{'ENV'}='';
+$ENV{'PATH'}='';
+$ENV{'LC_ALL'}='C';
+
+#Initialise protocol for each progname number
+# 'u' for UDP, 't' for TCP 
+$proto[10003]='u';
+$proto[10004]='u';
+$proto[10007]='u';
+
+use Getopt::Long;
+Getopt::Long::Configure('bundling');
+GetOptions(
+	"V"   => \$opt_V,   "version"    => \$opt_V,
+	"h"   => \$opt_h,   "help"       => \$opt_h,
+	"C=s" => \$opt_C,   "command=s"  => \$opt_C,
+	"p=i" => \$opt_p,   "port=i"     => \$opt_p,
+ 	"H=s" => \$opt_H,   "hostname=s" => \$opt_H,
+ 	"c=s" => \$opt_c,   "progver=s"  => \$opt_c,
+ 	"v+"  => \$verbose, "verbose+"   => \$verbose,
+ 	"u"   => \$opt_u,   "udp"        => \$opt_u,
+ 	"t"   => \$opt_t,   "tcp"        => \$opt_t
+);
+
+# -h means display verbose help screen
+if ($opt_h) { print_help(); exit $ERRORS{'OK'}; }
+
+# -V means display version number
+if ($opt_V) { 
+	print_revision($PROGNAME,'$Revision: 1.8 $ '); 
+	exit $ERRORS{'OK'}; 
+}
+
+# Hash containing all RPC program names and numbers
+# Add to the hash if support for new RPC program is required
+
+%prognum  = (
+	"portmapper"  => 100000 ,
+	"portmap"  => 100000 ,
+	"sunrpc"  => 100000 ,
+	"rpcbind"  => 100000 ,
+	"rstatd"  => 100001 ,
+	"rstat"  => 100001 ,
+	"rup"  => 100001 ,
+	"perfmeter"  => 100001 ,
+	"rstat_svc"  => 100001 ,
+	"rusersd"  => 100002 ,
+	"rusers"  => 100002 ,
+	"nfs"  => 100003 ,
+	"nfsprog"  => 100003 ,
+	"ypserv"  => 100004 ,
+	"ypprog"  => 100004 ,
+	"mountd"  => 100005 ,
+	"mount"  => 100005 ,
+	"showmount"  => 100005 ,
+	"ypbind"  => 100007 ,
+	"walld"  => 100008 ,
+	"rwall"  => 100008 ,
+	"shutdown"  => 100008 ,
+	"yppasswdd"  => 100009 ,
+	"yppasswd"  => 100009 ,
+	"etherstatd"  => 100010 ,
+	"etherstat"  => 100010 ,
+	"rquotad"  => 100011 ,
+	"rquotaprog"  => 100011 ,
+	"quota"  => 100011 ,
+	"rquota"  => 100011 ,
+	"sprayd"  => 100012 ,
+	"spray"  => 100012 ,
+	"3270_mapper"  => 100013 ,
+	"rje_mapper"  => 100014 ,
+	"selection_svc"  => 100015 ,
+	"selnsvc"  => 100015 ,
+	"database_svc"  => 100016 ,
+	"rexd"  => 100017 ,
+	"rex"  => 100017 ,
+	"alis"  => 100018 ,
+	"sched"  => 100019 ,
+	"llockmgr"  => 100020 ,
+	"nlockmgr"  => 100021 ,
+	"x25_inr"  => 100022 ,
+	"statmon"  => 100023 ,
+	"status"  => 100024 ,
+	"bootparam"  => 100026 ,
+	"ypupdated"  => 100028 ,
+	"ypupdate"  => 100028 ,
+	"keyserv"  => 100029 ,
+	"keyserver"  => 100029 ,
+	"sunlink_mapper"  => 100033 ,
+	"tfsd"  => 100037 ,
+	"nsed"  => 100038 ,
+	"nsemntd"  => 100039 ,
+	"showfhd"  => 100043 ,
+	"showfh"  => 100043 ,
+	"ioadmd"  => 100055 ,
+	"rpc.ioadmd"  => 100055 ,
+	"NETlicense"  => 100062 ,
+	"sunisamd"  => 100065 ,
+	"debug_svc"  => 100066 ,
+	"dbsrv"  => 100066 ,
+	"ypxfrd"  => 100069 ,
+	"rpc.ypxfrd"  => 100069 ,
+	"bugtraqd"  => 100071 ,
+	"kerbd"  => 100078 ,
+	"event"  => 100101 ,
+	"na.event"  => 100101 ,
+	"logger"  => 100102 ,
+	"na.logger"  => 100102 ,
+	"sync"  => 100104 ,
+	"na.sync"  => 100104 ,
+	"hostperf"  => 100107 ,
+	"na.hostperf"  => 100107 ,
+	"activity"  => 100109 ,
+	"na.activity"  => 100109 ,
+	"hostmem"  => 100112 ,
+	"na.hostmem"  => 100112 ,
+	"sample"  => 100113 ,
+	"na.sample"  => 100113 ,
+	"x25"  => 100114 ,
+	"na.x25"  => 100114 ,
+	"ping"  => 100115 ,
+	"na.ping"  => 100115 ,
+	"rpcnfs"  => 100116 ,
+	"na.rpcnfs"  => 100116 ,
+	"hostif"  => 100117 ,
+	"na.hostif"  => 100117 ,
+	"etherif"  => 100118 ,
+	"na.etherif"  => 100118 ,
+	"iproutes"  => 100120 ,
+	"na.iproutes"  => 100120 ,
+	"layers"  => 100121 ,
+	"na.layers"  => 100121 ,
+	"snmp"  => 100122 ,
+	"na.snmp"  => 100122 ,
+	"snmp-cmc"  => 100122 ,
+	"snmp-synoptics"  => 100122 ,
+	"snmp-unisys"  => 100122 ,
+	"snmp-utk"  => 100122 ,
+	"traffic"  => 100123 ,
+	"na.traffic"  => 100123 ,
+	"nfs_acl"  => 100227 ,
+	"sadmind"  => 100232 ,
+	"nisd"  => 100300 ,
+	"rpc.nisd"  => 100300 ,
+	"nispasswd"  => 100303 ,
+	"rpc.nispasswdd"  => 100303 ,
+	"ufsd"  => 100233 ,
+	"ufsd"  => 100233 ,
+	"pcnfsd"  => 150001 ,
+	"pcnfs"  => 150001 ,
+	"amd"  => 300019 ,
+	"amq"  => 300019 ,
+	"bwnfsd"  => 545580417 ,
+	"fypxfrd"  => 600100069 ,
+	"freebsd-ypxfrd"  => 600100069 ,
+);
+
+# -v means verbose, -v-v means verbose twice = print above hash
+if (defined $verbose && ($verbose > 1) ){
+	my $key;
+	print "Supported programs:\n";
+	print "    name\t=>\tnumber\n";
+	print " ===============================\n";
+	foreach $key (sort keys %prognum) {
+		print "   $key \t=>\t$prognum{$key} \n";
+	}
+	print "\n\n";
+	print_usage();
+	exit $ERRORS{'OK'};
+}
+
+# -H means host name
+unless ($opt_H) { print_usage(); exit $ERRORS{'UNKNOWN'}; }
+
+if (! utils::is_hostname($opt_H)){
+	print "$opt_H is not a valid host name\n";
+	print_usage();
+	exit $ERRORS{"UNKNOWN"};
+}else{
+	$host = $opt_H;
+}
+
+if ($opt_t && $opt_u) {
+	print "Cannot define tcp AND udp\n";
+	print_usage();
+	exit $ERRORS{'UNKNOWN'};
+}
+
+
+# -C means command name or number
+$opt_C = shift unless ($opt_C);
+unless ($opt_C) { print_usage(); exit -1; }
+@progkeys = keys %prognum;
+if ($opt_C =~ m/^([0-9]+)$/){
+#    $response = "RPC ok: program $opt_C (version ";
+    $prognum = $1;
+} elsif ( in( \@progkeys, $opt_C)) {
+#    $response = "RPC ok: $opt_C (version ";
+    $prognum = $prognum{$opt_C};
+} else {
+    print "Program $opt_C is not defined\n";
+    exit $ERRORS{'UNKNOWN'};
+}
+
+# -p means port number
+if($opt_p =~ /^([0-9]+)$/){
+    $port = "-n $1";
+} else {
+    $port = "";
+}
+
+$proto = 'u';
+$proto = $proto[$prognum] if ($proto[$prognum]);
+$proto = 't' if ($opt_t);
+$proto = 'u' if ($opt_u);
+
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+        print ("ERROR: No response from RPC server (alarm)\n");
+        exit $ERRORS{"UNKNOWN"};
+};
+alarm($TIMEOUT);
+
+# -c is progver  - if we need to check multiple specified versions.
+if (defined $opt_c ) {
+	my $vers;
+	@progvers = split(/,/ ,$opt_c );
+	foreach $vers (sort @progvers) {
+		if($vers =~ /^([0-9]+)$/){
+			$progver = "$1";
+			print "Checking $opt_C version $progver proto $proto\n" if $verbose;
+			get_rpcinfo();
+		}else{
+			print "Version $vers is not an integer\n" if $verbose;
+		}
+	
+	}
+}else{
+	get_rpcinfo();
+}
+
+
+## translate proto for output
+if ($proto eq "u" ){
+	$proto = "udp";
+}else{
+	$proto = "tcp";
+}
+
+if ($state eq 'OK') {
+	print "$state: RPC program $opt_C".$response." $proto running\n";
+}else{
+	if($response){
+		print "$state: RPC program $opt_C".$response2." $proto is not running,".$response." $proto is running\n";
+	}else{
+		print "$state: RPC program $opt_C $response2 $proto is not running\n";
+	}
+}
+exit $ERRORS{$state};
+
+
+########  Subroutines ==========================
+
+sub get_rpcinfo {
+	$cmd = "$utils::PATH_TO_RPCINFO $port -" . "$proto $host $prognum $progver 2>&1 |";
+	print "$cmd\n" if ($verbose);
+	open CMD, $cmd or die "Can't fork for rpcinfo: $!\n" ;
+
+	while ( $line = <CMD> ) {
+		printf "$line " if $verbose;
+		chomp $line;
+	
+    	if ( $line =~ /program $prognum version ([0-9]*) ready and waiting/ ) {
+			$response .= " version $1";
+			$state = 'OK' unless $state ne 'UNKNOWN';
+			print "1:$response \n" if $verbose;
+    	}
+
+		if ( $line =~ /program $prognum version ([0-9]*) is not available/ ) {
+			$response2 .= " version $1";
+			$state = 'CRITICAL';
+			print "2:$response2 \n" if $verbose;
+		}
+		if ( $line =~ /program $prognum is not available/ ) {
+			$response3 = "";
+			$response3 = "tcp" if $opt_t;
+			$response3 = "udp" if $opt_u;
+			$state = 'CRITICAL';
+			print "3:$response3 \n" if $verbose;
+		}
+	}
+	close CMD;
+}
+
+
+sub print_help() {
+	print_revision($PROGNAME,'$Revision: 1.8 $ ');
+	print "Copyright (c) 2002 Karl DeBisschop/Truongchinh Nguyen/Subhendu Ghosh\n";
+	print "\n";
+	print "Check if a rpc service is registered and running using\n";
+	print "      rpcinfo -H host -C rpc_command \n";
+	print "\n";
+	print_usage();
+	print "\n";
+	print "  <host>          The server providing the rpc service\n";
+	print "  <rpc_command>   The program name (or number).\n";
+	print "  <program_version> The version you want to check for (one or more)\n";
+	print "                    Should prevent checks of unknown versions being syslogged\n";
+	print "                    e.g. 2,3,6 to check v2, v3, and v6\n";
+	print "  [-u | -t]       Test UDP or TCP\n";
+	print "  [-v]            Verbose \n";
+	print "  [-v -v]         Verbose - will print supported programs and numbers \n";
+	print "\n";
+	support();
+}
+
+sub print_usage () {
+	print "Usage: \n";
+	print " $PROGNAME -H host -C rpc_command [-p port] [-c program_version] [-u|-t] [-v]\n";
+	print " $PROGNAME [-h | --help]\n";
+	print " $PROGNAME [-V | --version]\n";
+}
+
+sub in ($$) {
+	$array_ref = shift;
+	$test = shift;
+
+	while ( $element = shift @{$array_ref} ) {
+		if ($test eq $element) {
+	    return 1;
+		}
+	}
+	return 0;
+}
+
diff --git a/checkers/check_sensors b/checkers/check_sensors
new file mode 100755
index 0000000000..66d264ad9b
--- /dev/null
+++ b/checkers/check_sensors
@@ -0,0 +1,65 @@
+#! /bin/sh
+
+PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
+
+PROGNAME=`basename $0`
+PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
+REVISION=`echo '$Revision: 1.2 $' | sed -e 's/[^0-9.]//g'`
+
+. $PROGPATH/utils.sh
+
+
+print_usage() {
+	echo "Usage: $PROGNAME"
+}
+
+print_help() {
+	print_revision $PROGNAME $REVISION
+	echo ""
+	print_usage
+	echo ""
+	echo "This plugin checks hardware status using the lm_sensors package."
+	echo ""
+	support
+	exit 0
+}
+
+case "$1" in
+	--help)
+		print_help
+		exit 0
+		;;
+	-h)
+		print_help
+		exit 0
+		;;
+	--version)
+   	print_revision $PROGNAME $REVISION
+		exit 0
+		;;
+	-V)
+		print_revision $PROGNAME $REVISION
+		exit 0
+		;;
+	*)
+		sensordata=`sensors 2>&1`
+		status=$?
+		if test "$1" = "-v" -o "$1" = "--verbose"; then
+			echo ${sensordata}
+		fi
+		if test ${status} -eq 127; then
+			echo "SENSORS UNKNOWN - command not found (did you install lmsensors?)"
+			exit -1
+		elif test ${status} -ne 0 ; then
+			echo "WARNING - sensors returned state $status"
+			exit 1
+		fi
+		if echo ${sensordata} | egrep ALARM > /dev/null; then
+			echo SENSOR CRITICAL - Sensor alarm detected!
+			exit 2
+		else
+			echo sensor ok
+			exit 0
+		fi
+		;;
+esac
diff --git a/checkers/check_simap b/checkers/check_simap
new file mode 120000
index 0000000000..e838da97eb
--- /dev/null
+++ b/checkers/check_simap
@@ -0,0 +1 @@
+check_tcp
\ No newline at end of file
diff --git a/checkers/check_smtp b/checkers/check_smtp
new file mode 100755
index 0000000000..3c24434b34
Binary files /dev/null and b/checkers/check_smtp differ
diff --git a/checkers/check_snmp b/checkers/check_snmp
new file mode 100755
index 0000000000..9d20a25769
Binary files /dev/null and b/checkers/check_snmp differ
diff --git a/checkers/check_spop b/checkers/check_spop
new file mode 120000
index 0000000000..e838da97eb
--- /dev/null
+++ b/checkers/check_spop
@@ -0,0 +1 @@
+check_tcp
\ No newline at end of file
diff --git a/checkers/check_ssh b/checkers/check_ssh
new file mode 100755
index 0000000000..dcdc18e3d6
Binary files /dev/null and b/checkers/check_ssh differ
diff --git a/checkers/check_ssmtp b/checkers/check_ssmtp
new file mode 120000
index 0000000000..e838da97eb
--- /dev/null
+++ b/checkers/check_ssmtp
@@ -0,0 +1 @@
+check_tcp
\ No newline at end of file
diff --git a/checkers/check_swap b/checkers/check_swap
new file mode 100755
index 0000000000..765e17aac6
Binary files /dev/null and b/checkers/check_swap differ
diff --git a/checkers/check_tcp b/checkers/check_tcp
new file mode 100755
index 0000000000..c334ed1df3
Binary files /dev/null and b/checkers/check_tcp differ
diff --git a/checkers/check_time b/checkers/check_time
new file mode 100755
index 0000000000..976f730c23
Binary files /dev/null and b/checkers/check_time differ
diff --git a/checkers/check_udp b/checkers/check_udp
new file mode 100755
index 0000000000..d9a4d22345
Binary files /dev/null and b/checkers/check_udp differ
diff --git a/checkers/check_udp2 b/checkers/check_udp2
new file mode 120000
index 0000000000..e838da97eb
--- /dev/null
+++ b/checkers/check_udp2
@@ -0,0 +1 @@
+check_tcp
\ No newline at end of file
diff --git a/checkers/check_ups b/checkers/check_ups
new file mode 100755
index 0000000000..4f64f99bed
Binary files /dev/null and b/checkers/check_ups differ
diff --git a/checkers/check_users b/checkers/check_users
new file mode 100755
index 0000000000..7795f20293
Binary files /dev/null and b/checkers/check_users differ
diff --git a/checkers/check_wave b/checkers/check_wave
new file mode 100755
index 0000000000..0f03c48850
--- /dev/null
+++ b/checkers/check_wave
@@ -0,0 +1,123 @@
+#! /usr/bin/perl -wT
+#
+# $Id: check_wave.pl,v 1.4 2002/10/28 13:05:08 kdebisschop Exp $
+
+
+use strict;
+use lib "/usr/lib/nagios/plugins";
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+use vars qw($PROGNAME);
+use Getopt::Long;
+use vars qw($opt_V $opt_h $verbose $opt_w $opt_c $opt_H);
+my (@test, $low1, $med1, $high1, $snr, $low2, $med2, $high2);
+my ($low, $med, $high, $lowavg, $medavg, $highavg, $tot, $ss);
+
+$PROGNAME = "check_wave";
+sub print_help ();
+sub print_usage ();
+
+$ENV{'PATH'}='';
+$ENV{'BASH_ENV'}='';
+$ENV{'ENV'}='';
+
+Getopt::Long::Configure('bundling');
+GetOptions
+	("V"   => \$opt_V, "version"    => \$opt_V,
+	 "h"   => \$opt_h, "help"       => \$opt_h,
+	 "v" => \$verbose, "verbose"  => \$verbose,
+	 "w=s" => \$opt_w, "warning=s"  => \$opt_w,
+	 "c=s" => \$opt_c, "critical=s" => \$opt_c,
+	 "H=s" => \$opt_H, "hostname=s" => \$opt_H);
+
+if ($opt_V) {
+	print_revision($PROGNAME,'$Revision: 1.4 $'); #'
+	exit $ERRORS{'OK'};
+}
+
+if ($opt_h) {
+	print_help();
+	exit $ERRORS{'OK'};
+}
+
+$opt_H = shift unless ($opt_H);
+print_usage() unless ($opt_H);
+my $host = $1 if ($opt_H =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z][-a-zA-Z0]+(\.[a-zA-Z][-a-zA-Z0]+)*)$/);
+print_usage() unless ($host);
+
+($opt_c) || ($opt_c = shift) || ($opt_c = 120);
+my $critical = $1 if ($opt_c =~ /([0-9]+)/);
+
+($opt_w) || ($opt_w = shift) || ($opt_w = 60);
+my $warning = $1 if ($opt_w =~ /([0-9]+)/);
+
+$low1 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.8.1`;
+@test = split(/ /,$low1);
+$low1 = $test[2];
+
+$med1 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.9.1`;
+@test = split(/ /,$med1);
+$med1 = $test[2];
+
+$high1 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.10.1`;
+@test = split(/ /,$high1);
+$high1 = $test[2];
+
+sleep(2);
+
+$snr = `snmpget $host public .1.3.6.1.4.1.762.2.5.2.1.17.1`;
+@test = split(/ /,$snr);
+$snr = $test[2];
+$snr = int($snr*25);
+
+$low2 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.8.1`;
+@test = split(/ /,$low2);
+$low2 = $test[2];
+
+$med2 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.9.1`;
+@test = split(/ /,$med2);
+$med2 = $test[2];
+
+$high2 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.10.1`;
+@test = split(/ /,$high2);
+$high2 = $test[2];
+
+$low = $low2 - $low1;
+$med = $med2 - $med1;
+$high = $high2 - $high1;
+
+$tot = $low + $med + $high;
+
+if ($tot==0) {
+	$ss = 0;
+} else {
+	$lowavg = $low / $tot;
+	$medavg = $med / $tot;
+	$highavg = $high / $tot;
+	$ss = ($medavg*50) + ($highavg*100);
+}
+
+printf("Signal Strength at: %3.0f%,  SNR at $snr%",$ss);
+
+if ($ss<$critical) {
+	exit(2);
+} elsif ($ss<$warning) {
+	exit(1);
+} else {
+	exit(0);
+}
+
+
+sub print_usage () {
+	print "Usage: $PROGNAME -H <host> [-w <warn>] [-c <crit>]\n";
+}
+
+sub print_help () {
+	print_revision($PROGNAME,'$Revision: 1.4 $');
+	print "Copyright (c) 2000 Jeffery Blank/Karl DeBisschop\n";
+	print "\n";
+	print_usage();
+	print "\n";
+	print "<warn> = Signal strength at which a warning message will be generated.\n";
+	print "<crit> = Signal strength at which a critical message will be generated.\n\n";
+	support();
+}
diff --git a/checkers/negate b/checkers/negate
new file mode 100755
index 0000000000..d81c478767
Binary files /dev/null and b/checkers/negate differ
diff --git a/checkers/urlize b/checkers/urlize
new file mode 100755
index 0000000000..df17d2a526
Binary files /dev/null and b/checkers/urlize differ
diff --git a/checkers/utils.pm b/checkers/utils.pm
new file mode 100644
index 0000000000..0556ec49bd
--- /dev/null
+++ b/checkers/utils.pm
@@ -0,0 +1,83 @@
+# Utility drawer for Nagios plugins.
+# $Id: utils.pm.in,v 1.7 2003/04/13 04:25:36 sghosh Exp $
+#
+# $Log: utils.pm.in,v $
+# Revision 1.7  2003/04/13 04:25:36  sghosh
+# update for check_mailq - qmail support
+#
+# Revision 1.6  2003/02/03 20:29:55  sghosh
+# change ntpdc to ntpq (Jonathan Rozes,Thomas Schimpke, bug-656237 )
+#
+# Revision 1.5  2002/10/30 05:07:29  sghosh
+# monitor mailq
+#
+# Revision 1.4  2002/05/27 02:01:09  sghosh
+#  new var - smbclient
+#
+# Revision 1.3  2002/05/10 03:49:22  sghosh
+# added programs to autoconf
+#
+# Revision 1.2  2002/05/08 05:10:35  sghosh
+#  is_hostname added, update CODES to POSIX
+#
+# 
+package utils;
+
+require Exporter;
+@ISA = qw(Exporter);
+@EXPORT_OK = qw($TIMEOUT %ERRORS &print_revision &support &usage);
+
+#use strict;
+#use vars($TIMEOUT %ERRORS);
+sub print_revision ($$);
+sub usage;
+sub support();
+sub is_hostname;
+
+## updated by autoconf
+$PATH_TO_RPCINFO = "/usr/bin/rpcinfo";
+$PATH_TO_NTPDATE = "/usr/sbin/ntpdate";
+$PATH_TO_NTPDC   = "/usr/bin/ntpdc";
+$PATH_TO_NTPQ    = "/usr/bin/ntpq";
+$PATH_TO_LMSTAT  = "" ;
+$PATH_TO_SMBCLIENT = "/usr/bin/smbclient";
+$PATH_TO_MAILQ   = "/usr/bin/mailq";
+$PATH_TO_QMAIL_QSTAT = "";
+
+## common variables
+$TIMEOUT = 15;
+%ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);
+
+## utility subroutines
+sub print_revision ($$) {
+	my $commandName = shift;
+	my $pluginRevision = shift;
+	$pluginRevision =~ s/^\$Revision: //;
+	$pluginRevision =~ s/ \$\s*$//;
+	print "$commandName (nagios-plugins 1.4.2) $pluginRevision\n";
+	print "The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\n";
+}
+
+sub support () {
+	my $support='Send email to nagios-users@lists.sourceforge.net if you have questions\nregarding use of this software. To submit patches or suggest improvements,\nsend email to nagiosplug-devel@lists.sourceforge.net.\nPlease include version information with all correspondence (when possible,\nuse output from the --version option of the plugin itself).\n';
+	$support =~ s/@/\@/g;
+	$support =~ s/\\n/\n/g;
+	print $support;
+}
+
+sub usage {
+	my $format=shift;
+	printf($format,@_);
+	exit $ERRORS{'UNKNOWN'};
+}
+
+sub is_hostname {
+	my $host1 = shift;
+	if ($host1 && $host1 =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z][-a-zA-Z0-9]+(\.[a-zA-Z][-a-zA-Z0-9]+)*)$/) {
+		return 1;
+	}else{
+		return 0;
+	}
+}
+
+1;
diff --git a/checkers/utils.sh b/checkers/utils.sh
new file mode 100755
index 0000000000..313b61816c
--- /dev/null
+++ b/checkers/utils.sh
@@ -0,0 +1,23 @@
+#! /bin/sh
+
+STATE_OK=0
+STATE_WARNING=1
+STATE_CRITICAL=2
+STATE_UNKNOWN=3
+STATE_DEPENDENT=4
+
+if test -x /usr/bin/printf; then
+	ECHO=/usr/bin/printf
+else
+	ECHO=echo
+fi
+
+print_revision() {
+	echo "$1 (nagios-plugins 1.4.2) $2"
+	$ECHO "The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\n" | /bin/sed -e 's/\n/ /g'
+}
+
+support() {
+	$ECHO "Send email to nagios-users@lists.sourceforge.net if you have questions\nregarding use of this software. To submit patches or suggest improvements,\nsend email to nagiosplug-devel@lists.sourceforge.net.\nPlease include version information with all correspondence (when possible,\nuse output from the --version option of the plugin itself).\n" | /bin/sed -e 's/\n/ /g'
+}
+
diff --git a/cleanup.php b/cleanup.php
new file mode 100755
index 0000000000..8e045fa6f6
--- /dev/null
+++ b/cleanup.php
@@ -0,0 +1,78 @@
+#!/usr/bin/php
+
+### Clean up the database removing old IPs and links
+
+<?
+include("config.php");
+include("includes/functions.php");
+
+$query = "SELECT *,A.id as id FROM ipaddr AS A, interfaces as I, devices as D 
+          WHERE A.interface_id = I.id AND I.host = D.id AND D.status = '1' AND I.id LIKE '%$argv[1]'";
+
+$data = mysql_query($query);
+while($row = mysql_fetch_array($data)) {
+
+  $mask = trim(`$ipcalc $row[addr]/$row[cidr] | grep Netmask: | cut -d " " -f 4`);
+  $response = trim(`snmpget -v2c -Osq -c $row[community] $row[hostname] ipAdEntIfIndex.$row[addr] | cut -d " " -f 2`);
+  $maskcheck = trim(`snmpget -v2c -Osq -c $row[community] $row[hostname] ipAdEntNetMask.$row[addr] | cut -d " " -f 2`);
+  if($response == $row['ifIndex'] && $mask == $maskcheck) {
+  } else {
+    mysql_query("delete from ipaddr where id = '$row[id]'");
+    echo("Deleted $row[addr] from $row[hostname]\n");
+  }
+}
+
+$query = "SELECT *, I.id as id FROM interfaces AS I, devices as D 
+          WHERE I.host = D.id AND D.status = '1'";
+$data = mysql_query($query);
+while($row = mysql_fetch_array($data)) {
+  $id = $row['id'];
+  $index = $row[ifIndex];
+  $hostname = $row['hostname'];
+  $community = $row['community'];
+  $response = trim(`snmpget -v2c -Osq -c $community $hostname ifIndex.$index | cut -d " " -f 2`);
+  if($response != $index) {
+    mysql_query("delete from interfaces where id = '$id'");
+    echo("Deleted $row[if] from $hostname\n");
+  }
+}
+
+echo(mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces`"), 0) . " interfaces at start\n");
+$interface_query = mysql_query("SELECT id,host FROM `interfaces`");
+while ($interface = mysql_fetch_array($interface_query)) {
+  $host = $interface['host'];
+  $id = $interface['id'];
+  if(mysql_result(mysql_query("SELECT COUNT(*) FROM `devices` WHERE `id` = '$host'"), 0) == '0') {
+    mysql_query("delete from interfaces where `id` = '$id'");
+    echo("Deleting if $id \n");
+  } 
+}
+echo(mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces`"), 0) . " interfaces at end\n");
+
+echo(mysql_result(mysql_query("SELECT COUNT(id) FROM `links`"), 0) . " links at start\n");
+$link_query = mysql_query("SELECT id,src_if,dst_if FROM `links`");
+while ($link = mysql_fetch_array($link_query)) {
+  $id = $link['id'];
+  $src = $link['src_if'];
+  $dst = $link['dst_if'];
+  if(mysql_result(mysql_query("SELECT COUNT(id) FROM `interfaces` WHERE `id` = '$src'"), 0) == '0' || mysql_result(mysql_query("SELECT COUNT(id) FROM `interfaces` WHERE `id` = '$dst'"), 0) == '0') {
+    mysql_query("delete from links where `id` = '$id'");
+    echo("Deleting link $id \n");
+  }
+}
+echo(mysql_result(mysql_query("SELECT COUNT(id) FROM `links`"), 0) . " links at end\n");
+
+echo(mysql_result(mysql_query("SELECT COUNT(adj_id) FROM `adjacencies`"), 0) . " adjacencies at start\n");
+$link_query = mysql_query("SELECT * FROM `adjacencies`");
+while ($link = mysql_fetch_array($link_query)) {
+  $id = $link['adj_id'];
+  $netid = $link['network_id'];
+  $ifid = $link['interface_id'];
+  if(mysql_result(mysql_query("SELECT COUNT(id) FROM `interfaces` WHERE `id` = '$ifid'"), 0) == '0' || mysql_result(mysql_query("SELECT COUNT(id) FROM `networks` WHERE `id` = '$netid'"), 0) == '0') {
+    mysql_query("delete from adjacencies where `adj_id` = '$id'");
+    echo("Deleting link $id \n");
+  }
+}
+echo(mysql_result(mysql_query("SELECT COUNT(adj_id) FROM `adjacencies`"), 0) . " adjacencies at end\n");
+
+?>
diff --git a/config.php.default b/config.php.default
new file mode 100755
index 0000000000..a45ca82505
--- /dev/null
+++ b/config.php.default
@@ -0,0 +1,83 @@
+<?php
+
+### Database config
+$db_host = "localhost";
+$db_user = "observer";
+$db_pass = "";
+$db_name = "observer";
+
+### Installation Location
+$installdir = "/var/sites/network.vostron.net/";
+
+### Default community
+$community = "public";
+
+### File containing syslog
+$syslogfile = "";
+
+### Location of executables
+$rrdtool = "/usr/bin/rrdtool";
+$fping = "/usr/sbin/fping";
+$ipcalc = "/usr/bin/ipcalc";
+
+$snmpwalk = "/usr/bin/snmpwalk";
+$snmpget = "/usr/bin/snmpget";
+
+
+### List of networks to allow scanning-based discovery
+$nets =  array ("172.22.0.0/16", "10.0.0.0/8");
+
+$mydomain = "project-observer.net";
+
+$page_title = "Project Observer Network Monitoring";
+$title_image = "/images/logo.gif";
+
+### Which special sections should we show?
+$show_if_customers = 0;
+$show_if_transit = 0;
+$show_if_peering = 0;
+$show_locations = 1;
+
+### Interface name strings to ignore
+$bif = array("null", "virtual-", "unrouted", "eobc", "mpls", "sl0", "lp0", "faith0",
+             "-atm layer", "-atm subif", "-shdsl", "-adsl", 
+             "async", "plip", "-physical", "-signalling", "control plane",
+             "bri", "-bearer", "ng", "bluetooth", "isatap", "ras", "qos", "miniport");
+
+### Mountpoints to ignore
+
+$ignore_mount = array("/kern", "/mnt/cdrom", "/dev", "/dev/pts");
+
+### Valis OSes
+$valid_os = array("IOS", "Linux", "OpenBSD", "FreeBSD", "NetBSD", "ProCurve", "m0n0wall", "pfSense", "Snom", "Voswall", "DragonFly");
+
+### Style Options
+
+$list_colour_a = "#ffffff";
+$list_colour_b = "#eeeeee";
+
+$warn_colour_a = "#ffeeee";
+$warn_colour_b = "#ffcccc";
+
+
+##############################
+# No changes below this line #
+##############################
+
+$observer_version = "0.2.4";
+
+### Connect to database
+if (!@mysql_connect($db_host, $db_user, $db_pass)) {
+        echo "<h2>MySQL Error</h2>";
+        die;
+}
+mysql_select_db($db_name);
+
+$now = time();
+$day = time() - (24 * 60 * 60);
+$twoday = time() - (2 * 24 * 60 * 60);
+$week = time() - (7 * 24 * 60 * 60);
+$month = time() - (31 * 24 * 60 * 60);
+$year = time() - (365 * 24 * 60 * 60);
+
+?>
diff --git a/cron-hourly.sh b/cron-hourly.sh
new file mode 100755
index 0000000000..c21f5f1522
--- /dev/null
+++ b/cron-hourly.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+./cdp.php
+./poll-reachability.php
+./poll-os.php
+./discover-ifs.php
+./discover-nets.php
+./ips.php
+./discover-storage.php
+./cleanup.php
+./discover-temperatures.php
+./discover-cisco-temp.php
diff --git a/cron-minute.sh b/cron-minute.sh
new file mode 100755
index 0000000000..ff20a181c8
--- /dev/null
+++ b/cron-minute.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+./process-syslog.php
+sleep 5
+./process-syslog.php &
+sleep 5
+./process-syslog.php &
+sleep 5
+./process-syslog.php &
+sleep 5
+./process-syslog.php &
+sleep 5
+./process-syslog.php &
+sleep 5
+./process-syslog.php &
+sleep 5
+./process-syslog.php &
+sleep 5
+./process-syslog.php &
+sleep 5
+./process-syslog.php &
+sleep 5
+./process-syslog.php &
+sleep 5
+./process-syslog.php &
+
diff --git a/cron.sh b/cron.sh
new file mode 100755
index 0000000000..495c7e4dbb
--- /dev/null
+++ b/cron.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+./poll-reachability.php
+./poll-device.php &
+./poll-interface.php &
+./poll-temperatures.php &
+./ips.php &
+./check-services.php
+./alerts.php
+
+wget -O /var/sites/network.vostron.net/rrd/dill.vostron.net-mail_virus.rrd http://dill.vostron.net/rrd/mailgraph_virus.rrd
+wget -O /var/sites/network.vostron.net/rrd/dill.vostron.net-mail.rrd http://dill.vostron.net/rrd/mailgraph.rrd
+wget -O /var/sites/network.vostron.net/rrd/dill.vostron.net-courier.rrd http://dill.vostron.net/rrd/couriergraph.rrd
+
diff --git a/discover-cisco-temp.php b/discover-cisco-temp.php
new file mode 100755
index 0000000000..c85315b840
--- /dev/null
+++ b/discover-cisco-temp.php
@@ -0,0 +1,35 @@
+#!/usr/bin/php
+<?
+include("config.php");
+include("includes/functions.php");
+
+$device_query = mysql_query("SELECT * FROM `devices` WHERE `os` = 'IOS' AND `status` = '1'");
+while ($device = mysql_fetch_array($device_query)) {
+  $id = $device['id'];
+  $hostname = $device['hostname'];
+  $community = $device['community'];
+  echo("Detecting IOS temperature sensors for $hostname\n");
+  $oids = `snmpwalk -v2c -Osqn -c $community $hostname .1.3.6.1.4.1.9.9.13.1.3.1.2 | sed s/.1.3.6.1.4.1.9.9.13.1.3.1.2.//g`;
+  $oids = trim($oids);
+  foreach(explode("\n", $oids) as $data) {
+   $data = trim($data);
+   list($oid) = explode(" ", $data);
+   $temp_oid  = ".1.3.6.1.4.1.9.9.13.1.3.1.3.$oid";
+   $descr_oid = ".1.3.6.1.4.1.9.9.13.1.3.1.2.$oid";
+   $descr = `snmpget -O qv -v2c -c $community $hostname $descr_oid`;
+   $temp = `snmpget -O qv -v2c -c $community $hostname $temp_oid`;
+   if(!strstr($descr, "No") && !strstr($temp, "No") && $descr != "" ) {
+    $descr = `snmpget -O qv -v2c -c $community $hostname $descr_oid`;
+    $descr = str_replace("\"", "", $descr);
+    $descr = str_replace("temperature", "", $descr);
+    $descr = str_replace("temp", "", $descr);
+    $descr = trim($descr);
+    if(mysql_result(mysql_query("SELECT count(temp_id) FROM `temperature` WHERE temp_oid = '.1.3.6.1.4.1.9.9.13.1.3.1.3.$oid' AND temp_host = '$id'"),0) == '0') {
+      $query = "INSERT INTO temperature (`temp_host`, `temp_oid`, `temp_descr`) values ('$id', '$temp_oid', '$descr')";
+      echo("$query -> $descr : $temp\n");
+      mysql_query($query);
+    }
+   }
+  }
+}
+?>
diff --git a/discover-ifs.php b/discover-ifs.php
new file mode 100755
index 0000000000..982174f152
--- /dev/null
+++ b/discover-ifs.php
@@ -0,0 +1,45 @@
+#!/usr/bin/php
+<?
+include("config.php");
+include("includes/functions.php");
+
+# Discover interfaces
+
+$device_query = mysql_query("SELECT id,hostname,community,snmpver FROM `devices` WHERE `id` LIKE '%" . $argv[1] . "' AND status = '1' AND os != 'Snom' ORDER BY id DESC");
+while ($device = mysql_fetch_row($device_query)) {
+
+  $id = $device['0'];
+  $hostname = $device['1'];
+  $community = $device['2'];
+  $snmpver = $device['3'];
+  $interfaces = `snmpwalk -O nsq -v2c -c $community $hostname ".1.3.6.1.2.1.2.2.1.2" | sed s/ifDescr.//g | sed s/\ \"/\|\|\"/g | sed s/\ /\|\|/g`;
+  $interfaces = trim($interfaces);
+  echo("Polling $hostname\n");                                                                                                                                                       
+  foreach(explode("\n", $interfaces) as $entry){
+    $entry = trim($entry);
+    list($ifIndex, $ifName) = explode("||", $entry);
+    if(!strstr($entry, "irtual")) {
+      $ifName = trim(str_replace("\"", "", $ifName));
+      $if = trim(strtolower($ifName));
+      $nullintf = 0;
+      foreach($bif as $bi) {
+        if (strstr($if, $bi)) {
+          $nullintf = 1;
+        }
+      }
+      if (preg_match('/serial[0-9]:/', $if)) { $nullintf = '1'; }
+      if (preg_match('/ng[0-9]+$/', $if)) {  }
+      if ($nullintf == 0) {
+        if(mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces` WHERE `host` = '$id' AND `ifIndex` = '$ifIndex'"), 0) == '0') {
+          echo "Adding port $ifName \n";
+          mysql_query("INSERT INTO `interfaces` (`host`,`ifIndex`,`if`) VALUES ('$id','$ifIndex','$ifName')");
+        } else { 
+          # echo("Already have $ifName \n"); 
+        }
+      } else { 
+          # echo("Invalid $ifName\n"); 
+      }
+    } 
+  }
+}
+?>
diff --git a/discover-ifs.sh b/discover-ifs.sh
new file mode 100755
index 0000000000..89c9fe9ff9
--- /dev/null
+++ b/discover-ifs.sh
@@ -0,0 +1,11 @@
+./discover-ifs.php 1 &
+./discover-ifs.php 2 &
+./discover-ifs.php 3 &
+./discover-ifs.php 4 &
+./discover-ifs.php 5 &
+./discover-ifs.php 6 &
+./discover-ifs.php 7 &
+./discover-ifs.php 8 &
+./discover-ifs.php 9 &
+./discover-ifs.php 0 &
+
diff --git a/discover-storage.php b/discover-storage.php
new file mode 100755
index 0000000000..b84fbb608c
--- /dev/null
+++ b/discover-storage.php
@@ -0,0 +1,31 @@
+#!/usr/bin/php
+<?
+include("config.php");
+include("includes/functions.php");
+
+$device_query = mysql_query("SELECT * FROM `devices` WHERE os = 'Linux' OR os = 'FreeBSD' OR os = 'NetBSD' OR os = 'OpenBSD' OR os = 'DragonFly' AND monowall = '0' AND status = '1'");
+while ($device = mysql_fetch_array($device_query)) {
+  $id = $device['id'];
+  $hostname = $device['hostname'];
+  $community = $device['community'];
+  echo("\n***$hostname***\n");
+  $oids = `snmpwalk -v2c -Osq -c $community $hostname hrStorageIndex | sed s/hrStorageIndex.//g`;
+  $oids = trim($oids);
+  foreach(explode("\n", $oids) as $data) {
+    $data = trim($data);
+    list($oid,$ifIndex) = explode(" ", $data);
+    $temp = `snmpget -O qv -v2c -c $community $hostname hrStorageDescr.$oid hrStorageAllocationUnits.$oid hrStorageSize.$oid hrStorageType.$oid`;
+    $temp = trim($temp);
+    list($descr, $units, $size, $type) = explode("\n", $temp);
+    list($units) = explode(" ", $units);
+    if(strstr($type, "FixedDisk") && $size > '0') {
+      echo("$oid,$descr,$units,$size\n");
+      if(mysql_result(mysql_query("SELECT count(storage_id) FROM `storage` WHERE hrStorageIndex = '$ifIndex' AND host_id = '$id'"),0) == '0') {
+        $query = "INSERT INTO storage (`host_id`, `hrStorageIndex`, `hrStorageDescr`,`hrStorageSize`,`hrStorageAllocationUnits`) values ('$id', '$ifIndex', '$descr', '$size', '$units')";
+        echo("$query \n");
+	mysql_query($query);
+      }
+    }
+  }
+}
+?>
diff --git a/discover-temperatures.php b/discover-temperatures.php
new file mode 100755
index 0000000000..1d887aefeb
--- /dev/null
+++ b/discover-temperatures.php
@@ -0,0 +1,34 @@
+#!/usr/bin/php
+<?
+include("config.php");
+include("includes/functions.php");
+
+
+### Discovery Observer-style temperature sensors
+
+$device_query = mysql_query("SELECT * FROM `devices` WHERE status = '1' AND os != 'IOS' AND os != 'ProCurve'");
+while ($device = mysql_fetch_array($device_query)) {
+  $id = $device['id'];
+  $hostname = $device['hostname'];
+  $community = $device['community'];
+  $snmpver = $device['snmpver'];
+  echo("\n***$hostname***\n");
+  $oids = `snmpwalk -$snmpver -Osqn -c $community $hostname .1.3.6.1.4.1.2021.7891 | sed s/.1.3.6.1.4.1.2021.7891.// | grep ".1.1 " | grep -v ".101." | cut -d"." -f 1`;
+  #$oids = `snmpwalk -v2c -Osqn -c $community $hostname .1.3.6.1.4.1.2021.7891 | sed s/.1.3.6.1.4.1.2021.7891.// | grep '1.1.1' | grep -v 0 | cut -d " " -f 2`;
+  $oids = trim($oids);
+  if(strstr($oids, "no")) { unset ($oids); }
+  foreach(explode("\n",$oids) as $oid) {
+   $oid = trim($oid);
+   if($oid != "") {
+    $descr = trim(str_replace("\"", "", `snmpget -v2c -Osqn -c $community $hostname .1.3.6.1.4.1.2021.7891.$oid.2.1 | sed s/.1.3.6.1.4.1.2021.7891.$oid.2.1\ //`));
+    $fulloid = ".1.3.6.1.4.1.2021.7891.$oid.101.1";
+    echo("Detected : $fulloid ($descr)\n");
+    if(!mysql_result(mysql_query("SELECT count(temp_id) FROM temperature WHERE `temp_host` = '$id' AND `temp_oid` = '$fulloid'"), 0)) {
+      mysql_query("INSERT INTO `temperature` (`temp_host`,`temp_oid`,`temp_descr`) VALUES ('$id', '$fulloid', '$descr');");
+      echo("Created $fulloid on $hostname\n");
+    }
+   }
+  }
+}
+?>
+
diff --git a/generate-iplist.php b/generate-iplist.php
new file mode 100755
index 0000000000..461fdbb9db
--- /dev/null
+++ b/generate-iplist.php
@@ -0,0 +1,30 @@
+#!/usr/bin/php
+<?
+include("config.php");
+include("includes/functions.php");
+
+`rm ips.txt && touch ips.txt`;
+
+$handle = fopen("ips.txt", "w+");
+
+$query = mysql_query("SELECT * FROM `networks`");
+while ($data = mysql_fetch_array($query)) {
+  $cidr = $data['cidr'];
+  list ($network, $bits) = split("/", $cidr); 
+  if($bits != '32' && $bits != '32' && $bits > '22') {
+    $broadcast = trim(`$ipcalc $cidr | grep Broadcast | cut -d" " -f 2`);
+    $ip = ip2long($network) + '1';
+    $end = ip2long($broadcast);
+    while($ip < $end) {
+      $ipdotted = long2ip($ip);
+      if(mysql_result(mysql_query("SELECT count(id) FROM ipaddr WHERE addr = '$ipdotted'"),0) == '0' && match_network($nets, $ipdotted)) {
+	fputs($handle, $ipdotted . "\n");
+      }
+      $ip++;
+    }
+  }
+}
+
+`fping -t 100 -f ips.txt > ips-scanned.txt`;
+
+?>
diff --git a/generate-map.sh b/generate-map.sh
new file mode 100755
index 0000000000..3bec69ec4f
--- /dev/null
+++ b/generate-map.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+./map.php > map.dot && unflatten -l4 -f map.dot | dot -Tpng -o html/network-big.png && convert -resize 400x300 html/network-big.png html/network.png
+
diff --git a/get-apache.sh b/get-apache.sh
new file mode 100755
index 0000000000..46ef75d58e
--- /dev/null
+++ b/get-apache.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+
+# depends on availability of status and extended status info from your
+# Apache webserver -- your httpd.conf needs to include something like the
+# following: (uncommented)
+#<Location /server-status>
+#    SetHandler server-status
+#    Order allow,deny
+#    Allow from localhost
+#</Location>
+#ExtendedStatus On
+
+# can return hits or bytes (counters)
+
+@res = `/usr/bin/lynx -dump http://$ARGV[0]:80/server-status`;
+
+foreach $res (@res) {
+        if ($res =~ /Server uptime: (.*)$/) { $up = $1; last } else { next }
+        if ($res =~ /Server at/) { $server = $res; last } else { next }
+}
+
+@res = `/usr/bin/lynx -dump http://$ARGV[0]:80/server-status?auto`;
+
+foreach $res (@res) {
+        if ($res =~ /Total Accesses: (\d+)/) { $d1 = $1; next }
+        if ($res =~ /Total kBytes: (\d+)/) { $d2 = $1 * 1024; next }
+}
+
+$d1 = int($d1);
+$d2 = int($d2);
+
+#if ($ARGV[1] eq "hits") {
+        print "$d1\n";
+#        print "$d1\n";
+#} elsif ($ARGV[1] eq "bytes") {
+        print "$d2\n";
+#       print "$d2\n";
+#}
+
+print "$up\n";
+print "$server";
+
+
diff --git a/host-add.php b/host-add.php
new file mode 100755
index 0000000000..3bcb68984f
--- /dev/null
+++ b/host-add.php
@@ -0,0 +1,22 @@
+#!/usr/bin/php 
+<?
+include("config.php"); include("includes/functions.php");
+
+if($argv[1] && $argv[2] && $argv[3]) { 
+  $host      = strtolower($argv[1]);
+  $community = $argv[2];
+  $snmpver   = strtolower($argv[3]);
+  list($hostshort) 	= explode(".", $host);
+  if ( isDomainResolves($argv[1])){
+    if ( isPingable($argv[1])) { 
+      if ( mysql_result(mysql_query("SELECT COUNT(*) FROM `devices` WHERE `hostname` = '$host'"), 0) == '0' ) {
+        $snmphost = trim(`snmpget -Oqv -$snmpver -c $community $host sysName.0 | sed s/\"//g`);
+        if ($snmphost == $host || $hostshort = $host) {
+          createHost ($host, $community, $snmpver);
+        } else { echo("Given hostname does not match SNMP-read hostname!\n"); }
+      } else { echo("Already got host $host\n"); }
+    } else { echo("Could not ping $host\n"); }
+  } else { echo("Could not resolve $host\n"); }
+} else { echo("Usage: ./host-add.php <hostname> <community> <snmpversion>"); }
+
+?>
diff --git a/host-del.php b/host-del.php
new file mode 100755
index 0000000000..152a7e8899
--- /dev/null
+++ b/host-del.php
@@ -0,0 +1,20 @@
+#!/usr/bin/php 
+<?
+include("config.php");
+include("includes/functions.php");
+
+# Remove a host and all related data from the system
+
+if($argv[1]) { 
+  $host = strtolower($argv[1]);
+  $id = getidbyname($host);
+  mysql_query("DELETE FROM `devices` WHERE `id` = '$id'");
+  mysql_query("DELETE FROM `interfaces` WHERE `host` = '$id'");
+  `rm -f rrd/$host-*.rrd`;
+  `./cleanup.php`;
+  echo("Removed $host");
+} else {
+  echo("Need host to remove!\n\n");
+}
+
+?>
diff --git a/html/.htaccess b/html/.htaccess
new file mode 100644
index 0000000000..716530c27f
--- /dev/null
+++ b/html/.htaccess
@@ -0,0 +1,11 @@
+Options FollowSymlinks Multiviews
+
+RewriteBase /
+RewriteEngine on
+RewriteCond %{REQUEST_URI} !^(.*)\.php$
+RewriteCond %{REQUEST_URI} !^(.*)\.css$
+RewriteCond %{REQUEST_URI} !^(.*)\.jpg$
+RewriteCond %{REQUEST_URI} !^(.*)\.gif$
+RewriteCond %{REQUEST_URI} !^(.*)\.png$
+
+RewriteRule ^([a-z]+)$	?page=$1
diff --git a/html/css/styles.css b/html/css/styles.css
new file mode 100644
index 0000000000..f8a46e9c20
--- /dev/null
+++ b/html/css/styles.css
@@ -0,0 +1,812 @@
+img	{ border: 0; }
+
+A         { text-decoration: none; }
+A:link    { color: #0000cc; }
+A:visited { color: #0000cc; }
+A:hover   { color: #990099; }
+A:active  { color: #00000; }
+
+A.red:visited, a.red, .red {color: #CC0000;}
+A.grey:visited, A.grey, .gray {color: #36393D;}
+A.black:visited, A.black, .black {color: #000000;}
+A.green:visited, A.green, .green {color: #008C00;}
+A.blue:visited, A.blue, .blue {color: #0000ff;}
+A.orange:visited, a.orange, .orange {color: #FF7400;}
+
+
+.pinkbg { background-color: #ffbbbb; }
+.redbg { background-color: #ff8585; }
+.bluebg { background-color: #aaaaff; }
+.greenbg { background-color: #aaffaa; }
+.greybg { background-color: #dddddd; }
+
+.page-h2 { 
+        font-size: 14px; 
+	font-weight: bold;
+	vertical-align: top;
+}
+
+.header-text {
+        font-family: sans-serif;
+        font-size: 16px;
+        font-style: normal;
+        font-weight: bold;
+        color: #000000;
+}
+
+.interface-header {
+        font-family: sans-serif;
+        font-size: 20px;
+        font-style: normal;
+        font-weight: bold;
+        color: #000000;
+}
+
+.graphhead, .sectionhead {
+        font-size: 15px;
+        font-style: normal;
+        font-weight: bold;
+        color: #555;
+}
+
+.tablehead {
+        font-family: Verdana, arial, sans-serif; 
+        font-weight: bold;
+        font-size: 13px;
+        font-style: normal;
+        font-weight: bold;
+        color: #666;
+}
+
+.box-desc {
+        font-family: "Verdana", Arial, Helvetica, sans-serif;
+        font-size: 12px;
+        font-style: italic;
+}
+
+.interface-desc {
+  	font-family: "Verdana", Arial, Helvetica, sans-serif;
+        font-size: 11px;
+        font-style: normal;
+}
+
+.syslog {
+        font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 12px;
+        font-style: normal;
+        color: #000000;
+}
+
+.page-header, .device-header {
+        font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 24px;
+        font-weight: bold;
+        color: black;
+}
+
+.top-subtitle {
+        font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 22px;
+        font-weight: bold;
+        vertical-align: middle;
+}
+
+.device-header {
+        font-size: 20px;
+}
+
+.device-head {
+        font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 16px;
+        font-weight: bold;
+}
+
+.list-device, .list-device-ignored, .list-device-down, .list-device-ignored-up {
+}
+
+.device-head, .list-device {
+	color: #000cc;
+}
+
+.list-device-down, a.list-device-down, a.list-device-down:visited {
+ color: #cc0000;
+}
+
+a.list-device-ignored-up {
+	color: #009900;
+}
+
+.footer-text {
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 12px;
+        font-style: normal;
+        font-weight: bold;
+        color: #FFFFFF;
+}
+
+.header-text-3 {
+        font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 13px;
+        font-style: normal;
+        font-weight: bold;
+        color: #ffffff;
+}
+
+.body-1 {
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 13px;
+        font-style: normal;
+        font-weight: normal;
+        color: #000000;
+}
+
+.body-date-1 {
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 10px;
+        font-style: normal;
+        font-weight: normal;
+        color: #000000;
+}
+
+.copy {
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 10px;
+        font-style: italic;
+        font-weight: normal;
+        color: #000000;
+}
+
+.body-2 {
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 14px;
+        font-style: normal;
+        font-weight: normal;
+        color: #000000;
+}
+
+.body-field-1 {
+  font-family: verdana, font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 13px;
+        font-style: normal;
+        font-weight: bold;
+        color: #000000;
+}
+
+.body-head-1 {
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 16px;
+        font-style: normal;
+        font-weight: bold;
+        color: #000000;
+}
+
+.body-head {
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 32px;
+        font-style: normal;
+        font-weight: bold;
+        color: #000000;
+}
+
+.body-head-2, .table-head-2 {
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 14px;
+        font-style: normal;
+        font-weight: bold;
+        color: #000000;
+}
+
+.table-head-2 {
+        background-color: #cccccc;
+}
+
+
+.text-more {
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 10px;
+        font-style: normal;
+        font-weight: bold;
+        color: #cc0000;
+}
+
+.body-blue {
+        color: #0000CC;
+}
+
+.top-menu:link {
+ color: #dddddd;
+ text-decoration: none;
+}
+.top-menu:visited {
+  color: #dddddd;
+        text-decoration: none;
+}
+.top-menu:hover {
+  color: #CC0000;
+        text-decoration: none;
+}
+.top-menu:active {
+  color: #000000;
+        text-decoration: none;
+}
+
+.menu-box-dash-off {
+        border: 1px dashed #000000;
+}
+
+.copyright {
+	bottom: 0px;
+	margin: 10px auto;
+	position: relative;
+	background-color: #eeeeee;
+	text-align: center;
+        font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 10px;
+        font-style: italic;
+        font-weight: normal;
+        color: #000000;
+        width: 360px;
+	padding: 10px;
+}
+
+body {
+    margin: 0px; padding: 0px 0px 0px 0px; 
+    background-color: #fff; color: #666;
+    font: 10pt Verdana;
+    line-height: 20px;
+}
+
+<table { border-collapse: collapse; margin: 0px; }
+<table tr td { border: 0px solid #ddd; vertical-align: top; }
+form { margin: 0px; padding: 0px; }
+hr { border: 0px; height: 1px; background-color: #ccc; color: #ccc; }
+p { margin: 0px; padding: 0px; }
+
+ul { margin: 0px 24px; padding: 0px; list-style: disc outside; }
+ul ul { margin-top: 0px; padding-top: 0px; list-style: circle outside; }
+ul ul ul { margin-top: 0px; padding-top: 0px; list-style: square outside; }
+
+a { text-decoration:none; color: #00f; }
+a:visited { text-decoration:none; color: #00f; }
+a:hover { text-decoration:underline; color: #00f; }
+a:active { color: #00f; }
+
+.vspace { margin-top: 4px; margin-bottom: 4px; }
+p.vspace { padding-top: 3px; padding-bottom: 3px; }
+.content-mat { padding: 0px; margin: auto; background: none; }
+
+.clearer { clear: both; display: block; padding: 0px; height: 0px; line-height: 1px; font-size: 0px; }
+
+.borderless-table tr td { border: none }
+
+#header { width: 100%; margin: 0px 0px 0px 0px; background-color: #fff; }
+#header #page-title { color: #555; font: 18pt Arial; font-weight: bold; }
+#header #page-subtitle { color: #555; font: 12pt Arial; font-weight: bold; }
+#header a { color: #eeeeee; }
+
+#main h1 { font-size: 12pt; margin: 0px; padding: 0px; }
+#main h2 { font-size: 11pt; margin: 0px; padding: 0px; }
+#main h3 { font-size: 10pt; margin: 0px; padding: 0px; }
+#main h4 { font-size:  9pt; margin: 0px; padding: 0px; }
+
+#content { margin: 0px; text-align: left; padding: 0px; }
+
+#footer {
+    width: 100%; height: 40px;
+    border: 1px none #ccc; 
+    margin: 0px  0px 0px 0px; padding: 0px 0px 8px 0px;
+}
+
+#copyright { margin: 0px 12px 0px 11px; padding: 2px 0px; border-top: 1px solid #ddd; font-size: 8pt; }
+
+#topnav {
+    margin: 0px 0px 0px 0px;
+    padding: 0px 0px 0px 0px;
+    text-align: right;
+    font-size: 11px; font-weight: bold;
+}
+
+#topnav ul { margin: 5px 0px 0px 0px; padding: 0px; }
+#topnav ul li { list-style: none; display: text-indent: 0px; display: inline; padding-right: 10px;}
+#topnav a { color: #000; text-decoration: none;}
+#topnav a:hover { color: #a00;}
+
+#menubar {
+    margin: 0px 0px 0px 0px;
+    padding: 0px 0px 0px 0px;
+    border-bottom: 1px solid #a8a8a8;
+    border-top: 1px solid #a8a8a8;
+    background-color: #e8e8e8;
+    text-align: left;
+    font-size: 10px; font-weight: bold;
+}
+
+#text { width: 1100px; }
+
+#menubar ul { margin: 0px 10px; padding: 0px; }
+#menubar ul li { list-style: none; display: inline; text-indent: 0px; text-align: left; padding-right: 15px; }
+#menubar a { color: #666; }
+
+#popupmenu a { color: #aaa; }
+#popupmenu a:hover { color: #fff; }
+#popupmenu li:hover { background: #444; color: #eec; }
+#popupmenu li:hover ul { display: block; }
+#popupmenu ul { padding: 0px; margin: 0px; list-style: none; }
+#popupmenu ul li { padding: 0px 8px; float: left; position: relative; }
+
+#popupmenu li ul {
+    display: none;
+    position: absolute;
+    top: 10px;
+    left: 5px;
+    width: 150px;
+    margin-top: 10px;
+    border-top: 1px solid #888;
+    border-bottom: 1px solid #888;
+    padding-top: 3px;
+    padding-bottom: 4px;
+    background: #444;
+}
+
+#popupmenu li ul li {
+    display: block;
+    clear: both;
+    color: #aaa;
+}
+
+#popupmenu li ul li:hover { color: #aaa; }
+
+#toext { margin-top: 12px; margin-bottom: 12px; font-family: monospace; }
+
+.list-large {
+  font-size: 15px;
+  font-weight: bold;
+}
+
+.list-bold {
+  font-weight: bold;
+}
+
+
+.graphcell, .ifcell, .devicecell, .datacell { margin: 0px 0px 7px 0px; left; padding: 7px; border: 0px; background: #e8e8e8; float: left; }
+.ifcell { float: left; clear:right; background:none; }
+
+.datacell { clear: both; }
+.devicecell { margin: 2px auto; };
+
+
+.sidepane { clear: left; background:none;}
+.mainpane { float: none; clear: right; background:none; }
+
+.nofloat { clear: left; }
+
+.interface, .interface-admindown, a.interface-admindown, a.interface-admindown:visited, .interface-updown, a.interface-updown, a.interface-updown:visited, .interface-upup, a.interface-upup {
+	color: #555;
+}
+
+.interface-updown, a.interface-updown, a.interface-updown:visited {
+        color: #cc0000;
+}
+
+.interface-upup, a.interface-upup {        
+	color: #0000cc;
+}
+
+a.interface-upup:hover, a.interface-updown:hover, a.interface-admindown:hover {
+	color: #990099;
+}
+
+.interface-admindown, a.list-device-ignored, a.interface-admindown, a.interface-admindown:visited {
+        color: #999999;
+}
+
+
+### Stuff for DNS
+
+td {
+  text-decoration: none;
+  font-family: Verdana,Helvetica,sans-serif;
+  font-size: 12px;
+  font-weight: normal;
+}
+
+.left {
+  text-align: left;
+  margin: 1px;
+}
+
+.error {
+  text-decoration: none;
+  font-family: Verdana,Helvetica,sans-serif;
+  font-size: 12px;
+  color: red;
+  font-weight: normal;
+}
+
+select {
+    color: black;
+    text-decoration: none;
+    font-family: Verdana,Helvetica,sans-serif;
+    font-size: 10px;
+    font-weight: normal;
+}
+input {
+    color: black;
+    text-decoration: none;
+    font-family: Verdana,Helvetica,sans-serif;
+    font-size: 10px;
+    font-weight: bold;
+}
+
+## For Mail Admin
+
+.button {
+    border: 1px solid #aaaaaa;
+    color: #777777;
+    background: #dddddd;
+    padding: 3px 3px 3px 3px;
+    font-size: 11px;
+}
+
+.flat {
+        border: 1px solid #888888;
+}
+
+.error_msg {
+        color: #d01313;
+}
+
+.standout {
+    color: maroon;
+    padding: 3px 3px 3px 3px;
+    text-align: center;
+}
+
+.button:hover {
+    background: #A10925;
+    color: #FFFFFF;
+}
+
+#menu {
+    text-align: center;
+    width: 100%;
+    margin: 5px auto;
+    padding-top: 10px;
+}
+
+#menu ul li {
+    display: inline;
+    background: #efefef;
+    padding: 10px 5px 5px 5px;
+    margin-right: 3px;
+    border-top: 4px solid #aaaaaa;
+}
+
+#menu ul li:hover {
+    background:  #A10925; 
+    color: white;
+}
+
+#menu ul li a {
+    color: #888888;
+}
+
+#menu ul li a:hover {
+    color: #FFFFFF;
+}
+
+
+#main_menu, #edit_form {
+     width: 850px;
+     margin: 0px auto;
+
+}
+
+#main_menu table {
+    margin: 0 auto;
+    text-align: left;
+    padding-top: 20px;
+    padding-bottom: 20px;
+}
+
+#main_menu table td {
+    padding-left: 30px;
+    padding-bottom: 5px;
+}
+
+#main_menu a {
+    color: #888888;
+    padding-left: 8px;
+}
+
+#main_menu a:hover {
+    color: #CD6A6A;
+    text-decoration: none;
+    padding-left: 4px;
+    border-bottom: 1px solid #40B33C;
+    border-left: 4px solid #40B33C;
+}
+
+#edit_form table {
+    margin: 0 auto;
+    padding-top: 10px;
+    text-align: left;
+    width: 100%;
+    border: 1px solid #efefef;
+}
+
+#edit_form h3  {
+    text-align: center;
+    font-size: 12px;
+    margin: 0;
+    background: #cdcdcd;
+    border: 1px solid #bbb;
+    line-height: 25px;
+    color: #555555;
+}
+
+.hlp_center {
+    text-align: center;
+}
+
+.help_text{
+    background: #efefef;
+    border-left: 1px solid #bbbbbb;
+    border-right: 1px solid #bbbbbb;
+    text-align: center;
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+#overview, #admin_domains, #admin_virtual {
+    margin: auto;
+    background: #cdcdcd;
+    border: 0px solid #bbb;
+    padding: 0px 8px;
+
+}
+
+#overview h4, #overview P, #overview FORM, #admin_virtual h4, #admin_virtual P, #admin_virtual FORM {
+    display: inline;
+    padding-right: 20px;
+    line-height: 30px;
+}
+
+#nav_bar {
+    text-align: right;
+    width: 750px;
+    margin: 0 auto;
+}
+
+#alias_table, #mailbox_table, #overview_table, #log_table, #admin_table {
+    width: 100%;
+    margin: 0px auto;
+    border: 1px solid #efefef;
+}
+
+#alias_table .header, #mailbox_table .header, #overview_table .header, #log_table .header, #admin_table .header {
+    line-height: 20px;
+    background: #efefef;
+    color: black;
+}
+
+#alias_table .hilightoff, #mailbox_table .hilightoff, #overview_table .hilightoff, #log_table .hilightoff, #admin_table .hilighoff {
+    background: white;
+}
+
+#alias_table .hilighton, #mailbox_table .hilighton, #overview_table .hilighton, #log_table .hilighton, #admin_table .hilighton {
+    background: #ffdddd;
+}
+
+#alias_table h3, #mailbox_table h3, #overview_table h3, #log_table h3, #admin_table h3 {
+    background: silver;
+    text-align: left;
+    font-size: 12px;
+    font-weight: bold;
+    padding-left: 20px;
+    line-height: 25px;
+    margin: 0;
+}
+
+#top{
+                height:17px;
+                padding:2px 21px 0px 21px;
+                background:#A20927;
+                font:normal 11px arial;
+		color: white;
+        }
+#top A {
+	color: #aaaaaa;
+}
+
+#center{
+                width:1200px;
+                margin:0px auto 0px auto;
+
+}
+
+#logo{
+                padding-left:21px;
+}
+
+.errorbox {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	border: 2px dashed #CC0000;
+	background-color: #FFCCCC;
+	padding: 5px;
+	font-size: small;
+	margin: 5px;
+}
+
+.messagebox {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	border: thin dashed #009900;
+	background-color: #ccffaa;
+	padding: 5px;
+	font-size: small;
+	margin: 5px;
+}
+
+
+/* Fancy menu */
+
+
+.menu2 { float:left; width:100%; font-family: Verdana, arial, sans-serif; font-weight: bold ; font-size: 11px; border:1px solid #aaaaaa;
+background:#ddd url(/images/menu2.gif) repeat-x;
+z-index: 9;
+}
+.menu2 ul {
+padding:0;margin:0;list-style-type:none;
+}
+.menu2 ul li {
+float:left; position:relative;
+}
+.menu2 ul li.group {display:block; text-indent:10px; background:#666; color:#cc0000; width:152px; padding:4px 0;}
+
+.menu2 ul li a, .menu2 ul li a:visited {
+float:left; display:block; text-decoration:none; color:#666; padding:0px 16px; line-height:25px; height:25px;
+}
+
+.menu2 ul li:hover {width:auto;}
+
+.menu2 ul li a:hover {background:#aaa url(/images/sub2a.gif); color:#356AA0;}
+
+.menu2 ul li:hover a {background:#aaa url(/images/sub2a.gif); color:#356AA0;}
+
+.menu2 ul li ul {
+display: none;
+}
+.menu2 table {
+margin:0; border-collapse:collapse; font-size:11px; position:absolute; top:0; left:0; font-size: 10px;
+}
+
+/* specific to non IE browsers */
+.menu2 ul li:hover ul {
+display:block; position:absolute;top:24px; background:#aaa; margin-top:1px; left:0; width:140px;
+}
+
+.menu2 ul li:hover ul.scroller {
+height:138px; width:172px; overflow:auto;}
+
+.menu2 ul li:hover ul.endstop {
+left:-90px;
+}
+.menu2 ul li:hover ul li ul {
+display: none;
+}
+.menu2 ul li:hover ul li a {
+display:block; background:#aaa; color:#fff;height:auto;line-height:15px;padding:4px 10px; width:120px;
+}
+.menu2 ul li:hover ul li a.drop {
+background:#888;
+}
+.menu2 ul li:hover ul li a:hover {
+color:#ff0; background: #888;
+}
+.menu2 ul li:hover ul li a:hover.drop {
+background: #888; color:#ff0;
+}
+.menu2 ul li:hover ul li:hover ul {
+display:block; position:absolute; left:153px; top:-70px; color:#000; left:152px; height:138px; width:172px; overflow:auto; background:#888;
+}
+.menu2 ul li:hover ul li:hover ul li a {background:#888;}
+.menu2 ul li:hover ul li:hover ul li.group {width:152px; padding:5px 0;}
+
+
+.menu2 ul li:hover ul li:hover ul.left {
+left:-172px;
+}
+.menu2 ul li:hover ul li:hover ul li a:hover {background:#666; color:#0ff;}
+
+/* specific to IE5.5 and IE6 browsers */
+.menu2 ul li a:hover ul {
+display:block;position:absolute;top:30px; t\op:29px; background:#aaa;left:0; marg\in-top:1px;
+}
+.menu2 ul li a:hover ul.scroller {
+height:138px; overflow:auto;}
+
+.menu2 ul li a:hover ul.endstop {
+left: -90px;
+}
+.menu2 ul li a:hover ul li a {
+display:block; color:#fff; height:1px; line-height:15px; padding:4px 16px; width:152px; w\idth:120px;
+}
+.menu2 ul li a:hover ul li a.drop {
+background:#888; padding-bottom:5px;
+}
+.menu2 ul li a:hover ul li a ul {
+visibility:hidden; position:absolute; height:0; width:0;
+}
+.menu2 ul li a:hover ul li a:hover {
+color:#ff0; background: #888;
+}
+.menu2 ul li a:hover ul li a:hover.drop {
+ background: #888; color:#ff0;
+}
+.menu2 ul li a:hover ul li a:hover ul {
+visibility:visible; position:absolute; top:-69px; t\op:-70px; color:#000; left:152px; height:138px; width:172px; overflow:auto; background:#888;
+}
+.menu2 ul li a:hover ul li a:hover ul.left { left:-170px; }
+
+.menu2 ul li a:hover ul li a:hover ul li a:hover {background:#666; color:#0ff;}
+
+.left {clear:both;}
+
+
+#### For fancy tabs
+
+.shadetabs {
+padding: 3px 3px;
+margin-left: 0;
+margin-top: 1px;
+margin-bottom: 0px;
+font-family: Verdana, arial, sans-serif;
+font-weight: bold;
+font-size: 12px;
+list-style-type: none;
+text-align: left; /*set to left, center, or right to align the menu as desired*/
+}
+
+.shadetabs li{
+display: inline;
+margin: 0;
+}
+
+
+.shadetabs li a{
+text-decoration: none;
+padding: 2px 7px;
+margin-right: 3px;
+border: 1px solid #aaa;
+color: #2d2b2b;
+background: white url(/images/menu2.gif) top left repeat-x;
+}
+
+.shadetabs li a:visited{
+color: #2d2b2b;
+}
+
+.shadetabs li a:hover{
+text-decoration: none;
+color: #cc0000;
+}
+
+.shadetabs li.selected{
+}
+
+.shadetabs li.selected a{ /*selected main tab style */
+  background-image: url(/images/shadeactive.gif);
+  border-bottom-color: white;
+}
+
+.shadetabs li.selected a:hover{ /*selected main tab style */
+  text-decoration: none;
+}
+
+.contentstyle{
+  border: 1px solid #aaaaaa;
+  width: 1175px;
+  margin-bottom: 1em;
+  padding: 10px;
+}
+
diff --git a/html/delete.php b/html/delete.php
new file mode 100644
index 0000000000..e21dd0730a
--- /dev/null
+++ b/html/delete.php
@@ -0,0 +1,17 @@
+<?php
+#  ini_set('display_errors', 1);
+#  ini_set('display_startup_errors', 1);
+#  ini_set('log_errors', 1);
+  ini_set('allow_url_fopen', 0);
+#  ini_set('error_reporting', E_ALL);
+
+  include("../config.php");
+  include("../includes/functions.php");
+  include("includes/authenticate.inc");
+  $start = utime();
+  $id = $_GET['device']
+?>
+
+  Really Delete?
+  <a href="javascript:;" onclick="opener.location='/?page=list&delete=<?php echo("$id"); ?>';self.close()">Yes!</a> 
+  <a href=\"javascript:;" onclick="self.close()">No!</a>
diff --git a/html/graph.php b/html/graph.php
new file mode 100644
index 0000000000..f32cdf05b3
--- /dev/null
+++ b/html/graph.php
@@ -0,0 +1,158 @@
+<?php
+
+#  ini_set('display_errors', 1);
+#  ini_set('display_startup_errors', 1);
+#  ini_set('log_errors', 1);
+  ini_set('allow_url_fopen', 0);
+#  ini_set('error_reporting', E_ALL);
+
+  include("../config.php");
+  include("../includes/functions.php");
+  include("includes/authenticate.inc");
+
+  if($_GET['host']) {
+    $hostid = $_GET['host'];
+  } else {
+    $hostid = getifhost($_GET['if']);
+    $ifIndex = getifindexbyid($_GET['if']);
+  }
+  $hostname = gethostbyid($hostid);
+  $from = $_GET['from'];
+  $to = $_GET['to'];
+  $width = $_GET['width'];
+  $height = $_GET['height'];
+  $title = $_GET['title'];
+  $vertical = $_GET['vertical'];
+
+  $type = $_GET['type'];
+
+  $graphfile = $hostname . ".". $ifIndex . "-" . $type . ".png";
+
+  $os = gethostosbyid($hostid);
+
+  switch ($type) {
+  
+  case 'bits':
+    $graph = trafgraph ($hostname . ".". $ifIndex . ".rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'pkts':
+    $graph = pktsgraph ($hostname . ".". $ifIndex . ".rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'errors':
+    $graph = errorgraph ($hostname . ".". $ifIndex . ".rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'nupkts':
+    $graph = nucastgraph ($hostname . ".". $ifIndex . ".rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'uptime':
+    $graph = uptimegraph ($hostname . "-uptime.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'unixfs':
+    $graph = unixfsgraph ($hostid, $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'calls':
+    $graph = callsgraphSNOM ($hostname . "-data.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'ip_graph':
+    $graph = ip_graph ($hostname . "-netinfo.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'icmp_graph':
+    $graph = icmp_graph ($hostname . "-netinfo.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'tcp_graph':
+    $graph = tcp_graph ($hostname . "-netinfo.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'udp_graph':
+    $graph = udp_graph ($hostname . "-netinfo.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'cpu':
+    if($os == "Linux" || $os == "NetBSD" || $os == "FreeBSD" || $os == "DragonFly" || $os == "OpenBSD" || $os == "Windows" || $os == "m0n0wall" || $os == "Voswall" || $os == "pfSense" || $os == "DragonFly" || $os == "OpenBSD") {
+      $graph = cpugraphUnix ($hostname . "-cpu.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    } elseif($os == "IOS") {
+      $graph = cpugraph ($hostname . "-cpu.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    } elseif($os == "Windows") {
+      $graph = cpugraphwin ($hostname . "-cpu.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    } elseif($os == "ProCurve") {
+      $graph = cpugraphHP ($hostname . "-cpu.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    } elseif($os == "Snom") {
+      $graph = callsgraphSNOM ($hostname . "-data.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    }
+    break;
+  case 'temp':
+      $graph = temp_graph ($hostid, $graphfile, $from, $to, $width, $height, $title, $vertical);
+    break;
+  case 'mem':
+    if($os == "Linux" || $os == "FreeBSD" || $os == "DragonFly" || $os == "OpenBSD" || $os == "NetBSD" ) {
+      $graph = memgraphUnix ($hostname . "-mem.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    } elseif($os == "IOS") {
+      $graph = memgraph ($hostname . "-mem.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    } elseif($os == "Windows") {
+    } elseif($os == "ProCurve") {
+      $graph = memgraphHP ($hostname . "-mem.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    }
+    break;
+  case 'load':
+    if($os == "Linux" || $os == "FreeBSD" || $os == "DragonFly" || $os == "OpenBSD" || $os == "NetBSD" ) {
+      $graph = loadgraphUnix ($hostname . "-load.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    } elseif($os == "IOS") {
+      $graph = loadgraph ($hostname . "-load.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    } elseif($os == "Windows") {
+      $graph = loadgraphwin ($hostname . "-load.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    }
+    break;
+  case 'users':
+    if($os == "Linux" || $os == "FreeBSD" || $os == "DragonFly" || $os == "OpenBSD" || $os == "NetBSD" ) {
+      $graph = usersgraphUnix ($hostname . "-sys.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    } elseif($os == "Windows") {
+      $graph = usersgraphwin ($hostname . "-sys.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    }
+    break;
+  case 'procs':
+    if($os == "Linux" || $os == "FreeBSD" || $os == "DragonFly" || $os == "OpenBSD" || $os == "NetBSD" ) {
+      $graph = procsgraphUnix ($hostname . "-sys.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    } elseif($os == "Windows") {
+      $graph = procsgraphwin ($hostname . "-sys.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    }
+    break;
+  case 'unixfs':
+    if($os == "Linux" || $os == "FreeBSD" || $os == "DragonFly" || $os == "OpenBSD" || $os == "NetBSD" ) {
+      $graph = unixfsgraph ($hostid, $graphfile, $from, $to, $width, $height, $title, $vertical);
+    }
+    break;
+  case 'postfix':
+    if($os == "Linux" || $os == "FreeBSD" || $os == "DragonFly" || $os == "OpenBSD") {
+      $graph = mailsgraphUnix ($hostname . "-mail.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    }
+    break;
+  case 'postfixerrors':
+    if($os == "Linux" || $os == "FreeBSD" || $os == "DragonFly" || $os == "OpenBSD") {
+      $graph = mailerrorgraphUnix ($hostname, $graphfile, $from, $to, $width, $height, $title, $vertical);
+    }
+    break;
+  case 'courier':
+    if($os == "Linux" || $os == "FreeBSD" || $os == "DragonFly" || $os == "OpenBSD") {
+      $graph = couriergraphUnix ($hostname . "-courier.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    }
+    break;
+  case 'apachehits':
+    if($os == "Linux" || $os == "FreeBSD" || $os == "DragonFly" || $os == "OpenBSD") {
+      $graph = apachehitsgraphUnix ($hostname . "-apache.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    }
+    break;
+  case 'apachebits':
+    if($os == "Linux" || $os == "FreeBSD" || $os == "DragonFly" || $os == "OpenBSD") {
+      $graph = apachebitsgraphUnix ($hostname . "-apache.rrd", $graphfile, $from, $to, $width, $height, $title, $vertical);
+    }
+    break;
+
+  }
+
+  if($graph) {
+    echo(`cat graphs/$graphfile`);
+  } else {  
+#    echo(`cat images/no-graph.png`);
+  }
+
+  $delete = `rm graphs/$graphfile`; 
+
+?>
diff --git a/html/graphs b/html/graphs
new file mode 120000
index 0000000000..f37cb17edc
--- /dev/null
+++ b/html/graphs
@@ -0,0 +1 @@
+../graphs/
\ No newline at end of file
diff --git a/html/images/16/Thumbs.db b/html/images/16/Thumbs.db
new file mode 100755
index 0000000000..e464d402cd
Binary files /dev/null and b/html/images/16/Thumbs.db differ
diff --git a/html/images/16/accept.png b/html/images/16/accept.png
new file mode 100755
index 0000000000..89c8129a49
Binary files /dev/null and b/html/images/16/accept.png differ
diff --git a/html/images/16/add.png b/html/images/16/add.png
new file mode 100755
index 0000000000..6332fefea4
Binary files /dev/null and b/html/images/16/add.png differ
diff --git a/html/images/16/anchor.png b/html/images/16/anchor.png
new file mode 100755
index 0000000000..9b3422c61e
Binary files /dev/null and b/html/images/16/anchor.png differ
diff --git a/html/images/16/application.png b/html/images/16/application.png
new file mode 100755
index 0000000000..1dee9e3660
Binary files /dev/null and b/html/images/16/application.png differ
diff --git a/html/images/16/application_add.png b/html/images/16/application_add.png
new file mode 100755
index 0000000000..2e945076cf
Binary files /dev/null and b/html/images/16/application_add.png differ
diff --git a/html/images/16/application_cascade.png b/html/images/16/application_cascade.png
new file mode 100755
index 0000000000..da5c622eac
Binary files /dev/null and b/html/images/16/application_cascade.png differ
diff --git a/html/images/16/application_delete.png b/html/images/16/application_delete.png
new file mode 100755
index 0000000000..0a335acf67
Binary files /dev/null and b/html/images/16/application_delete.png differ
diff --git a/html/images/16/application_double.png b/html/images/16/application_double.png
new file mode 100755
index 0000000000..647592f2e9
Binary files /dev/null and b/html/images/16/application_double.png differ
diff --git a/html/images/16/application_edit.png b/html/images/16/application_edit.png
new file mode 100755
index 0000000000..fb2efb8775
Binary files /dev/null and b/html/images/16/application_edit.png differ
diff --git a/html/images/16/application_error.png b/html/images/16/application_error.png
new file mode 100755
index 0000000000..b35fa57171
Binary files /dev/null and b/html/images/16/application_error.png differ
diff --git a/html/images/16/application_form.png b/html/images/16/application_form.png
new file mode 100755
index 0000000000..807b862cfc
Binary files /dev/null and b/html/images/16/application_form.png differ
diff --git a/html/images/16/application_form_add.png b/html/images/16/application_form_add.png
new file mode 100755
index 0000000000..28c2175e69
Binary files /dev/null and b/html/images/16/application_form_add.png differ
diff --git a/html/images/16/application_form_delete.png b/html/images/16/application_form_delete.png
new file mode 100755
index 0000000000..cd305ec83b
Binary files /dev/null and b/html/images/16/application_form_delete.png differ
diff --git a/html/images/16/application_form_edit.png b/html/images/16/application_form_edit.png
new file mode 100755
index 0000000000..af486c940c
Binary files /dev/null and b/html/images/16/application_form_edit.png differ
diff --git a/html/images/16/application_form_magnify.png b/html/images/16/application_form_magnify.png
new file mode 100755
index 0000000000..7b7fbd17e3
Binary files /dev/null and b/html/images/16/application_form_magnify.png differ
diff --git a/html/images/16/application_get.png b/html/images/16/application_get.png
new file mode 100755
index 0000000000..28e41ea2bb
Binary files /dev/null and b/html/images/16/application_get.png differ
diff --git a/html/images/16/application_go.png b/html/images/16/application_go.png
new file mode 100755
index 0000000000..5cc2b0dd36
Binary files /dev/null and b/html/images/16/application_go.png differ
diff --git a/html/images/16/application_home.png b/html/images/16/application_home.png
new file mode 100755
index 0000000000..b60d0c85af
Binary files /dev/null and b/html/images/16/application_home.png differ
diff --git a/html/images/16/application_key.png b/html/images/16/application_key.png
new file mode 100755
index 0000000000..998d65c694
Binary files /dev/null and b/html/images/16/application_key.png differ
diff --git a/html/images/16/application_lightning.png b/html/images/16/application_lightning.png
new file mode 100755
index 0000000000..7e91545c73
Binary files /dev/null and b/html/images/16/application_lightning.png differ
diff --git a/html/images/16/application_link.png b/html/images/16/application_link.png
new file mode 100755
index 0000000000..f8fbb3ed94
Binary files /dev/null and b/html/images/16/application_link.png differ
diff --git a/html/images/16/application_osx.png b/html/images/16/application_osx.png
new file mode 100755
index 0000000000..9f022ece86
Binary files /dev/null and b/html/images/16/application_osx.png differ
diff --git a/html/images/16/application_osx_terminal.png b/html/images/16/application_osx_terminal.png
new file mode 100755
index 0000000000..b3d8ce01e2
Binary files /dev/null and b/html/images/16/application_osx_terminal.png differ
diff --git a/html/images/16/application_put.png b/html/images/16/application_put.png
new file mode 100755
index 0000000000..c30cf59894
Binary files /dev/null and b/html/images/16/application_put.png differ
diff --git a/html/images/16/application_side_boxes.png b/html/images/16/application_side_boxes.png
new file mode 100755
index 0000000000..efbf3c4f8a
Binary files /dev/null and b/html/images/16/application_side_boxes.png differ
diff --git a/html/images/16/application_side_contract.png b/html/images/16/application_side_contract.png
new file mode 100755
index 0000000000..3585f94d61
Binary files /dev/null and b/html/images/16/application_side_contract.png differ
diff --git a/html/images/16/application_side_expand.png b/html/images/16/application_side_expand.png
new file mode 100755
index 0000000000..030cf7c378
Binary files /dev/null and b/html/images/16/application_side_expand.png differ
diff --git a/html/images/16/application_side_list.png b/html/images/16/application_side_list.png
new file mode 100755
index 0000000000..248eaf1ac1
Binary files /dev/null and b/html/images/16/application_side_list.png differ
diff --git a/html/images/16/application_side_tree.png b/html/images/16/application_side_tree.png
new file mode 100755
index 0000000000..f04a52b3df
Binary files /dev/null and b/html/images/16/application_side_tree.png differ
diff --git a/html/images/16/application_split.png b/html/images/16/application_split.png
new file mode 100755
index 0000000000..a91c78a5c4
Binary files /dev/null and b/html/images/16/application_split.png differ
diff --git a/html/images/16/application_tile_horizontal.png b/html/images/16/application_tile_horizontal.png
new file mode 100755
index 0000000000..8a1191c389
Binary files /dev/null and b/html/images/16/application_tile_horizontal.png differ
diff --git a/html/images/16/application_tile_vertical.png b/html/images/16/application_tile_vertical.png
new file mode 100755
index 0000000000..1d40383d31
Binary files /dev/null and b/html/images/16/application_tile_vertical.png differ
diff --git a/html/images/16/application_view_columns.png b/html/images/16/application_view_columns.png
new file mode 100755
index 0000000000..dc2e9d5f5f
Binary files /dev/null and b/html/images/16/application_view_columns.png differ
diff --git a/html/images/16/application_view_detail.png b/html/images/16/application_view_detail.png
new file mode 100755
index 0000000000..aba044bbc9
Binary files /dev/null and b/html/images/16/application_view_detail.png differ
diff --git a/html/images/16/application_view_gallery.png b/html/images/16/application_view_gallery.png
new file mode 100755
index 0000000000..851950db7c
Binary files /dev/null and b/html/images/16/application_view_gallery.png differ
diff --git a/html/images/16/application_view_icons.png b/html/images/16/application_view_icons.png
new file mode 100755
index 0000000000..6a93cdaa78
Binary files /dev/null and b/html/images/16/application_view_icons.png differ
diff --git a/html/images/16/application_view_list.png b/html/images/16/application_view_list.png
new file mode 100755
index 0000000000..acc30b853b
Binary files /dev/null and b/html/images/16/application_view_list.png differ
diff --git a/html/images/16/application_view_tile.png b/html/images/16/application_view_tile.png
new file mode 100755
index 0000000000..3bc0bd32fc
Binary files /dev/null and b/html/images/16/application_view_tile.png differ
diff --git a/html/images/16/application_xp.png b/html/images/16/application_xp.png
new file mode 100755
index 0000000000..d22860a316
Binary files /dev/null and b/html/images/16/application_xp.png differ
diff --git a/html/images/16/application_xp_terminal.png b/html/images/16/application_xp_terminal.png
new file mode 100755
index 0000000000..c28dd63812
Binary files /dev/null and b/html/images/16/application_xp_terminal.png differ
diff --git a/html/images/16/arrow_branch.png b/html/images/16/arrow_branch.png
new file mode 100755
index 0000000000..7542db1d1a
Binary files /dev/null and b/html/images/16/arrow_branch.png differ
diff --git a/html/images/16/arrow_divide.png b/html/images/16/arrow_divide.png
new file mode 100755
index 0000000000..61a7b1d995
Binary files /dev/null and b/html/images/16/arrow_divide.png differ
diff --git a/html/images/16/arrow_down.png b/html/images/16/arrow_down.png
new file mode 100755
index 0000000000..2c4e279377
Binary files /dev/null and b/html/images/16/arrow_down.png differ
diff --git a/html/images/16/arrow_in.png b/html/images/16/arrow_in.png
new file mode 100755
index 0000000000..745c65134d
Binary files /dev/null and b/html/images/16/arrow_in.png differ
diff --git a/html/images/16/arrow_inout.png b/html/images/16/arrow_inout.png
new file mode 100755
index 0000000000..1b763672ab
Binary files /dev/null and b/html/images/16/arrow_inout.png differ
diff --git a/html/images/16/arrow_join.png b/html/images/16/arrow_join.png
new file mode 100755
index 0000000000..a128413d88
Binary files /dev/null and b/html/images/16/arrow_join.png differ
diff --git a/html/images/16/arrow_left.png b/html/images/16/arrow_left.png
new file mode 100755
index 0000000000..5dc696781e
Binary files /dev/null and b/html/images/16/arrow_left.png differ
diff --git a/html/images/16/arrow_merge.png b/html/images/16/arrow_merge.png
new file mode 100755
index 0000000000..7502dbb332
Binary files /dev/null and b/html/images/16/arrow_merge.png differ
diff --git a/html/images/16/arrow_out.png b/html/images/16/arrow_out.png
new file mode 100755
index 0000000000..2e9bc42bec
Binary files /dev/null and b/html/images/16/arrow_out.png differ
diff --git a/html/images/16/arrow_redo.png b/html/images/16/arrow_redo.png
new file mode 100755
index 0000000000..fdc394c7c5
Binary files /dev/null and b/html/images/16/arrow_redo.png differ
diff --git a/html/images/16/arrow_refresh.png b/html/images/16/arrow_refresh.png
new file mode 100755
index 0000000000..0de26566d4
Binary files /dev/null and b/html/images/16/arrow_refresh.png differ
diff --git a/html/images/16/arrow_refresh_small.png b/html/images/16/arrow_refresh_small.png
new file mode 100755
index 0000000000..d3087dfc92
Binary files /dev/null and b/html/images/16/arrow_refresh_small.png differ
diff --git a/html/images/16/arrow_right.png b/html/images/16/arrow_right.png
new file mode 100755
index 0000000000..b1a1819238
Binary files /dev/null and b/html/images/16/arrow_right.png differ
diff --git a/html/images/16/arrow_rotate_anticlockwise.png b/html/images/16/arrow_rotate_anticlockwise.png
new file mode 100755
index 0000000000..46c75aa859
Binary files /dev/null and b/html/images/16/arrow_rotate_anticlockwise.png differ
diff --git a/html/images/16/arrow_rotate_clockwise.png b/html/images/16/arrow_rotate_clockwise.png
new file mode 100755
index 0000000000..aa65210eb0
Binary files /dev/null and b/html/images/16/arrow_rotate_clockwise.png differ
diff --git a/html/images/16/arrow_switch.png b/html/images/16/arrow_switch.png
new file mode 100755
index 0000000000..258c16c63a
Binary files /dev/null and b/html/images/16/arrow_switch.png differ
diff --git a/html/images/16/arrow_turn_left.png b/html/images/16/arrow_turn_left.png
new file mode 100755
index 0000000000..a3d6c9e39e
Binary files /dev/null and b/html/images/16/arrow_turn_left.png differ
diff --git a/html/images/16/arrow_turn_right.png b/html/images/16/arrow_turn_right.png
new file mode 100755
index 0000000000..629f20d622
Binary files /dev/null and b/html/images/16/arrow_turn_right.png differ
diff --git a/html/images/16/arrow_undo.png b/html/images/16/arrow_undo.png
new file mode 100755
index 0000000000..6972c5e594
Binary files /dev/null and b/html/images/16/arrow_undo.png differ
diff --git a/html/images/16/arrow_up.png b/html/images/16/arrow_up.png
new file mode 100755
index 0000000000..1ebb193243
Binary files /dev/null and b/html/images/16/arrow_up.png differ
diff --git a/html/images/16/asterisk_orange.png b/html/images/16/asterisk_orange.png
new file mode 100755
index 0000000000..1ebebde546
Binary files /dev/null and b/html/images/16/asterisk_orange.png differ
diff --git a/html/images/16/asterisk_yellow.png b/html/images/16/asterisk_yellow.png
new file mode 100755
index 0000000000..bab7cc9bcc
Binary files /dev/null and b/html/images/16/asterisk_yellow.png differ
diff --git a/html/images/16/attach.png b/html/images/16/attach.png
new file mode 100755
index 0000000000..ea897cc9f1
Binary files /dev/null and b/html/images/16/attach.png differ
diff --git a/html/images/16/award_star_add.png b/html/images/16/award_star_add.png
new file mode 100755
index 0000000000..9c4be9be20
Binary files /dev/null and b/html/images/16/award_star_add.png differ
diff --git a/html/images/16/award_star_bronze_1.png b/html/images/16/award_star_bronze_1.png
new file mode 100755
index 0000000000..658c7117bb
Binary files /dev/null and b/html/images/16/award_star_bronze_1.png differ
diff --git a/html/images/16/award_star_bronze_2.png b/html/images/16/award_star_bronze_2.png
new file mode 100755
index 0000000000..e47babd7ba
Binary files /dev/null and b/html/images/16/award_star_bronze_2.png differ
diff --git a/html/images/16/award_star_bronze_3.png b/html/images/16/award_star_bronze_3.png
new file mode 100755
index 0000000000..396e4b3a25
Binary files /dev/null and b/html/images/16/award_star_bronze_3.png differ
diff --git a/html/images/16/award_star_delete.png b/html/images/16/award_star_delete.png
new file mode 100755
index 0000000000..4721b152a0
Binary files /dev/null and b/html/images/16/award_star_delete.png differ
diff --git a/html/images/16/award_star_gold_1.png b/html/images/16/award_star_gold_1.png
new file mode 100755
index 0000000000..97a22b72ee
Binary files /dev/null and b/html/images/16/award_star_gold_1.png differ
diff --git a/html/images/16/award_star_gold_2.png b/html/images/16/award_star_gold_2.png
new file mode 100755
index 0000000000..0eaa571757
Binary files /dev/null and b/html/images/16/award_star_gold_2.png differ
diff --git a/html/images/16/award_star_gold_3.png b/html/images/16/award_star_gold_3.png
new file mode 100755
index 0000000000..124c9914f3
Binary files /dev/null and b/html/images/16/award_star_gold_3.png differ
diff --git a/html/images/16/award_star_silver_1.png b/html/images/16/award_star_silver_1.png
new file mode 100755
index 0000000000..028a54626a
Binary files /dev/null and b/html/images/16/award_star_silver_1.png differ
diff --git a/html/images/16/award_star_silver_2.png b/html/images/16/award_star_silver_2.png
new file mode 100755
index 0000000000..e487c3a19e
Binary files /dev/null and b/html/images/16/award_star_silver_2.png differ
diff --git a/html/images/16/award_star_silver_3.png b/html/images/16/award_star_silver_3.png
new file mode 100755
index 0000000000..1d72d47247
Binary files /dev/null and b/html/images/16/award_star_silver_3.png differ
diff --git a/html/images/16/basket.png b/html/images/16/basket.png
new file mode 100755
index 0000000000..b0686d7871
Binary files /dev/null and b/html/images/16/basket.png differ
diff --git a/html/images/16/basket_add.png b/html/images/16/basket_add.png
new file mode 100755
index 0000000000..355436823b
Binary files /dev/null and b/html/images/16/basket_add.png differ
diff --git a/html/images/16/basket_delete.png b/html/images/16/basket_delete.png
new file mode 100755
index 0000000000..1349974f60
Binary files /dev/null and b/html/images/16/basket_delete.png differ
diff --git a/html/images/16/basket_edit.png b/html/images/16/basket_edit.png
new file mode 100755
index 0000000000..8138bbdf05
Binary files /dev/null and b/html/images/16/basket_edit.png differ
diff --git a/html/images/16/basket_error.png b/html/images/16/basket_error.png
new file mode 100755
index 0000000000..3978b2923a
Binary files /dev/null and b/html/images/16/basket_error.png differ
diff --git a/html/images/16/basket_go.png b/html/images/16/basket_go.png
new file mode 100755
index 0000000000..ed8b9a5769
Binary files /dev/null and b/html/images/16/basket_go.png differ
diff --git a/html/images/16/basket_put.png b/html/images/16/basket_put.png
new file mode 100755
index 0000000000..be62faaaab
Binary files /dev/null and b/html/images/16/basket_put.png differ
diff --git a/html/images/16/basket_remove.png b/html/images/16/basket_remove.png
new file mode 100755
index 0000000000..04dd7fd3bb
Binary files /dev/null and b/html/images/16/basket_remove.png differ
diff --git a/html/images/16/bell.png b/html/images/16/bell.png
new file mode 100755
index 0000000000..6e0015df4f
Binary files /dev/null and b/html/images/16/bell.png differ
diff --git a/html/images/16/bell_add.png b/html/images/16/bell_add.png
new file mode 100755
index 0000000000..7db01d6279
Binary files /dev/null and b/html/images/16/bell_add.png differ
diff --git a/html/images/16/bell_delete.png b/html/images/16/bell_delete.png
new file mode 100755
index 0000000000..23907bbba9
Binary files /dev/null and b/html/images/16/bell_delete.png differ
diff --git a/html/images/16/bell_error.png b/html/images/16/bell_error.png
new file mode 100755
index 0000000000..a0ddc00281
Binary files /dev/null and b/html/images/16/bell_error.png differ
diff --git a/html/images/16/bell_go.png b/html/images/16/bell_go.png
new file mode 100755
index 0000000000..b89bb34345
Binary files /dev/null and b/html/images/16/bell_go.png differ
diff --git a/html/images/16/bell_link.png b/html/images/16/bell_link.png
new file mode 100755
index 0000000000..b8c64af1ee
Binary files /dev/null and b/html/images/16/bell_link.png differ
diff --git a/html/images/16/bin.png b/html/images/16/bin.png
new file mode 100755
index 0000000000..ebad933c8b
Binary files /dev/null and b/html/images/16/bin.png differ
diff --git a/html/images/16/bin_closed.png b/html/images/16/bin_closed.png
new file mode 100755
index 0000000000..afe22ba99e
Binary files /dev/null and b/html/images/16/bin_closed.png differ
diff --git a/html/images/16/bin_empty.png b/html/images/16/bin_empty.png
new file mode 100755
index 0000000000..375b8bf6a0
Binary files /dev/null and b/html/images/16/bin_empty.png differ
diff --git a/html/images/16/bomb.png b/html/images/16/bomb.png
new file mode 100755
index 0000000000..1be37974ad
Binary files /dev/null and b/html/images/16/bomb.png differ
diff --git a/html/images/16/book.png b/html/images/16/book.png
new file mode 100755
index 0000000000..b0f4dd7928
Binary files /dev/null and b/html/images/16/book.png differ
diff --git a/html/images/16/book_add.png b/html/images/16/book_add.png
new file mode 100755
index 0000000000..e2f0847274
Binary files /dev/null and b/html/images/16/book_add.png differ
diff --git a/html/images/16/book_addresses.png b/html/images/16/book_addresses.png
new file mode 100755
index 0000000000..b73419ba82
Binary files /dev/null and b/html/images/16/book_addresses.png differ
diff --git a/html/images/16/book_delete.png b/html/images/16/book_delete.png
new file mode 100755
index 0000000000..d9a6340d72
Binary files /dev/null and b/html/images/16/book_delete.png differ
diff --git a/html/images/16/book_edit.png b/html/images/16/book_edit.png
new file mode 100755
index 0000000000..6e756cc85a
Binary files /dev/null and b/html/images/16/book_edit.png differ
diff --git a/html/images/16/book_error.png b/html/images/16/book_error.png
new file mode 100755
index 0000000000..f3fbed0dc8
Binary files /dev/null and b/html/images/16/book_error.png differ
diff --git a/html/images/16/book_go.png b/html/images/16/book_go.png
new file mode 100755
index 0000000000..cd4e1964c4
Binary files /dev/null and b/html/images/16/book_go.png differ
diff --git a/html/images/16/book_key.png b/html/images/16/book_key.png
new file mode 100755
index 0000000000..d8e23ec932
Binary files /dev/null and b/html/images/16/book_key.png differ
diff --git a/html/images/16/book_link.png b/html/images/16/book_link.png
new file mode 100755
index 0000000000..dd0820e86d
Binary files /dev/null and b/html/images/16/book_link.png differ
diff --git a/html/images/16/book_next.png b/html/images/16/book_next.png
new file mode 100755
index 0000000000..ff2ea1ab92
Binary files /dev/null and b/html/images/16/book_next.png differ
diff --git a/html/images/16/book_open.png b/html/images/16/book_open.png
new file mode 100755
index 0000000000..7d863f9497
Binary files /dev/null and b/html/images/16/book_open.png differ
diff --git a/html/images/16/book_previous.png b/html/images/16/book_previous.png
new file mode 100755
index 0000000000..2e53c6980f
Binary files /dev/null and b/html/images/16/book_previous.png differ
diff --git a/html/images/16/box.png b/html/images/16/box.png
new file mode 100755
index 0000000000..8443c23eb9
Binary files /dev/null and b/html/images/16/box.png differ
diff --git a/html/images/16/brick.png b/html/images/16/brick.png
new file mode 100755
index 0000000000..7851cf34c9
Binary files /dev/null and b/html/images/16/brick.png differ
diff --git a/html/images/16/brick_add.png b/html/images/16/brick_add.png
new file mode 100755
index 0000000000..fac186bfb7
Binary files /dev/null and b/html/images/16/brick_add.png differ
diff --git a/html/images/16/brick_delete.png b/html/images/16/brick_delete.png
new file mode 100755
index 0000000000..3a8c373482
Binary files /dev/null and b/html/images/16/brick_delete.png differ
diff --git a/html/images/16/brick_edit.png b/html/images/16/brick_edit.png
new file mode 100755
index 0000000000..eb06df3bb3
Binary files /dev/null and b/html/images/16/brick_edit.png differ
diff --git a/html/images/16/brick_error.png b/html/images/16/brick_error.png
new file mode 100755
index 0000000000..18ab01eb2b
Binary files /dev/null and b/html/images/16/brick_error.png differ
diff --git a/html/images/16/brick_go.png b/html/images/16/brick_go.png
new file mode 100755
index 0000000000..fe0d33567d
Binary files /dev/null and b/html/images/16/brick_go.png differ
diff --git a/html/images/16/brick_link.png b/html/images/16/brick_link.png
new file mode 100755
index 0000000000..9ebf013a23
Binary files /dev/null and b/html/images/16/brick_link.png differ
diff --git a/html/images/16/bricks.png b/html/images/16/bricks.png
new file mode 100755
index 0000000000..0905f933b8
Binary files /dev/null and b/html/images/16/bricks.png differ
diff --git a/html/images/16/briefcase.png b/html/images/16/briefcase.png
new file mode 100755
index 0000000000..05c5649129
Binary files /dev/null and b/html/images/16/briefcase.png differ
diff --git a/html/images/16/bug.png b/html/images/16/bug.png
new file mode 100755
index 0000000000..2d5fb90ec6
Binary files /dev/null and b/html/images/16/bug.png differ
diff --git a/html/images/16/bug_add.png b/html/images/16/bug_add.png
new file mode 100755
index 0000000000..ced7817474
Binary files /dev/null and b/html/images/16/bug_add.png differ
diff --git a/html/images/16/bug_delete.png b/html/images/16/bug_delete.png
new file mode 100755
index 0000000000..e81d7571a9
Binary files /dev/null and b/html/images/16/bug_delete.png differ
diff --git a/html/images/16/bug_edit.png b/html/images/16/bug_edit.png
new file mode 100755
index 0000000000..e5c7dc0572
Binary files /dev/null and b/html/images/16/bug_edit.png differ
diff --git a/html/images/16/bug_error.png b/html/images/16/bug_error.png
new file mode 100755
index 0000000000..c4e8c28096
Binary files /dev/null and b/html/images/16/bug_error.png differ
diff --git a/html/images/16/bug_go.png b/html/images/16/bug_go.png
new file mode 100755
index 0000000000..4e4ae99db3
Binary files /dev/null and b/html/images/16/bug_go.png differ
diff --git a/html/images/16/bug_link.png b/html/images/16/bug_link.png
new file mode 100755
index 0000000000..30e25abac0
Binary files /dev/null and b/html/images/16/bug_link.png differ
diff --git a/html/images/16/building.png b/html/images/16/building.png
new file mode 100755
index 0000000000..11a017cfaa
Binary files /dev/null and b/html/images/16/building.png differ
diff --git a/html/images/16/building_add.png b/html/images/16/building_add.png
new file mode 100755
index 0000000000..d88e2b9ab7
Binary files /dev/null and b/html/images/16/building_add.png differ
diff --git a/html/images/16/building_delete.png b/html/images/16/building_delete.png
new file mode 100755
index 0000000000..db6455d2d5
Binary files /dev/null and b/html/images/16/building_delete.png differ
diff --git a/html/images/16/building_edit.png b/html/images/16/building_edit.png
new file mode 100755
index 0000000000..646db36bf7
Binary files /dev/null and b/html/images/16/building_edit.png differ
diff --git a/html/images/16/building_error.png b/html/images/16/building_error.png
new file mode 100755
index 0000000000..a342eefc68
Binary files /dev/null and b/html/images/16/building_error.png differ
diff --git a/html/images/16/building_go.png b/html/images/16/building_go.png
new file mode 100755
index 0000000000..cdcbcb381c
Binary files /dev/null and b/html/images/16/building_go.png differ
diff --git a/html/images/16/building_key.png b/html/images/16/building_key.png
new file mode 100755
index 0000000000..8b79e30ed9
Binary files /dev/null and b/html/images/16/building_key.png differ
diff --git a/html/images/16/building_link.png b/html/images/16/building_link.png
new file mode 100755
index 0000000000..a340629ac9
Binary files /dev/null and b/html/images/16/building_link.png differ
diff --git a/html/images/16/bullet_add.png b/html/images/16/bullet_add.png
new file mode 100755
index 0000000000..41ff8335b0
Binary files /dev/null and b/html/images/16/bullet_add.png differ
diff --git a/html/images/16/bullet_arrow_bottom.png b/html/images/16/bullet_arrow_bottom.png
new file mode 100755
index 0000000000..1a28d82500
Binary files /dev/null and b/html/images/16/bullet_arrow_bottom.png differ
diff --git a/html/images/16/bullet_arrow_down.png b/html/images/16/bullet_arrow_down.png
new file mode 100755
index 0000000000..9b23c06d7b
Binary files /dev/null and b/html/images/16/bullet_arrow_down.png differ
diff --git a/html/images/16/bullet_arrow_top.png b/html/images/16/bullet_arrow_top.png
new file mode 100755
index 0000000000..0ce86d2b2b
Binary files /dev/null and b/html/images/16/bullet_arrow_top.png differ
diff --git a/html/images/16/bullet_arrow_up.png b/html/images/16/bullet_arrow_up.png
new file mode 100755
index 0000000000..24df0f4212
Binary files /dev/null and b/html/images/16/bullet_arrow_up.png differ
diff --git a/html/images/16/bullet_black.png b/html/images/16/bullet_black.png
new file mode 100755
index 0000000000..57619706d1
Binary files /dev/null and b/html/images/16/bullet_black.png differ
diff --git a/html/images/16/bullet_blue.png b/html/images/16/bullet_blue.png
new file mode 100755
index 0000000000..a7651ec8a0
Binary files /dev/null and b/html/images/16/bullet_blue.png differ
diff --git a/html/images/16/bullet_delete.png b/html/images/16/bullet_delete.png
new file mode 100755
index 0000000000..bd6271b246
Binary files /dev/null and b/html/images/16/bullet_delete.png differ
diff --git a/html/images/16/bullet_disk.png b/html/images/16/bullet_disk.png
new file mode 100755
index 0000000000..209c6a7862
Binary files /dev/null and b/html/images/16/bullet_disk.png differ
diff --git a/html/images/16/bullet_error.png b/html/images/16/bullet_error.png
new file mode 100755
index 0000000000..bca2b491fd
Binary files /dev/null and b/html/images/16/bullet_error.png differ
diff --git a/html/images/16/bullet_feed.png b/html/images/16/bullet_feed.png
new file mode 100755
index 0000000000..1a0e0f18f8
Binary files /dev/null and b/html/images/16/bullet_feed.png differ
diff --git a/html/images/16/bullet_go.png b/html/images/16/bullet_go.png
new file mode 100755
index 0000000000..bc4faa709e
Binary files /dev/null and b/html/images/16/bullet_go.png differ
diff --git a/html/images/16/bullet_green.png b/html/images/16/bullet_green.png
new file mode 100755
index 0000000000..058ad261f5
Binary files /dev/null and b/html/images/16/bullet_green.png differ
diff --git a/html/images/16/bullet_key.png b/html/images/16/bullet_key.png
new file mode 100755
index 0000000000..3d37f2ea49
Binary files /dev/null and b/html/images/16/bullet_key.png differ
diff --git a/html/images/16/bullet_orange.png b/html/images/16/bullet_orange.png
new file mode 100755
index 0000000000..fa63024e55
Binary files /dev/null and b/html/images/16/bullet_orange.png differ
diff --git a/html/images/16/bullet_picture.png b/html/images/16/bullet_picture.png
new file mode 100755
index 0000000000..386cb302f1
Binary files /dev/null and b/html/images/16/bullet_picture.png differ
diff --git a/html/images/16/bullet_pink.png b/html/images/16/bullet_pink.png
new file mode 100755
index 0000000000..0c9f73e3f5
Binary files /dev/null and b/html/images/16/bullet_pink.png differ
diff --git a/html/images/16/bullet_purple.png b/html/images/16/bullet_purple.png
new file mode 100755
index 0000000000..52ba5036b9
Binary files /dev/null and b/html/images/16/bullet_purple.png differ
diff --git a/html/images/16/bullet_red.png b/html/images/16/bullet_red.png
new file mode 100755
index 0000000000..0cd8031158
Binary files /dev/null and b/html/images/16/bullet_red.png differ
diff --git a/html/images/16/bullet_star.png b/html/images/16/bullet_star.png
new file mode 100755
index 0000000000..fab774a328
Binary files /dev/null and b/html/images/16/bullet_star.png differ
diff --git a/html/images/16/bullet_toggle_minus.png b/html/images/16/bullet_toggle_minus.png
new file mode 100755
index 0000000000..b47ce55f68
Binary files /dev/null and b/html/images/16/bullet_toggle_minus.png differ
diff --git a/html/images/16/bullet_toggle_plus.png b/html/images/16/bullet_toggle_plus.png
new file mode 100755
index 0000000000..9ab4a89664
Binary files /dev/null and b/html/images/16/bullet_toggle_plus.png differ
diff --git a/html/images/16/bullet_white.png b/html/images/16/bullet_white.png
new file mode 100755
index 0000000000..a9af8d44bf
Binary files /dev/null and b/html/images/16/bullet_white.png differ
diff --git a/html/images/16/bullet_wrench.png b/html/images/16/bullet_wrench.png
new file mode 100755
index 0000000000..67817e6e5a
Binary files /dev/null and b/html/images/16/bullet_wrench.png differ
diff --git a/html/images/16/bullet_yellow.png b/html/images/16/bullet_yellow.png
new file mode 100755
index 0000000000..6469cea7e9
Binary files /dev/null and b/html/images/16/bullet_yellow.png differ
diff --git a/html/images/16/cake.png b/html/images/16/cake.png
new file mode 100755
index 0000000000..4ef151aeef
Binary files /dev/null and b/html/images/16/cake.png differ
diff --git a/html/images/16/calculator.png b/html/images/16/calculator.png
new file mode 100755
index 0000000000..701a60a5a4
Binary files /dev/null and b/html/images/16/calculator.png differ
diff --git a/html/images/16/calculator_add.png b/html/images/16/calculator_add.png
new file mode 100755
index 0000000000..fd377bde39
Binary files /dev/null and b/html/images/16/calculator_add.png differ
diff --git a/html/images/16/calculator_delete.png b/html/images/16/calculator_delete.png
new file mode 100755
index 0000000000..ac96170ecd
Binary files /dev/null and b/html/images/16/calculator_delete.png differ
diff --git a/html/images/16/calculator_edit.png b/html/images/16/calculator_edit.png
new file mode 100755
index 0000000000..63b06b9875
Binary files /dev/null and b/html/images/16/calculator_edit.png differ
diff --git a/html/images/16/calculator_error.png b/html/images/16/calculator_error.png
new file mode 100755
index 0000000000..0bc4288a47
Binary files /dev/null and b/html/images/16/calculator_error.png differ
diff --git a/html/images/16/calculator_link.png b/html/images/16/calculator_link.png
new file mode 100755
index 0000000000..a2a8fe69f1
Binary files /dev/null and b/html/images/16/calculator_link.png differ
diff --git a/html/images/16/calendar.png b/html/images/16/calendar.png
new file mode 100755
index 0000000000..658913852d
Binary files /dev/null and b/html/images/16/calendar.png differ
diff --git a/html/images/16/calendar_add.png b/html/images/16/calendar_add.png
new file mode 100755
index 0000000000..17679db6bd
Binary files /dev/null and b/html/images/16/calendar_add.png differ
diff --git a/html/images/16/calendar_delete.png b/html/images/16/calendar_delete.png
new file mode 100755
index 0000000000..69a3b10ad1
Binary files /dev/null and b/html/images/16/calendar_delete.png differ
diff --git a/html/images/16/calendar_edit.png b/html/images/16/calendar_edit.png
new file mode 100755
index 0000000000..d1d2d6e684
Binary files /dev/null and b/html/images/16/calendar_edit.png differ
diff --git a/html/images/16/calendar_link.png b/html/images/16/calendar_link.png
new file mode 100755
index 0000000000..6b106b9429
Binary files /dev/null and b/html/images/16/calendar_link.png differ
diff --git a/html/images/16/calendar_view_day.png b/html/images/16/calendar_view_day.png
new file mode 100755
index 0000000000..9740f76ee6
Binary files /dev/null and b/html/images/16/calendar_view_day.png differ
diff --git a/html/images/16/calendar_view_month.png b/html/images/16/calendar_view_month.png
new file mode 100755
index 0000000000..6cff76c1db
Binary files /dev/null and b/html/images/16/calendar_view_month.png differ
diff --git a/html/images/16/calendar_view_week.png b/html/images/16/calendar_view_week.png
new file mode 100755
index 0000000000..8fe695f51f
Binary files /dev/null and b/html/images/16/calendar_view_week.png differ
diff --git a/html/images/16/camera.png b/html/images/16/camera.png
new file mode 100755
index 0000000000..8536d1a795
Binary files /dev/null and b/html/images/16/camera.png differ
diff --git a/html/images/16/camera_add.png b/html/images/16/camera_add.png
new file mode 100755
index 0000000000..08b5da9891
Binary files /dev/null and b/html/images/16/camera_add.png differ
diff --git a/html/images/16/camera_delete.png b/html/images/16/camera_delete.png
new file mode 100755
index 0000000000..3846d74cd8
Binary files /dev/null and b/html/images/16/camera_delete.png differ
diff --git a/html/images/16/camera_edit.png b/html/images/16/camera_edit.png
new file mode 100755
index 0000000000..b5015b103a
Binary files /dev/null and b/html/images/16/camera_edit.png differ
diff --git a/html/images/16/camera_error.png b/html/images/16/camera_error.png
new file mode 100755
index 0000000000..3c1bc95c9c
Binary files /dev/null and b/html/images/16/camera_error.png differ
diff --git a/html/images/16/camera_go.png b/html/images/16/camera_go.png
new file mode 100755
index 0000000000..94ce2b255d
Binary files /dev/null and b/html/images/16/camera_go.png differ
diff --git a/html/images/16/camera_link.png b/html/images/16/camera_link.png
new file mode 100755
index 0000000000..d2ac9f9350
Binary files /dev/null and b/html/images/16/camera_link.png differ
diff --git a/html/images/16/camera_small.png b/html/images/16/camera_small.png
new file mode 100755
index 0000000000..454b0b0199
Binary files /dev/null and b/html/images/16/camera_small.png differ
diff --git a/html/images/16/cancel.png b/html/images/16/cancel.png
new file mode 100755
index 0000000000..c149c2bc01
Binary files /dev/null and b/html/images/16/cancel.png differ
diff --git a/html/images/16/car.png b/html/images/16/car.png
new file mode 100755
index 0000000000..4f3a770f04
Binary files /dev/null and b/html/images/16/car.png differ
diff --git a/html/images/16/car_add.png b/html/images/16/car_add.png
new file mode 100755
index 0000000000..1215a51a4c
Binary files /dev/null and b/html/images/16/car_add.png differ
diff --git a/html/images/16/car_delete.png b/html/images/16/car_delete.png
new file mode 100755
index 0000000000..2803b56784
Binary files /dev/null and b/html/images/16/car_delete.png differ
diff --git a/html/images/16/cart.png b/html/images/16/cart.png
new file mode 100755
index 0000000000..1baf7b9fde
Binary files /dev/null and b/html/images/16/cart.png differ
diff --git a/html/images/16/cart_add.png b/html/images/16/cart_add.png
new file mode 100755
index 0000000000..45c2900089
Binary files /dev/null and b/html/images/16/cart_add.png differ
diff --git a/html/images/16/cart_delete.png b/html/images/16/cart_delete.png
new file mode 100755
index 0000000000..ac5bce5c88
Binary files /dev/null and b/html/images/16/cart_delete.png differ
diff --git a/html/images/16/cart_edit.png b/html/images/16/cart_edit.png
new file mode 100755
index 0000000000..b94ff88e6a
Binary files /dev/null and b/html/images/16/cart_edit.png differ
diff --git a/html/images/16/cart_error.png b/html/images/16/cart_error.png
new file mode 100755
index 0000000000..144c8353aa
Binary files /dev/null and b/html/images/16/cart_error.png differ
diff --git a/html/images/16/cart_go.png b/html/images/16/cart_go.png
new file mode 100755
index 0000000000..20ee0584f6
Binary files /dev/null and b/html/images/16/cart_go.png differ
diff --git a/html/images/16/cart_put.png b/html/images/16/cart_put.png
new file mode 100755
index 0000000000..3aec353e03
Binary files /dev/null and b/html/images/16/cart_put.png differ
diff --git a/html/images/16/cart_remove.png b/html/images/16/cart_remove.png
new file mode 100755
index 0000000000..360217b526
Binary files /dev/null and b/html/images/16/cart_remove.png differ
diff --git a/html/images/16/cd.png b/html/images/16/cd.png
new file mode 100755
index 0000000000..ef4322357c
Binary files /dev/null and b/html/images/16/cd.png differ
diff --git a/html/images/16/cd_add.png b/html/images/16/cd_add.png
new file mode 100755
index 0000000000..b0254effa6
Binary files /dev/null and b/html/images/16/cd_add.png differ
diff --git a/html/images/16/cd_burn.png b/html/images/16/cd_burn.png
new file mode 100755
index 0000000000..157cb0ba99
Binary files /dev/null and b/html/images/16/cd_burn.png differ
diff --git a/html/images/16/cd_delete.png b/html/images/16/cd_delete.png
new file mode 100755
index 0000000000..7d7b3d525b
Binary files /dev/null and b/html/images/16/cd_delete.png differ
diff --git a/html/images/16/cd_edit.png b/html/images/16/cd_edit.png
new file mode 100755
index 0000000000..b0dc194b05
Binary files /dev/null and b/html/images/16/cd_edit.png differ
diff --git a/html/images/16/cd_eject.png b/html/images/16/cd_eject.png
new file mode 100755
index 0000000000..762932f6b1
Binary files /dev/null and b/html/images/16/cd_eject.png differ
diff --git a/html/images/16/cd_go.png b/html/images/16/cd_go.png
new file mode 100755
index 0000000000..13e04991c5
Binary files /dev/null and b/html/images/16/cd_go.png differ
diff --git a/html/images/16/chart_bar.png b/html/images/16/chart_bar.png
new file mode 100755
index 0000000000..9051fbc609
Binary files /dev/null and b/html/images/16/chart_bar.png differ
diff --git a/html/images/16/chart_bar_add.png b/html/images/16/chart_bar_add.png
new file mode 100755
index 0000000000..d283e846a2
Binary files /dev/null and b/html/images/16/chart_bar_add.png differ
diff --git a/html/images/16/chart_bar_delete.png b/html/images/16/chart_bar_delete.png
new file mode 100755
index 0000000000..259f686873
Binary files /dev/null and b/html/images/16/chart_bar_delete.png differ
diff --git a/html/images/16/chart_bar_edit.png b/html/images/16/chart_bar_edit.png
new file mode 100755
index 0000000000..df64d97e61
Binary files /dev/null and b/html/images/16/chart_bar_edit.png differ
diff --git a/html/images/16/chart_bar_error.png b/html/images/16/chart_bar_error.png
new file mode 100755
index 0000000000..bdacea5e5e
Binary files /dev/null and b/html/images/16/chart_bar_error.png differ
diff --git a/html/images/16/chart_bar_link.png b/html/images/16/chart_bar_link.png
new file mode 100755
index 0000000000..bf18aed48b
Binary files /dev/null and b/html/images/16/chart_bar_link.png differ
diff --git a/html/images/16/chart_curve.png b/html/images/16/chart_curve.png
new file mode 100755
index 0000000000..01e933a619
Binary files /dev/null and b/html/images/16/chart_curve.png differ
diff --git a/html/images/16/chart_curve_add.png b/html/images/16/chart_curve_add.png
new file mode 100755
index 0000000000..f9e2050460
Binary files /dev/null and b/html/images/16/chart_curve_add.png differ
diff --git a/html/images/16/chart_curve_delete.png b/html/images/16/chart_curve_delete.png
new file mode 100755
index 0000000000..b411391c40
Binary files /dev/null and b/html/images/16/chart_curve_delete.png differ
diff --git a/html/images/16/chart_curve_edit.png b/html/images/16/chart_curve_edit.png
new file mode 100755
index 0000000000..bd07673b55
Binary files /dev/null and b/html/images/16/chart_curve_edit.png differ
diff --git a/html/images/16/chart_curve_error.png b/html/images/16/chart_curve_error.png
new file mode 100755
index 0000000000..906dd03836
Binary files /dev/null and b/html/images/16/chart_curve_error.png differ
diff --git a/html/images/16/chart_curve_go.png b/html/images/16/chart_curve_go.png
new file mode 100755
index 0000000000..ac9eda51a4
Binary files /dev/null and b/html/images/16/chart_curve_go.png differ
diff --git a/html/images/16/chart_curve_link.png b/html/images/16/chart_curve_link.png
new file mode 100755
index 0000000000..144eafe086
Binary files /dev/null and b/html/images/16/chart_curve_link.png differ
diff --git a/html/images/16/chart_line.png b/html/images/16/chart_line.png
new file mode 100755
index 0000000000..85020f3205
Binary files /dev/null and b/html/images/16/chart_line.png differ
diff --git a/html/images/16/chart_line_add.png b/html/images/16/chart_line_add.png
new file mode 100755
index 0000000000..5571a5ebc9
Binary files /dev/null and b/html/images/16/chart_line_add.png differ
diff --git a/html/images/16/chart_line_delete.png b/html/images/16/chart_line_delete.png
new file mode 100755
index 0000000000..5b0aa90129
Binary files /dev/null and b/html/images/16/chart_line_delete.png differ
diff --git a/html/images/16/chart_line_edit.png b/html/images/16/chart_line_edit.png
new file mode 100755
index 0000000000..9cf660733d
Binary files /dev/null and b/html/images/16/chart_line_edit.png differ
diff --git a/html/images/16/chart_line_error.png b/html/images/16/chart_line_error.png
new file mode 100755
index 0000000000..ff23c03a8a
Binary files /dev/null and b/html/images/16/chart_line_error.png differ
diff --git a/html/images/16/chart_line_link.png b/html/images/16/chart_line_link.png
new file mode 100755
index 0000000000..f3727d22e7
Binary files /dev/null and b/html/images/16/chart_line_link.png differ
diff --git a/html/images/16/chart_organisation.png b/html/images/16/chart_organisation.png
new file mode 100755
index 0000000000..c32d25c16f
Binary files /dev/null and b/html/images/16/chart_organisation.png differ
diff --git a/html/images/16/chart_organisation_add.png b/html/images/16/chart_organisation_add.png
new file mode 100755
index 0000000000..f0dba4ac43
Binary files /dev/null and b/html/images/16/chart_organisation_add.png differ
diff --git a/html/images/16/chart_organisation_delete.png b/html/images/16/chart_organisation_delete.png
new file mode 100755
index 0000000000..7dc8dcac25
Binary files /dev/null and b/html/images/16/chart_organisation_delete.png differ
diff --git a/html/images/16/chart_pie.png b/html/images/16/chart_pie.png
new file mode 100755
index 0000000000..fe00fa050a
Binary files /dev/null and b/html/images/16/chart_pie.png differ
diff --git a/html/images/16/chart_pie_add.png b/html/images/16/chart_pie_add.png
new file mode 100755
index 0000000000..bf0822ee1c
Binary files /dev/null and b/html/images/16/chart_pie_add.png differ
diff --git a/html/images/16/chart_pie_delete.png b/html/images/16/chart_pie_delete.png
new file mode 100755
index 0000000000..5ab9efd554
Binary files /dev/null and b/html/images/16/chart_pie_delete.png differ
diff --git a/html/images/16/chart_pie_edit.png b/html/images/16/chart_pie_edit.png
new file mode 100755
index 0000000000..3debc12d5e
Binary files /dev/null and b/html/images/16/chart_pie_edit.png differ
diff --git a/html/images/16/chart_pie_error.png b/html/images/16/chart_pie_error.png
new file mode 100755
index 0000000000..7344174fe9
Binary files /dev/null and b/html/images/16/chart_pie_error.png differ
diff --git a/html/images/16/chart_pie_link.png b/html/images/16/chart_pie_link.png
new file mode 100755
index 0000000000..c072f8e05a
Binary files /dev/null and b/html/images/16/chart_pie_link.png differ
diff --git a/html/images/16/clock.png b/html/images/16/clock.png
new file mode 100755
index 0000000000..e2672c2067
Binary files /dev/null and b/html/images/16/clock.png differ
diff --git a/html/images/16/clock_add.png b/html/images/16/clock_add.png
new file mode 100755
index 0000000000..598b839b81
Binary files /dev/null and b/html/images/16/clock_add.png differ
diff --git a/html/images/16/clock_delete.png b/html/images/16/clock_delete.png
new file mode 100755
index 0000000000..8bf9efe4ba
Binary files /dev/null and b/html/images/16/clock_delete.png differ
diff --git a/html/images/16/clock_edit.png b/html/images/16/clock_edit.png
new file mode 100755
index 0000000000..7d3571887a
Binary files /dev/null and b/html/images/16/clock_edit.png differ
diff --git a/html/images/16/clock_error.png b/html/images/16/clock_error.png
new file mode 100755
index 0000000000..a7c461ba9a
Binary files /dev/null and b/html/images/16/clock_error.png differ
diff --git a/html/images/16/clock_go.png b/html/images/16/clock_go.png
new file mode 100755
index 0000000000..a1a24d3f30
Binary files /dev/null and b/html/images/16/clock_go.png differ
diff --git a/html/images/16/clock_link.png b/html/images/16/clock_link.png
new file mode 100755
index 0000000000..481cf04c12
Binary files /dev/null and b/html/images/16/clock_link.png differ
diff --git a/html/images/16/clock_pause.png b/html/images/16/clock_pause.png
new file mode 100755
index 0000000000..ba74725857
Binary files /dev/null and b/html/images/16/clock_pause.png differ
diff --git a/html/images/16/clock_play.png b/html/images/16/clock_play.png
new file mode 100755
index 0000000000..fb4ebc850a
Binary files /dev/null and b/html/images/16/clock_play.png differ
diff --git a/html/images/16/clock_red.png b/html/images/16/clock_red.png
new file mode 100755
index 0000000000..2842cc3386
Binary files /dev/null and b/html/images/16/clock_red.png differ
diff --git a/html/images/16/clock_stop.png b/html/images/16/clock_stop.png
new file mode 100755
index 0000000000..6fe8a6f951
Binary files /dev/null and b/html/images/16/clock_stop.png differ
diff --git a/html/images/16/cog.png b/html/images/16/cog.png
new file mode 100755
index 0000000000..67de2c6ccb
Binary files /dev/null and b/html/images/16/cog.png differ
diff --git a/html/images/16/cog_add.png b/html/images/16/cog_add.png
new file mode 100755
index 0000000000..04f22badca
Binary files /dev/null and b/html/images/16/cog_add.png differ
diff --git a/html/images/16/cog_delete.png b/html/images/16/cog_delete.png
new file mode 100755
index 0000000000..8ce71c475c
Binary files /dev/null and b/html/images/16/cog_delete.png differ
diff --git a/html/images/16/cog_disable.png b/html/images/16/cog_disable.png
new file mode 100644
index 0000000000..30539d97e9
Binary files /dev/null and b/html/images/16/cog_disable.png differ
diff --git a/html/images/16/cog_edit.png b/html/images/16/cog_edit.png
new file mode 100755
index 0000000000..47b75a456a
Binary files /dev/null and b/html/images/16/cog_edit.png differ
diff --git a/html/images/16/cog_error.png b/html/images/16/cog_error.png
new file mode 100755
index 0000000000..47667430a9
Binary files /dev/null and b/html/images/16/cog_error.png differ
diff --git a/html/images/16/cog_go.png b/html/images/16/cog_go.png
new file mode 100755
index 0000000000..3262767cda
Binary files /dev/null and b/html/images/16/cog_go.png differ
diff --git a/html/images/16/coins.png b/html/images/16/coins.png
new file mode 100755
index 0000000000..0ca9074d66
Binary files /dev/null and b/html/images/16/coins.png differ
diff --git a/html/images/16/coins_add.png b/html/images/16/coins_add.png
new file mode 100755
index 0000000000..cdff5d3d4d
Binary files /dev/null and b/html/images/16/coins_add.png differ
diff --git a/html/images/16/coins_delete.png b/html/images/16/coins_delete.png
new file mode 100755
index 0000000000..18e0c0fd94
Binary files /dev/null and b/html/images/16/coins_delete.png differ
diff --git a/html/images/16/color_swatch.png b/html/images/16/color_swatch.png
new file mode 100755
index 0000000000..6e6e85212b
Binary files /dev/null and b/html/images/16/color_swatch.png differ
diff --git a/html/images/16/color_wheel.png b/html/images/16/color_wheel.png
new file mode 100755
index 0000000000..809fb00e5a
Binary files /dev/null and b/html/images/16/color_wheel.png differ
diff --git a/html/images/16/comment.png b/html/images/16/comment.png
new file mode 100755
index 0000000000..7bc9233ea6
Binary files /dev/null and b/html/images/16/comment.png differ
diff --git a/html/images/16/comment_add.png b/html/images/16/comment_add.png
new file mode 100755
index 0000000000..75e78dede2
Binary files /dev/null and b/html/images/16/comment_add.png differ
diff --git a/html/images/16/comment_delete.png b/html/images/16/comment_delete.png
new file mode 100755
index 0000000000..643fdbe8d9
Binary files /dev/null and b/html/images/16/comment_delete.png differ
diff --git a/html/images/16/comment_edit.png b/html/images/16/comment_edit.png
new file mode 100755
index 0000000000..73db110df5
Binary files /dev/null and b/html/images/16/comment_edit.png differ
diff --git a/html/images/16/comments.png b/html/images/16/comments.png
new file mode 100755
index 0000000000..39433cf78a
Binary files /dev/null and b/html/images/16/comments.png differ
diff --git a/html/images/16/comments_add.png b/html/images/16/comments_add.png
new file mode 100755
index 0000000000..b32563442d
Binary files /dev/null and b/html/images/16/comments_add.png differ
diff --git a/html/images/16/comments_delete.png b/html/images/16/comments_delete.png
new file mode 100755
index 0000000000..6df7376d05
Binary files /dev/null and b/html/images/16/comments_delete.png differ
diff --git a/html/images/16/compress.png b/html/images/16/compress.png
new file mode 100755
index 0000000000..8606ff0fd2
Binary files /dev/null and b/html/images/16/compress.png differ
diff --git a/html/images/16/computer.png b/html/images/16/computer.png
new file mode 100755
index 0000000000..9bc37dce36
Binary files /dev/null and b/html/images/16/computer.png differ
diff --git a/html/images/16/computer_add.png b/html/images/16/computer_add.png
new file mode 100755
index 0000000000..db604ee3bc
Binary files /dev/null and b/html/images/16/computer_add.png differ
diff --git a/html/images/16/computer_delete.png b/html/images/16/computer_delete.png
new file mode 100755
index 0000000000..5e9b26836c
Binary files /dev/null and b/html/images/16/computer_delete.png differ
diff --git a/html/images/16/computer_edit.png b/html/images/16/computer_edit.png
new file mode 100755
index 0000000000..34c72fe521
Binary files /dev/null and b/html/images/16/computer_edit.png differ
diff --git a/html/images/16/computer_error.png b/html/images/16/computer_error.png
new file mode 100755
index 0000000000..b2c3ed5780
Binary files /dev/null and b/html/images/16/computer_error.png differ
diff --git a/html/images/16/computer_go.png b/html/images/16/computer_go.png
new file mode 100755
index 0000000000..0b26144d83
Binary files /dev/null and b/html/images/16/computer_go.png differ
diff --git a/html/images/16/computer_key.png b/html/images/16/computer_key.png
new file mode 100755
index 0000000000..eca543017d
Binary files /dev/null and b/html/images/16/computer_key.png differ
diff --git a/html/images/16/computer_link.png b/html/images/16/computer_link.png
new file mode 100755
index 0000000000..3859db2147
Binary files /dev/null and b/html/images/16/computer_link.png differ
diff --git a/html/images/16/connect.png b/html/images/16/connect.png
new file mode 100755
index 0000000000..024138eb33
Binary files /dev/null and b/html/images/16/connect.png differ
diff --git a/html/images/16/contrast.png b/html/images/16/contrast.png
new file mode 100755
index 0000000000..adcc0046f8
Binary files /dev/null and b/html/images/16/contrast.png differ
diff --git a/html/images/16/contrast_decrease.png b/html/images/16/contrast_decrease.png
new file mode 100755
index 0000000000..0155bf5c0b
Binary files /dev/null and b/html/images/16/contrast_decrease.png differ
diff --git a/html/images/16/contrast_high.png b/html/images/16/contrast_high.png
new file mode 100755
index 0000000000..d87c8cbb79
Binary files /dev/null and b/html/images/16/contrast_high.png differ
diff --git a/html/images/16/contrast_increase.png b/html/images/16/contrast_increase.png
new file mode 100755
index 0000000000..a3e7f5200a
Binary files /dev/null and b/html/images/16/contrast_increase.png differ
diff --git a/html/images/16/contrast_low.png b/html/images/16/contrast_low.png
new file mode 100755
index 0000000000..dc9f4b100e
Binary files /dev/null and b/html/images/16/contrast_low.png differ
diff --git a/html/images/16/control_eject.png b/html/images/16/control_eject.png
new file mode 100755
index 0000000000..924d817bb6
Binary files /dev/null and b/html/images/16/control_eject.png differ
diff --git a/html/images/16/control_eject_blue.png b/html/images/16/control_eject_blue.png
new file mode 100755
index 0000000000..2bd4963834
Binary files /dev/null and b/html/images/16/control_eject_blue.png differ
diff --git a/html/images/16/control_end.png b/html/images/16/control_end.png
new file mode 100755
index 0000000000..036e04dcd9
Binary files /dev/null and b/html/images/16/control_end.png differ
diff --git a/html/images/16/control_end_blue.png b/html/images/16/control_end_blue.png
new file mode 100755
index 0000000000..7207935761
Binary files /dev/null and b/html/images/16/control_end_blue.png differ
diff --git a/html/images/16/control_equalizer.png b/html/images/16/control_equalizer.png
new file mode 100755
index 0000000000..46060872cc
Binary files /dev/null and b/html/images/16/control_equalizer.png differ
diff --git a/html/images/16/control_equalizer_blue.png b/html/images/16/control_equalizer_blue.png
new file mode 100755
index 0000000000..1b2e6a3746
Binary files /dev/null and b/html/images/16/control_equalizer_blue.png differ
diff --git a/html/images/16/control_fastforward.png b/html/images/16/control_fastforward.png
new file mode 100755
index 0000000000..31f7fd3adf
Binary files /dev/null and b/html/images/16/control_fastforward.png differ
diff --git a/html/images/16/control_fastforward_blue.png b/html/images/16/control_fastforward_blue.png
new file mode 100755
index 0000000000..4a2f9d4e4a
Binary files /dev/null and b/html/images/16/control_fastforward_blue.png differ
diff --git a/html/images/16/control_pause.png b/html/images/16/control_pause.png
new file mode 100755
index 0000000000..2d9ce9c4ec
Binary files /dev/null and b/html/images/16/control_pause.png differ
diff --git a/html/images/16/control_pause_blue.png b/html/images/16/control_pause_blue.png
new file mode 100755
index 0000000000..ec61099b0b
Binary files /dev/null and b/html/images/16/control_pause_blue.png differ
diff --git a/html/images/16/control_play.png b/html/images/16/control_play.png
new file mode 100755
index 0000000000..0846555d0c
Binary files /dev/null and b/html/images/16/control_play.png differ
diff --git a/html/images/16/control_play_blue.png b/html/images/16/control_play_blue.png
new file mode 100755
index 0000000000..f8c8ec683e
Binary files /dev/null and b/html/images/16/control_play_blue.png differ
diff --git a/html/images/16/control_repeat.png b/html/images/16/control_repeat.png
new file mode 100755
index 0000000000..1c4f57a161
Binary files /dev/null and b/html/images/16/control_repeat.png differ
diff --git a/html/images/16/control_repeat_blue.png b/html/images/16/control_repeat_blue.png
new file mode 100755
index 0000000000..406ec333bc
Binary files /dev/null and b/html/images/16/control_repeat_blue.png differ
diff --git a/html/images/16/control_rewind.png b/html/images/16/control_rewind.png
new file mode 100755
index 0000000000..c029447717
Binary files /dev/null and b/html/images/16/control_rewind.png differ
diff --git a/html/images/16/control_rewind_blue.png b/html/images/16/control_rewind_blue.png
new file mode 100755
index 0000000000..15d1584bdb
Binary files /dev/null and b/html/images/16/control_rewind_blue.png differ
diff --git a/html/images/16/control_start.png b/html/images/16/control_start.png
new file mode 100755
index 0000000000..7dd1c07fba
Binary files /dev/null and b/html/images/16/control_start.png differ
diff --git a/html/images/16/control_start_blue.png b/html/images/16/control_start_blue.png
new file mode 100755
index 0000000000..6f11fcb086
Binary files /dev/null and b/html/images/16/control_start_blue.png differ
diff --git a/html/images/16/control_stop.png b/html/images/16/control_stop.png
new file mode 100755
index 0000000000..893bb60e53
Binary files /dev/null and b/html/images/16/control_stop.png differ
diff --git a/html/images/16/control_stop_blue.png b/html/images/16/control_stop_blue.png
new file mode 100755
index 0000000000..e6f75d232d
Binary files /dev/null and b/html/images/16/control_stop_blue.png differ
diff --git a/html/images/16/controller.png b/html/images/16/controller.png
new file mode 100755
index 0000000000..5cf76ed029
Binary files /dev/null and b/html/images/16/controller.png differ
diff --git a/html/images/16/controller_add.png b/html/images/16/controller_add.png
new file mode 100755
index 0000000000..efecb3871b
Binary files /dev/null and b/html/images/16/controller_add.png differ
diff --git a/html/images/16/controller_delete.png b/html/images/16/controller_delete.png
new file mode 100755
index 0000000000..3d83bc7b9a
Binary files /dev/null and b/html/images/16/controller_delete.png differ
diff --git a/html/images/16/controller_error.png b/html/images/16/controller_error.png
new file mode 100755
index 0000000000..7f17c0cb7a
Binary files /dev/null and b/html/images/16/controller_error.png differ
diff --git a/html/images/16/creditcards.png b/html/images/16/creditcards.png
new file mode 100755
index 0000000000..4eae583e15
Binary files /dev/null and b/html/images/16/creditcards.png differ
diff --git a/html/images/16/cross.png b/html/images/16/cross.png
new file mode 100755
index 0000000000..1514d51a3c
Binary files /dev/null and b/html/images/16/cross.png differ
diff --git a/html/images/16/css.png b/html/images/16/css.png
new file mode 100755
index 0000000000..23f3101811
Binary files /dev/null and b/html/images/16/css.png differ
diff --git a/html/images/16/css_add.png b/html/images/16/css_add.png
new file mode 100755
index 0000000000..e8ea10fcd6
Binary files /dev/null and b/html/images/16/css_add.png differ
diff --git a/html/images/16/css_delete.png b/html/images/16/css_delete.png
new file mode 100755
index 0000000000..326aba4407
Binary files /dev/null and b/html/images/16/css_delete.png differ
diff --git a/html/images/16/css_go.png b/html/images/16/css_go.png
new file mode 100755
index 0000000000..6cdf38c366
Binary files /dev/null and b/html/images/16/css_go.png differ
diff --git a/html/images/16/css_valid.png b/html/images/16/css_valid.png
new file mode 100755
index 0000000000..4c72ca5a40
Binary files /dev/null and b/html/images/16/css_valid.png differ
diff --git a/html/images/16/cup.png b/html/images/16/cup.png
new file mode 100755
index 0000000000..b7bfcd15fb
Binary files /dev/null and b/html/images/16/cup.png differ
diff --git a/html/images/16/cup_add.png b/html/images/16/cup_add.png
new file mode 100755
index 0000000000..4ecaece296
Binary files /dev/null and b/html/images/16/cup_add.png differ
diff --git a/html/images/16/cup_delete.png b/html/images/16/cup_delete.png
new file mode 100755
index 0000000000..59a6d9c614
Binary files /dev/null and b/html/images/16/cup_delete.png differ
diff --git a/html/images/16/cup_edit.png b/html/images/16/cup_edit.png
new file mode 100755
index 0000000000..0b8f1e1ef5
Binary files /dev/null and b/html/images/16/cup_edit.png differ
diff --git a/html/images/16/cup_error.png b/html/images/16/cup_error.png
new file mode 100755
index 0000000000..68798748d2
Binary files /dev/null and b/html/images/16/cup_error.png differ
diff --git a/html/images/16/cup_go.png b/html/images/16/cup_go.png
new file mode 100755
index 0000000000..9527efbe40
Binary files /dev/null and b/html/images/16/cup_go.png differ
diff --git a/html/images/16/cup_key.png b/html/images/16/cup_key.png
new file mode 100755
index 0000000000..7ae160ce25
Binary files /dev/null and b/html/images/16/cup_key.png differ
diff --git a/html/images/16/cup_link.png b/html/images/16/cup_link.png
new file mode 100755
index 0000000000..41d1ace1af
Binary files /dev/null and b/html/images/16/cup_link.png differ
diff --git a/html/images/16/cursor.png b/html/images/16/cursor.png
new file mode 100755
index 0000000000..532f532d87
Binary files /dev/null and b/html/images/16/cursor.png differ
diff --git a/html/images/16/cut.png b/html/images/16/cut.png
new file mode 100755
index 0000000000..f215d6f6b7
Binary files /dev/null and b/html/images/16/cut.png differ
diff --git a/html/images/16/cut_red.png b/html/images/16/cut_red.png
new file mode 100755
index 0000000000..85bb2f0fd7
Binary files /dev/null and b/html/images/16/cut_red.png differ
diff --git a/html/images/16/database.png b/html/images/16/database.png
new file mode 100755
index 0000000000..3d09261a26
Binary files /dev/null and b/html/images/16/database.png differ
diff --git a/html/images/16/database_add.png b/html/images/16/database_add.png
new file mode 100755
index 0000000000..802bd6cde0
Binary files /dev/null and b/html/images/16/database_add.png differ
diff --git a/html/images/16/database_connect.png b/html/images/16/database_connect.png
new file mode 100755
index 0000000000..3a111977cd
Binary files /dev/null and b/html/images/16/database_connect.png differ
diff --git a/html/images/16/database_delete.png b/html/images/16/database_delete.png
new file mode 100755
index 0000000000..cce652e845
Binary files /dev/null and b/html/images/16/database_delete.png differ
diff --git a/html/images/16/database_edit.png b/html/images/16/database_edit.png
new file mode 100755
index 0000000000..e501b668c7
Binary files /dev/null and b/html/images/16/database_edit.png differ
diff --git a/html/images/16/database_error.png b/html/images/16/database_error.png
new file mode 100755
index 0000000000..578221aaab
Binary files /dev/null and b/html/images/16/database_error.png differ
diff --git a/html/images/16/database_gear.png b/html/images/16/database_gear.png
new file mode 100755
index 0000000000..7c0ab2b4c6
Binary files /dev/null and b/html/images/16/database_gear.png differ
diff --git a/html/images/16/database_go.png b/html/images/16/database_go.png
new file mode 100755
index 0000000000..61a8556c40
Binary files /dev/null and b/html/images/16/database_go.png differ
diff --git a/html/images/16/database_key.png b/html/images/16/database_key.png
new file mode 100755
index 0000000000..3334147679
Binary files /dev/null and b/html/images/16/database_key.png differ
diff --git a/html/images/16/database_lightning.png b/html/images/16/database_lightning.png
new file mode 100755
index 0000000000..d9eefc2251
Binary files /dev/null and b/html/images/16/database_lightning.png differ
diff --git a/html/images/16/database_link.png b/html/images/16/database_link.png
new file mode 100755
index 0000000000..4c8204af15
Binary files /dev/null and b/html/images/16/database_link.png differ
diff --git a/html/images/16/database_refresh.png b/html/images/16/database_refresh.png
new file mode 100755
index 0000000000..ff803be124
Binary files /dev/null and b/html/images/16/database_refresh.png differ
diff --git a/html/images/16/database_save.png b/html/images/16/database_save.png
new file mode 100755
index 0000000000..44c06dddf1
Binary files /dev/null and b/html/images/16/database_save.png differ
diff --git a/html/images/16/database_table.png b/html/images/16/database_table.png
new file mode 100755
index 0000000000..693709cbc1
Binary files /dev/null and b/html/images/16/database_table.png differ
diff --git a/html/images/16/date.png b/html/images/16/date.png
new file mode 100755
index 0000000000..783c83357f
Binary files /dev/null and b/html/images/16/date.png differ
diff --git a/html/images/16/date_add.png b/html/images/16/date_add.png
new file mode 100755
index 0000000000..6a7ae025f3
Binary files /dev/null and b/html/images/16/date_add.png differ
diff --git a/html/images/16/date_delete.png b/html/images/16/date_delete.png
new file mode 100755
index 0000000000..969a6b7239
Binary files /dev/null and b/html/images/16/date_delete.png differ
diff --git a/html/images/16/date_edit.png b/html/images/16/date_edit.png
new file mode 100755
index 0000000000..e681065038
Binary files /dev/null and b/html/images/16/date_edit.png differ
diff --git a/html/images/16/date_error.png b/html/images/16/date_error.png
new file mode 100755
index 0000000000..442cd97d09
Binary files /dev/null and b/html/images/16/date_error.png differ
diff --git a/html/images/16/date_go.png b/html/images/16/date_go.png
new file mode 100755
index 0000000000..52dd9f3ae3
Binary files /dev/null and b/html/images/16/date_go.png differ
diff --git a/html/images/16/date_link.png b/html/images/16/date_link.png
new file mode 100755
index 0000000000..9f0aada714
Binary files /dev/null and b/html/images/16/date_link.png differ
diff --git a/html/images/16/date_magnify.png b/html/images/16/date_magnify.png
new file mode 100755
index 0000000000..cd05f19064
Binary files /dev/null and b/html/images/16/date_magnify.png differ
diff --git a/html/images/16/date_next.png b/html/images/16/date_next.png
new file mode 100755
index 0000000000..48d740abf7
Binary files /dev/null and b/html/images/16/date_next.png differ
diff --git a/html/images/16/date_previous.png b/html/images/16/date_previous.png
new file mode 100755
index 0000000000..e117a8374f
Binary files /dev/null and b/html/images/16/date_previous.png differ
diff --git a/html/images/16/delete.png b/html/images/16/delete.png
new file mode 100755
index 0000000000..08f249365a
Binary files /dev/null and b/html/images/16/delete.png differ
diff --git a/html/images/16/disconnect.png b/html/images/16/disconnect.png
new file mode 100755
index 0000000000..b335cb11c4
Binary files /dev/null and b/html/images/16/disconnect.png differ
diff --git a/html/images/16/disk.png b/html/images/16/disk.png
new file mode 100755
index 0000000000..99d532e8b1
Binary files /dev/null and b/html/images/16/disk.png differ
diff --git a/html/images/16/disk_multiple.png b/html/images/16/disk_multiple.png
new file mode 100755
index 0000000000..fc5a52f5e4
Binary files /dev/null and b/html/images/16/disk_multiple.png differ
diff --git a/html/images/16/door.png b/html/images/16/door.png
new file mode 100755
index 0000000000..369fc46ed2
Binary files /dev/null and b/html/images/16/door.png differ
diff --git a/html/images/16/door_in.png b/html/images/16/door_in.png
new file mode 100755
index 0000000000..41676a0a5b
Binary files /dev/null and b/html/images/16/door_in.png differ
diff --git a/html/images/16/door_open.png b/html/images/16/door_open.png
new file mode 100755
index 0000000000..64bab57ddd
Binary files /dev/null and b/html/images/16/door_open.png differ
diff --git a/html/images/16/door_out.png b/html/images/16/door_out.png
new file mode 100755
index 0000000000..2541d2bcbc
Binary files /dev/null and b/html/images/16/door_out.png differ
diff --git a/html/images/16/drink.png b/html/images/16/drink.png
new file mode 100755
index 0000000000..d98359c2ab
Binary files /dev/null and b/html/images/16/drink.png differ
diff --git a/html/images/16/drink_empty.png b/html/images/16/drink_empty.png
new file mode 100755
index 0000000000..a40211ed41
Binary files /dev/null and b/html/images/16/drink_empty.png differ
diff --git a/html/images/16/drive.png b/html/images/16/drive.png
new file mode 100755
index 0000000000..37b7c9b27d
Binary files /dev/null and b/html/images/16/drive.png differ
diff --git a/html/images/16/drive_add.png b/html/images/16/drive_add.png
new file mode 100755
index 0000000000..29a35d5aa8
Binary files /dev/null and b/html/images/16/drive_add.png differ
diff --git a/html/images/16/drive_burn.png b/html/images/16/drive_burn.png
new file mode 100755
index 0000000000..80fd79f982
Binary files /dev/null and b/html/images/16/drive_burn.png differ
diff --git a/html/images/16/drive_cd.png b/html/images/16/drive_cd.png
new file mode 100755
index 0000000000..1850b701cf
Binary files /dev/null and b/html/images/16/drive_cd.png differ
diff --git a/html/images/16/drive_cd_empty.png b/html/images/16/drive_cd_empty.png
new file mode 100755
index 0000000000..8df38d9e67
Binary files /dev/null and b/html/images/16/drive_cd_empty.png differ
diff --git a/html/images/16/drive_delete.png b/html/images/16/drive_delete.png
new file mode 100755
index 0000000000..e6eb186651
Binary files /dev/null and b/html/images/16/drive_delete.png differ
diff --git a/html/images/16/drive_disk.png b/html/images/16/drive_disk.png
new file mode 100755
index 0000000000..5a51e81988
Binary files /dev/null and b/html/images/16/drive_disk.png differ
diff --git a/html/images/16/drive_edit.png b/html/images/16/drive_edit.png
new file mode 100755
index 0000000000..7923fada4b
Binary files /dev/null and b/html/images/16/drive_edit.png differ
diff --git a/html/images/16/drive_error.png b/html/images/16/drive_error.png
new file mode 100755
index 0000000000..309f63962c
Binary files /dev/null and b/html/images/16/drive_error.png differ
diff --git a/html/images/16/drive_go.png b/html/images/16/drive_go.png
new file mode 100755
index 0000000000..fc53379efc
Binary files /dev/null and b/html/images/16/drive_go.png differ
diff --git a/html/images/16/drive_key.png b/html/images/16/drive_key.png
new file mode 100755
index 0000000000..d0b3c673a6
Binary files /dev/null and b/html/images/16/drive_key.png differ
diff --git a/html/images/16/drive_link.png b/html/images/16/drive_link.png
new file mode 100755
index 0000000000..8679c4b5c2
Binary files /dev/null and b/html/images/16/drive_link.png differ
diff --git a/html/images/16/drive_magnify.png b/html/images/16/drive_magnify.png
new file mode 100755
index 0000000000..0f0f4446bb
Binary files /dev/null and b/html/images/16/drive_magnify.png differ
diff --git a/html/images/16/drive_network.png b/html/images/16/drive_network.png
new file mode 100755
index 0000000000..63d2d5d5b1
Binary files /dev/null and b/html/images/16/drive_network.png differ
diff --git a/html/images/16/drive_rename.png b/html/images/16/drive_rename.png
new file mode 100755
index 0000000000..2a9f38b447
Binary files /dev/null and b/html/images/16/drive_rename.png differ
diff --git a/html/images/16/drive_user.png b/html/images/16/drive_user.png
new file mode 100755
index 0000000000..0b4751ce42
Binary files /dev/null and b/html/images/16/drive_user.png differ
diff --git a/html/images/16/drive_web.png b/html/images/16/drive_web.png
new file mode 100755
index 0000000000..8850a83557
Binary files /dev/null and b/html/images/16/drive_web.png differ
diff --git a/html/images/16/dvd.png b/html/images/16/dvd.png
new file mode 100755
index 0000000000..9d94de5df0
Binary files /dev/null and b/html/images/16/dvd.png differ
diff --git a/html/images/16/dvd_add.png b/html/images/16/dvd_add.png
new file mode 100755
index 0000000000..517d112156
Binary files /dev/null and b/html/images/16/dvd_add.png differ
diff --git a/html/images/16/dvd_delete.png b/html/images/16/dvd_delete.png
new file mode 100755
index 0000000000..87bed22197
Binary files /dev/null and b/html/images/16/dvd_delete.png differ
diff --git a/html/images/16/dvd_edit.png b/html/images/16/dvd_edit.png
new file mode 100755
index 0000000000..d6330aa996
Binary files /dev/null and b/html/images/16/dvd_edit.png differ
diff --git a/html/images/16/dvd_error.png b/html/images/16/dvd_error.png
new file mode 100755
index 0000000000..8f6d4bee38
Binary files /dev/null and b/html/images/16/dvd_error.png differ
diff --git a/html/images/16/dvd_go.png b/html/images/16/dvd_go.png
new file mode 100755
index 0000000000..ef6959f7bd
Binary files /dev/null and b/html/images/16/dvd_go.png differ
diff --git a/html/images/16/dvd_key.png b/html/images/16/dvd_key.png
new file mode 100755
index 0000000000..da9307f66d
Binary files /dev/null and b/html/images/16/dvd_key.png differ
diff --git a/html/images/16/dvd_link.png b/html/images/16/dvd_link.png
new file mode 100755
index 0000000000..caad7263ac
Binary files /dev/null and b/html/images/16/dvd_link.png differ
diff --git a/html/images/16/email.png b/html/images/16/email.png
new file mode 100755
index 0000000000..7348aed77f
Binary files /dev/null and b/html/images/16/email.png differ
diff --git a/html/images/16/email_add.png b/html/images/16/email_add.png
new file mode 100755
index 0000000000..6c933681f3
Binary files /dev/null and b/html/images/16/email_add.png differ
diff --git a/html/images/16/email_attach.png b/html/images/16/email_attach.png
new file mode 100755
index 0000000000..1f994851c6
Binary files /dev/null and b/html/images/16/email_attach.png differ
diff --git a/html/images/16/email_delete.png b/html/images/16/email_delete.png
new file mode 100755
index 0000000000..a9932b1ad5
Binary files /dev/null and b/html/images/16/email_delete.png differ
diff --git a/html/images/16/email_edit.png b/html/images/16/email_edit.png
new file mode 100755
index 0000000000..244f04ae15
Binary files /dev/null and b/html/images/16/email_edit.png differ
diff --git a/html/images/16/email_error.png b/html/images/16/email_error.png
new file mode 100755
index 0000000000..8bdd3304de
Binary files /dev/null and b/html/images/16/email_error.png differ
diff --git a/html/images/16/email_go.png b/html/images/16/email_go.png
new file mode 100755
index 0000000000..4a6c5d396a
Binary files /dev/null and b/html/images/16/email_go.png differ
diff --git a/html/images/16/email_link.png b/html/images/16/email_link.png
new file mode 100755
index 0000000000..2c49f78a65
Binary files /dev/null and b/html/images/16/email_link.png differ
diff --git a/html/images/16/email_open.png b/html/images/16/email_open.png
new file mode 100755
index 0000000000..7b6f9813d4
Binary files /dev/null and b/html/images/16/email_open.png differ
diff --git a/html/images/16/email_open_image.png b/html/images/16/email_open_image.png
new file mode 100755
index 0000000000..e588e2fb2d
Binary files /dev/null and b/html/images/16/email_open_image.png differ
diff --git a/html/images/16/emoticon_evilgrin.png b/html/images/16/emoticon_evilgrin.png
new file mode 100755
index 0000000000..817bd509b0
Binary files /dev/null and b/html/images/16/emoticon_evilgrin.png differ
diff --git a/html/images/16/emoticon_grin.png b/html/images/16/emoticon_grin.png
new file mode 100755
index 0000000000..fc60c5e1cd
Binary files /dev/null and b/html/images/16/emoticon_grin.png differ
diff --git a/html/images/16/emoticon_happy.png b/html/images/16/emoticon_happy.png
new file mode 100755
index 0000000000..6b7336e175
Binary files /dev/null and b/html/images/16/emoticon_happy.png differ
diff --git a/html/images/16/emoticon_smile.png b/html/images/16/emoticon_smile.png
new file mode 100755
index 0000000000..ade431851b
Binary files /dev/null and b/html/images/16/emoticon_smile.png differ
diff --git a/html/images/16/emoticon_surprised.png b/html/images/16/emoticon_surprised.png
new file mode 100755
index 0000000000..4520cfc552
Binary files /dev/null and b/html/images/16/emoticon_surprised.png differ
diff --git a/html/images/16/emoticon_tongue.png b/html/images/16/emoticon_tongue.png
new file mode 100755
index 0000000000..ecafd2ffc5
Binary files /dev/null and b/html/images/16/emoticon_tongue.png differ
diff --git a/html/images/16/emoticon_unhappy.png b/html/images/16/emoticon_unhappy.png
new file mode 100755
index 0000000000..fd5d030ef7
Binary files /dev/null and b/html/images/16/emoticon_unhappy.png differ
diff --git a/html/images/16/emoticon_waii.png b/html/images/16/emoticon_waii.png
new file mode 100755
index 0000000000..458f936117
Binary files /dev/null and b/html/images/16/emoticon_waii.png differ
diff --git a/html/images/16/emoticon_wink.png b/html/images/16/emoticon_wink.png
new file mode 100755
index 0000000000..a631949b51
Binary files /dev/null and b/html/images/16/emoticon_wink.png differ
diff --git a/html/images/16/error.png b/html/images/16/error.png
new file mode 100755
index 0000000000..628cf2dae3
Binary files /dev/null and b/html/images/16/error.png differ
diff --git a/html/images/16/error_add.png b/html/images/16/error_add.png
new file mode 100755
index 0000000000..4c974840e9
Binary files /dev/null and b/html/images/16/error_add.png differ
diff --git a/html/images/16/error_delete.png b/html/images/16/error_delete.png
new file mode 100755
index 0000000000..7f78bcc8e1
Binary files /dev/null and b/html/images/16/error_delete.png differ
diff --git a/html/images/16/error_go.png b/html/images/16/error_go.png
new file mode 100755
index 0000000000..caa1838d7f
Binary files /dev/null and b/html/images/16/error_go.png differ
diff --git a/html/images/16/exclamation.png b/html/images/16/exclamation.png
new file mode 100755
index 0000000000..c37bd062e6
Binary files /dev/null and b/html/images/16/exclamation.png differ
diff --git a/html/images/16/eye.png b/html/images/16/eye.png
new file mode 100755
index 0000000000..564a1a9714
Binary files /dev/null and b/html/images/16/eye.png differ
diff --git a/html/images/16/feed.png b/html/images/16/feed.png
new file mode 100755
index 0000000000..315c4f4fa6
Binary files /dev/null and b/html/images/16/feed.png differ
diff --git a/html/images/16/feed_add.png b/html/images/16/feed_add.png
new file mode 100755
index 0000000000..e77d46e8a2
Binary files /dev/null and b/html/images/16/feed_add.png differ
diff --git a/html/images/16/feed_delete.png b/html/images/16/feed_delete.png
new file mode 100755
index 0000000000..5e332b4cc4
Binary files /dev/null and b/html/images/16/feed_delete.png differ
diff --git a/html/images/16/feed_disk.png b/html/images/16/feed_disk.png
new file mode 100755
index 0000000000..a158c998df
Binary files /dev/null and b/html/images/16/feed_disk.png differ
diff --git a/html/images/16/feed_edit.png b/html/images/16/feed_edit.png
new file mode 100755
index 0000000000..f1fde7a9ce
Binary files /dev/null and b/html/images/16/feed_edit.png differ
diff --git a/html/images/16/feed_error.png b/html/images/16/feed_error.png
new file mode 100755
index 0000000000..c0a801c7f7
Binary files /dev/null and b/html/images/16/feed_error.png differ
diff --git a/html/images/16/feed_go.png b/html/images/16/feed_go.png
new file mode 100755
index 0000000000..f2eed1ecf0
Binary files /dev/null and b/html/images/16/feed_go.png differ
diff --git a/html/images/16/feed_key.png b/html/images/16/feed_key.png
new file mode 100755
index 0000000000..156bfa9719
Binary files /dev/null and b/html/images/16/feed_key.png differ
diff --git a/html/images/16/feed_link.png b/html/images/16/feed_link.png
new file mode 100755
index 0000000000..c45a534597
Binary files /dev/null and b/html/images/16/feed_link.png differ
diff --git a/html/images/16/feed_magnify.png b/html/images/16/feed_magnify.png
new file mode 100755
index 0000000000..3023695d8c
Binary files /dev/null and b/html/images/16/feed_magnify.png differ
diff --git a/html/images/16/female.png b/html/images/16/female.png
new file mode 100755
index 0000000000..f92958e6af
Binary files /dev/null and b/html/images/16/female.png differ
diff --git a/html/images/16/film.png b/html/images/16/film.png
new file mode 100755
index 0000000000..b0ce7bb198
Binary files /dev/null and b/html/images/16/film.png differ
diff --git a/html/images/16/film_add.png b/html/images/16/film_add.png
new file mode 100755
index 0000000000..40d681feba
Binary files /dev/null and b/html/images/16/film_add.png differ
diff --git a/html/images/16/film_delete.png b/html/images/16/film_delete.png
new file mode 100755
index 0000000000..23a2508c5c
Binary files /dev/null and b/html/images/16/film_delete.png differ
diff --git a/html/images/16/film_edit.png b/html/images/16/film_edit.png
new file mode 100755
index 0000000000..af66b73f20
Binary files /dev/null and b/html/images/16/film_edit.png differ
diff --git a/html/images/16/film_error.png b/html/images/16/film_error.png
new file mode 100755
index 0000000000..88f3d69bca
Binary files /dev/null and b/html/images/16/film_error.png differ
diff --git a/html/images/16/film_go.png b/html/images/16/film_go.png
new file mode 100755
index 0000000000..dd0168ea92
Binary files /dev/null and b/html/images/16/film_go.png differ
diff --git a/html/images/16/film_key.png b/html/images/16/film_key.png
new file mode 100755
index 0000000000..58921624ea
Binary files /dev/null and b/html/images/16/film_key.png differ
diff --git a/html/images/16/film_link.png b/html/images/16/film_link.png
new file mode 100755
index 0000000000..0f24e86e40
Binary files /dev/null and b/html/images/16/film_link.png differ
diff --git a/html/images/16/film_save.png b/html/images/16/film_save.png
new file mode 100755
index 0000000000..bc8c0d3536
Binary files /dev/null and b/html/images/16/film_save.png differ
diff --git a/html/images/16/find.png b/html/images/16/find.png
new file mode 100755
index 0000000000..1547479646
Binary files /dev/null and b/html/images/16/find.png differ
diff --git a/html/images/16/flag_blue.png b/html/images/16/flag_blue.png
new file mode 100755
index 0000000000..003924f5ea
Binary files /dev/null and b/html/images/16/flag_blue.png differ
diff --git a/html/images/16/flag_green.png b/html/images/16/flag_green.png
new file mode 100755
index 0000000000..e4bc611f87
Binary files /dev/null and b/html/images/16/flag_green.png differ
diff --git a/html/images/16/flag_orange.png b/html/images/16/flag_orange.png
new file mode 100755
index 0000000000..e63202420f
Binary files /dev/null and b/html/images/16/flag_orange.png differ
diff --git a/html/images/16/flag_pink.png b/html/images/16/flag_pink.png
new file mode 100755
index 0000000000..5f15e526c0
Binary files /dev/null and b/html/images/16/flag_pink.png differ
diff --git a/html/images/16/flag_purple.png b/html/images/16/flag_purple.png
new file mode 100755
index 0000000000..d06986644c
Binary files /dev/null and b/html/images/16/flag_purple.png differ
diff --git a/html/images/16/flag_red.png b/html/images/16/flag_red.png
new file mode 100755
index 0000000000..e8a602da7b
Binary files /dev/null and b/html/images/16/flag_red.png differ
diff --git a/html/images/16/flag_yellow.png b/html/images/16/flag_yellow.png
new file mode 100755
index 0000000000..14c89a5430
Binary files /dev/null and b/html/images/16/flag_yellow.png differ
diff --git a/html/images/16/folder.png b/html/images/16/folder.png
new file mode 100755
index 0000000000..784e8fa482
Binary files /dev/null and b/html/images/16/folder.png differ
diff --git a/html/images/16/folder_add.png b/html/images/16/folder_add.png
new file mode 100755
index 0000000000..529fe8fe04
Binary files /dev/null and b/html/images/16/folder_add.png differ
diff --git a/html/images/16/folder_bell.png b/html/images/16/folder_bell.png
new file mode 100755
index 0000000000..d04dd7f513
Binary files /dev/null and b/html/images/16/folder_bell.png differ
diff --git a/html/images/16/folder_brick.png b/html/images/16/folder_brick.png
new file mode 100755
index 0000000000..5dea9769a2
Binary files /dev/null and b/html/images/16/folder_brick.png differ
diff --git a/html/images/16/folder_bug.png b/html/images/16/folder_bug.png
new file mode 100755
index 0000000000..4f791b684b
Binary files /dev/null and b/html/images/16/folder_bug.png differ
diff --git a/html/images/16/folder_camera.png b/html/images/16/folder_camera.png
new file mode 100755
index 0000000000..c9519416dd
Binary files /dev/null and b/html/images/16/folder_camera.png differ
diff --git a/html/images/16/folder_database.png b/html/images/16/folder_database.png
new file mode 100755
index 0000000000..5193e2eff3
Binary files /dev/null and b/html/images/16/folder_database.png differ
diff --git a/html/images/16/folder_delete.png b/html/images/16/folder_delete.png
new file mode 100755
index 0000000000..112b01638e
Binary files /dev/null and b/html/images/16/folder_delete.png differ
diff --git a/html/images/16/folder_edit.png b/html/images/16/folder_edit.png
new file mode 100755
index 0000000000..ad669cc781
Binary files /dev/null and b/html/images/16/folder_edit.png differ
diff --git a/html/images/16/folder_error.png b/html/images/16/folder_error.png
new file mode 100755
index 0000000000..1af8809513
Binary files /dev/null and b/html/images/16/folder_error.png differ
diff --git a/html/images/16/folder_explore.png b/html/images/16/folder_explore.png
new file mode 100755
index 0000000000..0ba939184d
Binary files /dev/null and b/html/images/16/folder_explore.png differ
diff --git a/html/images/16/folder_feed.png b/html/images/16/folder_feed.png
new file mode 100755
index 0000000000..d06ee51e41
Binary files /dev/null and b/html/images/16/folder_feed.png differ
diff --git a/html/images/16/folder_find.png b/html/images/16/folder_find.png
new file mode 100755
index 0000000000..c64e2ee679
Binary files /dev/null and b/html/images/16/folder_find.png differ
diff --git a/html/images/16/folder_go.png b/html/images/16/folder_go.png
new file mode 100755
index 0000000000..34a736f702
Binary files /dev/null and b/html/images/16/folder_go.png differ
diff --git a/html/images/16/folder_heart.png b/html/images/16/folder_heart.png
new file mode 100755
index 0000000000..56d7da1d6a
Binary files /dev/null and b/html/images/16/folder_heart.png differ
diff --git a/html/images/16/folder_image.png b/html/images/16/folder_image.png
new file mode 100755
index 0000000000..d5df75bb6e
Binary files /dev/null and b/html/images/16/folder_image.png differ
diff --git a/html/images/16/folder_key.png b/html/images/16/folder_key.png
new file mode 100755
index 0000000000..fb9b4c2bbc
Binary files /dev/null and b/html/images/16/folder_key.png differ
diff --git a/html/images/16/folder_lightbulb.png b/html/images/16/folder_lightbulb.png
new file mode 100755
index 0000000000..f367a51172
Binary files /dev/null and b/html/images/16/folder_lightbulb.png differ
diff --git a/html/images/16/folder_link.png b/html/images/16/folder_link.png
new file mode 100755
index 0000000000..b9b75f6c39
Binary files /dev/null and b/html/images/16/folder_link.png differ
diff --git a/html/images/16/folder_magnify.png b/html/images/16/folder_magnify.png
new file mode 100755
index 0000000000..0a3e7985c1
Binary files /dev/null and b/html/images/16/folder_magnify.png differ
diff --git a/html/images/16/folder_page.png b/html/images/16/folder_page.png
new file mode 100755
index 0000000000..1ef6e11438
Binary files /dev/null and b/html/images/16/folder_page.png differ
diff --git a/html/images/16/folder_page_white.png b/html/images/16/folder_page_white.png
new file mode 100755
index 0000000000..14d6b6181f
Binary files /dev/null and b/html/images/16/folder_page_white.png differ
diff --git a/html/images/16/folder_palette.png b/html/images/16/folder_palette.png
new file mode 100755
index 0000000000..ba12fe8acc
Binary files /dev/null and b/html/images/16/folder_palette.png differ
diff --git a/html/images/16/folder_picture.png b/html/images/16/folder_picture.png
new file mode 100755
index 0000000000..052b33638e
Binary files /dev/null and b/html/images/16/folder_picture.png differ
diff --git a/html/images/16/folder_star.png b/html/images/16/folder_star.png
new file mode 100755
index 0000000000..448e46fd5a
Binary files /dev/null and b/html/images/16/folder_star.png differ
diff --git a/html/images/16/folder_table.png b/html/images/16/folder_table.png
new file mode 100755
index 0000000000..473cee355d
Binary files /dev/null and b/html/images/16/folder_table.png differ
diff --git a/html/images/16/folder_user.png b/html/images/16/folder_user.png
new file mode 100755
index 0000000000..f021c3e12a
Binary files /dev/null and b/html/images/16/folder_user.png differ
diff --git a/html/images/16/folder_wrench.png b/html/images/16/folder_wrench.png
new file mode 100755
index 0000000000..ea3404e031
Binary files /dev/null and b/html/images/16/folder_wrench.png differ
diff --git a/html/images/16/font.png b/html/images/16/font.png
new file mode 100755
index 0000000000..b7960db9da
Binary files /dev/null and b/html/images/16/font.png differ
diff --git a/html/images/16/font_add.png b/html/images/16/font_add.png
new file mode 100755
index 0000000000..b709ebaef4
Binary files /dev/null and b/html/images/16/font_add.png differ
diff --git a/html/images/16/font_delete.png b/html/images/16/font_delete.png
new file mode 100755
index 0000000000..1d6124d6e3
Binary files /dev/null and b/html/images/16/font_delete.png differ
diff --git a/html/images/16/font_go.png b/html/images/16/font_go.png
new file mode 100755
index 0000000000..75eba80d62
Binary files /dev/null and b/html/images/16/font_go.png differ
diff --git a/html/images/16/group.png b/html/images/16/group.png
new file mode 100755
index 0000000000..7fb4e1f1e1
Binary files /dev/null and b/html/images/16/group.png differ
diff --git a/html/images/16/group_add.png b/html/images/16/group_add.png
new file mode 100755
index 0000000000..06c5350cb1
Binary files /dev/null and b/html/images/16/group_add.png differ
diff --git a/html/images/16/group_delete.png b/html/images/16/group_delete.png
new file mode 100755
index 0000000000..4489ca238a
Binary files /dev/null and b/html/images/16/group_delete.png differ
diff --git a/html/images/16/group_edit.png b/html/images/16/group_edit.png
new file mode 100755
index 0000000000..c88b945b0a
Binary files /dev/null and b/html/images/16/group_edit.png differ
diff --git a/html/images/16/group_error.png b/html/images/16/group_error.png
new file mode 100755
index 0000000000..7364a13cbe
Binary files /dev/null and b/html/images/16/group_error.png differ
diff --git a/html/images/16/group_gear.png b/html/images/16/group_gear.png
new file mode 100755
index 0000000000..2544f2e637
Binary files /dev/null and b/html/images/16/group_gear.png differ
diff --git a/html/images/16/group_go.png b/html/images/16/group_go.png
new file mode 100755
index 0000000000..1f5233308b
Binary files /dev/null and b/html/images/16/group_go.png differ
diff --git a/html/images/16/group_key.png b/html/images/16/group_key.png
new file mode 100755
index 0000000000..257f111ca8
Binary files /dev/null and b/html/images/16/group_key.png differ
diff --git a/html/images/16/group_link.png b/html/images/16/group_link.png
new file mode 100755
index 0000000000..c77ed8812e
Binary files /dev/null and b/html/images/16/group_link.png differ
diff --git a/html/images/16/heart.png b/html/images/16/heart.png
new file mode 100755
index 0000000000..d9ee53e590
Binary files /dev/null and b/html/images/16/heart.png differ
diff --git a/html/images/16/heart_add.png b/html/images/16/heart_add.png
new file mode 100755
index 0000000000..d4195ff802
Binary files /dev/null and b/html/images/16/heart_add.png differ
diff --git a/html/images/16/heart_delete.png b/html/images/16/heart_delete.png
new file mode 100755
index 0000000000..ce523e3436
Binary files /dev/null and b/html/images/16/heart_delete.png differ
diff --git a/html/images/16/help.png b/html/images/16/help.png
new file mode 100755
index 0000000000..5c870176d4
Binary files /dev/null and b/html/images/16/help.png differ
diff --git a/html/images/16/hourglass.png b/html/images/16/hourglass.png
new file mode 100755
index 0000000000..57b03ce7a6
Binary files /dev/null and b/html/images/16/hourglass.png differ
diff --git a/html/images/16/hourglass_add.png b/html/images/16/hourglass_add.png
new file mode 100755
index 0000000000..170dfff1ec
Binary files /dev/null and b/html/images/16/hourglass_add.png differ
diff --git a/html/images/16/hourglass_delete.png b/html/images/16/hourglass_delete.png
new file mode 100755
index 0000000000..4b1337be8f
Binary files /dev/null and b/html/images/16/hourglass_delete.png differ
diff --git a/html/images/16/hourglass_go.png b/html/images/16/hourglass_go.png
new file mode 100755
index 0000000000..b2d3a98bc4
Binary files /dev/null and b/html/images/16/hourglass_go.png differ
diff --git a/html/images/16/hourglass_link.png b/html/images/16/hourglass_link.png
new file mode 100755
index 0000000000..ecc59b0abe
Binary files /dev/null and b/html/images/16/hourglass_link.png differ
diff --git a/html/images/16/house.png b/html/images/16/house.png
new file mode 100755
index 0000000000..fed62219f5
Binary files /dev/null and b/html/images/16/house.png differ
diff --git a/html/images/16/house_go.png b/html/images/16/house_go.png
new file mode 100755
index 0000000000..5457dbd3cd
Binary files /dev/null and b/html/images/16/house_go.png differ
diff --git a/html/images/16/house_link.png b/html/images/16/house_link.png
new file mode 100755
index 0000000000..be2c2719ec
Binary files /dev/null and b/html/images/16/house_link.png differ
diff --git a/html/images/16/html.png b/html/images/16/html.png
new file mode 100755
index 0000000000..55d1072eaf
Binary files /dev/null and b/html/images/16/html.png differ
diff --git a/html/images/16/html_add.png b/html/images/16/html_add.png
new file mode 100755
index 0000000000..f1c08b7d68
Binary files /dev/null and b/html/images/16/html_add.png differ
diff --git a/html/images/16/html_delete.png b/html/images/16/html_delete.png
new file mode 100755
index 0000000000..1bd28489e5
Binary files /dev/null and b/html/images/16/html_delete.png differ
diff --git a/html/images/16/html_go.png b/html/images/16/html_go.png
new file mode 100755
index 0000000000..a95cede1e4
Binary files /dev/null and b/html/images/16/html_go.png differ
diff --git a/html/images/16/html_valid.png b/html/images/16/html_valid.png
new file mode 100755
index 0000000000..71cec9249a
Binary files /dev/null and b/html/images/16/html_valid.png differ
diff --git a/html/images/16/if-connect.png b/html/images/16/if-connect.png
new file mode 100644
index 0000000000..b493035b67
Binary files /dev/null and b/html/images/16/if-connect.png differ
diff --git a/html/images/16/if-disable.png b/html/images/16/if-disable.png
new file mode 100755
index 0000000000..08645998b5
Binary files /dev/null and b/html/images/16/if-disable.png differ
diff --git a/html/images/16/if-disconnect.png b/html/images/16/if-disconnect.png
new file mode 100644
index 0000000000..e3a81fe943
Binary files /dev/null and b/html/images/16/if-disconnect.png differ
diff --git a/html/images/16/if-enable.png b/html/images/16/if-enable.png
new file mode 100644
index 0000000000..b335cb11c4
Binary files /dev/null and b/html/images/16/if-enable.png differ
diff --git a/html/images/16/image.png b/html/images/16/image.png
new file mode 100755
index 0000000000..fc3c393caa
Binary files /dev/null and b/html/images/16/image.png differ
diff --git a/html/images/16/image_add.png b/html/images/16/image_add.png
new file mode 100755
index 0000000000..fc5d6139e9
Binary files /dev/null and b/html/images/16/image_add.png differ
diff --git a/html/images/16/image_delete.png b/html/images/16/image_delete.png
new file mode 100755
index 0000000000..c260e1d966
Binary files /dev/null and b/html/images/16/image_delete.png differ
diff --git a/html/images/16/image_edit.png b/html/images/16/image_edit.png
new file mode 100755
index 0000000000..0aa4cc6512
Binary files /dev/null and b/html/images/16/image_edit.png differ
diff --git a/html/images/16/image_link.png b/html/images/16/image_link.png
new file mode 100755
index 0000000000..4bdb3541ec
Binary files /dev/null and b/html/images/16/image_link.png differ
diff --git a/html/images/16/images.png b/html/images/16/images.png
new file mode 100755
index 0000000000..184860d1e0
Binary files /dev/null and b/html/images/16/images.png differ
diff --git a/html/images/16/information.png b/html/images/16/information.png
new file mode 100755
index 0000000000..12cd1aef90
Binary files /dev/null and b/html/images/16/information.png differ
diff --git a/html/images/16/ipod.png b/html/images/16/ipod.png
new file mode 100755
index 0000000000..3f768da502
Binary files /dev/null and b/html/images/16/ipod.png differ
diff --git a/html/images/16/ipod_cast.png b/html/images/16/ipod_cast.png
new file mode 100755
index 0000000000..6f6d3406cb
Binary files /dev/null and b/html/images/16/ipod_cast.png differ
diff --git a/html/images/16/ipod_cast_add.png b/html/images/16/ipod_cast_add.png
new file mode 100755
index 0000000000..c3257f5f1e
Binary files /dev/null and b/html/images/16/ipod_cast_add.png differ
diff --git a/html/images/16/ipod_cast_delete.png b/html/images/16/ipod_cast_delete.png
new file mode 100755
index 0000000000..377ab6950b
Binary files /dev/null and b/html/images/16/ipod_cast_delete.png differ
diff --git a/html/images/16/ipod_sound.png b/html/images/16/ipod_sound.png
new file mode 100755
index 0000000000..fef6e8bada
Binary files /dev/null and b/html/images/16/ipod_sound.png differ
diff --git a/html/images/16/joystick.png b/html/images/16/joystick.png
new file mode 100755
index 0000000000..62168f56f2
Binary files /dev/null and b/html/images/16/joystick.png differ
diff --git a/html/images/16/joystick_add.png b/html/images/16/joystick_add.png
new file mode 100755
index 0000000000..77e710772f
Binary files /dev/null and b/html/images/16/joystick_add.png differ
diff --git a/html/images/16/joystick_delete.png b/html/images/16/joystick_delete.png
new file mode 100755
index 0000000000..5d44b59250
Binary files /dev/null and b/html/images/16/joystick_delete.png differ
diff --git a/html/images/16/joystick_error.png b/html/images/16/joystick_error.png
new file mode 100755
index 0000000000..b32149e27a
Binary files /dev/null and b/html/images/16/joystick_error.png differ
diff --git a/html/images/16/key.png b/html/images/16/key.png
new file mode 100755
index 0000000000..4ec1a92814
Binary files /dev/null and b/html/images/16/key.png differ
diff --git a/html/images/16/key_add.png b/html/images/16/key_add.png
new file mode 100755
index 0000000000..d40740396c
Binary files /dev/null and b/html/images/16/key_add.png differ
diff --git a/html/images/16/key_delete.png b/html/images/16/key_delete.png
new file mode 100755
index 0000000000..00dec80d84
Binary files /dev/null and b/html/images/16/key_delete.png differ
diff --git a/html/images/16/key_go.png b/html/images/16/key_go.png
new file mode 100755
index 0000000000..30b0dc316e
Binary files /dev/null and b/html/images/16/key_go.png differ
diff --git a/html/images/16/keyboard.png b/html/images/16/keyboard.png
new file mode 100755
index 0000000000..898d402d70
Binary files /dev/null and b/html/images/16/keyboard.png differ
diff --git a/html/images/16/keyboard_add.png b/html/images/16/keyboard_add.png
new file mode 100755
index 0000000000..26938dd0c3
Binary files /dev/null and b/html/images/16/keyboard_add.png differ
diff --git a/html/images/16/keyboard_delete.png b/html/images/16/keyboard_delete.png
new file mode 100755
index 0000000000..1786ed5bec
Binary files /dev/null and b/html/images/16/keyboard_delete.png differ
diff --git a/html/images/16/keyboard_magnify.png b/html/images/16/keyboard_magnify.png
new file mode 100755
index 0000000000..928fc17b4d
Binary files /dev/null and b/html/images/16/keyboard_magnify.png differ
diff --git a/html/images/16/layers.png b/html/images/16/layers.png
new file mode 100755
index 0000000000..00818f6363
Binary files /dev/null and b/html/images/16/layers.png differ
diff --git a/html/images/16/layout.png b/html/images/16/layout.png
new file mode 100755
index 0000000000..ea086b0428
Binary files /dev/null and b/html/images/16/layout.png differ
diff --git a/html/images/16/layout_add.png b/html/images/16/layout_add.png
new file mode 100755
index 0000000000..62037221c0
Binary files /dev/null and b/html/images/16/layout_add.png differ
diff --git a/html/images/16/layout_content.png b/html/images/16/layout_content.png
new file mode 100755
index 0000000000..b4aaad9a45
Binary files /dev/null and b/html/images/16/layout_content.png differ
diff --git a/html/images/16/layout_delete.png b/html/images/16/layout_delete.png
new file mode 100755
index 0000000000..4bd45f1316
Binary files /dev/null and b/html/images/16/layout_delete.png differ
diff --git a/html/images/16/layout_edit.png b/html/images/16/layout_edit.png
new file mode 100755
index 0000000000..ab3100b5c5
Binary files /dev/null and b/html/images/16/layout_edit.png differ
diff --git a/html/images/16/layout_error.png b/html/images/16/layout_error.png
new file mode 100755
index 0000000000..5b5acea92c
Binary files /dev/null and b/html/images/16/layout_error.png differ
diff --git a/html/images/16/layout_header.png b/html/images/16/layout_header.png
new file mode 100755
index 0000000000..c6ea7f2308
Binary files /dev/null and b/html/images/16/layout_header.png differ
diff --git a/html/images/16/layout_link.png b/html/images/16/layout_link.png
new file mode 100755
index 0000000000..3445d42063
Binary files /dev/null and b/html/images/16/layout_link.png differ
diff --git a/html/images/16/layout_sidebar.png b/html/images/16/layout_sidebar.png
new file mode 100755
index 0000000000..3be27bb9bb
Binary files /dev/null and b/html/images/16/layout_sidebar.png differ
diff --git a/html/images/16/lightbulb.png b/html/images/16/lightbulb.png
new file mode 100755
index 0000000000..d22fde8ba4
Binary files /dev/null and b/html/images/16/lightbulb.png differ
diff --git a/html/images/16/lightbulb_add.png b/html/images/16/lightbulb_add.png
new file mode 100755
index 0000000000..0dd848bd63
Binary files /dev/null and b/html/images/16/lightbulb_add.png differ
diff --git a/html/images/16/lightbulb_delete.png b/html/images/16/lightbulb_delete.png
new file mode 100755
index 0000000000..f4781daa84
Binary files /dev/null and b/html/images/16/lightbulb_delete.png differ
diff --git a/html/images/16/lightbulb_off.png b/html/images/16/lightbulb_off.png
new file mode 100755
index 0000000000..e95b8c5b12
Binary files /dev/null and b/html/images/16/lightbulb_off.png differ
diff --git a/html/images/16/lightning.png b/html/images/16/lightning.png
new file mode 100755
index 0000000000..9680afd12f
Binary files /dev/null and b/html/images/16/lightning.png differ
diff --git a/html/images/16/lightning_add.png b/html/images/16/lightning_add.png
new file mode 100755
index 0000000000..dac3c9050c
Binary files /dev/null and b/html/images/16/lightning_add.png differ
diff --git a/html/images/16/lightning_delete.png b/html/images/16/lightning_delete.png
new file mode 100755
index 0000000000..dfe2770509
Binary files /dev/null and b/html/images/16/lightning_delete.png differ
diff --git a/html/images/16/lightning_go.png b/html/images/16/lightning_go.png
new file mode 100755
index 0000000000..29039e6a8b
Binary files /dev/null and b/html/images/16/lightning_go.png differ
diff --git a/html/images/16/link.png b/html/images/16/link.png
new file mode 100755
index 0000000000..25eacb7c25
Binary files /dev/null and b/html/images/16/link.png differ
diff --git a/html/images/16/link_add.png b/html/images/16/link_add.png
new file mode 100755
index 0000000000..00be352c57
Binary files /dev/null and b/html/images/16/link_add.png differ
diff --git a/html/images/16/link_break.png b/html/images/16/link_break.png
new file mode 100755
index 0000000000..523575306d
Binary files /dev/null and b/html/images/16/link_break.png differ
diff --git a/html/images/16/link_delete.png b/html/images/16/link_delete.png
new file mode 100755
index 0000000000..f66e2974ef
Binary files /dev/null and b/html/images/16/link_delete.png differ
diff --git a/html/images/16/link_edit.png b/html/images/16/link_edit.png
new file mode 100755
index 0000000000..5b3aed090f
Binary files /dev/null and b/html/images/16/link_edit.png differ
diff --git a/html/images/16/link_error.png b/html/images/16/link_error.png
new file mode 100755
index 0000000000..ab694b1ac4
Binary files /dev/null and b/html/images/16/link_error.png differ
diff --git a/html/images/16/link_go.png b/html/images/16/link_go.png
new file mode 100755
index 0000000000..ae8cae806e
Binary files /dev/null and b/html/images/16/link_go.png differ
diff --git a/html/images/16/lock.png b/html/images/16/lock.png
new file mode 100755
index 0000000000..2ebc4f6f96
Binary files /dev/null and b/html/images/16/lock.png differ
diff --git a/html/images/16/lock_add.png b/html/images/16/lock_add.png
new file mode 100755
index 0000000000..a7b566b1f9
Binary files /dev/null and b/html/images/16/lock_add.png differ
diff --git a/html/images/16/lock_break.png b/html/images/16/lock_break.png
new file mode 100755
index 0000000000..13578ab5ad
Binary files /dev/null and b/html/images/16/lock_break.png differ
diff --git a/html/images/16/lock_delete.png b/html/images/16/lock_delete.png
new file mode 100755
index 0000000000..ecb50a93fd
Binary files /dev/null and b/html/images/16/lock_delete.png differ
diff --git a/html/images/16/lock_edit.png b/html/images/16/lock_edit.png
new file mode 100755
index 0000000000..116aa5b7f1
Binary files /dev/null and b/html/images/16/lock_edit.png differ
diff --git a/html/images/16/lock_go.png b/html/images/16/lock_go.png
new file mode 100755
index 0000000000..8c7c89b26e
Binary files /dev/null and b/html/images/16/lock_go.png differ
diff --git a/html/images/16/lock_open.png b/html/images/16/lock_open.png
new file mode 100755
index 0000000000..a471765ff1
Binary files /dev/null and b/html/images/16/lock_open.png differ
diff --git a/html/images/16/lorry.png b/html/images/16/lorry.png
new file mode 100755
index 0000000000..8f95f5a5d8
Binary files /dev/null and b/html/images/16/lorry.png differ
diff --git a/html/images/16/lorry_add.png b/html/images/16/lorry_add.png
new file mode 100755
index 0000000000..a2c512499d
Binary files /dev/null and b/html/images/16/lorry_add.png differ
diff --git a/html/images/16/lorry_delete.png b/html/images/16/lorry_delete.png
new file mode 100755
index 0000000000..66217f5262
Binary files /dev/null and b/html/images/16/lorry_delete.png differ
diff --git a/html/images/16/lorry_error.png b/html/images/16/lorry_error.png
new file mode 100755
index 0000000000..3619ead96b
Binary files /dev/null and b/html/images/16/lorry_error.png differ
diff --git a/html/images/16/lorry_flatbed.png b/html/images/16/lorry_flatbed.png
new file mode 100755
index 0000000000..8b20f55034
Binary files /dev/null and b/html/images/16/lorry_flatbed.png differ
diff --git a/html/images/16/lorry_go.png b/html/images/16/lorry_go.png
new file mode 100755
index 0000000000..1c296a6aa0
Binary files /dev/null and b/html/images/16/lorry_go.png differ
diff --git a/html/images/16/lorry_link.png b/html/images/16/lorry_link.png
new file mode 100755
index 0000000000..5e6663e5c4
Binary files /dev/null and b/html/images/16/lorry_link.png differ
diff --git a/html/images/16/magifier_zoom_out.png b/html/images/16/magifier_zoom_out.png
new file mode 100755
index 0000000000..81f28199ac
Binary files /dev/null and b/html/images/16/magifier_zoom_out.png differ
diff --git a/html/images/16/magnifier.png b/html/images/16/magnifier.png
new file mode 100755
index 0000000000..cf3d97f75e
Binary files /dev/null and b/html/images/16/magnifier.png differ
diff --git a/html/images/16/magnifier_zoom_in.png b/html/images/16/magnifier_zoom_in.png
new file mode 100755
index 0000000000..af4fe07477
Binary files /dev/null and b/html/images/16/magnifier_zoom_in.png differ
diff --git a/html/images/16/male.png b/html/images/16/male.png
new file mode 100755
index 0000000000..25d6ea91d1
Binary files /dev/null and b/html/images/16/male.png differ
diff --git a/html/images/16/map.png b/html/images/16/map.png
new file mode 100755
index 0000000000..f90ef25ec7
Binary files /dev/null and b/html/images/16/map.png differ
diff --git a/html/images/16/map_add.png b/html/images/16/map_add.png
new file mode 100755
index 0000000000..2b72da06ae
Binary files /dev/null and b/html/images/16/map_add.png differ
diff --git a/html/images/16/map_delete.png b/html/images/16/map_delete.png
new file mode 100755
index 0000000000..e74402f9c4
Binary files /dev/null and b/html/images/16/map_delete.png differ
diff --git a/html/images/16/map_edit.png b/html/images/16/map_edit.png
new file mode 100755
index 0000000000..93d4d7e5ff
Binary files /dev/null and b/html/images/16/map_edit.png differ
diff --git a/html/images/16/map_go.png b/html/images/16/map_go.png
new file mode 100755
index 0000000000..11eab26db5
Binary files /dev/null and b/html/images/16/map_go.png differ
diff --git a/html/images/16/map_magnify.png b/html/images/16/map_magnify.png
new file mode 100755
index 0000000000..7184c9ddf0
Binary files /dev/null and b/html/images/16/map_magnify.png differ
diff --git a/html/images/16/medal_bronze_1.png b/html/images/16/medal_bronze_1.png
new file mode 100755
index 0000000000..5f8a6d65d5
Binary files /dev/null and b/html/images/16/medal_bronze_1.png differ
diff --git a/html/images/16/medal_bronze_2.png b/html/images/16/medal_bronze_2.png
new file mode 100755
index 0000000000..623d68c5d6
Binary files /dev/null and b/html/images/16/medal_bronze_2.png differ
diff --git a/html/images/16/medal_bronze_3.png b/html/images/16/medal_bronze_3.png
new file mode 100755
index 0000000000..ed3f43eb02
Binary files /dev/null and b/html/images/16/medal_bronze_3.png differ
diff --git a/html/images/16/medal_bronze_add.png b/html/images/16/medal_bronze_add.png
new file mode 100755
index 0000000000..8487b2c196
Binary files /dev/null and b/html/images/16/medal_bronze_add.png differ
diff --git a/html/images/16/medal_bronze_delete.png b/html/images/16/medal_bronze_delete.png
new file mode 100755
index 0000000000..d32aed727a
Binary files /dev/null and b/html/images/16/medal_bronze_delete.png differ
diff --git a/html/images/16/medal_gold_1.png b/html/images/16/medal_gold_1.png
new file mode 100755
index 0000000000..87584dc958
Binary files /dev/null and b/html/images/16/medal_gold_1.png differ
diff --git a/html/images/16/medal_gold_2.png b/html/images/16/medal_gold_2.png
new file mode 100755
index 0000000000..fa3a15dd67
Binary files /dev/null and b/html/images/16/medal_gold_2.png differ
diff --git a/html/images/16/medal_gold_3.png b/html/images/16/medal_gold_3.png
new file mode 100755
index 0000000000..ef1b08b920
Binary files /dev/null and b/html/images/16/medal_gold_3.png differ
diff --git a/html/images/16/medal_gold_add.png b/html/images/16/medal_gold_add.png
new file mode 100755
index 0000000000..dcade0d8db
Binary files /dev/null and b/html/images/16/medal_gold_add.png differ
diff --git a/html/images/16/medal_gold_delete.png b/html/images/16/medal_gold_delete.png
new file mode 100755
index 0000000000..84b06d5bfd
Binary files /dev/null and b/html/images/16/medal_gold_delete.png differ
diff --git a/html/images/16/medal_silver_1.png b/html/images/16/medal_silver_1.png
new file mode 100755
index 0000000000..75a64da325
Binary files /dev/null and b/html/images/16/medal_silver_1.png differ
diff --git a/html/images/16/medal_silver_2.png b/html/images/16/medal_silver_2.png
new file mode 100755
index 0000000000..2e0fe75c90
Binary files /dev/null and b/html/images/16/medal_silver_2.png differ
diff --git a/html/images/16/medal_silver_3.png b/html/images/16/medal_silver_3.png
new file mode 100755
index 0000000000..e385b54673
Binary files /dev/null and b/html/images/16/medal_silver_3.png differ
diff --git a/html/images/16/medal_silver_add.png b/html/images/16/medal_silver_add.png
new file mode 100755
index 0000000000..b0633fa0ef
Binary files /dev/null and b/html/images/16/medal_silver_add.png differ
diff --git a/html/images/16/medal_silver_delete.png b/html/images/16/medal_silver_delete.png
new file mode 100755
index 0000000000..06cab46790
Binary files /dev/null and b/html/images/16/medal_silver_delete.png differ
diff --git a/html/images/16/money.png b/html/images/16/money.png
new file mode 100755
index 0000000000..42c52d05f6
Binary files /dev/null and b/html/images/16/money.png differ
diff --git a/html/images/16/money_add.png b/html/images/16/money_add.png
new file mode 100755
index 0000000000..588fa9d078
Binary files /dev/null and b/html/images/16/money_add.png differ
diff --git a/html/images/16/money_delete.png b/html/images/16/money_delete.png
new file mode 100755
index 0000000000..eae2c524b0
Binary files /dev/null and b/html/images/16/money_delete.png differ
diff --git a/html/images/16/money_dollar.png b/html/images/16/money_dollar.png
new file mode 100755
index 0000000000..59af163824
Binary files /dev/null and b/html/images/16/money_dollar.png differ
diff --git a/html/images/16/money_euro.png b/html/images/16/money_euro.png
new file mode 100755
index 0000000000..b322ba9296
Binary files /dev/null and b/html/images/16/money_euro.png differ
diff --git a/html/images/16/money_pound.png b/html/images/16/money_pound.png
new file mode 100755
index 0000000000..b711364637
Binary files /dev/null and b/html/images/16/money_pound.png differ
diff --git a/html/images/16/money_yen.png b/html/images/16/money_yen.png
new file mode 100755
index 0000000000..228a6778bc
Binary files /dev/null and b/html/images/16/money_yen.png differ
diff --git a/html/images/16/monitor.png b/html/images/16/monitor.png
new file mode 100755
index 0000000000..d040bd0223
Binary files /dev/null and b/html/images/16/monitor.png differ
diff --git a/html/images/16/monitor_add.png b/html/images/16/monitor_add.png
new file mode 100755
index 0000000000..a818066400
Binary files /dev/null and b/html/images/16/monitor_add.png differ
diff --git a/html/images/16/monitor_delete.png b/html/images/16/monitor_delete.png
new file mode 100755
index 0000000000..37332563f2
Binary files /dev/null and b/html/images/16/monitor_delete.png differ
diff --git a/html/images/16/monitor_edit.png b/html/images/16/monitor_edit.png
new file mode 100755
index 0000000000..f772c562f4
Binary files /dev/null and b/html/images/16/monitor_edit.png differ
diff --git a/html/images/16/monitor_error.png b/html/images/16/monitor_error.png
new file mode 100755
index 0000000000..270c5018d2
Binary files /dev/null and b/html/images/16/monitor_error.png differ
diff --git a/html/images/16/monitor_go.png b/html/images/16/monitor_go.png
new file mode 100755
index 0000000000..8af3eda9f2
Binary files /dev/null and b/html/images/16/monitor_go.png differ
diff --git a/html/images/16/monitor_lightning.png b/html/images/16/monitor_lightning.png
new file mode 100755
index 0000000000..06e53a9d19
Binary files /dev/null and b/html/images/16/monitor_lightning.png differ
diff --git a/html/images/16/monitor_link.png b/html/images/16/monitor_link.png
new file mode 100755
index 0000000000..a014b025af
Binary files /dev/null and b/html/images/16/monitor_link.png differ
diff --git a/html/images/16/mouse.png b/html/images/16/mouse.png
new file mode 100755
index 0000000000..63a92fa91c
Binary files /dev/null and b/html/images/16/mouse.png differ
diff --git a/html/images/16/mouse_add.png b/html/images/16/mouse_add.png
new file mode 100755
index 0000000000..65bcab5206
Binary files /dev/null and b/html/images/16/mouse_add.png differ
diff --git a/html/images/16/mouse_delete.png b/html/images/16/mouse_delete.png
new file mode 100755
index 0000000000..72865668cf
Binary files /dev/null and b/html/images/16/mouse_delete.png differ
diff --git a/html/images/16/mouse_error.png b/html/images/16/mouse_error.png
new file mode 100755
index 0000000000..bcc156238b
Binary files /dev/null and b/html/images/16/mouse_error.png differ
diff --git a/html/images/16/music.png b/html/images/16/music.png
new file mode 100755
index 0000000000..a8b3ede3df
Binary files /dev/null and b/html/images/16/music.png differ
diff --git a/html/images/16/new.png b/html/images/16/new.png
new file mode 100755
index 0000000000..6a9bf03707
Binary files /dev/null and b/html/images/16/new.png differ
diff --git a/html/images/16/newspaper.png b/html/images/16/newspaper.png
new file mode 100755
index 0000000000..6a2ecce1b8
Binary files /dev/null and b/html/images/16/newspaper.png differ
diff --git a/html/images/16/newspaper_add.png b/html/images/16/newspaper_add.png
new file mode 100755
index 0000000000..8140e8c101
Binary files /dev/null and b/html/images/16/newspaper_add.png differ
diff --git a/html/images/16/newspaper_delete.png b/html/images/16/newspaper_delete.png
new file mode 100755
index 0000000000..bde96ce19a
Binary files /dev/null and b/html/images/16/newspaper_delete.png differ
diff --git a/html/images/16/newspaper_go.png b/html/images/16/newspaper_go.png
new file mode 100755
index 0000000000..fd6142871d
Binary files /dev/null and b/html/images/16/newspaper_go.png differ
diff --git a/html/images/16/newspaper_link.png b/html/images/16/newspaper_link.png
new file mode 100755
index 0000000000..99e57cba87
Binary files /dev/null and b/html/images/16/newspaper_link.png differ
diff --git a/html/images/16/note.png b/html/images/16/note.png
new file mode 100755
index 0000000000..244e6ca045
Binary files /dev/null and b/html/images/16/note.png differ
diff --git a/html/images/16/note_add.png b/html/images/16/note_add.png
new file mode 100755
index 0000000000..abdad91eb2
Binary files /dev/null and b/html/images/16/note_add.png differ
diff --git a/html/images/16/note_delete.png b/html/images/16/note_delete.png
new file mode 100755
index 0000000000..8a1f0ff56f
Binary files /dev/null and b/html/images/16/note_delete.png differ
diff --git a/html/images/16/note_edit.png b/html/images/16/note_edit.png
new file mode 100755
index 0000000000..291bfc7647
Binary files /dev/null and b/html/images/16/note_edit.png differ
diff --git a/html/images/16/note_error.png b/html/images/16/note_error.png
new file mode 100755
index 0000000000..896dadfd17
Binary files /dev/null and b/html/images/16/note_error.png differ
diff --git a/html/images/16/note_go.png b/html/images/16/note_go.png
new file mode 100755
index 0000000000..49e54fd872
Binary files /dev/null and b/html/images/16/note_go.png differ
diff --git a/html/images/16/overlays.png b/html/images/16/overlays.png
new file mode 100755
index 0000000000..ab3100b5c5
Binary files /dev/null and b/html/images/16/overlays.png differ
diff --git a/html/images/16/package.png b/html/images/16/package.png
new file mode 100755
index 0000000000..da3c2a2d74
Binary files /dev/null and b/html/images/16/package.png differ
diff --git a/html/images/16/package_add.png b/html/images/16/package_add.png
new file mode 100755
index 0000000000..9c8a9da4ae
Binary files /dev/null and b/html/images/16/package_add.png differ
diff --git a/html/images/16/package_delete.png b/html/images/16/package_delete.png
new file mode 100755
index 0000000000..86f7fbc299
Binary files /dev/null and b/html/images/16/package_delete.png differ
diff --git a/html/images/16/package_go.png b/html/images/16/package_go.png
new file mode 100755
index 0000000000..aace63ad6f
Binary files /dev/null and b/html/images/16/package_go.png differ
diff --git a/html/images/16/package_green.png b/html/images/16/package_green.png
new file mode 100755
index 0000000000..25b28bb6aa
Binary files /dev/null and b/html/images/16/package_green.png differ
diff --git a/html/images/16/package_link.png b/html/images/16/package_link.png
new file mode 100755
index 0000000000..48e7ab55f0
Binary files /dev/null and b/html/images/16/package_link.png differ
diff --git a/html/images/16/page.png b/html/images/16/page.png
new file mode 100755
index 0000000000..03ddd799fa
Binary files /dev/null and b/html/images/16/page.png differ
diff --git a/html/images/16/page_add.png b/html/images/16/page_add.png
new file mode 100755
index 0000000000..d5bfa0719b
Binary files /dev/null and b/html/images/16/page_add.png differ
diff --git a/html/images/16/page_attach.png b/html/images/16/page_attach.png
new file mode 100755
index 0000000000..89ee2da075
Binary files /dev/null and b/html/images/16/page_attach.png differ
diff --git a/html/images/16/page_code.png b/html/images/16/page_code.png
new file mode 100755
index 0000000000..f7ea90419d
Binary files /dev/null and b/html/images/16/page_code.png differ
diff --git a/html/images/16/page_copy.png b/html/images/16/page_copy.png
new file mode 100755
index 0000000000..195dc6d6c3
Binary files /dev/null and b/html/images/16/page_copy.png differ
diff --git a/html/images/16/page_delete.png b/html/images/16/page_delete.png
new file mode 100755
index 0000000000..3141467c67
Binary files /dev/null and b/html/images/16/page_delete.png differ
diff --git a/html/images/16/page_edit.png b/html/images/16/page_edit.png
new file mode 100755
index 0000000000..046811ed7a
Binary files /dev/null and b/html/images/16/page_edit.png differ
diff --git a/html/images/16/page_error.png b/html/images/16/page_error.png
new file mode 100755
index 0000000000..f07f449a44
Binary files /dev/null and b/html/images/16/page_error.png differ
diff --git a/html/images/16/page_excel.png b/html/images/16/page_excel.png
new file mode 100755
index 0000000000..eb6158eb5c
Binary files /dev/null and b/html/images/16/page_excel.png differ
diff --git a/html/images/16/page_find.png b/html/images/16/page_find.png
new file mode 100755
index 0000000000..2f193889f7
Binary files /dev/null and b/html/images/16/page_find.png differ
diff --git a/html/images/16/page_gear.png b/html/images/16/page_gear.png
new file mode 100755
index 0000000000..8e83281c5f
Binary files /dev/null and b/html/images/16/page_gear.png differ
diff --git a/html/images/16/page_go.png b/html/images/16/page_go.png
new file mode 100755
index 0000000000..80fe1ed0cc
Binary files /dev/null and b/html/images/16/page_go.png differ
diff --git a/html/images/16/page_green.png b/html/images/16/page_green.png
new file mode 100755
index 0000000000..de8e003f9f
Binary files /dev/null and b/html/images/16/page_green.png differ
diff --git a/html/images/16/page_key.png b/html/images/16/page_key.png
new file mode 100755
index 0000000000..d6626cb09e
Binary files /dev/null and b/html/images/16/page_key.png differ
diff --git a/html/images/16/page_lightning.png b/html/images/16/page_lightning.png
new file mode 100755
index 0000000000..7e568703d6
Binary files /dev/null and b/html/images/16/page_lightning.png differ
diff --git a/html/images/16/page_link.png b/html/images/16/page_link.png
new file mode 100755
index 0000000000..312eab0914
Binary files /dev/null and b/html/images/16/page_link.png differ
diff --git a/html/images/16/page_paintbrush.png b/html/images/16/page_paintbrush.png
new file mode 100755
index 0000000000..246a2f0b42
Binary files /dev/null and b/html/images/16/page_paintbrush.png differ
diff --git a/html/images/16/page_paste.png b/html/images/16/page_paste.png
new file mode 100755
index 0000000000..968f073fdd
Binary files /dev/null and b/html/images/16/page_paste.png differ
diff --git a/html/images/16/page_red.png b/html/images/16/page_red.png
new file mode 100755
index 0000000000..0b18247da5
Binary files /dev/null and b/html/images/16/page_red.png differ
diff --git a/html/images/16/page_refresh.png b/html/images/16/page_refresh.png
new file mode 100755
index 0000000000..cf347c7d46
Binary files /dev/null and b/html/images/16/page_refresh.png differ
diff --git a/html/images/16/page_save.png b/html/images/16/page_save.png
new file mode 100755
index 0000000000..caea546af5
Binary files /dev/null and b/html/images/16/page_save.png differ
diff --git a/html/images/16/page_white.png b/html/images/16/page_white.png
new file mode 100755
index 0000000000..8b8b1ca000
Binary files /dev/null and b/html/images/16/page_white.png differ
diff --git a/html/images/16/page_white_acrobat.png b/html/images/16/page_white_acrobat.png
new file mode 100755
index 0000000000..8f8095e46f
Binary files /dev/null and b/html/images/16/page_white_acrobat.png differ
diff --git a/html/images/16/page_white_actionscript.png b/html/images/16/page_white_actionscript.png
new file mode 100755
index 0000000000..159b240751
Binary files /dev/null and b/html/images/16/page_white_actionscript.png differ
diff --git a/html/images/16/page_white_add.png b/html/images/16/page_white_add.png
new file mode 100755
index 0000000000..aa23dde374
Binary files /dev/null and b/html/images/16/page_white_add.png differ
diff --git a/html/images/16/page_white_c.png b/html/images/16/page_white_c.png
new file mode 100755
index 0000000000..34a05cccf0
Binary files /dev/null and b/html/images/16/page_white_c.png differ
diff --git a/html/images/16/page_white_camera.png b/html/images/16/page_white_camera.png
new file mode 100755
index 0000000000..f501a593a4
Binary files /dev/null and b/html/images/16/page_white_camera.png differ
diff --git a/html/images/16/page_white_cd.png b/html/images/16/page_white_cd.png
new file mode 100755
index 0000000000..848bdaf3f1
Binary files /dev/null and b/html/images/16/page_white_cd.png differ
diff --git a/html/images/16/page_white_code.png b/html/images/16/page_white_code.png
new file mode 100755
index 0000000000..0c76bd1297
Binary files /dev/null and b/html/images/16/page_white_code.png differ
diff --git a/html/images/16/page_white_code_red.png b/html/images/16/page_white_code_red.png
new file mode 100755
index 0000000000..87a6914507
Binary files /dev/null and b/html/images/16/page_white_code_red.png differ
diff --git a/html/images/16/page_white_coldfusion.png b/html/images/16/page_white_coldfusion.png
new file mode 100755
index 0000000000..c66011fb0f
Binary files /dev/null and b/html/images/16/page_white_coldfusion.png differ
diff --git a/html/images/16/page_white_compressed.png b/html/images/16/page_white_compressed.png
new file mode 100755
index 0000000000..2b6b1007f3
Binary files /dev/null and b/html/images/16/page_white_compressed.png differ
diff --git a/html/images/16/page_white_copy.png b/html/images/16/page_white_copy.png
new file mode 100755
index 0000000000..a9f31a278e
Binary files /dev/null and b/html/images/16/page_white_copy.png differ
diff --git a/html/images/16/page_white_cplusplus.png b/html/images/16/page_white_cplusplus.png
new file mode 100755
index 0000000000..a87cf847cb
Binary files /dev/null and b/html/images/16/page_white_cplusplus.png differ
diff --git a/html/images/16/page_white_csharp.png b/html/images/16/page_white_csharp.png
new file mode 100755
index 0000000000..ffb8fc932f
Binary files /dev/null and b/html/images/16/page_white_csharp.png differ
diff --git a/html/images/16/page_white_cup.png b/html/images/16/page_white_cup.png
new file mode 100755
index 0000000000..0a7d6f4a6f
Binary files /dev/null and b/html/images/16/page_white_cup.png differ
diff --git a/html/images/16/page_white_database.png b/html/images/16/page_white_database.png
new file mode 100755
index 0000000000..bddba1f98c
Binary files /dev/null and b/html/images/16/page_white_database.png differ
diff --git a/html/images/16/page_white_delete.png b/html/images/16/page_white_delete.png
new file mode 100755
index 0000000000..af1ecaf298
Binary files /dev/null and b/html/images/16/page_white_delete.png differ
diff --git a/html/images/16/page_white_dvd.png b/html/images/16/page_white_dvd.png
new file mode 100755
index 0000000000..4cc537af0b
Binary files /dev/null and b/html/images/16/page_white_dvd.png differ
diff --git a/html/images/16/page_white_edit.png b/html/images/16/page_white_edit.png
new file mode 100755
index 0000000000..b93e77600d
Binary files /dev/null and b/html/images/16/page_white_edit.png differ
diff --git a/html/images/16/page_white_error.png b/html/images/16/page_white_error.png
new file mode 100755
index 0000000000..9fc5a0a103
Binary files /dev/null and b/html/images/16/page_white_error.png differ
diff --git a/html/images/16/page_white_excel.png b/html/images/16/page_white_excel.png
new file mode 100755
index 0000000000..b977d7e52e
Binary files /dev/null and b/html/images/16/page_white_excel.png differ
diff --git a/html/images/16/page_white_find.png b/html/images/16/page_white_find.png
new file mode 100755
index 0000000000..5818436370
Binary files /dev/null and b/html/images/16/page_white_find.png differ
diff --git a/html/images/16/page_white_flash.png b/html/images/16/page_white_flash.png
new file mode 100755
index 0000000000..5769120b1b
Binary files /dev/null and b/html/images/16/page_white_flash.png differ
diff --git a/html/images/16/page_white_freehand.png b/html/images/16/page_white_freehand.png
new file mode 100755
index 0000000000..8d719df520
Binary files /dev/null and b/html/images/16/page_white_freehand.png differ
diff --git a/html/images/16/page_white_gear.png b/html/images/16/page_white_gear.png
new file mode 100755
index 0000000000..106f5aa361
Binary files /dev/null and b/html/images/16/page_white_gear.png differ
diff --git a/html/images/16/page_white_get.png b/html/images/16/page_white_get.png
new file mode 100755
index 0000000000..e4a1ecba1b
Binary files /dev/null and b/html/images/16/page_white_get.png differ
diff --git a/html/images/16/page_white_go.png b/html/images/16/page_white_go.png
new file mode 100755
index 0000000000..7e62a924bc
Binary files /dev/null and b/html/images/16/page_white_go.png differ
diff --git a/html/images/16/page_white_h.png b/html/images/16/page_white_h.png
new file mode 100755
index 0000000000..e902abb076
Binary files /dev/null and b/html/images/16/page_white_h.png differ
diff --git a/html/images/16/page_white_horizontal.png b/html/images/16/page_white_horizontal.png
new file mode 100755
index 0000000000..1d2d0a4987
Binary files /dev/null and b/html/images/16/page_white_horizontal.png differ
diff --git a/html/images/16/page_white_key.png b/html/images/16/page_white_key.png
new file mode 100755
index 0000000000..d616484522
Binary files /dev/null and b/html/images/16/page_white_key.png differ
diff --git a/html/images/16/page_white_lightning.png b/html/images/16/page_white_lightning.png
new file mode 100755
index 0000000000..7215d1e8b0
Binary files /dev/null and b/html/images/16/page_white_lightning.png differ
diff --git a/html/images/16/page_white_link.png b/html/images/16/page_white_link.png
new file mode 100755
index 0000000000..bf7bd1c9bf
Binary files /dev/null and b/html/images/16/page_white_link.png differ
diff --git a/html/images/16/page_white_magnify.png b/html/images/16/page_white_magnify.png
new file mode 100755
index 0000000000..f6b74cc40f
Binary files /dev/null and b/html/images/16/page_white_magnify.png differ
diff --git a/html/images/16/page_white_medal.png b/html/images/16/page_white_medal.png
new file mode 100755
index 0000000000..d3fffb6d98
Binary files /dev/null and b/html/images/16/page_white_medal.png differ
diff --git a/html/images/16/page_white_office.png b/html/images/16/page_white_office.png
new file mode 100755
index 0000000000..a65bcb3e1e
Binary files /dev/null and b/html/images/16/page_white_office.png differ
diff --git a/html/images/16/page_white_paint.png b/html/images/16/page_white_paint.png
new file mode 100755
index 0000000000..23a37b891c
Binary files /dev/null and b/html/images/16/page_white_paint.png differ
diff --git a/html/images/16/page_white_paintbrush.png b/html/images/16/page_white_paintbrush.png
new file mode 100755
index 0000000000..f907e44b33
Binary files /dev/null and b/html/images/16/page_white_paintbrush.png differ
diff --git a/html/images/16/page_white_paste.png b/html/images/16/page_white_paste.png
new file mode 100755
index 0000000000..5b2cbb3fd0
Binary files /dev/null and b/html/images/16/page_white_paste.png differ
diff --git a/html/images/16/page_white_php.png b/html/images/16/page_white_php.png
new file mode 100755
index 0000000000..7868a25945
Binary files /dev/null and b/html/images/16/page_white_php.png differ
diff --git a/html/images/16/page_white_picture.png b/html/images/16/page_white_picture.png
new file mode 100755
index 0000000000..134b669368
Binary files /dev/null and b/html/images/16/page_white_picture.png differ
diff --git a/html/images/16/page_white_powerpoint.png b/html/images/16/page_white_powerpoint.png
new file mode 100755
index 0000000000..c4eff0387d
Binary files /dev/null and b/html/images/16/page_white_powerpoint.png differ
diff --git a/html/images/16/page_white_put.png b/html/images/16/page_white_put.png
new file mode 100755
index 0000000000..884ffd6f0a
Binary files /dev/null and b/html/images/16/page_white_put.png differ
diff --git a/html/images/16/page_white_ruby.png b/html/images/16/page_white_ruby.png
new file mode 100755
index 0000000000..f59b7c4365
Binary files /dev/null and b/html/images/16/page_white_ruby.png differ
diff --git a/html/images/16/page_white_stack.png b/html/images/16/page_white_stack.png
new file mode 100755
index 0000000000..44084add79
Binary files /dev/null and b/html/images/16/page_white_stack.png differ
diff --git a/html/images/16/page_white_star.png b/html/images/16/page_white_star.png
new file mode 100755
index 0000000000..3a1441c9a1
Binary files /dev/null and b/html/images/16/page_white_star.png differ
diff --git a/html/images/16/page_white_swoosh.png b/html/images/16/page_white_swoosh.png
new file mode 100755
index 0000000000..e7708292ad
Binary files /dev/null and b/html/images/16/page_white_swoosh.png differ
diff --git a/html/images/16/page_white_text.png b/html/images/16/page_white_text.png
new file mode 100755
index 0000000000..813f712f72
Binary files /dev/null and b/html/images/16/page_white_text.png differ
diff --git a/html/images/16/page_white_text_width.png b/html/images/16/page_white_text_width.png
new file mode 100755
index 0000000000..d9cf13256f
Binary files /dev/null and b/html/images/16/page_white_text_width.png differ
diff --git a/html/images/16/page_white_tux.png b/html/images/16/page_white_tux.png
new file mode 100755
index 0000000000..52699bfee0
Binary files /dev/null and b/html/images/16/page_white_tux.png differ
diff --git a/html/images/16/page_white_vector.png b/html/images/16/page_white_vector.png
new file mode 100755
index 0000000000..4a05955b33
Binary files /dev/null and b/html/images/16/page_white_vector.png differ
diff --git a/html/images/16/page_white_visualstudio.png b/html/images/16/page_white_visualstudio.png
new file mode 100755
index 0000000000..a0a433dfbb
Binary files /dev/null and b/html/images/16/page_white_visualstudio.png differ
diff --git a/html/images/16/page_white_width.png b/html/images/16/page_white_width.png
new file mode 100755
index 0000000000..1eb880947d
Binary files /dev/null and b/html/images/16/page_white_width.png differ
diff --git a/html/images/16/page_white_word.png b/html/images/16/page_white_word.png
new file mode 100755
index 0000000000..ae8ecbf476
Binary files /dev/null and b/html/images/16/page_white_word.png differ
diff --git a/html/images/16/page_white_world.png b/html/images/16/page_white_world.png
new file mode 100755
index 0000000000..6ed2490ed1
Binary files /dev/null and b/html/images/16/page_white_world.png differ
diff --git a/html/images/16/page_white_wrench.png b/html/images/16/page_white_wrench.png
new file mode 100755
index 0000000000..fecadd08af
Binary files /dev/null and b/html/images/16/page_white_wrench.png differ
diff --git a/html/images/16/page_white_zip.png b/html/images/16/page_white_zip.png
new file mode 100755
index 0000000000..fd4bbccdf1
Binary files /dev/null and b/html/images/16/page_white_zip.png differ
diff --git a/html/images/16/page_word.png b/html/images/16/page_word.png
new file mode 100755
index 0000000000..834cdfaf48
Binary files /dev/null and b/html/images/16/page_word.png differ
diff --git a/html/images/16/page_world.png b/html/images/16/page_world.png
new file mode 100755
index 0000000000..b8895ddecf
Binary files /dev/null and b/html/images/16/page_world.png differ
diff --git a/html/images/16/paintbrush.png b/html/images/16/paintbrush.png
new file mode 100755
index 0000000000..a3ecf87784
Binary files /dev/null and b/html/images/16/paintbrush.png differ
diff --git a/html/images/16/paintcan.png b/html/images/16/paintcan.png
new file mode 100755
index 0000000000..f82a8865a7
Binary files /dev/null and b/html/images/16/paintcan.png differ
diff --git a/html/images/16/palette.png b/html/images/16/palette.png
new file mode 100755
index 0000000000..73c5b3f243
Binary files /dev/null and b/html/images/16/palette.png differ
diff --git a/html/images/16/paste_plain.png b/html/images/16/paste_plain.png
new file mode 100755
index 0000000000..c0490eb797
Binary files /dev/null and b/html/images/16/paste_plain.png differ
diff --git a/html/images/16/paste_word.png b/html/images/16/paste_word.png
new file mode 100755
index 0000000000..f6b87f82cb
Binary files /dev/null and b/html/images/16/paste_word.png differ
diff --git a/html/images/16/pencil.png b/html/images/16/pencil.png
new file mode 100755
index 0000000000..0bfecd50ee
Binary files /dev/null and b/html/images/16/pencil.png differ
diff --git a/html/images/16/pencil_add.png b/html/images/16/pencil_add.png
new file mode 100755
index 0000000000..902bbe61b3
Binary files /dev/null and b/html/images/16/pencil_add.png differ
diff --git a/html/images/16/pencil_delete.png b/html/images/16/pencil_delete.png
new file mode 100755
index 0000000000..d8944e6ead
Binary files /dev/null and b/html/images/16/pencil_delete.png differ
diff --git a/html/images/16/pencil_go.png b/html/images/16/pencil_go.png
new file mode 100755
index 0000000000..937bded9d8
Binary files /dev/null and b/html/images/16/pencil_go.png differ
diff --git a/html/images/16/phone.png b/html/images/16/phone.png
new file mode 100755
index 0000000000..c39f162f85
Binary files /dev/null and b/html/images/16/phone.png differ
diff --git a/html/images/16/phone_add.png b/html/images/16/phone_add.png
new file mode 100755
index 0000000000..d3555e024e
Binary files /dev/null and b/html/images/16/phone_add.png differ
diff --git a/html/images/16/phone_delete.png b/html/images/16/phone_delete.png
new file mode 100755
index 0000000000..bbe4f8aba2
Binary files /dev/null and b/html/images/16/phone_delete.png differ
diff --git a/html/images/16/phone_sound.png b/html/images/16/phone_sound.png
new file mode 100755
index 0000000000..7fdf1c58c0
Binary files /dev/null and b/html/images/16/phone_sound.png differ
diff --git a/html/images/16/photo.png b/html/images/16/photo.png
new file mode 100755
index 0000000000..6c2aaaaaf3
Binary files /dev/null and b/html/images/16/photo.png differ
diff --git a/html/images/16/photo_add.png b/html/images/16/photo_add.png
new file mode 100755
index 0000000000..63cc355cbb
Binary files /dev/null and b/html/images/16/photo_add.png differ
diff --git a/html/images/16/photo_delete.png b/html/images/16/photo_delete.png
new file mode 100755
index 0000000000..18b67df43a
Binary files /dev/null and b/html/images/16/photo_delete.png differ
diff --git a/html/images/16/photo_link.png b/html/images/16/photo_link.png
new file mode 100755
index 0000000000..e6bb35fbf8
Binary files /dev/null and b/html/images/16/photo_link.png differ
diff --git a/html/images/16/photos.png b/html/images/16/photos.png
new file mode 100755
index 0000000000..8836fe6c07
Binary files /dev/null and b/html/images/16/photos.png differ
diff --git a/html/images/16/picture.png b/html/images/16/picture.png
new file mode 100755
index 0000000000..4a158fef7e
Binary files /dev/null and b/html/images/16/picture.png differ
diff --git a/html/images/16/picture_add.png b/html/images/16/picture_add.png
new file mode 100755
index 0000000000..d6d3f85644
Binary files /dev/null and b/html/images/16/picture_add.png differ
diff --git a/html/images/16/picture_delete.png b/html/images/16/picture_delete.png
new file mode 100755
index 0000000000..cca9f535d9
Binary files /dev/null and b/html/images/16/picture_delete.png differ
diff --git a/html/images/16/picture_edit.png b/html/images/16/picture_edit.png
new file mode 100755
index 0000000000..9a70c34998
Binary files /dev/null and b/html/images/16/picture_edit.png differ
diff --git a/html/images/16/picture_empty.png b/html/images/16/picture_empty.png
new file mode 100755
index 0000000000..abd2b9bb48
Binary files /dev/null and b/html/images/16/picture_empty.png differ
diff --git a/html/images/16/picture_error.png b/html/images/16/picture_error.png
new file mode 100755
index 0000000000..d41d90d64f
Binary files /dev/null and b/html/images/16/picture_error.png differ
diff --git a/html/images/16/picture_go.png b/html/images/16/picture_go.png
new file mode 100755
index 0000000000..27c63c5afe
Binary files /dev/null and b/html/images/16/picture_go.png differ
diff --git a/html/images/16/picture_key.png b/html/images/16/picture_key.png
new file mode 100755
index 0000000000..667086c0da
Binary files /dev/null and b/html/images/16/picture_key.png differ
diff --git a/html/images/16/picture_link.png b/html/images/16/picture_link.png
new file mode 100755
index 0000000000..42dca7440b
Binary files /dev/null and b/html/images/16/picture_link.png differ
diff --git a/html/images/16/picture_save.png b/html/images/16/picture_save.png
new file mode 100755
index 0000000000..777fb5d2e6
Binary files /dev/null and b/html/images/16/picture_save.png differ
diff --git a/html/images/16/pictures.png b/html/images/16/pictures.png
new file mode 100755
index 0000000000..d9591c13f6
Binary files /dev/null and b/html/images/16/pictures.png differ
diff --git a/html/images/16/pilcrow.png b/html/images/16/pilcrow.png
new file mode 100755
index 0000000000..95704fbab3
Binary files /dev/null and b/html/images/16/pilcrow.png differ
diff --git a/html/images/16/pill.png b/html/images/16/pill.png
new file mode 100755
index 0000000000..f2bdef6be8
Binary files /dev/null and b/html/images/16/pill.png differ
diff --git a/html/images/16/pill_add.png b/html/images/16/pill_add.png
new file mode 100755
index 0000000000..ac9c2df6a4
Binary files /dev/null and b/html/images/16/pill_add.png differ
diff --git a/html/images/16/pill_delete.png b/html/images/16/pill_delete.png
new file mode 100755
index 0000000000..c61592e8d8
Binary files /dev/null and b/html/images/16/pill_delete.png differ
diff --git a/html/images/16/pill_go.png b/html/images/16/pill_go.png
new file mode 100755
index 0000000000..e5c07d415d
Binary files /dev/null and b/html/images/16/pill_go.png differ
diff --git a/html/images/16/plugin.png b/html/images/16/plugin.png
new file mode 100755
index 0000000000..6187b15aec
Binary files /dev/null and b/html/images/16/plugin.png differ
diff --git a/html/images/16/plugin_add.png b/html/images/16/plugin_add.png
new file mode 100755
index 0000000000..ae43690ece
Binary files /dev/null and b/html/images/16/plugin_add.png differ
diff --git a/html/images/16/plugin_delete.png b/html/images/16/plugin_delete.png
new file mode 100755
index 0000000000..d9c3376d45
Binary files /dev/null and b/html/images/16/plugin_delete.png differ
diff --git a/html/images/16/plugin_disabled.png b/html/images/16/plugin_disabled.png
new file mode 100755
index 0000000000..f4f6be59cb
Binary files /dev/null and b/html/images/16/plugin_disabled.png differ
diff --git a/html/images/16/plugin_edit.png b/html/images/16/plugin_edit.png
new file mode 100755
index 0000000000..b6cb0ecf7e
Binary files /dev/null and b/html/images/16/plugin_edit.png differ
diff --git a/html/images/16/plugin_error.png b/html/images/16/plugin_error.png
new file mode 100755
index 0000000000..cff65d7fec
Binary files /dev/null and b/html/images/16/plugin_error.png differ
diff --git a/html/images/16/plugin_go.png b/html/images/16/plugin_go.png
new file mode 100755
index 0000000000..41da9913dc
Binary files /dev/null and b/html/images/16/plugin_go.png differ
diff --git a/html/images/16/plugin_link.png b/html/images/16/plugin_link.png
new file mode 100755
index 0000000000..445c18868e
Binary files /dev/null and b/html/images/16/plugin_link.png differ
diff --git a/html/images/16/printer.png b/html/images/16/printer.png
new file mode 100755
index 0000000000..a350d18715
Binary files /dev/null and b/html/images/16/printer.png differ
diff --git a/html/images/16/printer_add.png b/html/images/16/printer_add.png
new file mode 100755
index 0000000000..d228d0580d
Binary files /dev/null and b/html/images/16/printer_add.png differ
diff --git a/html/images/16/printer_delete.png b/html/images/16/printer_delete.png
new file mode 100755
index 0000000000..1d8605f2f7
Binary files /dev/null and b/html/images/16/printer_delete.png differ
diff --git a/html/images/16/printer_empty.png b/html/images/16/printer_empty.png
new file mode 100755
index 0000000000..94e8c1618c
Binary files /dev/null and b/html/images/16/printer_empty.png differ
diff --git a/html/images/16/printer_error.png b/html/images/16/printer_error.png
new file mode 100755
index 0000000000..279ebb0e53
Binary files /dev/null and b/html/images/16/printer_error.png differ
diff --git a/html/images/16/rainbow.png b/html/images/16/rainbow.png
new file mode 100755
index 0000000000..5ede989a4b
Binary files /dev/null and b/html/images/16/rainbow.png differ
diff --git a/html/images/16/report.png b/html/images/16/report.png
new file mode 100755
index 0000000000..779ad58efc
Binary files /dev/null and b/html/images/16/report.png differ
diff --git a/html/images/16/report_add.png b/html/images/16/report_add.png
new file mode 100755
index 0000000000..d5eac9bccd
Binary files /dev/null and b/html/images/16/report_add.png differ
diff --git a/html/images/16/report_delete.png b/html/images/16/report_delete.png
new file mode 100755
index 0000000000..dcce0b64da
Binary files /dev/null and b/html/images/16/report_delete.png differ
diff --git a/html/images/16/report_disk.png b/html/images/16/report_disk.png
new file mode 100755
index 0000000000..1c856cd615
Binary files /dev/null and b/html/images/16/report_disk.png differ
diff --git a/html/images/16/report_edit.png b/html/images/16/report_edit.png
new file mode 100755
index 0000000000..c61a6d8477
Binary files /dev/null and b/html/images/16/report_edit.png differ
diff --git a/html/images/16/report_go.png b/html/images/16/report_go.png
new file mode 100755
index 0000000000..f35a97938c
Binary files /dev/null and b/html/images/16/report_go.png differ
diff --git a/html/images/16/report_key.png b/html/images/16/report_key.png
new file mode 100755
index 0000000000..90b758e8fa
Binary files /dev/null and b/html/images/16/report_key.png differ
diff --git a/html/images/16/report_link.png b/html/images/16/report_link.png
new file mode 100755
index 0000000000..23f2611e99
Binary files /dev/null and b/html/images/16/report_link.png differ
diff --git a/html/images/16/report_magnify.png b/html/images/16/report_magnify.png
new file mode 100755
index 0000000000..aeaa889534
Binary files /dev/null and b/html/images/16/report_magnify.png differ
diff --git a/html/images/16/report_picture.png b/html/images/16/report_picture.png
new file mode 100755
index 0000000000..3a9a7e5eb9
Binary files /dev/null and b/html/images/16/report_picture.png differ
diff --git a/html/images/16/report_user.png b/html/images/16/report_user.png
new file mode 100755
index 0000000000..7766edd745
Binary files /dev/null and b/html/images/16/report_user.png differ
diff --git a/html/images/16/report_word.png b/html/images/16/report_word.png
new file mode 100755
index 0000000000..9951342485
Binary files /dev/null and b/html/images/16/report_word.png differ
diff --git a/html/images/16/resultset_first.png b/html/images/16/resultset_first.png
new file mode 100755
index 0000000000..b03eaf8b54
Binary files /dev/null and b/html/images/16/resultset_first.png differ
diff --git a/html/images/16/resultset_last.png b/html/images/16/resultset_last.png
new file mode 100755
index 0000000000..8ec8947847
Binary files /dev/null and b/html/images/16/resultset_last.png differ
diff --git a/html/images/16/resultset_next.png b/html/images/16/resultset_next.png
new file mode 100755
index 0000000000..e252606d3e
Binary files /dev/null and b/html/images/16/resultset_next.png differ
diff --git a/html/images/16/resultset_previous.png b/html/images/16/resultset_previous.png
new file mode 100755
index 0000000000..18f9cc1094
Binary files /dev/null and b/html/images/16/resultset_previous.png differ
diff --git a/html/images/16/rosette.png b/html/images/16/rosette.png
new file mode 100755
index 0000000000..f233bc7705
Binary files /dev/null and b/html/images/16/rosette.png differ
diff --git a/html/images/16/rss.png b/html/images/16/rss.png
new file mode 100755
index 0000000000..1dc6ff30ba
Binary files /dev/null and b/html/images/16/rss.png differ
diff --git a/html/images/16/rss_add.png b/html/images/16/rss_add.png
new file mode 100755
index 0000000000..b590beb738
Binary files /dev/null and b/html/images/16/rss_add.png differ
diff --git a/html/images/16/rss_delete.png b/html/images/16/rss_delete.png
new file mode 100755
index 0000000000..9deb738ded
Binary files /dev/null and b/html/images/16/rss_delete.png differ
diff --git a/html/images/16/rss_go.png b/html/images/16/rss_go.png
new file mode 100755
index 0000000000..43a86bff65
Binary files /dev/null and b/html/images/16/rss_go.png differ
diff --git a/html/images/16/rss_valid.png b/html/images/16/rss_valid.png
new file mode 100755
index 0000000000..a6d0b0e872
Binary files /dev/null and b/html/images/16/rss_valid.png differ
diff --git a/html/images/16/ruby.png b/html/images/16/ruby.png
new file mode 100755
index 0000000000..f763a16880
Binary files /dev/null and b/html/images/16/ruby.png differ
diff --git a/html/images/16/ruby_add.png b/html/images/16/ruby_add.png
new file mode 100755
index 0000000000..a2cd648f67
Binary files /dev/null and b/html/images/16/ruby_add.png differ
diff --git a/html/images/16/ruby_delete.png b/html/images/16/ruby_delete.png
new file mode 100755
index 0000000000..30022630d8
Binary files /dev/null and b/html/images/16/ruby_delete.png differ
diff --git a/html/images/16/ruby_gear.png b/html/images/16/ruby_gear.png
new file mode 100755
index 0000000000..4a10590b4c
Binary files /dev/null and b/html/images/16/ruby_gear.png differ
diff --git a/html/images/16/ruby_get.png b/html/images/16/ruby_get.png
new file mode 100755
index 0000000000..f5203c7e94
Binary files /dev/null and b/html/images/16/ruby_get.png differ
diff --git a/html/images/16/ruby_go.png b/html/images/16/ruby_go.png
new file mode 100755
index 0000000000..d8d276e3cd
Binary files /dev/null and b/html/images/16/ruby_go.png differ
diff --git a/html/images/16/ruby_key.png b/html/images/16/ruby_key.png
new file mode 100755
index 0000000000..451cfebe27
Binary files /dev/null and b/html/images/16/ruby_key.png differ
diff --git a/html/images/16/ruby_link.png b/html/images/16/ruby_link.png
new file mode 100755
index 0000000000..bf4be526fb
Binary files /dev/null and b/html/images/16/ruby_link.png differ
diff --git a/html/images/16/ruby_put.png b/html/images/16/ruby_put.png
new file mode 100755
index 0000000000..e026323c25
Binary files /dev/null and b/html/images/16/ruby_put.png differ
diff --git a/html/images/16/script.png b/html/images/16/script.png
new file mode 100755
index 0000000000..0f9ed4d483
Binary files /dev/null and b/html/images/16/script.png differ
diff --git a/html/images/16/script_add.png b/html/images/16/script_add.png
new file mode 100755
index 0000000000..d650552d96
Binary files /dev/null and b/html/images/16/script_add.png differ
diff --git a/html/images/16/script_code.png b/html/images/16/script_code.png
new file mode 100755
index 0000000000..63fe6ceff5
Binary files /dev/null and b/html/images/16/script_code.png differ
diff --git a/html/images/16/script_code_red.png b/html/images/16/script_code_red.png
new file mode 100755
index 0000000000..8fcf0f09ae
Binary files /dev/null and b/html/images/16/script_code_red.png differ
diff --git a/html/images/16/script_delete.png b/html/images/16/script_delete.png
new file mode 100755
index 0000000000..e6500ced7b
Binary files /dev/null and b/html/images/16/script_delete.png differ
diff --git a/html/images/16/script_edit.png b/html/images/16/script_edit.png
new file mode 100755
index 0000000000..b4d31ce282
Binary files /dev/null and b/html/images/16/script_edit.png differ
diff --git a/html/images/16/script_error.png b/html/images/16/script_error.png
new file mode 100755
index 0000000000..04919548e6
Binary files /dev/null and b/html/images/16/script_error.png differ
diff --git a/html/images/16/script_gear.png b/html/images/16/script_gear.png
new file mode 100755
index 0000000000..56fcf84a85
Binary files /dev/null and b/html/images/16/script_gear.png differ
diff --git a/html/images/16/script_go.png b/html/images/16/script_go.png
new file mode 100755
index 0000000000..8e154e2313
Binary files /dev/null and b/html/images/16/script_go.png differ
diff --git a/html/images/16/script_key.png b/html/images/16/script_key.png
new file mode 100755
index 0000000000..49bb24d71d
Binary files /dev/null and b/html/images/16/script_key.png differ
diff --git a/html/images/16/script_lightning.png b/html/images/16/script_lightning.png
new file mode 100755
index 0000000000..b3fa18ce29
Binary files /dev/null and b/html/images/16/script_lightning.png differ
diff --git a/html/images/16/script_link.png b/html/images/16/script_link.png
new file mode 100755
index 0000000000..bdeb9852b2
Binary files /dev/null and b/html/images/16/script_link.png differ
diff --git a/html/images/16/script_palette.png b/html/images/16/script_palette.png
new file mode 100755
index 0000000000..6d46962dcf
Binary files /dev/null and b/html/images/16/script_palette.png differ
diff --git a/html/images/16/script_save.png b/html/images/16/script_save.png
new file mode 100755
index 0000000000..36216d8276
Binary files /dev/null and b/html/images/16/script_save.png differ
diff --git a/html/images/16/server.png b/html/images/16/server.png
new file mode 100755
index 0000000000..720a237c73
Binary files /dev/null and b/html/images/16/server.png differ
diff --git a/html/images/16/server_add.png b/html/images/16/server_add.png
new file mode 100755
index 0000000000..3f10a3a9f4
Binary files /dev/null and b/html/images/16/server_add.png differ
diff --git a/html/images/16/server_chart.png b/html/images/16/server_chart.png
new file mode 100755
index 0000000000..1128d3f338
Binary files /dev/null and b/html/images/16/server_chart.png differ
diff --git a/html/images/16/server_compressed.png b/html/images/16/server_compressed.png
new file mode 100755
index 0000000000..bf49fad9de
Binary files /dev/null and b/html/images/16/server_compressed.png differ
diff --git a/html/images/16/server_connect.png b/html/images/16/server_connect.png
new file mode 100755
index 0000000000..49b269145a
Binary files /dev/null and b/html/images/16/server_connect.png differ
diff --git a/html/images/16/server_database.png b/html/images/16/server_database.png
new file mode 100755
index 0000000000..b24e826c70
Binary files /dev/null and b/html/images/16/server_database.png differ
diff --git a/html/images/16/server_delete.png b/html/images/16/server_delete.png
new file mode 100755
index 0000000000..61e740fe18
Binary files /dev/null and b/html/images/16/server_delete.png differ
diff --git a/html/images/16/server_edit.png b/html/images/16/server_edit.png
new file mode 100755
index 0000000000..dc76253713
Binary files /dev/null and b/html/images/16/server_edit.png differ
diff --git a/html/images/16/server_error.png b/html/images/16/server_error.png
new file mode 100755
index 0000000000..f640256399
Binary files /dev/null and b/html/images/16/server_error.png differ
diff --git a/html/images/16/server_go.png b/html/images/16/server_go.png
new file mode 100755
index 0000000000..540c8e2689
Binary files /dev/null and b/html/images/16/server_go.png differ
diff --git a/html/images/16/server_key.png b/html/images/16/server_key.png
new file mode 100755
index 0000000000..ecd517425f
Binary files /dev/null and b/html/images/16/server_key.png differ
diff --git a/html/images/16/server_lightning.png b/html/images/16/server_lightning.png
new file mode 100755
index 0000000000..b0f4e46cdf
Binary files /dev/null and b/html/images/16/server_lightning.png differ
diff --git a/html/images/16/server_link.png b/html/images/16/server_link.png
new file mode 100755
index 0000000000..e8821dfd88
Binary files /dev/null and b/html/images/16/server_link.png differ
diff --git a/html/images/16/server_uncompressed.png b/html/images/16/server_uncompressed.png
new file mode 100755
index 0000000000..86e8325b9c
Binary files /dev/null and b/html/images/16/server_uncompressed.png differ
diff --git a/html/images/16/shading.png b/html/images/16/shading.png
new file mode 100755
index 0000000000..09275f9c09
Binary files /dev/null and b/html/images/16/shading.png differ
diff --git a/html/images/16/shape_align_bottom.png b/html/images/16/shape_align_bottom.png
new file mode 100755
index 0000000000..55d2694008
Binary files /dev/null and b/html/images/16/shape_align_bottom.png differ
diff --git a/html/images/16/shape_align_center.png b/html/images/16/shape_align_center.png
new file mode 100755
index 0000000000..efe9a98e5f
Binary files /dev/null and b/html/images/16/shape_align_center.png differ
diff --git a/html/images/16/shape_align_left.png b/html/images/16/shape_align_left.png
new file mode 100755
index 0000000000..aaedc41b5f
Binary files /dev/null and b/html/images/16/shape_align_left.png differ
diff --git a/html/images/16/shape_align_middle.png b/html/images/16/shape_align_middle.png
new file mode 100755
index 0000000000..d350dd88fb
Binary files /dev/null and b/html/images/16/shape_align_middle.png differ
diff --git a/html/images/16/shape_align_right.png b/html/images/16/shape_align_right.png
new file mode 100755
index 0000000000..ff556b6a91
Binary files /dev/null and b/html/images/16/shape_align_right.png differ
diff --git a/html/images/16/shape_align_top.png b/html/images/16/shape_align_top.png
new file mode 100755
index 0000000000..1181b43fb2
Binary files /dev/null and b/html/images/16/shape_align_top.png differ
diff --git a/html/images/16/shape_flip_horizontal.png b/html/images/16/shape_flip_horizontal.png
new file mode 100755
index 0000000000..8667c81f8b
Binary files /dev/null and b/html/images/16/shape_flip_horizontal.png differ
diff --git a/html/images/16/shape_flip_vertical.png b/html/images/16/shape_flip_vertical.png
new file mode 100755
index 0000000000..0bd66d19ba
Binary files /dev/null and b/html/images/16/shape_flip_vertical.png differ
diff --git a/html/images/16/shape_group.png b/html/images/16/shape_group.png
new file mode 100755
index 0000000000..bb2ff516d3
Binary files /dev/null and b/html/images/16/shape_group.png differ
diff --git a/html/images/16/shape_handles.png b/html/images/16/shape_handles.png
new file mode 100755
index 0000000000..ce27fe3a03
Binary files /dev/null and b/html/images/16/shape_handles.png differ
diff --git a/html/images/16/shape_move_back.png b/html/images/16/shape_move_back.png
new file mode 100755
index 0000000000..a216ffd36c
Binary files /dev/null and b/html/images/16/shape_move_back.png differ
diff --git a/html/images/16/shape_move_backwards.png b/html/images/16/shape_move_backwards.png
new file mode 100755
index 0000000000..ee3f9b27ac
Binary files /dev/null and b/html/images/16/shape_move_backwards.png differ
diff --git a/html/images/16/shape_move_forwards.png b/html/images/16/shape_move_forwards.png
new file mode 100755
index 0000000000..cfe44932c3
Binary files /dev/null and b/html/images/16/shape_move_forwards.png differ
diff --git a/html/images/16/shape_move_front.png b/html/images/16/shape_move_front.png
new file mode 100755
index 0000000000..b4a4e3b785
Binary files /dev/null and b/html/images/16/shape_move_front.png differ
diff --git a/html/images/16/shape_rotate_anticlockwise.png b/html/images/16/shape_rotate_anticlockwise.png
new file mode 100755
index 0000000000..07a30206c2
Binary files /dev/null and b/html/images/16/shape_rotate_anticlockwise.png differ
diff --git a/html/images/16/shape_rotate_clockwise.png b/html/images/16/shape_rotate_clockwise.png
new file mode 100755
index 0000000000..b99db7d701
Binary files /dev/null and b/html/images/16/shape_rotate_clockwise.png differ
diff --git a/html/images/16/shape_square.png b/html/images/16/shape_square.png
new file mode 100755
index 0000000000..33af046098
Binary files /dev/null and b/html/images/16/shape_square.png differ
diff --git a/html/images/16/shape_square_add.png b/html/images/16/shape_square_add.png
new file mode 100755
index 0000000000..31edfce597
Binary files /dev/null and b/html/images/16/shape_square_add.png differ
diff --git a/html/images/16/shape_square_delete.png b/html/images/16/shape_square_delete.png
new file mode 100755
index 0000000000..ede912de03
Binary files /dev/null and b/html/images/16/shape_square_delete.png differ
diff --git a/html/images/16/shape_square_edit.png b/html/images/16/shape_square_edit.png
new file mode 100755
index 0000000000..d28dc6b1a4
Binary files /dev/null and b/html/images/16/shape_square_edit.png differ
diff --git a/html/images/16/shape_square_error.png b/html/images/16/shape_square_error.png
new file mode 100755
index 0000000000..0d0dcfa9a6
Binary files /dev/null and b/html/images/16/shape_square_error.png differ
diff --git a/html/images/16/shape_square_go.png b/html/images/16/shape_square_go.png
new file mode 100755
index 0000000000..5a2ad90191
Binary files /dev/null and b/html/images/16/shape_square_go.png differ
diff --git a/html/images/16/shape_square_key.png b/html/images/16/shape_square_key.png
new file mode 100755
index 0000000000..c34b982a07
Binary files /dev/null and b/html/images/16/shape_square_key.png differ
diff --git a/html/images/16/shape_square_link.png b/html/images/16/shape_square_link.png
new file mode 100755
index 0000000000..b885fcc606
Binary files /dev/null and b/html/images/16/shape_square_link.png differ
diff --git a/html/images/16/shape_ungroup.png b/html/images/16/shape_ungroup.png
new file mode 100755
index 0000000000..3a6f369a50
Binary files /dev/null and b/html/images/16/shape_ungroup.png differ
diff --git a/html/images/16/shield.png b/html/images/16/shield.png
new file mode 100755
index 0000000000..3cb4e25789
Binary files /dev/null and b/html/images/16/shield.png differ
diff --git a/html/images/16/shield_add.png b/html/images/16/shield_add.png
new file mode 100755
index 0000000000..e20a1b4ab6
Binary files /dev/null and b/html/images/16/shield_add.png differ
diff --git a/html/images/16/shield_delete.png b/html/images/16/shield_delete.png
new file mode 100755
index 0000000000..22823a70d9
Binary files /dev/null and b/html/images/16/shield_delete.png differ
diff --git a/html/images/16/shield_go.png b/html/images/16/shield_go.png
new file mode 100755
index 0000000000..e9bd852247
Binary files /dev/null and b/html/images/16/shield_go.png differ
diff --git a/html/images/16/sitemap.png b/html/images/16/sitemap.png
new file mode 100755
index 0000000000..ca779f3237
Binary files /dev/null and b/html/images/16/sitemap.png differ
diff --git a/html/images/16/sitemap_color.png b/html/images/16/sitemap_color.png
new file mode 100755
index 0000000000..c64582bcd4
Binary files /dev/null and b/html/images/16/sitemap_color.png differ
diff --git a/html/images/16/sound.png b/html/images/16/sound.png
new file mode 100755
index 0000000000..6056d234a9
Binary files /dev/null and b/html/images/16/sound.png differ
diff --git a/html/images/16/sound_add.png b/html/images/16/sound_add.png
new file mode 100755
index 0000000000..965c503c60
Binary files /dev/null and b/html/images/16/sound_add.png differ
diff --git a/html/images/16/sound_delete.png b/html/images/16/sound_delete.png
new file mode 100755
index 0000000000..ab9577aa13
Binary files /dev/null and b/html/images/16/sound_delete.png differ
diff --git a/html/images/16/sound_low.png b/html/images/16/sound_low.png
new file mode 100755
index 0000000000..4d918633fb
Binary files /dev/null and b/html/images/16/sound_low.png differ
diff --git a/html/images/16/sound_mute.png b/html/images/16/sound_mute.png
new file mode 100755
index 0000000000..b652d2a71f
Binary files /dev/null and b/html/images/16/sound_mute.png differ
diff --git a/html/images/16/sound_none.png b/html/images/16/sound_none.png
new file mode 100755
index 0000000000..b497ebd54a
Binary files /dev/null and b/html/images/16/sound_none.png differ
diff --git a/html/images/16/spellcheck.png b/html/images/16/spellcheck.png
new file mode 100755
index 0000000000..ebc632d9bc
Binary files /dev/null and b/html/images/16/spellcheck.png differ
diff --git a/html/images/16/sport_8ball.png b/html/images/16/sport_8ball.png
new file mode 100755
index 0000000000..4f627b7689
Binary files /dev/null and b/html/images/16/sport_8ball.png differ
diff --git a/html/images/16/sport_basketball.png b/html/images/16/sport_basketball.png
new file mode 100755
index 0000000000..f7a000b9ae
Binary files /dev/null and b/html/images/16/sport_basketball.png differ
diff --git a/html/images/16/sport_football.png b/html/images/16/sport_football.png
new file mode 100755
index 0000000000..199f0f7f1c
Binary files /dev/null and b/html/images/16/sport_football.png differ
diff --git a/html/images/16/sport_golf.png b/html/images/16/sport_golf.png
new file mode 100755
index 0000000000..e21fa44c5d
Binary files /dev/null and b/html/images/16/sport_golf.png differ
diff --git a/html/images/16/sport_raquet.png b/html/images/16/sport_raquet.png
new file mode 100755
index 0000000000..f5e0f0c2ce
Binary files /dev/null and b/html/images/16/sport_raquet.png differ
diff --git a/html/images/16/sport_shuttlecock.png b/html/images/16/sport_shuttlecock.png
new file mode 100755
index 0000000000..917287fa0b
Binary files /dev/null and b/html/images/16/sport_shuttlecock.png differ
diff --git a/html/images/16/sport_soccer.png b/html/images/16/sport_soccer.png
new file mode 100755
index 0000000000..3eb1828b16
Binary files /dev/null and b/html/images/16/sport_soccer.png differ
diff --git a/html/images/16/sport_tennis.png b/html/images/16/sport_tennis.png
new file mode 100755
index 0000000000..e88a6efa1d
Binary files /dev/null and b/html/images/16/sport_tennis.png differ
diff --git a/html/images/16/star.png b/html/images/16/star.png
new file mode 100755
index 0000000000..b88c857895
Binary files /dev/null and b/html/images/16/star.png differ
diff --git a/html/images/16/status_away.png b/html/images/16/status_away.png
new file mode 100755
index 0000000000..70bcbccaae
Binary files /dev/null and b/html/images/16/status_away.png differ
diff --git a/html/images/16/status_busy.png b/html/images/16/status_busy.png
new file mode 100755
index 0000000000..987c806fff
Binary files /dev/null and b/html/images/16/status_busy.png differ
diff --git a/html/images/16/status_offline.png b/html/images/16/status_offline.png
new file mode 100755
index 0000000000..a88261a65e
Binary files /dev/null and b/html/images/16/status_offline.png differ
diff --git a/html/images/16/status_online.png b/html/images/16/status_online.png
new file mode 100755
index 0000000000..947bd4b62c
Binary files /dev/null and b/html/images/16/status_online.png differ
diff --git a/html/images/16/stop.png b/html/images/16/stop.png
new file mode 100755
index 0000000000..0cfd585963
Binary files /dev/null and b/html/images/16/stop.png differ
diff --git a/html/images/16/style.png b/html/images/16/style.png
new file mode 100755
index 0000000000..81e41de7d3
Binary files /dev/null and b/html/images/16/style.png differ
diff --git a/html/images/16/style_add.png b/html/images/16/style_add.png
new file mode 100755
index 0000000000..e0369c6be9
Binary files /dev/null and b/html/images/16/style_add.png differ
diff --git a/html/images/16/style_delete.png b/html/images/16/style_delete.png
new file mode 100755
index 0000000000..640f187ece
Binary files /dev/null and b/html/images/16/style_delete.png differ
diff --git a/html/images/16/style_edit.png b/html/images/16/style_edit.png
new file mode 100755
index 0000000000..25bb5b677f
Binary files /dev/null and b/html/images/16/style_edit.png differ
diff --git a/html/images/16/style_go.png b/html/images/16/style_go.png
new file mode 100755
index 0000000000..25d6181ac9
Binary files /dev/null and b/html/images/16/style_go.png differ
diff --git a/html/images/16/sum.png b/html/images/16/sum.png
new file mode 100755
index 0000000000..fd7b32e43b
Binary files /dev/null and b/html/images/16/sum.png differ
diff --git a/html/images/16/tab.png b/html/images/16/tab.png
new file mode 100755
index 0000000000..3d8207fd74
Binary files /dev/null and b/html/images/16/tab.png differ
diff --git a/html/images/16/tab_add.png b/html/images/16/tab_add.png
new file mode 100755
index 0000000000..d3b99364a0
Binary files /dev/null and b/html/images/16/tab_add.png differ
diff --git a/html/images/16/tab_delete.png b/html/images/16/tab_delete.png
new file mode 100755
index 0000000000..100da2f1ad
Binary files /dev/null and b/html/images/16/tab_delete.png differ
diff --git a/html/images/16/tab_edit.png b/html/images/16/tab_edit.png
new file mode 100755
index 0000000000..4c09c0fd70
Binary files /dev/null and b/html/images/16/tab_edit.png differ
diff --git a/html/images/16/tab_go.png b/html/images/16/tab_go.png
new file mode 100755
index 0000000000..844ce04bd6
Binary files /dev/null and b/html/images/16/tab_go.png differ
diff --git a/html/images/16/table.png b/html/images/16/table.png
new file mode 100755
index 0000000000..abcd93689a
Binary files /dev/null and b/html/images/16/table.png differ
diff --git a/html/images/16/table_add.png b/html/images/16/table_add.png
new file mode 100755
index 0000000000..2a3e5c4df1
Binary files /dev/null and b/html/images/16/table_add.png differ
diff --git a/html/images/16/table_delete.png b/html/images/16/table_delete.png
new file mode 100755
index 0000000000..b85916d921
Binary files /dev/null and b/html/images/16/table_delete.png differ
diff --git a/html/images/16/table_edit.png b/html/images/16/table_edit.png
new file mode 100755
index 0000000000..bfcb0249af
Binary files /dev/null and b/html/images/16/table_edit.png differ
diff --git a/html/images/16/table_error.png b/html/images/16/table_error.png
new file mode 100755
index 0000000000..589e92b554
Binary files /dev/null and b/html/images/16/table_error.png differ
diff --git a/html/images/16/table_gear.png b/html/images/16/table_gear.png
new file mode 100755
index 0000000000..cfc2702acd
Binary files /dev/null and b/html/images/16/table_gear.png differ
diff --git a/html/images/16/table_go.png b/html/images/16/table_go.png
new file mode 100755
index 0000000000..0528dfa24e
Binary files /dev/null and b/html/images/16/table_go.png differ
diff --git a/html/images/16/table_key.png b/html/images/16/table_key.png
new file mode 100755
index 0000000000..34e23e24e8
Binary files /dev/null and b/html/images/16/table_key.png differ
diff --git a/html/images/16/table_lightning.png b/html/images/16/table_lightning.png
new file mode 100755
index 0000000000..612612b5e4
Binary files /dev/null and b/html/images/16/table_lightning.png differ
diff --git a/html/images/16/table_link.png b/html/images/16/table_link.png
new file mode 100755
index 0000000000..decac8a62e
Binary files /dev/null and b/html/images/16/table_link.png differ
diff --git a/html/images/16/table_multiple.png b/html/images/16/table_multiple.png
new file mode 100755
index 0000000000..d76448e34a
Binary files /dev/null and b/html/images/16/table_multiple.png differ
diff --git a/html/images/16/table_refresh.png b/html/images/16/table_refresh.png
new file mode 100755
index 0000000000..ab92010c2c
Binary files /dev/null and b/html/images/16/table_refresh.png differ
diff --git a/html/images/16/table_relationship.png b/html/images/16/table_relationship.png
new file mode 100755
index 0000000000..28b8505c0e
Binary files /dev/null and b/html/images/16/table_relationship.png differ
diff --git a/html/images/16/table_row_delete.png b/html/images/16/table_row_delete.png
new file mode 100755
index 0000000000..54c69691ed
Binary files /dev/null and b/html/images/16/table_row_delete.png differ
diff --git a/html/images/16/table_row_insert.png b/html/images/16/table_row_insert.png
new file mode 100755
index 0000000000..ff5925efd4
Binary files /dev/null and b/html/images/16/table_row_insert.png differ
diff --git a/html/images/16/table_save.png b/html/images/16/table_save.png
new file mode 100755
index 0000000000..25b74d18f7
Binary files /dev/null and b/html/images/16/table_save.png differ
diff --git a/html/images/16/table_sort.png b/html/images/16/table_sort.png
new file mode 100755
index 0000000000..ed6785a6a3
Binary files /dev/null and b/html/images/16/table_sort.png differ
diff --git a/html/images/16/tag.png b/html/images/16/tag.png
new file mode 100755
index 0000000000..e093032a77
Binary files /dev/null and b/html/images/16/tag.png differ
diff --git a/html/images/16/tag_blue.png b/html/images/16/tag_blue.png
new file mode 100755
index 0000000000..9757fc6ed6
Binary files /dev/null and b/html/images/16/tag_blue.png differ
diff --git a/html/images/16/tag_blue_add.png b/html/images/16/tag_blue_add.png
new file mode 100755
index 0000000000..f135248f82
Binary files /dev/null and b/html/images/16/tag_blue_add.png differ
diff --git a/html/images/16/tag_blue_delete.png b/html/images/16/tag_blue_delete.png
new file mode 100755
index 0000000000..9fbae67250
Binary files /dev/null and b/html/images/16/tag_blue_delete.png differ
diff --git a/html/images/16/tag_blue_edit.png b/html/images/16/tag_blue_edit.png
new file mode 100755
index 0000000000..2a9f6266eb
Binary files /dev/null and b/html/images/16/tag_blue_edit.png differ
diff --git a/html/images/16/tag_green.png b/html/images/16/tag_green.png
new file mode 100755
index 0000000000..83ec984bd7
Binary files /dev/null and b/html/images/16/tag_green.png differ
diff --git a/html/images/16/tag_orange.png b/html/images/16/tag_orange.png
new file mode 100755
index 0000000000..454a59f30c
Binary files /dev/null and b/html/images/16/tag_orange.png differ
diff --git a/html/images/16/tag_pink.png b/html/images/16/tag_pink.png
new file mode 100755
index 0000000000..76e2296cc1
Binary files /dev/null and b/html/images/16/tag_pink.png differ
diff --git a/html/images/16/tag_purple.png b/html/images/16/tag_purple.png
new file mode 100755
index 0000000000..ebaf0e8743
Binary files /dev/null and b/html/images/16/tag_purple.png differ
diff --git a/html/images/16/tag_red.png b/html/images/16/tag_red.png
new file mode 100755
index 0000000000..6ebb37d25f
Binary files /dev/null and b/html/images/16/tag_red.png differ
diff --git a/html/images/16/tag_yellow.png b/html/images/16/tag_yellow.png
new file mode 100755
index 0000000000..83d12924ff
Binary files /dev/null and b/html/images/16/tag_yellow.png differ
diff --git a/html/images/16/telephone.png b/html/images/16/telephone.png
new file mode 100755
index 0000000000..cecc436fbd
Binary files /dev/null and b/html/images/16/telephone.png differ
diff --git a/html/images/16/telephone_add.png b/html/images/16/telephone_add.png
new file mode 100755
index 0000000000..5591cfc4ac
Binary files /dev/null and b/html/images/16/telephone_add.png differ
diff --git a/html/images/16/telephone_delete.png b/html/images/16/telephone_delete.png
new file mode 100755
index 0000000000..0013268e93
Binary files /dev/null and b/html/images/16/telephone_delete.png differ
diff --git a/html/images/16/telephone_edit.png b/html/images/16/telephone_edit.png
new file mode 100755
index 0000000000..bcf6d7ec1d
Binary files /dev/null and b/html/images/16/telephone_edit.png differ
diff --git a/html/images/16/telephone_error.png b/html/images/16/telephone_error.png
new file mode 100755
index 0000000000..d3ec3a110d
Binary files /dev/null and b/html/images/16/telephone_error.png differ
diff --git a/html/images/16/telephone_go.png b/html/images/16/telephone_go.png
new file mode 100755
index 0000000000..395c8fbf59
Binary files /dev/null and b/html/images/16/telephone_go.png differ
diff --git a/html/images/16/telephone_key.png b/html/images/16/telephone_key.png
new file mode 100755
index 0000000000..cef5dec4e7
Binary files /dev/null and b/html/images/16/telephone_key.png differ
diff --git a/html/images/16/telephone_link.png b/html/images/16/telephone_link.png
new file mode 100755
index 0000000000..ef1ee5dd74
Binary files /dev/null and b/html/images/16/telephone_link.png differ
diff --git a/html/images/16/television.png b/html/images/16/television.png
new file mode 100755
index 0000000000..1738a4f106
Binary files /dev/null and b/html/images/16/television.png differ
diff --git a/html/images/16/television_add.png b/html/images/16/television_add.png
new file mode 100755
index 0000000000..2baaad99e5
Binary files /dev/null and b/html/images/16/television_add.png differ
diff --git a/html/images/16/television_delete.png b/html/images/16/television_delete.png
new file mode 100755
index 0000000000..b9a5860251
Binary files /dev/null and b/html/images/16/television_delete.png differ
diff --git a/html/images/16/text_align_center.png b/html/images/16/text_align_center.png
new file mode 100755
index 0000000000..57beb38139
Binary files /dev/null and b/html/images/16/text_align_center.png differ
diff --git a/html/images/16/text_align_justify.png b/html/images/16/text_align_justify.png
new file mode 100755
index 0000000000..2fbdd6920a
Binary files /dev/null and b/html/images/16/text_align_justify.png differ
diff --git a/html/images/16/text_align_left.png b/html/images/16/text_align_left.png
new file mode 100755
index 0000000000..6c8fcc1165
Binary files /dev/null and b/html/images/16/text_align_left.png differ
diff --git a/html/images/16/text_align_right.png b/html/images/16/text_align_right.png
new file mode 100755
index 0000000000..a1502571c9
Binary files /dev/null and b/html/images/16/text_align_right.png differ
diff --git a/html/images/16/text_allcaps.png b/html/images/16/text_allcaps.png
new file mode 100755
index 0000000000..280fd442b3
Binary files /dev/null and b/html/images/16/text_allcaps.png differ
diff --git a/html/images/16/text_bold.png b/html/images/16/text_bold.png
new file mode 100755
index 0000000000..889ae80e37
Binary files /dev/null and b/html/images/16/text_bold.png differ
diff --git a/html/images/16/text_columns.png b/html/images/16/text_columns.png
new file mode 100755
index 0000000000..97b2e03534
Binary files /dev/null and b/html/images/16/text_columns.png differ
diff --git a/html/images/16/text_dropcaps.png b/html/images/16/text_dropcaps.png
new file mode 100755
index 0000000000..dd65786a7b
Binary files /dev/null and b/html/images/16/text_dropcaps.png differ
diff --git a/html/images/16/text_heading_1.png b/html/images/16/text_heading_1.png
new file mode 100755
index 0000000000..9c122e91e3
Binary files /dev/null and b/html/images/16/text_heading_1.png differ
diff --git a/html/images/16/text_heading_2.png b/html/images/16/text_heading_2.png
new file mode 100755
index 0000000000..fbd87657fb
Binary files /dev/null and b/html/images/16/text_heading_2.png differ
diff --git a/html/images/16/text_heading_3.png b/html/images/16/text_heading_3.png
new file mode 100755
index 0000000000..c7836cf09e
Binary files /dev/null and b/html/images/16/text_heading_3.png differ
diff --git a/html/images/16/text_heading_4.png b/html/images/16/text_heading_4.png
new file mode 100755
index 0000000000..4e929eaf58
Binary files /dev/null and b/html/images/16/text_heading_4.png differ
diff --git a/html/images/16/text_heading_5.png b/html/images/16/text_heading_5.png
new file mode 100755
index 0000000000..30cabebf74
Binary files /dev/null and b/html/images/16/text_heading_5.png differ
diff --git a/html/images/16/text_heading_6.png b/html/images/16/text_heading_6.png
new file mode 100755
index 0000000000..058170a20c
Binary files /dev/null and b/html/images/16/text_heading_6.png differ
diff --git a/html/images/16/text_horizontalrule.png b/html/images/16/text_horizontalrule.png
new file mode 100755
index 0000000000..8dd1da1c1b
Binary files /dev/null and b/html/images/16/text_horizontalrule.png differ
diff --git a/html/images/16/text_indent.png b/html/images/16/text_indent.png
new file mode 100755
index 0000000000..9364532344
Binary files /dev/null and b/html/images/16/text_indent.png differ
diff --git a/html/images/16/text_indent_remove.png b/html/images/16/text_indent_remove.png
new file mode 100755
index 0000000000..1651b074eb
Binary files /dev/null and b/html/images/16/text_indent_remove.png differ
diff --git a/html/images/16/text_italic.png b/html/images/16/text_italic.png
new file mode 100755
index 0000000000..8482ac8cb1
Binary files /dev/null and b/html/images/16/text_italic.png differ
diff --git a/html/images/16/text_kerning.png b/html/images/16/text_kerning.png
new file mode 100755
index 0000000000..377def6459
Binary files /dev/null and b/html/images/16/text_kerning.png differ
diff --git a/html/images/16/text_letter_omega.png b/html/images/16/text_letter_omega.png
new file mode 100755
index 0000000000..5075ec6b85
Binary files /dev/null and b/html/images/16/text_letter_omega.png differ
diff --git a/html/images/16/text_letterspacing.png b/html/images/16/text_letterspacing.png
new file mode 100755
index 0000000000..41390f5490
Binary files /dev/null and b/html/images/16/text_letterspacing.png differ
diff --git a/html/images/16/text_linespacing.png b/html/images/16/text_linespacing.png
new file mode 100755
index 0000000000..1a91cbdd5f
Binary files /dev/null and b/html/images/16/text_linespacing.png differ
diff --git a/html/images/16/text_list_bullets.png b/html/images/16/text_list_bullets.png
new file mode 100755
index 0000000000..4a8672bde4
Binary files /dev/null and b/html/images/16/text_list_bullets.png differ
diff --git a/html/images/16/text_list_numbers.png b/html/images/16/text_list_numbers.png
new file mode 100755
index 0000000000..33b0b8df39
Binary files /dev/null and b/html/images/16/text_list_numbers.png differ
diff --git a/html/images/16/text_lowercase.png b/html/images/16/text_lowercase.png
new file mode 100755
index 0000000000..382a102e3d
Binary files /dev/null and b/html/images/16/text_lowercase.png differ
diff --git a/html/images/16/text_padding_bottom.png b/html/images/16/text_padding_bottom.png
new file mode 100755
index 0000000000..4880c43a14
Binary files /dev/null and b/html/images/16/text_padding_bottom.png differ
diff --git a/html/images/16/text_padding_left.png b/html/images/16/text_padding_left.png
new file mode 100755
index 0000000000..b55482eee4
Binary files /dev/null and b/html/images/16/text_padding_left.png differ
diff --git a/html/images/16/text_padding_right.png b/html/images/16/text_padding_right.png
new file mode 100755
index 0000000000..106edae52d
Binary files /dev/null and b/html/images/16/text_padding_right.png differ
diff --git a/html/images/16/text_padding_top.png b/html/images/16/text_padding_top.png
new file mode 100755
index 0000000000..c5c45b2d6e
Binary files /dev/null and b/html/images/16/text_padding_top.png differ
diff --git a/html/images/16/text_replace.png b/html/images/16/text_replace.png
new file mode 100755
index 0000000000..877f82feae
Binary files /dev/null and b/html/images/16/text_replace.png differ
diff --git a/html/images/16/text_signature.png b/html/images/16/text_signature.png
new file mode 100755
index 0000000000..c72fd80882
Binary files /dev/null and b/html/images/16/text_signature.png differ
diff --git a/html/images/16/text_smallcaps.png b/html/images/16/text_smallcaps.png
new file mode 100755
index 0000000000..5b98a6e133
Binary files /dev/null and b/html/images/16/text_smallcaps.png differ
diff --git a/html/images/16/text_strikethrough.png b/html/images/16/text_strikethrough.png
new file mode 100755
index 0000000000..612058a78e
Binary files /dev/null and b/html/images/16/text_strikethrough.png differ
diff --git a/html/images/16/text_subscript.png b/html/images/16/text_subscript.png
new file mode 100755
index 0000000000..1a2b01017d
Binary files /dev/null and b/html/images/16/text_subscript.png differ
diff --git a/html/images/16/text_superscript.png b/html/images/16/text_superscript.png
new file mode 100755
index 0000000000..2fb2a7c748
Binary files /dev/null and b/html/images/16/text_superscript.png differ
diff --git a/html/images/16/text_underline.png b/html/images/16/text_underline.png
new file mode 100755
index 0000000000..90d0df2868
Binary files /dev/null and b/html/images/16/text_underline.png differ
diff --git a/html/images/16/text_uppercase.png b/html/images/16/text_uppercase.png
new file mode 100755
index 0000000000..8dcc2dbbb2
Binary files /dev/null and b/html/images/16/text_uppercase.png differ
diff --git a/html/images/16/textfield.png b/html/images/16/textfield.png
new file mode 100755
index 0000000000..d37e7304e2
Binary files /dev/null and b/html/images/16/textfield.png differ
diff --git a/html/images/16/textfield_add.png b/html/images/16/textfield_add.png
new file mode 100755
index 0000000000..204de72316
Binary files /dev/null and b/html/images/16/textfield_add.png differ
diff --git a/html/images/16/textfield_delete.png b/html/images/16/textfield_delete.png
new file mode 100755
index 0000000000..c7bd58b217
Binary files /dev/null and b/html/images/16/textfield_delete.png differ
diff --git a/html/images/16/textfield_key.png b/html/images/16/textfield_key.png
new file mode 100755
index 0000000000..a9d5e4f8cc
Binary files /dev/null and b/html/images/16/textfield_key.png differ
diff --git a/html/images/16/textfield_rename.png b/html/images/16/textfield_rename.png
new file mode 100755
index 0000000000..4e3688edc8
Binary files /dev/null and b/html/images/16/textfield_rename.png differ
diff --git a/html/images/16/thumb_down.png b/html/images/16/thumb_down.png
new file mode 100755
index 0000000000..3c832d4c83
Binary files /dev/null and b/html/images/16/thumb_down.png differ
diff --git a/html/images/16/thumb_up.png b/html/images/16/thumb_up.png
new file mode 100755
index 0000000000..2bd16ccf29
Binary files /dev/null and b/html/images/16/thumb_up.png differ
diff --git a/html/images/16/tick.png b/html/images/16/tick.png
new file mode 100755
index 0000000000..a9925a06ab
Binary files /dev/null and b/html/images/16/tick.png differ
diff --git a/html/images/16/time.png b/html/images/16/time.png
new file mode 100755
index 0000000000..911da3f1d3
Binary files /dev/null and b/html/images/16/time.png differ
diff --git a/html/images/16/time_add.png b/html/images/16/time_add.png
new file mode 100755
index 0000000000..dcc45cb22d
Binary files /dev/null and b/html/images/16/time_add.png differ
diff --git a/html/images/16/time_delete.png b/html/images/16/time_delete.png
new file mode 100755
index 0000000000..5bf8313c6f
Binary files /dev/null and b/html/images/16/time_delete.png differ
diff --git a/html/images/16/time_go.png b/html/images/16/time_go.png
new file mode 100755
index 0000000000..d451ee0611
Binary files /dev/null and b/html/images/16/time_go.png differ
diff --git a/html/images/16/timeline_marker.png b/html/images/16/timeline_marker.png
new file mode 100755
index 0000000000..a3fbddf88b
Binary files /dev/null and b/html/images/16/timeline_marker.png differ
diff --git a/html/images/16/transmit.png b/html/images/16/transmit.png
new file mode 100755
index 0000000000..f54bf736cd
Binary files /dev/null and b/html/images/16/transmit.png differ
diff --git a/html/images/16/transmit_add.png b/html/images/16/transmit_add.png
new file mode 100755
index 0000000000..b7fd4e685f
Binary files /dev/null and b/html/images/16/transmit_add.png differ
diff --git a/html/images/16/transmit_blue.png b/html/images/16/transmit_blue.png
new file mode 100755
index 0000000000..7b1142fc70
Binary files /dev/null and b/html/images/16/transmit_blue.png differ
diff --git a/html/images/16/transmit_delete.png b/html/images/16/transmit_delete.png
new file mode 100755
index 0000000000..3d72be2a38
Binary files /dev/null and b/html/images/16/transmit_delete.png differ
diff --git a/html/images/16/transmit_edit.png b/html/images/16/transmit_edit.png
new file mode 100755
index 0000000000..eb9a3dd593
Binary files /dev/null and b/html/images/16/transmit_edit.png differ
diff --git a/html/images/16/transmit_error.png b/html/images/16/transmit_error.png
new file mode 100755
index 0000000000..fd1d4499ab
Binary files /dev/null and b/html/images/16/transmit_error.png differ
diff --git a/html/images/16/transmit_go.png b/html/images/16/transmit_go.png
new file mode 100755
index 0000000000..10137e55ca
Binary files /dev/null and b/html/images/16/transmit_go.png differ
diff --git a/html/images/16/tux.png b/html/images/16/tux.png
new file mode 100755
index 0000000000..bbefe2ec45
Binary files /dev/null and b/html/images/16/tux.png differ
diff --git a/html/images/16/user.png b/html/images/16/user.png
new file mode 100755
index 0000000000..79f35ccbda
Binary files /dev/null and b/html/images/16/user.png differ
diff --git a/html/images/16/user_add.png b/html/images/16/user_add.png
new file mode 100755
index 0000000000..deae99bcff
Binary files /dev/null and b/html/images/16/user_add.png differ
diff --git a/html/images/16/user_comment.png b/html/images/16/user_comment.png
new file mode 100755
index 0000000000..e54ebebafb
Binary files /dev/null and b/html/images/16/user_comment.png differ
diff --git a/html/images/16/user_delete.png b/html/images/16/user_delete.png
new file mode 100755
index 0000000000..acbb5630e5
Binary files /dev/null and b/html/images/16/user_delete.png differ
diff --git a/html/images/16/user_edit.png b/html/images/16/user_edit.png
new file mode 100755
index 0000000000..c1974cda74
Binary files /dev/null and b/html/images/16/user_edit.png differ
diff --git a/html/images/16/user_female.png b/html/images/16/user_female.png
new file mode 100755
index 0000000000..7c71de03b2
Binary files /dev/null and b/html/images/16/user_female.png differ
diff --git a/html/images/16/user_go.png b/html/images/16/user_go.png
new file mode 100755
index 0000000000..0468cf08f3
Binary files /dev/null and b/html/images/16/user_go.png differ
diff --git a/html/images/16/user_gray.png b/html/images/16/user_gray.png
new file mode 100755
index 0000000000..8fd539e9cb
Binary files /dev/null and b/html/images/16/user_gray.png differ
diff --git a/html/images/16/user_green.png b/html/images/16/user_green.png
new file mode 100755
index 0000000000..30383c2de5
Binary files /dev/null and b/html/images/16/user_green.png differ
diff --git a/html/images/16/user_orange.png b/html/images/16/user_orange.png
new file mode 100755
index 0000000000..b818127df6
Binary files /dev/null and b/html/images/16/user_orange.png differ
diff --git a/html/images/16/user_red.png b/html/images/16/user_red.png
new file mode 100755
index 0000000000..c6f66e8b30
Binary files /dev/null and b/html/images/16/user_red.png differ
diff --git a/html/images/16/user_suit.png b/html/images/16/user_suit.png
new file mode 100755
index 0000000000..b3454e15fb
Binary files /dev/null and b/html/images/16/user_suit.png differ
diff --git a/html/images/16/vcard.png b/html/images/16/vcard.png
new file mode 100755
index 0000000000..c02f315d20
Binary files /dev/null and b/html/images/16/vcard.png differ
diff --git a/html/images/16/vcard_add.png b/html/images/16/vcard_add.png
new file mode 100755
index 0000000000..2a68453811
Binary files /dev/null and b/html/images/16/vcard_add.png differ
diff --git a/html/images/16/vcard_delete.png b/html/images/16/vcard_delete.png
new file mode 100755
index 0000000000..b194b971b3
Binary files /dev/null and b/html/images/16/vcard_delete.png differ
diff --git a/html/images/16/vcard_edit.png b/html/images/16/vcard_edit.png
new file mode 100755
index 0000000000..ab0f6e73d6
Binary files /dev/null and b/html/images/16/vcard_edit.png differ
diff --git a/html/images/16/vector.png b/html/images/16/vector.png
new file mode 100755
index 0000000000..a1291c2dfa
Binary files /dev/null and b/html/images/16/vector.png differ
diff --git a/html/images/16/vector_add.png b/html/images/16/vector_add.png
new file mode 100755
index 0000000000..988770f408
Binary files /dev/null and b/html/images/16/vector_add.png differ
diff --git a/html/images/16/vector_delete.png b/html/images/16/vector_delete.png
new file mode 100755
index 0000000000..ca139e0f33
Binary files /dev/null and b/html/images/16/vector_delete.png differ
diff --git a/html/images/16/wand.png b/html/images/16/wand.png
new file mode 100755
index 0000000000..44ccbf8128
Binary files /dev/null and b/html/images/16/wand.png differ
diff --git a/html/images/16/weather_clouds.png b/html/images/16/weather_clouds.png
new file mode 100755
index 0000000000..3f73eaa144
Binary files /dev/null and b/html/images/16/weather_clouds.png differ
diff --git a/html/images/16/weather_cloudy.png b/html/images/16/weather_cloudy.png
new file mode 100755
index 0000000000..5856e1d054
Binary files /dev/null and b/html/images/16/weather_cloudy.png differ
diff --git a/html/images/16/weather_lightning.png b/html/images/16/weather_lightning.png
new file mode 100755
index 0000000000..1d42b3673f
Binary files /dev/null and b/html/images/16/weather_lightning.png differ
diff --git a/html/images/16/weather_rain.png b/html/images/16/weather_rain.png
new file mode 100755
index 0000000000..cb3d54d064
Binary files /dev/null and b/html/images/16/weather_rain.png differ
diff --git a/html/images/16/weather_snow.png b/html/images/16/weather_snow.png
new file mode 100755
index 0000000000..45bbdf19c6
Binary files /dev/null and b/html/images/16/weather_snow.png differ
diff --git a/html/images/16/weather_sun.png b/html/images/16/weather_sun.png
new file mode 100755
index 0000000000..0156c266e4
Binary files /dev/null and b/html/images/16/weather_sun.png differ
diff --git a/html/images/16/webcam.png b/html/images/16/webcam.png
new file mode 100755
index 0000000000..af71c30610
Binary files /dev/null and b/html/images/16/webcam.png differ
diff --git a/html/images/16/webcam_add.png b/html/images/16/webcam_add.png
new file mode 100755
index 0000000000..f02fcfa99c
Binary files /dev/null and b/html/images/16/webcam_add.png differ
diff --git a/html/images/16/webcam_delete.png b/html/images/16/webcam_delete.png
new file mode 100755
index 0000000000..bd6277f516
Binary files /dev/null and b/html/images/16/webcam_delete.png differ
diff --git a/html/images/16/webcam_error.png b/html/images/16/webcam_error.png
new file mode 100755
index 0000000000..2faa70679b
Binary files /dev/null and b/html/images/16/webcam_error.png differ
diff --git a/html/images/16/world.png b/html/images/16/world.png
new file mode 100755
index 0000000000..68f21d3011
Binary files /dev/null and b/html/images/16/world.png differ
diff --git a/html/images/16/world_add.png b/html/images/16/world_add.png
new file mode 100755
index 0000000000..6d0d7f74c0
Binary files /dev/null and b/html/images/16/world_add.png differ
diff --git a/html/images/16/world_delete.png b/html/images/16/world_delete.png
new file mode 100755
index 0000000000..ffcd1156f2
Binary files /dev/null and b/html/images/16/world_delete.png differ
diff --git a/html/images/16/world_edit.png b/html/images/16/world_edit.png
new file mode 100755
index 0000000000..00794d4088
Binary files /dev/null and b/html/images/16/world_edit.png differ
diff --git a/html/images/16/world_go.png b/html/images/16/world_go.png
new file mode 100755
index 0000000000..aee9c97f82
Binary files /dev/null and b/html/images/16/world_go.png differ
diff --git a/html/images/16/world_link.png b/html/images/16/world_link.png
new file mode 100755
index 0000000000..b8edc1265d
Binary files /dev/null and b/html/images/16/world_link.png differ
diff --git a/html/images/16/wrench.png b/html/images/16/wrench.png
new file mode 100755
index 0000000000..5c8213fef5
Binary files /dev/null and b/html/images/16/wrench.png differ
diff --git a/html/images/16/wrench_orange.png b/html/images/16/wrench_orange.png
new file mode 100755
index 0000000000..565a9330e0
Binary files /dev/null and b/html/images/16/wrench_orange.png differ
diff --git a/html/images/16/xhtml.png b/html/images/16/xhtml.png
new file mode 100755
index 0000000000..da5dbf200d
Binary files /dev/null and b/html/images/16/xhtml.png differ
diff --git a/html/images/16/xhtml_add.png b/html/images/16/xhtml_add.png
new file mode 100755
index 0000000000..bbaf784f21
Binary files /dev/null and b/html/images/16/xhtml_add.png differ
diff --git a/html/images/16/xhtml_delete.png b/html/images/16/xhtml_delete.png
new file mode 100755
index 0000000000..157b5201d0
Binary files /dev/null and b/html/images/16/xhtml_delete.png differ
diff --git a/html/images/16/xhtml_go.png b/html/images/16/xhtml_go.png
new file mode 100755
index 0000000000..43cf81448f
Binary files /dev/null and b/html/images/16/xhtml_go.png differ
diff --git a/html/images/16/xhtml_valid.png b/html/images/16/xhtml_valid.png
new file mode 100755
index 0000000000..d2e1cfbe3c
Binary files /dev/null and b/html/images/16/xhtml_valid.png differ
diff --git a/html/images/16/zoom.png b/html/images/16/zoom.png
new file mode 100755
index 0000000000..908612e394
Binary files /dev/null and b/html/images/16/zoom.png differ
diff --git a/html/images/16/zoom_in.png b/html/images/16/zoom_in.png
new file mode 100755
index 0000000000..cdf0a52fe0
Binary files /dev/null and b/html/images/16/zoom_in.png differ
diff --git a/html/images/16/zoom_out.png b/html/images/16/zoom_out.png
new file mode 100755
index 0000000000..07bf98a79c
Binary files /dev/null and b/html/images/16/zoom_out.png differ
diff --git a/html/images/arrow.gif b/html/images/arrow.gif
new file mode 100755
index 0000000000..ac790e0bcb
Binary files /dev/null and b/html/images/arrow.gif differ
diff --git a/html/images/arrows.gif b/html/images/arrows.gif
new file mode 100755
index 0000000000..f315cb68b5
Binary files /dev/null and b/html/images/arrows.gif differ
diff --git a/html/images/customers.png b/html/images/customers.png
new file mode 100755
index 0000000000..0e0e064a5d
Binary files /dev/null and b/html/images/customers.png differ
diff --git a/html/images/delete.gif b/html/images/delete.gif
new file mode 100755
index 0000000000..5f1597dafc
Binary files /dev/null and b/html/images/delete.gif differ
diff --git a/html/images/devices.png b/html/images/devices.png
new file mode 100755
index 0000000000..cd8f063faf
Binary files /dev/null and b/html/images/devices.png differ
diff --git a/html/images/eventlog.png b/html/images/eventlog.png
new file mode 100755
index 0000000000..bdf25cc016
Binary files /dev/null and b/html/images/eventlog.png differ
diff --git a/html/images/header_bg.gif b/html/images/header_bg.gif
new file mode 100644
index 0000000000..590578280c
Binary files /dev/null and b/html/images/header_bg.gif differ
diff --git a/html/images/icon.png b/html/images/icon.png
new file mode 100755
index 0000000000..eeca93544d
Binary files /dev/null and b/html/images/icon.png differ
diff --git a/html/images/lang/Thumbs.db b/html/images/lang/Thumbs.db
new file mode 100755
index 0000000000..b8768a26c3
Binary files /dev/null and b/html/images/lang/Thumbs.db differ
diff --git a/html/images/lang/en.gif b/html/images/lang/en.gif
new file mode 100755
index 0000000000..00c9d57ba4
Binary files /dev/null and b/html/images/lang/en.gif differ
diff --git a/html/images/lang/es.gif b/html/images/lang/es.gif
new file mode 100755
index 0000000000..86e38ee57b
Binary files /dev/null and b/html/images/lang/es.gif differ
diff --git a/html/images/lang/fr.gif b/html/images/lang/fr.gif
new file mode 100755
index 0000000000..7168eb2e0d
Binary files /dev/null and b/html/images/lang/fr.gif differ
diff --git a/html/images/lang/gm.gif b/html/images/lang/gm.gif
new file mode 100755
index 0000000000..18c70f9dd0
Binary files /dev/null and b/html/images/lang/gm.gif differ
diff --git a/html/images/lang/no.gif b/html/images/lang/no.gif
new file mode 100755
index 0000000000..eddabd71c3
Binary files /dev/null and b/html/images/lang/no.gif differ
diff --git a/html/images/lang/sw.gif b/html/images/lang/sw.gif
new file mode 100755
index 0000000000..6cf01365e5
Binary files /dev/null and b/html/images/lang/sw.gif differ
diff --git a/html/images/logo.gif b/html/images/logo.gif
new file mode 100755
index 0000000000..ef5b336b21
Binary files /dev/null and b/html/images/logo.gif differ
diff --git a/html/images/logo.jpg b/html/images/logo.jpg
new file mode 100755
index 0000000000..1bec2e4879
Binary files /dev/null and b/html/images/logo.jpg differ
diff --git a/html/images/logo.png b/html/images/logo.png
new file mode 100755
index 0000000000..2e0479eb31
Binary files /dev/null and b/html/images/logo.png differ
diff --git a/html/images/mail-reply.gif b/html/images/mail-reply.gif
new file mode 100755
index 0000000000..e993f584f6
Binary files /dev/null and b/html/images/mail-reply.gif differ
diff --git a/html/images/mail.gif b/html/images/mail.gif
new file mode 100755
index 0000000000..c823df186d
Binary files /dev/null and b/html/images/mail.gif differ
diff --git a/html/images/menu2.gif b/html/images/menu2.gif
new file mode 100755
index 0000000000..a738b7f9bf
Binary files /dev/null and b/html/images/menu2.gif differ
diff --git a/html/images/neu/add.png b/html/images/neu/add.png
new file mode 100755
index 0000000000..6b636fe2a1
Binary files /dev/null and b/html/images/neu/add.png differ
diff --git a/html/images/neu/battery.png b/html/images/neu/battery.png
new file mode 100755
index 0000000000..4c85a940d4
Binary files /dev/null and b/html/images/neu/battery.png differ
diff --git a/html/images/neu/cancel.png b/html/images/neu/cancel.png
new file mode 100755
index 0000000000..5cb3841484
Binary files /dev/null and b/html/images/neu/cancel.png differ
diff --git a/html/images/neu/computer.png b/html/images/neu/computer.png
new file mode 100755
index 0000000000..51a68d58be
Binary files /dev/null and b/html/images/neu/computer.png differ
diff --git a/html/images/neu/connected.png b/html/images/neu/connected.png
new file mode 100755
index 0000000000..72103e6dc5
Binary files /dev/null and b/html/images/neu/connected.png differ
diff --git a/html/images/neu/customers.png b/html/images/neu/customers.png
new file mode 100755
index 0000000000..2c1fa65ed2
Binary files /dev/null and b/html/images/neu/customers.png differ
diff --git a/html/images/neu/display.png b/html/images/neu/display.png
new file mode 100755
index 0000000000..d01edb2a44
Binary files /dev/null and b/html/images/neu/display.png differ
diff --git a/html/images/neu/dns.png b/html/images/neu/dns.png
new file mode 100755
index 0000000000..b2c29fa792
Binary files /dev/null and b/html/images/neu/dns.png differ
diff --git a/html/images/neu/edit.png b/html/images/neu/edit.png
new file mode 100755
index 0000000000..a653bfec70
Binary files /dev/null and b/html/images/neu/edit.png differ
diff --git a/html/images/neu/error.png b/html/images/neu/error.png
new file mode 100755
index 0000000000..4564a31bdf
Binary files /dev/null and b/html/images/neu/error.png differ
diff --git a/html/images/neu/exit.png b/html/images/neu/exit.png
new file mode 100755
index 0000000000..bdea2cd36e
Binary files /dev/null and b/html/images/neu/exit.png differ
diff --git a/html/images/neu/find.png b/html/images/neu/find.png
new file mode 100755
index 0000000000..b98e348708
Binary files /dev/null and b/html/images/neu/find.png differ
diff --git a/html/images/neu/folder_home.png b/html/images/neu/folder_home.png
new file mode 100755
index 0000000000..a3c4765466
Binary files /dev/null and b/html/images/neu/folder_home.png differ
diff --git a/html/images/neu/help.png b/html/images/neu/help.png
new file mode 100755
index 0000000000..6de563b16b
Binary files /dev/null and b/html/images/neu/help.png differ
diff --git a/html/images/neu/hide-graphs.png b/html/images/neu/hide-graphs.png
new file mode 100755
index 0000000000..621fe3cd1f
Binary files /dev/null and b/html/images/neu/hide-graphs.png differ
diff --git a/html/images/neu/info.png b/html/images/neu/info.png
new file mode 100755
index 0000000000..99ab40a678
Binary files /dev/null and b/html/images/neu/info.png differ
diff --git a/html/images/neu/internet.png b/html/images/neu/internet.png
new file mode 100755
index 0000000000..e440a5a1c7
Binary files /dev/null and b/html/images/neu/internet.png differ
diff --git a/html/images/neu/locked.png b/html/images/neu/locked.png
new file mode 100755
index 0000000000..292f7017cd
Binary files /dev/null and b/html/images/neu/locked.png differ
diff --git a/html/images/neu/mail.png b/html/images/neu/mail.png
new file mode 100755
index 0000000000..ef882022ab
Binary files /dev/null and b/html/images/neu/mail.png differ
diff --git a/html/images/neu/monitor.png b/html/images/neu/monitor.png
new file mode 100755
index 0000000000..b62cb68eba
Binary files /dev/null and b/html/images/neu/monitor.png differ
diff --git a/html/images/neu/network.png b/html/images/neu/network.png
new file mode 100755
index 0000000000..3cf136184e
Binary files /dev/null and b/html/images/neu/network.png differ
diff --git a/html/images/neu/ok.png b/html/images/neu/ok.png
new file mode 100755
index 0000000000..450a80cb3f
Binary files /dev/null and b/html/images/neu/ok.png differ
diff --git a/html/images/neu/prefs.png b/html/images/neu/prefs.png
new file mode 100755
index 0000000000..256ce9a81f
Binary files /dev/null and b/html/images/neu/prefs.png differ
diff --git a/html/images/neu/question.png b/html/images/neu/question.png
new file mode 100755
index 0000000000..f30e54810e
Binary files /dev/null and b/html/images/neu/question.png differ
diff --git a/html/images/neu/remove.png b/html/images/neu/remove.png
new file mode 100755
index 0000000000..0815d3f3a0
Binary files /dev/null and b/html/images/neu/remove.png differ
diff --git a/html/images/neu/screens.png b/html/images/neu/screens.png
new file mode 100755
index 0000000000..d74aec27e5
Binary files /dev/null and b/html/images/neu/screens.png differ
diff --git a/html/images/neu/server.png b/html/images/neu/server.png
new file mode 100755
index 0000000000..bd5aebeabd
Binary files /dev/null and b/html/images/neu/server.png differ
diff --git a/html/images/neu/settings.png b/html/images/neu/settings.png
new file mode 100755
index 0000000000..79f7b90dff
Binary files /dev/null and b/html/images/neu/settings.png differ
diff --git a/html/images/neu/show-graphs.png b/html/images/neu/show-graphs.png
new file mode 100755
index 0000000000..e795ffc7d2
Binary files /dev/null and b/html/images/neu/show-graphs.png differ
diff --git a/html/images/neu/system.png b/html/images/neu/system.png
new file mode 100755
index 0000000000..426460b1a8
Binary files /dev/null and b/html/images/neu/system.png differ
diff --git a/html/images/neu/system2.png b/html/images/neu/system2.png
new file mode 100755
index 0000000000..73b6920317
Binary files /dev/null and b/html/images/neu/system2.png differ
diff --git a/html/images/neu/terminal.png b/html/images/neu/terminal.png
new file mode 100755
index 0000000000..cfa6d279b8
Binary files /dev/null and b/html/images/neu/terminal.png differ
diff --git a/html/images/neu/warning.png b/html/images/neu/warning.png
new file mode 100755
index 0000000000..35f61aebac
Binary files /dev/null and b/html/images/neu/warning.png differ
diff --git a/html/images/neu/web.png b/html/images/neu/web.png
new file mode 100755
index 0000000000..49f7290ff9
Binary files /dev/null and b/html/images/neu/web.png differ
diff --git a/html/images/neu/web2.png b/html/images/neu/web2.png
new file mode 100755
index 0000000000..91906b6848
Binary files /dev/null and b/html/images/neu/web2.png differ
diff --git a/html/images/no-graph.png b/html/images/no-graph.png
new file mode 100755
index 0000000000..f68082158b
Binary files /dev/null and b/html/images/no-graph.png differ
diff --git a/html/images/observe-100.png b/html/images/observe-100.png
new file mode 100755
index 0000000000..27f22aea1e
Binary files /dev/null and b/html/images/observe-100.png differ
diff --git a/html/images/os/apple.gif b/html/images/os/apple.gif
new file mode 100755
index 0000000000..2bdf6e5b5e
Binary files /dev/null and b/html/images/os/apple.gif differ
diff --git a/html/images/os/centos.png b/html/images/os/centos.png
new file mode 100755
index 0000000000..0d5c19e999
Binary files /dev/null and b/html/images/os/centos.png differ
diff --git a/html/images/os/debian.png b/html/images/os/debian.png
new file mode 100755
index 0000000000..00519ad37c
Binary files /dev/null and b/html/images/os/debian.png differ
diff --git a/html/images/os/dragonfly.png b/html/images/os/dragonfly.png
new file mode 100755
index 0000000000..68387b4d6a
Binary files /dev/null and b/html/images/os/dragonfly.png differ
diff --git a/html/images/os/fedora.png b/html/images/os/fedora.png
new file mode 100755
index 0000000000..bb0920f31f
Binary files /dev/null and b/html/images/os/fedora.png differ
diff --git a/html/images/os/freebsd.png b/html/images/os/freebsd.png
new file mode 100755
index 0000000000..c8e48f0534
Binary files /dev/null and b/html/images/os/freebsd.png differ
diff --git a/html/images/os/ios.gif b/html/images/os/ios.gif
new file mode 100755
index 0000000000..5af6d830c7
Binary files /dev/null and b/html/images/os/ios.gif differ
diff --git a/html/images/os/linux.png b/html/images/os/linux.png
new file mode 100755
index 0000000000..b545571a9f
Binary files /dev/null and b/html/images/os/linux.png differ
diff --git a/html/images/os/m0n0wall.png b/html/images/os/m0n0wall.png
new file mode 100755
index 0000000000..228abbf98a
Binary files /dev/null and b/html/images/os/m0n0wall.png differ
diff --git a/html/images/os/mandrake.png b/html/images/os/mandrake.png
new file mode 100755
index 0000000000..98ec329bf0
Binary files /dev/null and b/html/images/os/mandrake.png differ
diff --git a/html/images/os/netbsd.png b/html/images/os/netbsd.png
new file mode 100755
index 0000000000..cf9f46f063
Binary files /dev/null and b/html/images/os/netbsd.png differ
diff --git a/html/images/os/openbsd.png b/html/images/os/openbsd.png
new file mode 100755
index 0000000000..4f50fbbf61
Binary files /dev/null and b/html/images/os/openbsd.png differ
diff --git a/html/images/os/pfsense.png b/html/images/os/pfsense.png
new file mode 100755
index 0000000000..f9e223c4a3
Binary files /dev/null and b/html/images/os/pfsense.png differ
diff --git a/html/images/os/procurve.png b/html/images/os/procurve.png
new file mode 100755
index 0000000000..600dc4e55e
Binary files /dev/null and b/html/images/os/procurve.png differ
diff --git a/html/images/os/ram.gif b/html/images/os/ram.gif
new file mode 100755
index 0000000000..c2ab19a194
Binary files /dev/null and b/html/images/os/ram.gif differ
diff --git a/html/images/os/redhat.png b/html/images/os/redhat.png
new file mode 100755
index 0000000000..82822d10f8
Binary files /dev/null and b/html/images/os/redhat.png differ
diff --git a/html/images/os/sgi.gif b/html/images/os/sgi.gif
new file mode 100755
index 0000000000..2945f1c85a
Binary files /dev/null and b/html/images/os/sgi.gif differ
diff --git a/html/images/os/slackware.png b/html/images/os/slackware.png
new file mode 100755
index 0000000000..6bb89bc80f
Binary files /dev/null and b/html/images/os/slackware.png differ
diff --git a/html/images/os/snom.png b/html/images/os/snom.png
new file mode 100755
index 0000000000..1cc4919d8a
Binary files /dev/null and b/html/images/os/snom.png differ
diff --git a/html/images/os/solaris.gif b/html/images/os/solaris.gif
new file mode 100755
index 0000000000..690534f83e
Binary files /dev/null and b/html/images/os/solaris.gif differ
diff --git a/html/images/os/sun.gif b/html/images/os/sun.gif
new file mode 100755
index 0000000000..e0ed0be04c
Binary files /dev/null and b/html/images/os/sun.gif differ
diff --git a/html/images/os/suse.png b/html/images/os/suse.png
new file mode 100755
index 0000000000..917bab466b
Binary files /dev/null and b/html/images/os/suse.png differ
diff --git a/html/images/os/ubuntu.png b/html/images/os/ubuntu.png
new file mode 100755
index 0000000000..2b1a99b188
Binary files /dev/null and b/html/images/os/ubuntu.png differ
diff --git a/html/images/os/voswall.png b/html/images/os/voswall.png
new file mode 100755
index 0000000000..25b352b6b6
Binary files /dev/null and b/html/images/os/voswall.png differ
diff --git a/html/images/os/windows.gif b/html/images/os/windows.gif
new file mode 100755
index 0000000000..65b48309ae
Binary files /dev/null and b/html/images/os/windows.gif differ
diff --git a/html/images/password-blue.png b/html/images/password-blue.png
new file mode 100755
index 0000000000..8bda6f1c67
Binary files /dev/null and b/html/images/password-blue.png differ
diff --git a/html/images/password.png b/html/images/password.png
new file mode 100755
index 0000000000..5e17dfcfcc
Binary files /dev/null and b/html/images/password.png differ
diff --git a/html/images/peering.png b/html/images/peering.png
new file mode 100755
index 0000000000..5b39b7167a
Binary files /dev/null and b/html/images/peering.png differ
diff --git a/html/images/phone.gif b/html/images/phone.gif
new file mode 100755
index 0000000000..3885c869f0
Binary files /dev/null and b/html/images/phone.gif differ
diff --git a/html/images/readme.html b/html/images/readme.html
new file mode 100755
index 0000000000..3852c6dd5a
--- /dev/null
+++ b/html/images/readme.html
@@ -0,0 +1,1495 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+	<!-- Document HEAD -->
+	<head>
+	
+		<title>famfamfam.com: Silk Icons</title>
+
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+		<meta name="mssmarttagspreventparsing" content="true" />
+		<meta name="robots" content="all" />		
+		<meta http-equiv="imagetoolbar" content="no" />
+
+		<meta name="author" content="Mark James" />
+		<meta name="copyright" content="Mark James" />
+		<meta name="revisit-after" content="7 days" />		
+		
+	    <style type="text/css">
+<!--
+body {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 85%;
+}
+
+h1,h2,h3 {
+padding: 10px;
+background-color: #F0F0F0;
+border-bottom: 1px solid #DDD;
+}
+
+table td {
+padding: 5px;
+}
+
+td em {
+display: none;
+}
+-->
+        </style>
+	</head>
+
+	<!-- Document BODY -->
+	<body>
+
+		<div id="container-outer">
+			<div id="container-inner">
+					<div id="content-inner">				
+
+						<h2>Silk Icons</h2>
+						<p><a href="http://www.famfamfam.com/lab/icons/silk/">http://www.famfamfam.com/lab/icons/silk/</a></p>
+					  <p>
+							&#8220;Silk&#8221; is a smooth icon set, containing 1000 16-by-16 pixel icons in
+							strokably-soft PNG format. Containing a large variety of icons, you're sure to find something
+							that tickles your fancy. And all for a low low price of $0.00. You can't say fairer than that.
+							
+							<br />
+							<br/>
+
+						  <!--
+							<a class="download-link" href="famfamfam_mini_icons.zip">Download</a><br />
+							-->
+							
+						  Current version: <strong>1.3</strong></p>
+						
+						<h3>License</h3>
+						<p>
+						<!-- Creative Commons License -->
+						I also love to hear of my work being used, feel encouraged to send an email
+						with a link or screenshot of the icons in their new home to
+						mjames&nbsp;<span class="email">at</span>&nbsp;gmail&nbsp;<span class="email">dot</span>&nbsp;com.
+						This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/2.5/">Creative Commons Attribution 2.5 License</a>.
+						This means you may use it for any purpose, and make any changes you like.
+						All I ask is that you include a link back to <a href="http://www.famfamfam.com/lab/icons/silk/">http://www.famfamfam.com/lab/icons/silk/</a> in your credits (contact me to discuss licencing further).
+						<!-- /Creative Commons License -->
+
+						
+						<!--
+						
+						<rdf:RDF xmlns="http://web.resource.org/cc/"
+							xmlns:dc="http://purl.org/dc/elements/1.1/"
+							xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+						<Work rdf:about="">
+						   <dc:title>Silk icons</dc:title>
+						   <dc:date>2005</dc:date>
+						   <dc:description>'Silk' icon set.</dc:description>
+						   <dc:creator><Agent>
+							  <dc:title>Mark James</dc:title>
+						   </Agent></dc:creator>
+						   <dc:rights><Agent>
+							  <dc:title>Mark James</dc:title>
+						   </Agent></dc:rights>
+						   <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+						   <dc:source rdf:resource="http://www.famfamfam.com/lab/icons/silk/"/>
+						   <license rdf:resource="http://creativecommons.org/licenses/by/2.5/" />
+						</Work>
+						
+						<License rdf:about="http://creativecommons.org/licenses/by/2.5/">
+						   <permits rdf:resource="http://web.resource.org/cc/Reproduction" />
+						   <permits rdf:resource="http://web.resource.org/cc/Distribution" />
+						   <requires rdf:resource="http://web.resource.org/cc/Notice" />
+						   <requires rdf:resource="http://web.resource.org/cc/Attribution" />
+						   <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+						</License>
+						
+						</rdf:RDF>
+						
+						-->
+						</p>
+						
+						<h3>Sightings</h3>
+						
+						<p>
+						Do you use this set? <a href="http://www.famfamfam.com/about/?contact=Silk%20icons%20in%20the%20wild">Contact me!</a>.
+						</p>
+						
+						
+						<h3>Icons</h3>
+
+						
+						<p><table>
+	<tr>
+		<td><img src="icons/accept.png" title="accept.png" alt="accept "/><em>accept.png</em></td>
+		<td><img src="icons/add.png" title="add.png" alt="add "/><em>add.png</em></td>
+
+		<td><img src="icons/anchor.png" title="anchor.png" alt="anchor "/><em>anchor.png</em></td>
+		<td><img src="icons/application.png" title="application.png" alt="application "/><em>application.png</em></td>
+		<td><img src="icons/application_add.png" title="application_add.png" alt="application add "/><em>application_add.png</em></td>
+		<td><img src="icons/application_cascade.png" title="application_cascade.png" alt="application cascade "/><em>application_cascade.png</em></td>
+		<td><img src="icons/application_delete.png" title="application_delete.png" alt="application delete "/><em>application_delete.png</em></td>
+		<td><img src="icons/application_double.png" title="application_double.png" alt="application double "/><em>application_double.png</em></td>
+
+		<td><img src="icons/application_edit.png" title="application_edit.png" alt="application edit "/><em>application_edit.png</em></td>
+		<td><img src="icons/application_error.png" title="application_error.png" alt="application error "/><em>application_error.png</em></td>
+		<td><img src="icons/application_form.png" title="application_form.png" alt="application form "/><em>application_form.png</em></td>
+		<td><img src="icons/application_form_add.png" title="application_form_add.png" alt="application form add "/><em>application_form_add.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/application_form_delete.png" title="application_form_delete.png" alt="application form delete "/><em>application_form_delete.png</em></td>
+
+		<td><img src="icons/application_form_edit.png" title="application_form_edit.png" alt="application form edit "/><em>application_form_edit.png</em></td>
+		<td><img src="icons/application_form_magnify.png" title="application_form_magnify.png" alt="application form magnify "/><em>application_form_magnify.png</em></td>
+		<td><img src="icons/application_get.png" title="application_get.png" alt="application get "/><em>application_get.png</em></td>
+		<td><img src="icons/application_go.png" title="application_go.png" alt="application go "/><em>application_go.png</em></td>
+		<td><img src="icons/application_home.png" title="application_home.png" alt="application home "/><em>application_home.png</em></td>
+		<td><img src="icons/application_key.png" title="application_key.png" alt="application key "/><em>application_key.png</em></td>
+
+		<td><img src="icons/application_lightning.png" title="application_lightning.png" alt="application lightning "/><em>application_lightning.png</em></td>
+		<td><img src="icons/application_link.png" title="application_link.png" alt="application link "/><em>application_link.png</em></td>
+		<td><img src="icons/application_osx.png" title="application_osx.png" alt="application osx "/><em>application_osx.png</em></td>
+		<td><img src="icons/application_osx_terminal.png" title="application_osx_terminal.png" alt="application osx terminal "/><em>application_osx_terminal.png</em></td>
+		<td><img src="icons/application_put.png" title="application_put.png" alt="application put "/><em>application_put.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/application_side_boxes.png" title="application_side_boxes.png" alt="application side boxes "/><em>application_side_boxes.png</em></td>
+		<td><img src="icons/application_side_contract.png" title="application_side_contract.png" alt="application side contract "/><em>application_side_contract.png</em></td>
+		<td><img src="icons/application_side_expand.png" title="application_side_expand.png" alt="application side expand "/><em>application_side_expand.png</em></td>
+		<td><img src="icons/application_side_list.png" title="application_side_list.png" alt="application side list "/><em>application_side_list.png</em></td>
+		<td><img src="icons/application_side_tree.png" title="application_side_tree.png" alt="application side tree "/><em>application_side_tree.png</em></td>
+
+		<td><img src="icons/application_split.png" title="application_split.png" alt="application split "/><em>application_split.png</em></td>
+		<td><img src="icons/application_tile_horizontal.png" title="application_tile_horizontal.png" alt="application tile horizontal "/><em>application_tile_horizontal.png</em></td>
+		<td><img src="icons/application_tile_vertical.png" title="application_tile_vertical.png" alt="application tile vertical "/><em>application_tile_vertical.png</em></td>
+		<td><img src="icons/application_view_columns.png" title="application_view_columns.png" alt="application view columns "/><em>application_view_columns.png</em></td>
+		<td><img src="icons/application_view_detail.png" title="application_view_detail.png" alt="application view detail "/><em>application_view_detail.png</em></td>
+		<td><img src="icons/application_view_gallery.png" title="application_view_gallery.png" alt="application view gallery "/><em>application_view_gallery.png</em></td>
+
+		<td><img src="icons/application_view_icons.png" title="application_view_icons.png" alt="application view icons "/><em>application_view_icons.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/application_view_list.png" title="application_view_list.png" alt="application view list "/><em>application_view_list.png</em></td>
+		<td><img src="icons/application_view_tile.png" title="application_view_tile.png" alt="application view tile "/><em>application_view_tile.png</em></td>
+		<td><img src="icons/application_xp.png" title="application_xp.png" alt="application xp "/><em>application_xp.png</em></td>
+		<td><img src="icons/application_xp_terminal.png" title="application_xp_terminal.png" alt="application xp terminal "/><em>application_xp_terminal.png</em></td>
+
+		<td><img src="icons/arrow_branch.png" title="arrow_branch.png" alt="arrow branch "/><em>arrow_branch.png</em></td>
+		<td><img src="icons/arrow_divide.png" title="arrow_divide.png" alt="arrow divide "/><em>arrow_divide.png</em></td>
+		<td><img src="icons/arrow_down.png" title="arrow_down.png" alt="arrow down "/><em>arrow_down.png</em></td>
+		<td><img src="icons/arrow_in.png" title="arrow_in.png" alt="arrow in "/><em>arrow_in.png</em></td>
+		<td><img src="icons/arrow_inout.png" title="arrow_inout.png" alt="arrow inout "/><em>arrow_inout.png</em></td>
+		<td><img src="icons/arrow_join.png" title="arrow_join.png" alt="arrow join "/><em>arrow_join.png</em></td>
+
+		<td><img src="icons/arrow_left.png" title="arrow_left.png" alt="arrow left "/><em>arrow_left.png</em></td>
+		<td><img src="icons/arrow_merge.png" title="arrow_merge.png" alt="arrow merge "/><em>arrow_merge.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/arrow_out.png" title="arrow_out.png" alt="arrow out "/><em>arrow_out.png</em></td>
+		<td><img src="icons/arrow_redo.png" title="arrow_redo.png" alt="arrow redo "/><em>arrow_redo.png</em></td>
+		<td><img src="icons/arrow_refresh.png" title="arrow_refresh.png" alt="arrow refresh "/><em>arrow_refresh.png</em></td>
+
+		<td><img src="icons/arrow_refresh_small.png" title="arrow_refresh_small.png" alt="arrow refresh small "/><em>arrow_refresh_small.png</em></td>
+		<td><img src="icons/arrow_right.png" title="arrow_right.png" alt="arrow right "/><em>arrow_right.png</em></td>
+		<td><img src="icons/arrow_rotate_anticlockwise.png" title="arrow_rotate_anticlockwise.png" alt="arrow rotate anticlockwise "/><em>arrow_rotate_anticlockwise.png</em></td>
+		<td><img src="icons/arrow_rotate_clockwise.png" title="arrow_rotate_clockwise.png" alt="arrow rotate clockwise "/><em>arrow_rotate_clockwise.png</em></td>
+		<td><img src="icons/arrow_switch.png" title="arrow_switch.png" alt="arrow switch "/><em>arrow_switch.png</em></td>
+		<td><img src="icons/arrow_turn_left.png" title="arrow_turn_left.png" alt="arrow turn left "/><em>arrow_turn_left.png</em></td>
+
+		<td><img src="icons/arrow_turn_right.png" title="arrow_turn_right.png" alt="arrow turn right "/><em>arrow_turn_right.png</em></td>
+		<td><img src="icons/arrow_undo.png" title="arrow_undo.png" alt="arrow undo "/><em>arrow_undo.png</em></td>
+		<td><img src="icons/arrow_up.png" title="arrow_up.png" alt="arrow up "/><em>arrow_up.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/asterisk_orange.png" title="asterisk_orange.png" alt="asterisk orange "/><em>asterisk_orange.png</em></td>
+		<td><img src="icons/asterisk_yellow.png" title="asterisk_yellow.png" alt="asterisk yellow "/><em>asterisk_yellow.png</em></td>
+
+		<td><img src="icons/attach.png" title="attach.png" alt="attach "/><em>attach.png</em></td>
+		<td><img src="icons/award_star_add.png" title="award_star_add.png" alt="award star add "/><em>award_star_add.png</em></td>
+		<td><img src="icons/award_star_bronze_1.png" title="award_star_bronze_1.png" alt="award star bronze 1 "/><em>award_star_bronze_1.png</em></td>
+		<td><img src="icons/award_star_bronze_2.png" title="award_star_bronze_2.png" alt="award star bronze 2 "/><em>award_star_bronze_2.png</em></td>
+		<td><img src="icons/award_star_bronze_3.png" title="award_star_bronze_3.png" alt="award star bronze 3 "/><em>award_star_bronze_3.png</em></td>
+		<td><img src="icons/award_star_delete.png" title="award_star_delete.png" alt="award star delete "/><em>award_star_delete.png</em></td>
+
+		<td><img src="icons/award_star_gold_1.png" title="award_star_gold_1.png" alt="award star gold 1 "/><em>award_star_gold_1.png</em></td>
+		<td><img src="icons/award_star_gold_2.png" title="award_star_gold_2.png" alt="award star gold 2 "/><em>award_star_gold_2.png</em></td>
+		<td><img src="icons/award_star_gold_3.png" title="award_star_gold_3.png" alt="award star gold 3 "/><em>award_star_gold_3.png</em></td>
+		<td><img src="icons/award_star_silver_1.png" title="award_star_silver_1.png" alt="award star silver 1 "/><em>award_star_silver_1.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/award_star_silver_2.png" title="award_star_silver_2.png" alt="award star silver 2 "/><em>award_star_silver_2.png</em></td>
+
+		<td><img src="icons/award_star_silver_3.png" title="award_star_silver_3.png" alt="award star silver 3 "/><em>award_star_silver_3.png</em></td>
+		<td><img src="icons/basket.png" title="basket.png" alt="basket "/><em>basket.png</em></td>
+		<td><img src="icons/basket_add.png" title="basket_add.png" alt="basket add "/><em>basket_add.png</em></td>
+		<td><img src="icons/basket_delete.png" title="basket_delete.png" alt="basket delete "/><em>basket_delete.png</em></td>
+		<td><img src="icons/basket_edit.png" title="basket_edit.png" alt="basket edit "/><em>basket_edit.png</em></td>
+		<td><img src="icons/basket_error.png" title="basket_error.png" alt="basket error "/><em>basket_error.png</em></td>
+
+		<td><img src="icons/basket_go.png" title="basket_go.png" alt="basket go "/><em>basket_go.png</em></td>
+		<td><img src="icons/basket_put.png" title="basket_put.png" alt="basket put "/><em>basket_put.png</em></td>
+		<td><img src="icons/basket_remove.png" title="basket_remove.png" alt="basket remove "/><em>basket_remove.png</em></td>
+		<td><img src="icons/bell.png" title="bell.png" alt="bell "/><em>bell.png</em></td>
+		<td><img src="icons/bell_add.png" title="bell_add.png" alt="bell add "/><em>bell_add.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/bell_delete.png" title="bell_delete.png" alt="bell delete "/><em>bell_delete.png</em></td>
+		<td><img src="icons/bell_error.png" title="bell_error.png" alt="bell error "/><em>bell_error.png</em></td>
+		<td><img src="icons/bell_go.png" title="bell_go.png" alt="bell go "/><em>bell_go.png</em></td>
+		<td><img src="icons/bell_link.png" title="bell_link.png" alt="bell link "/><em>bell_link.png</em></td>
+		<td><img src="icons/bin.png" title="bin.png" alt="bin "/><em>bin.png</em></td>
+
+		<td><img src="icons/bin_closed.png" title="bin_closed.png" alt="bin closed "/><em>bin_closed.png</em></td>
+		<td><img src="icons/bin_empty.png" title="bin_empty.png" alt="bin empty "/><em>bin_empty.png</em></td>
+		<td><img src="icons/bomb.png" title="bomb.png" alt="bomb "/><em>bomb.png</em></td>
+		<td><img src="icons/book.png" title="book.png" alt="book "/><em>book.png</em></td>
+		<td><img src="icons/book_add.png" title="book_add.png" alt="book add "/><em>book_add.png</em></td>
+		<td><img src="icons/book_addresses.png" title="book_addresses.png" alt="book addresses "/><em>book_addresses.png</em></td>
+
+		<td><img src="icons/book_delete.png" title="book_delete.png" alt="book delete "/><em>book_delete.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/book_edit.png" title="book_edit.png" alt="book edit "/><em>book_edit.png</em></td>
+		<td><img src="icons/book_error.png" title="book_error.png" alt="book error "/><em>book_error.png</em></td>
+		<td><img src="icons/book_go.png" title="book_go.png" alt="book go "/><em>book_go.png</em></td>
+		<td><img src="icons/book_key.png" title="book_key.png" alt="book key "/><em>book_key.png</em></td>
+
+		<td><img src="icons/book_link.png" title="book_link.png" alt="book link "/><em>book_link.png</em></td>
+		<td><img src="icons/book_next.png" title="book_next.png" alt="book next "/><em>book_next.png</em></td>
+		<td><img src="icons/book_open.png" title="book_open.png" alt="book open "/><em>book_open.png</em></td>
+		<td><img src="icons/book_previous.png" title="book_previous.png" alt="book previous "/><em>book_previous.png</em></td>
+		<td><img src="icons/box.png" title="box.png" alt="box "/><em>box.png</em></td>
+		<td><img src="icons/brick.png" title="brick.png" alt="brick "/><em>brick.png</em></td>
+
+		<td><img src="icons/brick_add.png" title="brick_add.png" alt="brick add "/><em>brick_add.png</em></td>
+		<td><img src="icons/brick_delete.png" title="brick_delete.png" alt="brick delete "/><em>brick_delete.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/brick_edit.png" title="brick_edit.png" alt="brick edit "/><em>brick_edit.png</em></td>
+		<td><img src="icons/brick_error.png" title="brick_error.png" alt="brick error "/><em>brick_error.png</em></td>
+		<td><img src="icons/brick_go.png" title="brick_go.png" alt="brick go "/><em>brick_go.png</em></td>
+
+		<td><img src="icons/brick_link.png" title="brick_link.png" alt="brick link "/><em>brick_link.png</em></td>
+		<td><img src="icons/bricks.png" title="bricks.png" alt="bricks "/><em>bricks.png</em></td>
+		<td><img src="icons/briefcase.png" title="briefcase.png" alt="briefcase "/><em>briefcase.png</em></td>
+		<td><img src="icons/bug.png" title="bug.png" alt="bug "/><em>bug.png</em></td>
+		<td><img src="icons/bug_add.png" title="bug_add.png" alt="bug add "/><em>bug_add.png</em></td>
+		<td><img src="icons/bug_delete.png" title="bug_delete.png" alt="bug delete "/><em>bug_delete.png</em></td>
+
+		<td><img src="icons/bug_edit.png" title="bug_edit.png" alt="bug edit "/><em>bug_edit.png</em></td>
+		<td><img src="icons/bug_error.png" title="bug_error.png" alt="bug error "/><em>bug_error.png</em></td>
+		<td><img src="icons/bug_go.png" title="bug_go.png" alt="bug go "/><em>bug_go.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/bug_link.png" title="bug_link.png" alt="bug link "/><em>bug_link.png</em></td>
+		<td><img src="icons/building.png" title="building.png" alt="building "/><em>building.png</em></td>
+
+		<td><img src="icons/building_add.png" title="building_add.png" alt="building add "/><em>building_add.png</em></td>
+		<td><img src="icons/building_delete.png" title="building_delete.png" alt="building delete "/><em>building_delete.png</em></td>
+		<td><img src="icons/building_edit.png" title="building_edit.png" alt="building edit "/><em>building_edit.png</em></td>
+		<td><img src="icons/building_error.png" title="building_error.png" alt="building error "/><em>building_error.png</em></td>
+		<td><img src="icons/building_go.png" title="building_go.png" alt="building go "/><em>building_go.png</em></td>
+		<td><img src="icons/building_key.png" title="building_key.png" alt="building key "/><em>building_key.png</em></td>
+
+		<td><img src="icons/building_link.png" title="building_link.png" alt="building link "/><em>building_link.png</em></td>
+		<td><img src="icons/bullet_add.png" title="bullet_add.png" alt="bullet add "/><em>bullet_add.png</em></td>
+		<td><img src="icons/bullet_arrow_bottom.png" title="bullet_arrow_bottom.png" alt="bullet arrow bottom "/><em>bullet_arrow_bottom.png</em></td>
+		<td><img src="icons/bullet_arrow_down.png" title="bullet_arrow_down.png" alt="bullet arrow down "/><em>bullet_arrow_down.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/bullet_arrow_top.png" title="bullet_arrow_top.png" alt="bullet arrow top "/><em>bullet_arrow_top.png</em></td>
+
+		<td><img src="icons/bullet_arrow_up.png" title="bullet_arrow_up.png" alt="bullet arrow up "/><em>bullet_arrow_up.png</em></td>
+		<td><img src="icons/bullet_black.png" title="bullet_black.png" alt="bullet black "/><em>bullet_black.png</em></td>
+		<td><img src="icons/bullet_blue.png" title="bullet_blue.png" alt="bullet blue "/><em>bullet_blue.png</em></td>
+		<td><img src="icons/bullet_delete.png" title="bullet_delete.png" alt="bullet delete "/><em>bullet_delete.png</em></td>
+		<td><img src="icons/bullet_disk.png" title="bullet_disk.png" alt="bullet disk "/><em>bullet_disk.png</em></td>
+		<td><img src="icons/bullet_error.png" title="bullet_error.png" alt="bullet error "/><em>bullet_error.png</em></td>
+
+		<td><img src="icons/bullet_feed.png" title="bullet_feed.png" alt="bullet feed "/><em>bullet_feed.png</em></td>
+		<td><img src="icons/bullet_go.png" title="bullet_go.png" alt="bullet go "/><em>bullet_go.png</em></td>
+		<td><img src="icons/bullet_green.png" title="bullet_green.png" alt="bullet green "/><em>bullet_green.png</em></td>
+		<td><img src="icons/bullet_key.png" title="bullet_key.png" alt="bullet key "/><em>bullet_key.png</em></td>
+		<td><img src="icons/bullet_orange.png" title="bullet_orange.png" alt="bullet orange "/><em>bullet_orange.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/bullet_picture.png" title="bullet_picture.png" alt="bullet picture "/><em>bullet_picture.png</em></td>
+		<td><img src="icons/bullet_pink.png" title="bullet_pink.png" alt="bullet pink "/><em>bullet_pink.png</em></td>
+		<td><img src="icons/bullet_purple.png" title="bullet_purple.png" alt="bullet purple "/><em>bullet_purple.png</em></td>
+		<td><img src="icons/bullet_red.png" title="bullet_red.png" alt="bullet red "/><em>bullet_red.png</em></td>
+		<td><img src="icons/bullet_star.png" title="bullet_star.png" alt="bullet star "/><em>bullet_star.png</em></td>
+
+		<td><img src="icons/bullet_toggle_minus.png" title="bullet_toggle_minus.png" alt="bullet toggle minus "/><em>bullet_toggle_minus.png</em></td>
+		<td><img src="icons/bullet_toggle_plus.png" title="bullet_toggle_plus.png" alt="bullet toggle plus "/><em>bullet_toggle_plus.png</em></td>
+		<td><img src="icons/bullet_white.png" title="bullet_white.png" alt="bullet white "/><em>bullet_white.png</em></td>
+		<td><img src="icons/bullet_wrench.png" title="bullet_wrench.png" alt="bullet wrench "/><em>bullet_wrench.png</em></td>
+		<td><img src="icons/bullet_yellow.png" title="bullet_yellow.png" alt="bullet yellow "/><em>bullet_yellow.png</em></td>
+		<td><img src="icons/cake.png" title="cake.png" alt="cake "/><em>cake.png</em></td>
+
+		<td><img src="icons/calculator.png" title="calculator.png" alt="calculator "/><em>calculator.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/calculator_add.png" title="calculator_add.png" alt="calculator add "/><em>calculator_add.png</em></td>
+		<td><img src="icons/calculator_delete.png" title="calculator_delete.png" alt="calculator delete "/><em>calculator_delete.png</em></td>
+		<td><img src="icons/calculator_edit.png" title="calculator_edit.png" alt="calculator edit "/><em>calculator_edit.png</em></td>
+		<td><img src="icons/calculator_error.png" title="calculator_error.png" alt="calculator error "/><em>calculator_error.png</em></td>
+
+		<td><img src="icons/calculator_link.png" title="calculator_link.png" alt="calculator link "/><em>calculator_link.png</em></td>
+		<td><img src="icons/calendar.png" title="calendar.png" alt="calendar "/><em>calendar.png</em></td>
+		<td><img src="icons/calendar_add.png" title="calendar_add.png" alt="calendar add "/><em>calendar_add.png</em></td>
+		<td><img src="icons/calendar_delete.png" title="calendar_delete.png" alt="calendar delete "/><em>calendar_delete.png</em></td>
+		<td><img src="icons/calendar_edit.png" title="calendar_edit.png" alt="calendar edit "/><em>calendar_edit.png</em></td>
+		<td><img src="icons/calendar_link.png" title="calendar_link.png" alt="calendar link "/><em>calendar_link.png</em></td>
+
+		<td><img src="icons/calendar_view_day.png" title="calendar_view_day.png" alt="calendar view day "/><em>calendar_view_day.png</em></td>
+		<td><img src="icons/calendar_view_month.png" title="calendar_view_month.png" alt="calendar view month "/><em>calendar_view_month.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/calendar_view_week.png" title="calendar_view_week.png" alt="calendar view week "/><em>calendar_view_week.png</em></td>
+		<td><img src="icons/camera.png" title="camera.png" alt="camera "/><em>camera.png</em></td>
+		<td><img src="icons/camera_add.png" title="camera_add.png" alt="camera add "/><em>camera_add.png</em></td>
+
+		<td><img src="icons/camera_delete.png" title="camera_delete.png" alt="camera delete "/><em>camera_delete.png</em></td>
+		<td><img src="icons/camera_edit.png" title="camera_edit.png" alt="camera edit "/><em>camera_edit.png</em></td>
+		<td><img src="icons/camera_error.png" title="camera_error.png" alt="camera error "/><em>camera_error.png</em></td>
+		<td><img src="icons/camera_go.png" title="camera_go.png" alt="camera go "/><em>camera_go.png</em></td>
+		<td><img src="icons/camera_link.png" title="camera_link.png" alt="camera link "/><em>camera_link.png</em></td>
+		<td><img src="icons/camera_small.png" title="camera_small.png" alt="camera small "/><em>camera_small.png</em></td>
+
+		<td><img src="icons/cancel.png" title="cancel.png" alt="cancel "/><em>cancel.png</em></td>
+		<td><img src="icons/car.png" title="car.png" alt="car "/><em>car.png</em></td>
+		<td><img src="icons/car_add.png" title="car_add.png" alt="car add "/><em>car_add.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/car_delete.png" title="car_delete.png" alt="car delete "/><em>car_delete.png</em></td>
+		<td><img src="icons/cart.png" title="cart.png" alt="cart "/><em>cart.png</em></td>
+
+		<td><img src="icons/cart_add.png" title="cart_add.png" alt="cart add "/><em>cart_add.png</em></td>
+		<td><img src="icons/cart_delete.png" title="cart_delete.png" alt="cart delete "/><em>cart_delete.png</em></td>
+		<td><img src="icons/cart_edit.png" title="cart_edit.png" alt="cart edit "/><em>cart_edit.png</em></td>
+		<td><img src="icons/cart_error.png" title="cart_error.png" alt="cart error "/><em>cart_error.png</em></td>
+		<td><img src="icons/cart_go.png" title="cart_go.png" alt="cart go "/><em>cart_go.png</em></td>
+		<td><img src="icons/cart_put.png" title="cart_put.png" alt="cart put "/><em>cart_put.png</em></td>
+
+		<td><img src="icons/cart_remove.png" title="cart_remove.png" alt="cart remove "/><em>cart_remove.png</em></td>
+		<td><img src="icons/cd.png" title="cd.png" alt="cd "/><em>cd.png</em></td>
+		<td><img src="icons/cd_add.png" title="cd_add.png" alt="cd add "/><em>cd_add.png</em></td>
+		<td><img src="icons/cd_burn.png" title="cd_burn.png" alt="cd burn "/><em>cd_burn.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/cd_delete.png" title="cd_delete.png" alt="cd delete "/><em>cd_delete.png</em></td>
+
+		<td><img src="icons/cd_edit.png" title="cd_edit.png" alt="cd edit "/><em>cd_edit.png</em></td>
+		<td><img src="icons/cd_eject.png" title="cd_eject.png" alt="cd eject "/><em>cd_eject.png</em></td>
+		<td><img src="icons/cd_go.png" title="cd_go.png" alt="cd go "/><em>cd_go.png</em></td>
+		<td><img src="icons/chart_bar.png" title="chart_bar.png" alt="chart bar "/><em>chart_bar.png</em></td>
+		<td><img src="icons/chart_bar_add.png" title="chart_bar_add.png" alt="chart bar add "/><em>chart_bar_add.png</em></td>
+		<td><img src="icons/chart_bar_delete.png" title="chart_bar_delete.png" alt="chart bar delete "/><em>chart_bar_delete.png</em></td>
+
+		<td><img src="icons/chart_bar_edit.png" title="chart_bar_edit.png" alt="chart bar edit "/><em>chart_bar_edit.png</em></td>
+		<td><img src="icons/chart_bar_error.png" title="chart_bar_error.png" alt="chart bar error "/><em>chart_bar_error.png</em></td>
+		<td><img src="icons/chart_bar_link.png" title="chart_bar_link.png" alt="chart bar link "/><em>chart_bar_link.png</em></td>
+		<td><img src="icons/chart_curve.png" title="chart_curve.png" alt="chart curve "/><em>chart_curve.png</em></td>
+		<td><img src="icons/chart_curve_add.png" title="chart_curve_add.png" alt="chart curve add "/><em>chart_curve_add.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/chart_curve_delete.png" title="chart_curve_delete.png" alt="chart curve delete "/><em>chart_curve_delete.png</em></td>
+		<td><img src="icons/chart_curve_edit.png" title="chart_curve_edit.png" alt="chart curve edit "/><em>chart_curve_edit.png</em></td>
+		<td><img src="icons/chart_curve_error.png" title="chart_curve_error.png" alt="chart curve error "/><em>chart_curve_error.png</em></td>
+		<td><img src="icons/chart_curve_go.png" title="chart_curve_go.png" alt="chart curve go "/><em>chart_curve_go.png</em></td>
+		<td><img src="icons/chart_curve_link.png" title="chart_curve_link.png" alt="chart curve link "/><em>chart_curve_link.png</em></td>
+
+		<td><img src="icons/chart_line.png" title="chart_line.png" alt="chart line "/><em>chart_line.png</em></td>
+		<td><img src="icons/chart_line_add.png" title="chart_line_add.png" alt="chart line add "/><em>chart_line_add.png</em></td>
+		<td><img src="icons/chart_line_delete.png" title="chart_line_delete.png" alt="chart line delete "/><em>chart_line_delete.png</em></td>
+		<td><img src="icons/chart_line_edit.png" title="chart_line_edit.png" alt="chart line edit "/><em>chart_line_edit.png</em></td>
+		<td><img src="icons/chart_line_error.png" title="chart_line_error.png" alt="chart line error "/><em>chart_line_error.png</em></td>
+		<td><img src="icons/chart_line_link.png" title="chart_line_link.png" alt="chart line link "/><em>chart_line_link.png</em></td>
+
+		<td><img src="icons/chart_organisation.png" title="chart_organisation.png" alt="chart organisation "/><em>chart_organisation.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/chart_organisation_add.png" title="chart_organisation_add.png" alt="chart organisation add "/><em>chart_organisation_add.png</em></td>
+		<td><img src="icons/chart_organisation_delete.png" title="chart_organisation_delete.png" alt="chart organisation delete "/><em>chart_organisation_delete.png</em></td>
+		<td><img src="icons/chart_pie.png" title="chart_pie.png" alt="chart pie "/><em>chart_pie.png</em></td>
+		<td><img src="icons/chart_pie_add.png" title="chart_pie_add.png" alt="chart pie add "/><em>chart_pie_add.png</em></td>
+
+		<td><img src="icons/chart_pie_delete.png" title="chart_pie_delete.png" alt="chart pie delete "/><em>chart_pie_delete.png</em></td>
+		<td><img src="icons/chart_pie_edit.png" title="chart_pie_edit.png" alt="chart pie edit "/><em>chart_pie_edit.png</em></td>
+		<td><img src="icons/chart_pie_error.png" title="chart_pie_error.png" alt="chart pie error "/><em>chart_pie_error.png</em></td>
+		<td><img src="icons/chart_pie_link.png" title="chart_pie_link.png" alt="chart pie link "/><em>chart_pie_link.png</em></td>
+		<td><img src="icons/clock.png" title="clock.png" alt="clock "/><em>clock.png</em></td>
+		<td><img src="icons/clock_add.png" title="clock_add.png" alt="clock add "/><em>clock_add.png</em></td>
+
+		<td><img src="icons/clock_delete.png" title="clock_delete.png" alt="clock delete "/><em>clock_delete.png</em></td>
+		<td><img src="icons/clock_edit.png" title="clock_edit.png" alt="clock edit "/><em>clock_edit.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/clock_error.png" title="clock_error.png" alt="clock error "/><em>clock_error.png</em></td>
+		<td><img src="icons/clock_go.png" title="clock_go.png" alt="clock go "/><em>clock_go.png</em></td>
+		<td><img src="icons/clock_link.png" title="clock_link.png" alt="clock link "/><em>clock_link.png</em></td>
+
+		<td><img src="icons/clock_pause.png" title="clock_pause.png" alt="clock pause "/><em>clock_pause.png</em></td>
+		<td><img src="icons/clock_play.png" title="clock_play.png" alt="clock play "/><em>clock_play.png</em></td>
+		<td><img src="icons/clock_red.png" title="clock_red.png" alt="clock red "/><em>clock_red.png</em></td>
+		<td><img src="icons/clock_stop.png" title="clock_stop.png" alt="clock stop "/><em>clock_stop.png</em></td>
+		<td><img src="icons/cog.png" title="cog.png" alt="cog "/><em>cog.png</em></td>
+		<td><img src="icons/cog_add.png" title="cog_add.png" alt="cog add "/><em>cog_add.png</em></td>
+
+		<td><img src="icons/cog_delete.png" title="cog_delete.png" alt="cog delete "/><em>cog_delete.png</em></td>
+		<td><img src="icons/cog_edit.png" title="cog_edit.png" alt="cog edit "/><em>cog_edit.png</em></td>
+		<td><img src="icons/cog_error.png" title="cog_error.png" alt="cog error "/><em>cog_error.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/cog_go.png" title="cog_go.png" alt="cog go "/><em>cog_go.png</em></td>
+		<td><img src="icons/coins.png" title="coins.png" alt="coins "/><em>coins.png</em></td>
+
+		<td><img src="icons/coins_add.png" title="coins_add.png" alt="coins add "/><em>coins_add.png</em></td>
+		<td><img src="icons/coins_delete.png" title="coins_delete.png" alt="coins delete "/><em>coins_delete.png</em></td>
+		<td><img src="icons/color_swatch.png" title="color_swatch.png" alt="color swatch "/><em>color_swatch.png</em></td>
+		<td><img src="icons/color_wheel.png" title="color_wheel.png" alt="color wheel "/><em>color_wheel.png</em></td>
+		<td><img src="icons/comment.png" title="comment.png" alt="comment "/><em>comment.png</em></td>
+		<td><img src="icons/comment_add.png" title="comment_add.png" alt="comment add "/><em>comment_add.png</em></td>
+
+		<td><img src="icons/comment_delete.png" title="comment_delete.png" alt="comment delete "/><em>comment_delete.png</em></td>
+		<td><img src="icons/comment_edit.png" title="comment_edit.png" alt="comment edit "/><em>comment_edit.png</em></td>
+		<td><img src="icons/comments.png" title="comments.png" alt="comments "/><em>comments.png</em></td>
+		<td><img src="icons/comments_add.png" title="comments_add.png" alt="comments add "/><em>comments_add.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/comments_delete.png" title="comments_delete.png" alt="comments delete "/><em>comments_delete.png</em></td>
+
+		<td><img src="icons/compress.png" title="compress.png" alt="compress "/><em>compress.png</em></td>
+		<td><img src="icons/computer.png" title="computer.png" alt="computer "/><em>computer.png</em></td>
+		<td><img src="icons/computer_add.png" title="computer_add.png" alt="computer add "/><em>computer_add.png</em></td>
+		<td><img src="icons/computer_delete.png" title="computer_delete.png" alt="computer delete "/><em>computer_delete.png</em></td>
+		<td><img src="icons/computer_edit.png" title="computer_edit.png" alt="computer edit "/><em>computer_edit.png</em></td>
+		<td><img src="icons/computer_error.png" title="computer_error.png" alt="computer error "/><em>computer_error.png</em></td>
+
+		<td><img src="icons/computer_go.png" title="computer_go.png" alt="computer go "/><em>computer_go.png</em></td>
+		<td><img src="icons/computer_key.png" title="computer_key.png" alt="computer key "/><em>computer_key.png</em></td>
+		<td><img src="icons/computer_link.png" title="computer_link.png" alt="computer link "/><em>computer_link.png</em></td>
+		<td><img src="icons/connect.png" title="connect.png" alt="connect "/><em>connect.png</em></td>
+		<td><img src="icons/contrast.png" title="contrast.png" alt="contrast "/><em>contrast.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/contrast_decrease.png" title="contrast_decrease.png" alt="contrast decrease "/><em>contrast_decrease.png</em></td>
+		<td><img src="icons/contrast_high.png" title="contrast_high.png" alt="contrast high "/><em>contrast_high.png</em></td>
+		<td><img src="icons/contrast_increase.png" title="contrast_increase.png" alt="contrast increase "/><em>contrast_increase.png</em></td>
+		<td><img src="icons/contrast_low.png" title="contrast_low.png" alt="contrast low "/><em>contrast_low.png</em></td>
+		<td><img src="icons/control_eject.png" title="control_eject.png" alt="control eject "/><em>control_eject.png</em></td>
+
+		<td><img src="icons/control_eject_blue.png" title="control_eject_blue.png" alt="control eject blue "/><em>control_eject_blue.png</em></td>
+		<td><img src="icons/control_end.png" title="control_end.png" alt="control end "/><em>control_end.png</em></td>
+		<td><img src="icons/control_end_blue.png" title="control_end_blue.png" alt="control end blue "/><em>control_end_blue.png</em></td>
+		<td><img src="icons/control_equalizer.png" title="control_equalizer.png" alt="control equalizer "/><em>control_equalizer.png</em></td>
+		<td><img src="icons/control_equalizer_blue.png" title="control_equalizer_blue.png" alt="control equalizer blue "/><em>control_equalizer_blue.png</em></td>
+		<td><img src="icons/control_fastforward.png" title="control_fastforward.png" alt="control fastforward "/><em>control_fastforward.png</em></td>
+
+		<td><img src="icons/control_fastforward_blue.png" title="control_fastforward_blue.png" alt="control fastforward blue "/><em>control_fastforward_blue.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/control_pause.png" title="control_pause.png" alt="control pause "/><em>control_pause.png</em></td>
+		<td><img src="icons/control_pause_blue.png" title="control_pause_blue.png" alt="control pause blue "/><em>control_pause_blue.png</em></td>
+		<td><img src="icons/control_play.png" title="control_play.png" alt="control play "/><em>control_play.png</em></td>
+		<td><img src="icons/control_play_blue.png" title="control_play_blue.png" alt="control play blue "/><em>control_play_blue.png</em></td>
+
+		<td><img src="icons/control_repeat.png" title="control_repeat.png" alt="control repeat "/><em>control_repeat.png</em></td>
+		<td><img src="icons/control_repeat_blue.png" title="control_repeat_blue.png" alt="control repeat blue "/><em>control_repeat_blue.png</em></td>
+		<td><img src="icons/control_rewind.png" title="control_rewind.png" alt="control rewind "/><em>control_rewind.png</em></td>
+		<td><img src="icons/control_rewind_blue.png" title="control_rewind_blue.png" alt="control rewind blue "/><em>control_rewind_blue.png</em></td>
+		<td><img src="icons/control_start.png" title="control_start.png" alt="control start "/><em>control_start.png</em></td>
+		<td><img src="icons/control_start_blue.png" title="control_start_blue.png" alt="control start blue "/><em>control_start_blue.png</em></td>
+
+		<td><img src="icons/control_stop.png" title="control_stop.png" alt="control stop "/><em>control_stop.png</em></td>
+		<td><img src="icons/control_stop_blue.png" title="control_stop_blue.png" alt="control stop blue "/><em>control_stop_blue.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/controller.png" title="controller.png" alt="controller "/><em>controller.png</em></td>
+		<td><img src="icons/controller_add.png" title="controller_add.png" alt="controller add "/><em>controller_add.png</em></td>
+		<td><img src="icons/controller_delete.png" title="controller_delete.png" alt="controller delete "/><em>controller_delete.png</em></td>
+
+		<td><img src="icons/controller_error.png" title="controller_error.png" alt="controller error "/><em>controller_error.png</em></td>
+		<td><img src="icons/creditcards.png" title="creditcards.png" alt="creditcards "/><em>creditcards.png</em></td>
+		<td><img src="icons/cross.png" title="cross.png" alt="cross "/><em>cross.png</em></td>
+		<td><img src="icons/css.png" title="css.png" alt="css "/><em>css.png</em></td>
+		<td><img src="icons/css_add.png" title="css_add.png" alt="css add "/><em>css_add.png</em></td>
+		<td><img src="icons/css_delete.png" title="css_delete.png" alt="css delete "/><em>css_delete.png</em></td>
+
+		<td><img src="icons/css_go.png" title="css_go.png" alt="css go "/><em>css_go.png</em></td>
+		<td><img src="icons/css_valid.png" title="css_valid.png" alt="css valid "/><em>css_valid.png</em></td>
+		<td><img src="icons/cup.png" title="cup.png" alt="cup "/><em>cup.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/cup_add.png" title="cup_add.png" alt="cup add "/><em>cup_add.png</em></td>
+		<td><img src="icons/cup_delete.png" title="cup_delete.png" alt="cup delete "/><em>cup_delete.png</em></td>
+
+		<td><img src="icons/cup_edit.png" title="cup_edit.png" alt="cup edit "/><em>cup_edit.png</em></td>
+		<td><img src="icons/cup_error.png" title="cup_error.png" alt="cup error "/><em>cup_error.png</em></td>
+		<td><img src="icons/cup_go.png" title="cup_go.png" alt="cup go "/><em>cup_go.png</em></td>
+		<td><img src="icons/cup_key.png" title="cup_key.png" alt="cup key "/><em>cup_key.png</em></td>
+		<td><img src="icons/cup_link.png" title="cup_link.png" alt="cup link "/><em>cup_link.png</em></td>
+		<td><img src="icons/cursor.png" title="cursor.png" alt="cursor "/><em>cursor.png</em></td>
+
+		<td><img src="icons/cut.png" title="cut.png" alt="cut "/><em>cut.png</em></td>
+		<td><img src="icons/cut_red.png" title="cut_red.png" alt="cut red "/><em>cut_red.png</em></td>
+		<td><img src="icons/database.png" title="database.png" alt="database "/><em>database.png</em></td>
+		<td><img src="icons/database_add.png" title="database_add.png" alt="database add "/><em>database_add.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/database_connect.png" title="database_connect.png" alt="database connect "/><em>database_connect.png</em></td>
+
+		<td><img src="icons/database_delete.png" title="database_delete.png" alt="database delete "/><em>database_delete.png</em></td>
+		<td><img src="icons/database_edit.png" title="database_edit.png" alt="database edit "/><em>database_edit.png</em></td>
+		<td><img src="icons/database_error.png" title="database_error.png" alt="database error "/><em>database_error.png</em></td>
+		<td><img src="icons/database_gear.png" title="database_gear.png" alt="database gear "/><em>database_gear.png</em></td>
+		<td><img src="icons/database_go.png" title="database_go.png" alt="database go "/><em>database_go.png</em></td>
+		<td><img src="icons/database_key.png" title="database_key.png" alt="database key "/><em>database_key.png</em></td>
+
+		<td><img src="icons/database_lightning.png" title="database_lightning.png" alt="database lightning "/><em>database_lightning.png</em></td>
+		<td><img src="icons/database_link.png" title="database_link.png" alt="database link "/><em>database_link.png</em></td>
+		<td><img src="icons/database_refresh.png" title="database_refresh.png" alt="database refresh "/><em>database_refresh.png</em></td>
+		<td><img src="icons/database_save.png" title="database_save.png" alt="database save "/><em>database_save.png</em></td>
+		<td><img src="icons/database_table.png" title="database_table.png" alt="database table "/><em>database_table.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/date.png" title="date.png" alt="date "/><em>date.png</em></td>
+		<td><img src="icons/date_add.png" title="date_add.png" alt="date add "/><em>date_add.png</em></td>
+		<td><img src="icons/date_delete.png" title="date_delete.png" alt="date delete "/><em>date_delete.png</em></td>
+		<td><img src="icons/date_edit.png" title="date_edit.png" alt="date edit "/><em>date_edit.png</em></td>
+		<td><img src="icons/date_error.png" title="date_error.png" alt="date error "/><em>date_error.png</em></td>
+
+		<td><img src="icons/date_go.png" title="date_go.png" alt="date go "/><em>date_go.png</em></td>
+		<td><img src="icons/date_link.png" title="date_link.png" alt="date link "/><em>date_link.png</em></td>
+		<td><img src="icons/date_magnify.png" title="date_magnify.png" alt="date magnify "/><em>date_magnify.png</em></td>
+		<td><img src="icons/date_next.png" title="date_next.png" alt="date next "/><em>date_next.png</em></td>
+		<td><img src="icons/date_previous.png" title="date_previous.png" alt="date previous "/><em>date_previous.png</em></td>
+		<td><img src="icons/delete.png" title="delete.png" alt="delete "/><em>delete.png</em></td>
+
+		<td><img src="icons/disconnect.png" title="disconnect.png" alt="disconnect "/><em>disconnect.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/disk.png" title="disk.png" alt="disk "/><em>disk.png</em></td>
+		<td><img src="icons/disk_multiple.png" title="disk_multiple.png" alt="disk multiple "/><em>disk_multiple.png</em></td>
+		<td><img src="icons/door.png" title="door.png" alt="door "/><em>door.png</em></td>
+		<td><img src="icons/door_in.png" title="door_in.png" alt="door in "/><em>door_in.png</em></td>
+
+		<td><img src="icons/door_open.png" title="door_open.png" alt="door open "/><em>door_open.png</em></td>
+		<td><img src="icons/door_out.png" title="door_out.png" alt="door out "/><em>door_out.png</em></td>
+		<td><img src="icons/drink.png" title="drink.png" alt="drink "/><em>drink.png</em></td>
+		<td><img src="icons/drink_empty.png" title="drink_empty.png" alt="drink empty "/><em>drink_empty.png</em></td>
+		<td><img src="icons/drive.png" title="drive.png" alt="drive "/><em>drive.png</em></td>
+		<td><img src="icons/drive_add.png" title="drive_add.png" alt="drive add "/><em>drive_add.png</em></td>
+
+		<td><img src="icons/drive_burn.png" title="drive_burn.png" alt="drive burn "/><em>drive_burn.png</em></td>
+		<td><img src="icons/drive_cd.png" title="drive_cd.png" alt="drive cd "/><em>drive_cd.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/drive_cd_empty.png" title="drive_cd_empty.png" alt="drive cd empty "/><em>drive_cd_empty.png</em></td>
+		<td><img src="icons/drive_delete.png" title="drive_delete.png" alt="drive delete "/><em>drive_delete.png</em></td>
+		<td><img src="icons/drive_disk.png" title="drive_disk.png" alt="drive disk "/><em>drive_disk.png</em></td>
+
+		<td><img src="icons/drive_edit.png" title="drive_edit.png" alt="drive edit "/><em>drive_edit.png</em></td>
+		<td><img src="icons/drive_error.png" title="drive_error.png" alt="drive error "/><em>drive_error.png</em></td>
+		<td><img src="icons/drive_go.png" title="drive_go.png" alt="drive go "/><em>drive_go.png</em></td>
+		<td><img src="icons/drive_key.png" title="drive_key.png" alt="drive key "/><em>drive_key.png</em></td>
+		<td><img src="icons/drive_link.png" title="drive_link.png" alt="drive link "/><em>drive_link.png</em></td>
+		<td><img src="icons/drive_magnify.png" title="drive_magnify.png" alt="drive magnify "/><em>drive_magnify.png</em></td>
+
+		<td><img src="icons/drive_network.png" title="drive_network.png" alt="drive network "/><em>drive_network.png</em></td>
+		<td><img src="icons/drive_rename.png" title="drive_rename.png" alt="drive rename "/><em>drive_rename.png</em></td>
+		<td><img src="icons/drive_user.png" title="drive_user.png" alt="drive user "/><em>drive_user.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/drive_web.png" title="drive_web.png" alt="drive web "/><em>drive_web.png</em></td>
+		<td><img src="icons/dvd.png" title="dvd.png" alt="dvd "/><em>dvd.png</em></td>
+
+		<td><img src="icons/dvd_add.png" title="dvd_add.png" alt="dvd add "/><em>dvd_add.png</em></td>
+		<td><img src="icons/dvd_delete.png" title="dvd_delete.png" alt="dvd delete "/><em>dvd_delete.png</em></td>
+		<td><img src="icons/dvd_edit.png" title="dvd_edit.png" alt="dvd edit "/><em>dvd_edit.png</em></td>
+		<td><img src="icons/dvd_error.png" title="dvd_error.png" alt="dvd error "/><em>dvd_error.png</em></td>
+		<td><img src="icons/dvd_go.png" title="dvd_go.png" alt="dvd go "/><em>dvd_go.png</em></td>
+		<td><img src="icons/dvd_key.png" title="dvd_key.png" alt="dvd key "/><em>dvd_key.png</em></td>
+
+		<td><img src="icons/dvd_link.png" title="dvd_link.png" alt="dvd link "/><em>dvd_link.png</em></td>
+		<td><img src="icons/email.png" title="email.png" alt="email "/><em>email.png</em></td>
+		<td><img src="icons/email_add.png" title="email_add.png" alt="email add "/><em>email_add.png</em></td>
+		<td><img src="icons/email_attach.png" title="email_attach.png" alt="email attach "/><em>email_attach.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/email_delete.png" title="email_delete.png" alt="email delete "/><em>email_delete.png</em></td>
+
+		<td><img src="icons/email_edit.png" title="email_edit.png" alt="email edit "/><em>email_edit.png</em></td>
+		<td><img src="icons/email_error.png" title="email_error.png" alt="email error "/><em>email_error.png</em></td>
+		<td><img src="icons/email_go.png" title="email_go.png" alt="email go "/><em>email_go.png</em></td>
+		<td><img src="icons/email_link.png" title="email_link.png" alt="email link "/><em>email_link.png</em></td>
+		<td><img src="icons/email_open.png" title="email_open.png" alt="email open "/><em>email_open.png</em></td>
+		<td><img src="icons/email_open_image.png" title="email_open_image.png" alt="email open image "/><em>email_open_image.png</em></td>
+
+		<td><img src="icons/emoticon_evilgrin.png" title="emoticon_evilgrin.png" alt="emoticon evilgrin "/><em>emoticon_evilgrin.png</em></td>
+		<td><img src="icons/emoticon_grin.png" title="emoticon_grin.png" alt="emoticon grin "/><em>emoticon_grin.png</em></td>
+		<td><img src="icons/emoticon_happy.png" title="emoticon_happy.png" alt="emoticon happy "/><em>emoticon_happy.png</em></td>
+		<td><img src="icons/emoticon_smile.png" title="emoticon_smile.png" alt="emoticon smile "/><em>emoticon_smile.png</em></td>
+		<td><img src="icons/emoticon_surprised.png" title="emoticon_surprised.png" alt="emoticon surprised "/><em>emoticon_surprised.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/emoticon_tongue.png" title="emoticon_tongue.png" alt="emoticon tongue "/><em>emoticon_tongue.png</em></td>
+		<td><img src="icons/emoticon_unhappy.png" title="emoticon_unhappy.png" alt="emoticon unhappy "/><em>emoticon_unhappy.png</em></td>
+		<td><img src="icons/emoticon_waii.png" title="emoticon_waii.png" alt="emoticon waii "/><em>emoticon_waii.png</em></td>
+		<td><img src="icons/emoticon_wink.png" title="emoticon_wink.png" alt="emoticon wink "/><em>emoticon_wink.png</em></td>
+		<td><img src="icons/error.png" title="error.png" alt="error "/><em>error.png</em></td>
+
+		<td><img src="icons/error_add.png" title="error_add.png" alt="error add "/><em>error_add.png</em></td>
+		<td><img src="icons/error_delete.png" title="error_delete.png" alt="error delete "/><em>error_delete.png</em></td>
+		<td><img src="icons/error_go.png" title="error_go.png" alt="error go "/><em>error_go.png</em></td>
+		<td><img src="icons/exclamation.png" title="exclamation.png" alt="exclamation "/><em>exclamation.png</em></td>
+		<td><img src="icons/eye.png" title="eye.png" alt="eye "/><em>eye.png</em></td>
+		<td><img src="icons/feed.png" title="feed.png" alt="feed "/><em>feed.png</em></td>
+
+		<td><img src="icons/feed_add.png" title="feed_add.png" alt="feed add "/><em>feed_add.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/feed_delete.png" title="feed_delete.png" alt="feed delete "/><em>feed_delete.png</em></td>
+		<td><img src="icons/feed_disk.png" title="feed_disk.png" alt="feed disk "/><em>feed_disk.png</em></td>
+		<td><img src="icons/feed_edit.png" title="feed_edit.png" alt="feed edit "/><em>feed_edit.png</em></td>
+		<td><img src="icons/feed_error.png" title="feed_error.png" alt="feed error "/><em>feed_error.png</em></td>
+
+		<td><img src="icons/feed_go.png" title="feed_go.png" alt="feed go "/><em>feed_go.png</em></td>
+		<td><img src="icons/feed_key.png" title="feed_key.png" alt="feed key "/><em>feed_key.png</em></td>
+		<td><img src="icons/feed_link.png" title="feed_link.png" alt="feed link "/><em>feed_link.png</em></td>
+		<td><img src="icons/feed_magnify.png" title="feed_magnify.png" alt="feed magnify "/><em>feed_magnify.png</em></td>
+		<td><img src="icons/female.png" title="female.png" alt="female "/><em>female.png</em></td>
+		<td><img src="icons/film.png" title="film.png" alt="film "/><em>film.png</em></td>
+
+		<td><img src="icons/film_add.png" title="film_add.png" alt="film add "/><em>film_add.png</em></td>
+		<td><img src="icons/film_delete.png" title="film_delete.png" alt="film delete "/><em>film_delete.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/film_edit.png" title="film_edit.png" alt="film edit "/><em>film_edit.png</em></td>
+		<td><img src="icons/film_error.png" title="film_error.png" alt="film error "/><em>film_error.png</em></td>
+		<td><img src="icons/film_go.png" title="film_go.png" alt="film go "/><em>film_go.png</em></td>
+
+		<td><img src="icons/film_key.png" title="film_key.png" alt="film key "/><em>film_key.png</em></td>
+		<td><img src="icons/film_link.png" title="film_link.png" alt="film link "/><em>film_link.png</em></td>
+		<td><img src="icons/film_save.png" title="film_save.png" alt="film save "/><em>film_save.png</em></td>
+		<td><img src="icons/find.png" title="find.png" alt="find "/><em>find.png</em></td>
+		<td><img src="icons/flag_blue.png" title="flag_blue.png" alt="flag blue "/><em>flag_blue.png</em></td>
+		<td><img src="icons/flag_green.png" title="flag_green.png" alt="flag green "/><em>flag_green.png</em></td>
+
+		<td><img src="icons/flag_orange.png" title="flag_orange.png" alt="flag orange "/><em>flag_orange.png</em></td>
+		<td><img src="icons/flag_pink.png" title="flag_pink.png" alt="flag pink "/><em>flag_pink.png</em></td>
+		<td><img src="icons/flag_purple.png" title="flag_purple.png" alt="flag purple "/><em>flag_purple.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/flag_red.png" title="flag_red.png" alt="flag red "/><em>flag_red.png</em></td>
+		<td><img src="icons/flag_yellow.png" title="flag_yellow.png" alt="flag yellow "/><em>flag_yellow.png</em></td>
+
+		<td><img src="icons/folder.png" title="folder.png" alt="folder "/><em>folder.png</em></td>
+		<td><img src="icons/folder_add.png" title="folder_add.png" alt="folder add "/><em>folder_add.png</em></td>
+		<td><img src="icons/folder_bell.png" title="folder_bell.png" alt="folder bell "/><em>folder_bell.png</em></td>
+		<td><img src="icons/folder_brick.png" title="folder_brick.png" alt="folder brick "/><em>folder_brick.png</em></td>
+		<td><img src="icons/folder_bug.png" title="folder_bug.png" alt="folder bug "/><em>folder_bug.png</em></td>
+		<td><img src="icons/folder_camera.png" title="folder_camera.png" alt="folder camera "/><em>folder_camera.png</em></td>
+
+		<td><img src="icons/folder_database.png" title="folder_database.png" alt="folder database "/><em>folder_database.png</em></td>
+		<td><img src="icons/folder_delete.png" title="folder_delete.png" alt="folder delete "/><em>folder_delete.png</em></td>
+		<td><img src="icons/folder_edit.png" title="folder_edit.png" alt="folder edit "/><em>folder_edit.png</em></td>
+		<td><img src="icons/folder_error.png" title="folder_error.png" alt="folder error "/><em>folder_error.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/folder_explore.png" title="folder_explore.png" alt="folder explore "/><em>folder_explore.png</em></td>
+
+		<td><img src="icons/folder_feed.png" title="folder_feed.png" alt="folder feed "/><em>folder_feed.png</em></td>
+		<td><img src="icons/folder_find.png" title="folder_find.png" alt="folder find "/><em>folder_find.png</em></td>
+		<td><img src="icons/folder_go.png" title="folder_go.png" alt="folder go "/><em>folder_go.png</em></td>
+		<td><img src="icons/folder_heart.png" title="folder_heart.png" alt="folder heart "/><em>folder_heart.png</em></td>
+		<td><img src="icons/folder_image.png" title="folder_image.png" alt="folder image "/><em>folder_image.png</em></td>
+		<td><img src="icons/folder_key.png" title="folder_key.png" alt="folder key "/><em>folder_key.png</em></td>
+
+		<td><img src="icons/folder_lightbulb.png" title="folder_lightbulb.png" alt="folder lightbulb "/><em>folder_lightbulb.png</em></td>
+		<td><img src="icons/folder_link.png" title="folder_link.png" alt="folder link "/><em>folder_link.png</em></td>
+		<td><img src="icons/folder_magnify.png" title="folder_magnify.png" alt="folder magnify "/><em>folder_magnify.png</em></td>
+		<td><img src="icons/folder_page.png" title="folder_page.png" alt="folder page "/><em>folder_page.png</em></td>
+		<td><img src="icons/folder_page_white.png" title="folder_page_white.png" alt="folder page white "/><em>folder_page_white.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/folder_palette.png" title="folder_palette.png" alt="folder palette "/><em>folder_palette.png</em></td>
+		<td><img src="icons/folder_picture.png" title="folder_picture.png" alt="folder picture "/><em>folder_picture.png</em></td>
+		<td><img src="icons/folder_star.png" title="folder_star.png" alt="folder star "/><em>folder_star.png</em></td>
+		<td><img src="icons/folder_table.png" title="folder_table.png" alt="folder table "/><em>folder_table.png</em></td>
+		<td><img src="icons/folder_user.png" title="folder_user.png" alt="folder user "/><em>folder_user.png</em></td>
+
+		<td><img src="icons/folder_wrench.png" title="folder_wrench.png" alt="folder wrench "/><em>folder_wrench.png</em></td>
+		<td><img src="icons/font.png" title="font.png" alt="font "/><em>font.png</em></td>
+		<td><img src="icons/font_add.png" title="font_add.png" alt="font add "/><em>font_add.png</em></td>
+		<td><img src="icons/font_delete.png" title="font_delete.png" alt="font delete "/><em>font_delete.png</em></td>
+		<td><img src="icons/font_go.png" title="font_go.png" alt="font go "/><em>font_go.png</em></td>
+		<td><img src="icons/group.png" title="group.png" alt="group "/><em>group.png</em></td>
+
+		<td><img src="icons/group_add.png" title="group_add.png" alt="group add "/><em>group_add.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/group_delete.png" title="group_delete.png" alt="group delete "/><em>group_delete.png</em></td>
+		<td><img src="icons/group_edit.png" title="group_edit.png" alt="group edit "/><em>group_edit.png</em></td>
+		<td><img src="icons/group_error.png" title="group_error.png" alt="group error "/><em>group_error.png</em></td>
+		<td><img src="icons/group_gear.png" title="group_gear.png" alt="group gear "/><em>group_gear.png</em></td>
+
+		<td><img src="icons/group_go.png" title="group_go.png" alt="group go "/><em>group_go.png</em></td>
+		<td><img src="icons/group_key.png" title="group_key.png" alt="group key "/><em>group_key.png</em></td>
+		<td><img src="icons/group_link.png" title="group_link.png" alt="group link "/><em>group_link.png</em></td>
+		<td><img src="icons/heart.png" title="heart.png" alt="heart "/><em>heart.png</em></td>
+		<td><img src="icons/heart_add.png" title="heart_add.png" alt="heart add "/><em>heart_add.png</em></td>
+		<td><img src="icons/heart_delete.png" title="heart_delete.png" alt="heart delete "/><em>heart_delete.png</em></td>
+
+		<td><img src="icons/help.png" title="help.png" alt="help "/><em>help.png</em></td>
+		<td><img src="icons/hourglass.png" title="hourglass.png" alt="hourglass "/><em>hourglass.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/hourglass_add.png" title="hourglass_add.png" alt="hourglass add "/><em>hourglass_add.png</em></td>
+		<td><img src="icons/hourglass_delete.png" title="hourglass_delete.png" alt="hourglass delete "/><em>hourglass_delete.png</em></td>
+		<td><img src="icons/hourglass_go.png" title="hourglass_go.png" alt="hourglass go "/><em>hourglass_go.png</em></td>
+
+		<td><img src="icons/hourglass_link.png" title="hourglass_link.png" alt="hourglass link "/><em>hourglass_link.png</em></td>
+		<td><img src="icons/house.png" title="house.png" alt="house "/><em>house.png</em></td>
+		<td><img src="icons/house_go.png" title="house_go.png" alt="house go "/><em>house_go.png</em></td>
+		<td><img src="icons/house_link.png" title="house_link.png" alt="house link "/><em>house_link.png</em></td>
+		<td><img src="icons/html.png" title="html.png" alt="html "/><em>html.png</em></td>
+		<td><img src="icons/html_add.png" title="html_add.png" alt="html add "/><em>html_add.png</em></td>
+
+		<td><img src="icons/html_delete.png" title="html_delete.png" alt="html delete "/><em>html_delete.png</em></td>
+		<td><img src="icons/html_go.png" title="html_go.png" alt="html go "/><em>html_go.png</em></td>
+		<td><img src="icons/html_valid.png" title="html_valid.png" alt="html valid "/><em>html_valid.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/image.png" title="image.png" alt="image "/><em>image.png</em></td>
+		<td><img src="icons/image_add.png" title="image_add.png" alt="image add "/><em>image_add.png</em></td>
+
+		<td><img src="icons/image_delete.png" title="image_delete.png" alt="image delete "/><em>image_delete.png</em></td>
+		<td><img src="icons/image_edit.png" title="image_edit.png" alt="image edit "/><em>image_edit.png</em></td>
+		<td><img src="icons/image_link.png" title="image_link.png" alt="image link "/><em>image_link.png</em></td>
+		<td><img src="icons/images.png" title="images.png" alt="images "/><em>images.png</em></td>
+		<td><img src="icons/information.png" title="information.png" alt="information "/><em>information.png</em></td>
+		<td><img src="icons/ipod.png" title="ipod.png" alt="ipod "/><em>ipod.png</em></td>
+
+		<td><img src="icons/ipod_cast.png" title="ipod_cast.png" alt="ipod cast "/><em>ipod_cast.png</em></td>
+		<td><img src="icons/ipod_cast_add.png" title="ipod_cast_add.png" alt="ipod cast add "/><em>ipod_cast_add.png</em></td>
+		<td><img src="icons/ipod_cast_delete.png" title="ipod_cast_delete.png" alt="ipod cast delete "/><em>ipod_cast_delete.png</em></td>
+		<td><img src="icons/ipod_sound.png" title="ipod_sound.png" alt="ipod sound "/><em>ipod_sound.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/joystick.png" title="joystick.png" alt="joystick "/><em>joystick.png</em></td>
+
+		<td><img src="icons/joystick_add.png" title="joystick_add.png" alt="joystick add "/><em>joystick_add.png</em></td>
+		<td><img src="icons/joystick_delete.png" title="joystick_delete.png" alt="joystick delete "/><em>joystick_delete.png</em></td>
+		<td><img src="icons/joystick_error.png" title="joystick_error.png" alt="joystick error "/><em>joystick_error.png</em></td>
+		<td><img src="icons/key.png" title="key.png" alt="key "/><em>key.png</em></td>
+		<td><img src="icons/key_add.png" title="key_add.png" alt="key add "/><em>key_add.png</em></td>
+		<td><img src="icons/key_delete.png" title="key_delete.png" alt="key delete "/><em>key_delete.png</em></td>
+
+		<td><img src="icons/key_go.png" title="key_go.png" alt="key go "/><em>key_go.png</em></td>
+		<td><img src="icons/keyboard.png" title="keyboard.png" alt="keyboard "/><em>keyboard.png</em></td>
+		<td><img src="icons/keyboard_add.png" title="keyboard_add.png" alt="keyboard add "/><em>keyboard_add.png</em></td>
+		<td><img src="icons/keyboard_delete.png" title="keyboard_delete.png" alt="keyboard delete "/><em>keyboard_delete.png</em></td>
+		<td><img src="icons/keyboard_magnify.png" title="keyboard_magnify.png" alt="keyboard magnify "/><em>keyboard_magnify.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/layers.png" title="layers.png" alt="layers "/><em>layers.png</em></td>
+		<td><img src="icons/layout.png" title="layout.png" alt="layout "/><em>layout.png</em></td>
+		<td><img src="icons/layout_add.png" title="layout_add.png" alt="layout add "/><em>layout_add.png</em></td>
+		<td><img src="icons/layout_content.png" title="layout_content.png" alt="layout content "/><em>layout_content.png</em></td>
+		<td><img src="icons/layout_delete.png" title="layout_delete.png" alt="layout delete "/><em>layout_delete.png</em></td>
+
+		<td><img src="icons/layout_edit.png" title="layout_edit.png" alt="layout edit "/><em>layout_edit.png</em></td>
+		<td><img src="icons/layout_error.png" title="layout_error.png" alt="layout error "/><em>layout_error.png</em></td>
+		<td><img src="icons/layout_header.png" title="layout_header.png" alt="layout header "/><em>layout_header.png</em></td>
+		<td><img src="icons/layout_link.png" title="layout_link.png" alt="layout link "/><em>layout_link.png</em></td>
+		<td><img src="icons/layout_sidebar.png" title="layout_sidebar.png" alt="layout sidebar "/><em>layout_sidebar.png</em></td>
+		<td><img src="icons/lightbulb.png" title="lightbulb.png" alt="lightbulb "/><em>lightbulb.png</em></td>
+
+		<td><img src="icons/lightbulb_add.png" title="lightbulb_add.png" alt="lightbulb add "/><em>lightbulb_add.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/lightbulb_delete.png" title="lightbulb_delete.png" alt="lightbulb delete "/><em>lightbulb_delete.png</em></td>
+		<td><img src="icons/lightbulb_off.png" title="lightbulb_off.png" alt="lightbulb off "/><em>lightbulb_off.png</em></td>
+		<td><img src="icons/lightning.png" title="lightning.png" alt="lightning "/><em>lightning.png</em></td>
+		<td><img src="icons/lightning_add.png" title="lightning_add.png" alt="lightning add "/><em>lightning_add.png</em></td>
+
+		<td><img src="icons/lightning_delete.png" title="lightning_delete.png" alt="lightning delete "/><em>lightning_delete.png</em></td>
+		<td><img src="icons/lightning_go.png" title="lightning_go.png" alt="lightning go "/><em>lightning_go.png</em></td>
+		<td><img src="icons/link.png" title="link.png" alt="link "/><em>link.png</em></td>
+		<td><img src="icons/link_add.png" title="link_add.png" alt="link add "/><em>link_add.png</em></td>
+		<td><img src="icons/link_break.png" title="link_break.png" alt="link break "/><em>link_break.png</em></td>
+		<td><img src="icons/link_delete.png" title="link_delete.png" alt="link delete "/><em>link_delete.png</em></td>
+
+		<td><img src="icons/link_edit.png" title="link_edit.png" alt="link edit "/><em>link_edit.png</em></td>
+		<td><img src="icons/link_error.png" title="link_error.png" alt="link error "/><em>link_error.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/link_go.png" title="link_go.png" alt="link go "/><em>link_go.png</em></td>
+		<td><img src="icons/lock.png" title="lock.png" alt="lock "/><em>lock.png</em></td>
+		<td><img src="icons/lock_add.png" title="lock_add.png" alt="lock add "/><em>lock_add.png</em></td>
+
+		<td><img src="icons/lock_break.png" title="lock_break.png" alt="lock break "/><em>lock_break.png</em></td>
+		<td><img src="icons/lock_delete.png" title="lock_delete.png" alt="lock delete "/><em>lock_delete.png</em></td>
+		<td><img src="icons/lock_edit.png" title="lock_edit.png" alt="lock edit "/><em>lock_edit.png</em></td>
+		<td><img src="icons/lock_go.png" title="lock_go.png" alt="lock go "/><em>lock_go.png</em></td>
+		<td><img src="icons/lock_open.png" title="lock_open.png" alt="lock open "/><em>lock_open.png</em></td>
+		<td><img src="icons/lorry.png" title="lorry.png" alt="lorry "/><em>lorry.png</em></td>
+
+		<td><img src="icons/lorry_add.png" title="lorry_add.png" alt="lorry add "/><em>lorry_add.png</em></td>
+		<td><img src="icons/lorry_delete.png" title="lorry_delete.png" alt="lorry delete "/><em>lorry_delete.png</em></td>
+		<td><img src="icons/lorry_error.png" title="lorry_error.png" alt="lorry error "/><em>lorry_error.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/lorry_flatbed.png" title="lorry_flatbed.png" alt="lorry flatbed "/><em>lorry_flatbed.png</em></td>
+		<td><img src="icons/lorry_go.png" title="lorry_go.png" alt="lorry go "/><em>lorry_go.png</em></td>
+
+		<td><img src="icons/lorry_link.png" title="lorry_link.png" alt="lorry link "/><em>lorry_link.png</em></td>
+		<td><img src="icons/magifier_zoom_out.png" title="magifier_zoom_out.png" alt="magifier zoom out "/><em>magifier_zoom_out.png</em></td>
+		<td><img src="icons/magnifier.png" title="magnifier.png" alt="magnifier "/><em>magnifier.png</em></td>
+		<td><img src="icons/magnifier_zoom_in.png" title="magnifier_zoom_in.png" alt="magnifier zoom in "/><em>magnifier_zoom_in.png</em></td>
+		<td><img src="icons/male.png" title="male.png" alt="male "/><em>male.png</em></td>
+		<td><img src="icons/map.png" title="map.png" alt="map "/><em>map.png</em></td>
+
+		<td><img src="icons/map_add.png" title="map_add.png" alt="map add "/><em>map_add.png</em></td>
+		<td><img src="icons/map_delete.png" title="map_delete.png" alt="map delete "/><em>map_delete.png</em></td>
+		<td><img src="icons/map_edit.png" title="map_edit.png" alt="map edit "/><em>map_edit.png</em></td>
+		<td><img src="icons/map_go.png" title="map_go.png" alt="map go "/><em>map_go.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/map_magnify.png" title="map_magnify.png" alt="map magnify "/><em>map_magnify.png</em></td>
+
+		<td><img src="icons/medal_bronze_1.png" title="medal_bronze_1.png" alt="medal bronze 1 "/><em>medal_bronze_1.png</em></td>
+		<td><img src="icons/medal_bronze_2.png" title="medal_bronze_2.png" alt="medal bronze 2 "/><em>medal_bronze_2.png</em></td>
+		<td><img src="icons/medal_bronze_3.png" title="medal_bronze_3.png" alt="medal bronze 3 "/><em>medal_bronze_3.png</em></td>
+		<td><img src="icons/medal_bronze_add.png" title="medal_bronze_add.png" alt="medal bronze add "/><em>medal_bronze_add.png</em></td>
+		<td><img src="icons/medal_bronze_delete.png" title="medal_bronze_delete.png" alt="medal bronze delete "/><em>medal_bronze_delete.png</em></td>
+		<td><img src="icons/medal_gold_1.png" title="medal_gold_1.png" alt="medal gold 1 "/><em>medal_gold_1.png</em></td>
+
+		<td><img src="icons/medal_gold_2.png" title="medal_gold_2.png" alt="medal gold 2 "/><em>medal_gold_2.png</em></td>
+		<td><img src="icons/medal_gold_3.png" title="medal_gold_3.png" alt="medal gold 3 "/><em>medal_gold_3.png</em></td>
+		<td><img src="icons/medal_gold_add.png" title="medal_gold_add.png" alt="medal gold add "/><em>medal_gold_add.png</em></td>
+		<td><img src="icons/medal_gold_delete.png" title="medal_gold_delete.png" alt="medal gold delete "/><em>medal_gold_delete.png</em></td>
+		<td><img src="icons/medal_silver_1.png" title="medal_silver_1.png" alt="medal silver 1 "/><em>medal_silver_1.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/medal_silver_2.png" title="medal_silver_2.png" alt="medal silver 2 "/><em>medal_silver_2.png</em></td>
+		<td><img src="icons/medal_silver_3.png" title="medal_silver_3.png" alt="medal silver 3 "/><em>medal_silver_3.png</em></td>
+		<td><img src="icons/medal_silver_add.png" title="medal_silver_add.png" alt="medal silver add "/><em>medal_silver_add.png</em></td>
+		<td><img src="icons/medal_silver_delete.png" title="medal_silver_delete.png" alt="medal silver delete "/><em>medal_silver_delete.png</em></td>
+		<td><img src="icons/money.png" title="money.png" alt="money "/><em>money.png</em></td>
+
+		<td><img src="icons/money_add.png" title="money_add.png" alt="money add "/><em>money_add.png</em></td>
+		<td><img src="icons/money_delete.png" title="money_delete.png" alt="money delete "/><em>money_delete.png</em></td>
+		<td><img src="icons/money_dollar.png" title="money_dollar.png" alt="money dollar "/><em>money_dollar.png</em></td>
+		<td><img src="icons/money_euro.png" title="money_euro.png" alt="money euro "/><em>money_euro.png</em></td>
+		<td><img src="icons/money_pound.png" title="money_pound.png" alt="money pound "/><em>money_pound.png</em></td>
+		<td><img src="icons/money_yen.png" title="money_yen.png" alt="money yen "/><em>money_yen.png</em></td>
+
+		<td><img src="icons/monitor.png" title="monitor.png" alt="monitor "/><em>monitor.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/monitor_add.png" title="monitor_add.png" alt="monitor add "/><em>monitor_add.png</em></td>
+		<td><img src="icons/monitor_delete.png" title="monitor_delete.png" alt="monitor delete "/><em>monitor_delete.png</em></td>
+		<td><img src="icons/monitor_edit.png" title="monitor_edit.png" alt="monitor edit "/><em>monitor_edit.png</em></td>
+		<td><img src="icons/monitor_error.png" title="monitor_error.png" alt="monitor error "/><em>monitor_error.png</em></td>
+
+		<td><img src="icons/monitor_go.png" title="monitor_go.png" alt="monitor go "/><em>monitor_go.png</em></td>
+		<td><img src="icons/monitor_lightning.png" title="monitor_lightning.png" alt="monitor lightning "/><em>monitor_lightning.png</em></td>
+		<td><img src="icons/monitor_link.png" title="monitor_link.png" alt="monitor link "/><em>monitor_link.png</em></td>
+		<td><img src="icons/mouse.png" title="mouse.png" alt="mouse "/><em>mouse.png</em></td>
+		<td><img src="icons/mouse_add.png" title="mouse_add.png" alt="mouse add "/><em>mouse_add.png</em></td>
+		<td><img src="icons/mouse_delete.png" title="mouse_delete.png" alt="mouse delete "/><em>mouse_delete.png</em></td>
+
+		<td><img src="icons/mouse_error.png" title="mouse_error.png" alt="mouse error "/><em>mouse_error.png</em></td>
+		<td><img src="icons/music.png" title="music.png" alt="music "/><em>music.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/new.png" title="new.png" alt="new "/><em>new.png</em></td>
+		<td><img src="icons/newspaper.png" title="newspaper.png" alt="newspaper "/><em>newspaper.png</em></td>
+		<td><img src="icons/newspaper_add.png" title="newspaper_add.png" alt="newspaper add "/><em>newspaper_add.png</em></td>
+
+		<td><img src="icons/newspaper_delete.png" title="newspaper_delete.png" alt="newspaper delete "/><em>newspaper_delete.png</em></td>
+		<td><img src="icons/newspaper_go.png" title="newspaper_go.png" alt="newspaper go "/><em>newspaper_go.png</em></td>
+		<td><img src="icons/newspaper_link.png" title="newspaper_link.png" alt="newspaper link "/><em>newspaper_link.png</em></td>
+		<td><img src="icons/note.png" title="note.png" alt="note "/><em>note.png</em></td>
+		<td><img src="icons/note_add.png" title="note_add.png" alt="note add "/><em>note_add.png</em></td>
+		<td><img src="icons/note_delete.png" title="note_delete.png" alt="note delete "/><em>note_delete.png</em></td>
+
+		<td><img src="icons/note_edit.png" title="note_edit.png" alt="note edit "/><em>note_edit.png</em></td>
+		<td><img src="icons/note_error.png" title="note_error.png" alt="note error "/><em>note_error.png</em></td>
+		<td><img src="icons/note_go.png" title="note_go.png" alt="note go "/><em>note_go.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/overlays.png" title="overlays.png" alt="overlays "/><em>overlays.png</em></td>
+		<td><img src="icons/package.png" title="package.png" alt="package "/><em>package.png</em></td>
+
+		<td><img src="icons/package_add.png" title="package_add.png" alt="package add "/><em>package_add.png</em></td>
+		<td><img src="icons/package_delete.png" title="package_delete.png" alt="package delete "/><em>package_delete.png</em></td>
+		<td><img src="icons/package_go.png" title="package_go.png" alt="package go "/><em>package_go.png</em></td>
+		<td><img src="icons/package_green.png" title="package_green.png" alt="package green "/><em>package_green.png</em></td>
+		<td><img src="icons/package_link.png" title="package_link.png" alt="package link "/><em>package_link.png</em></td>
+		<td><img src="icons/page.png" title="page.png" alt="page "/><em>page.png</em></td>
+
+		<td><img src="icons/page_add.png" title="page_add.png" alt="page add "/><em>page_add.png</em></td>
+		<td><img src="icons/page_attach.png" title="page_attach.png" alt="page attach "/><em>page_attach.png</em></td>
+		<td><img src="icons/page_code.png" title="page_code.png" alt="page code "/><em>page_code.png</em></td>
+		<td><img src="icons/page_copy.png" title="page_copy.png" alt="page copy "/><em>page_copy.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/page_delete.png" title="page_delete.png" alt="page delete "/><em>page_delete.png</em></td>
+
+		<td><img src="icons/page_edit.png" title="page_edit.png" alt="page edit "/><em>page_edit.png</em></td>
+		<td><img src="icons/page_error.png" title="page_error.png" alt="page error "/><em>page_error.png</em></td>
+		<td><img src="icons/page_excel.png" title="page_excel.png" alt="page excel "/><em>page_excel.png</em></td>
+		<td><img src="icons/page_find.png" title="page_find.png" alt="page find "/><em>page_find.png</em></td>
+		<td><img src="icons/page_gear.png" title="page_gear.png" alt="page gear "/><em>page_gear.png</em></td>
+		<td><img src="icons/page_go.png" title="page_go.png" alt="page go "/><em>page_go.png</em></td>
+
+		<td><img src="icons/page_green.png" title="page_green.png" alt="page green "/><em>page_green.png</em></td>
+		<td><img src="icons/page_key.png" title="page_key.png" alt="page key "/><em>page_key.png</em></td>
+		<td><img src="icons/page_lightning.png" title="page_lightning.png" alt="page lightning "/><em>page_lightning.png</em></td>
+		<td><img src="icons/page_link.png" title="page_link.png" alt="page link "/><em>page_link.png</em></td>
+		<td><img src="icons/page_paintbrush.png" title="page_paintbrush.png" alt="page paintbrush "/><em>page_paintbrush.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/page_paste.png" title="page_paste.png" alt="page paste "/><em>page_paste.png</em></td>
+		<td><img src="icons/page_red.png" title="page_red.png" alt="page red "/><em>page_red.png</em></td>
+		<td><img src="icons/page_refresh.png" title="page_refresh.png" alt="page refresh "/><em>page_refresh.png</em></td>
+		<td><img src="icons/page_save.png" title="page_save.png" alt="page save "/><em>page_save.png</em></td>
+		<td><img src="icons/page_white.png" title="page_white.png" alt="page white "/><em>page_white.png</em></td>
+
+		<td><img src="icons/page_white_acrobat.png" title="page_white_acrobat.png" alt="page white acrobat "/><em>page_white_acrobat.png</em></td>
+		<td><img src="icons/page_white_actionscript.png" title="page_white_actionscript.png" alt="page white actionscript "/><em>page_white_actionscript.png</em></td>
+		<td><img src="icons/page_white_add.png" title="page_white_add.png" alt="page white add "/><em>page_white_add.png</em></td>
+		<td><img src="icons/page_white_c.png" title="page_white_c.png" alt="page white c "/><em>page_white_c.png</em></td>
+		<td><img src="icons/page_white_camera.png" title="page_white_camera.png" alt="page white camera "/><em>page_white_camera.png</em></td>
+		<td><img src="icons/page_white_cd.png" title="page_white_cd.png" alt="page white cd "/><em>page_white_cd.png</em></td>
+
+		<td><img src="icons/page_white_code.png" title="page_white_code.png" alt="page white code "/><em>page_white_code.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/page_white_code_red.png" title="page_white_code_red.png" alt="page white code red "/><em>page_white_code_red.png</em></td>
+		<td><img src="icons/page_white_coldfusion.png" title="page_white_coldfusion.png" alt="page white coldfusion "/><em>page_white_coldfusion.png</em></td>
+		<td><img src="icons/page_white_compressed.png" title="page_white_compressed.png" alt="page white compressed "/><em>page_white_compressed.png</em></td>
+		<td><img src="icons/page_white_copy.png" title="page_white_copy.png" alt="page white copy "/><em>page_white_copy.png</em></td>
+
+		<td><img src="icons/page_white_cplusplus.png" title="page_white_cplusplus.png" alt="page white cplusplus "/><em>page_white_cplusplus.png</em></td>
+		<td><img src="icons/page_white_csharp.png" title="page_white_csharp.png" alt="page white csharp "/><em>page_white_csharp.png</em></td>
+		<td><img src="icons/page_white_cup.png" title="page_white_cup.png" alt="page white cup "/><em>page_white_cup.png</em></td>
+		<td><img src="icons/page_white_database.png" title="page_white_database.png" alt="page white database "/><em>page_white_database.png</em></td>
+		<td><img src="icons/page_white_delete.png" title="page_white_delete.png" alt="page white delete "/><em>page_white_delete.png</em></td>
+		<td><img src="icons/page_white_dvd.png" title="page_white_dvd.png" alt="page white dvd "/><em>page_white_dvd.png</em></td>
+
+		<td><img src="icons/page_white_edit.png" title="page_white_edit.png" alt="page white edit "/><em>page_white_edit.png</em></td>
+		<td><img src="icons/page_white_error.png" title="page_white_error.png" alt="page white error "/><em>page_white_error.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/page_white_excel.png" title="page_white_excel.png" alt="page white excel "/><em>page_white_excel.png</em></td>
+		<td><img src="icons/page_white_find.png" title="page_white_find.png" alt="page white find "/><em>page_white_find.png</em></td>
+		<td><img src="icons/page_white_flash.png" title="page_white_flash.png" alt="page white flash "/><em>page_white_flash.png</em></td>
+
+		<td><img src="icons/page_white_freehand.png" title="page_white_freehand.png" alt="page white freehand "/><em>page_white_freehand.png</em></td>
+		<td><img src="icons/page_white_gear.png" title="page_white_gear.png" alt="page white gear "/><em>page_white_gear.png</em></td>
+		<td><img src="icons/page_white_get.png" title="page_white_get.png" alt="page white get "/><em>page_white_get.png</em></td>
+		<td><img src="icons/page_white_go.png" title="page_white_go.png" alt="page white go "/><em>page_white_go.png</em></td>
+		<td><img src="icons/page_white_h.png" title="page_white_h.png" alt="page white h "/><em>page_white_h.png</em></td>
+		<td><img src="icons/page_white_horizontal.png" title="page_white_horizontal.png" alt="page white horizontal "/><em>page_white_horizontal.png</em></td>
+
+		<td><img src="icons/page_white_key.png" title="page_white_key.png" alt="page white key "/><em>page_white_key.png</em></td>
+		<td><img src="icons/page_white_lightning.png" title="page_white_lightning.png" alt="page white lightning "/><em>page_white_lightning.png</em></td>
+		<td><img src="icons/page_white_link.png" title="page_white_link.png" alt="page white link "/><em>page_white_link.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/page_white_magnify.png" title="page_white_magnify.png" alt="page white magnify "/><em>page_white_magnify.png</em></td>
+		<td><img src="icons/page_white_medal.png" title="page_white_medal.png" alt="page white medal "/><em>page_white_medal.png</em></td>
+
+		<td><img src="icons/page_white_office.png" title="page_white_office.png" alt="page white office "/><em>page_white_office.png</em></td>
+		<td><img src="icons/page_white_paint.png" title="page_white_paint.png" alt="page white paint "/><em>page_white_paint.png</em></td>
+		<td><img src="icons/page_white_paintbrush.png" title="page_white_paintbrush.png" alt="page white paintbrush "/><em>page_white_paintbrush.png</em></td>
+		<td><img src="icons/page_white_paste.png" title="page_white_paste.png" alt="page white paste "/><em>page_white_paste.png</em></td>
+		<td><img src="icons/page_white_php.png" title="page_white_php.png" alt="page white php "/><em>page_white_php.png</em></td>
+		<td><img src="icons/page_white_picture.png" title="page_white_picture.png" alt="page white picture "/><em>page_white_picture.png</em></td>
+
+		<td><img src="icons/page_white_powerpoint.png" title="page_white_powerpoint.png" alt="page white powerpoint "/><em>page_white_powerpoint.png</em></td>
+		<td><img src="icons/page_white_put.png" title="page_white_put.png" alt="page white put "/><em>page_white_put.png</em></td>
+		<td><img src="icons/page_white_ruby.png" title="page_white_ruby.png" alt="page white ruby "/><em>page_white_ruby.png</em></td>
+		<td><img src="icons/page_white_stack.png" title="page_white_stack.png" alt="page white stack "/><em>page_white_stack.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/page_white_star.png" title="page_white_star.png" alt="page white star "/><em>page_white_star.png</em></td>
+
+		<td><img src="icons/page_white_swoosh.png" title="page_white_swoosh.png" alt="page white swoosh "/><em>page_white_swoosh.png</em></td>
+		<td><img src="icons/page_white_text.png" title="page_white_text.png" alt="page white text "/><em>page_white_text.png</em></td>
+		<td><img src="icons/page_white_text_width.png" title="page_white_text_width.png" alt="page white text width "/><em>page_white_text_width.png</em></td>
+		<td><img src="icons/page_white_tux.png" title="page_white_tux.png" alt="page white tux "/><em>page_white_tux.png</em></td>
+		<td><img src="icons/page_white_vector.png" title="page_white_vector.png" alt="page white vector "/><em>page_white_vector.png</em></td>
+		<td><img src="icons/page_white_visualstudio.png" title="page_white_visualstudio.png" alt="page white visualstudio "/><em>page_white_visualstudio.png</em></td>
+
+		<td><img src="icons/page_white_width.png" title="page_white_width.png" alt="page white width "/><em>page_white_width.png</em></td>
+		<td><img src="icons/page_white_word.png" title="page_white_word.png" alt="page white word "/><em>page_white_word.png</em></td>
+		<td><img src="icons/page_white_world.png" title="page_white_world.png" alt="page white world "/><em>page_white_world.png</em></td>
+		<td><img src="icons/page_white_wrench.png" title="page_white_wrench.png" alt="page white wrench "/><em>page_white_wrench.png</em></td>
+		<td><img src="icons/page_white_zip.png" title="page_white_zip.png" alt="page white zip "/><em>page_white_zip.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/page_word.png" title="page_word.png" alt="page word "/><em>page_word.png</em></td>
+		<td><img src="icons/page_world.png" title="page_world.png" alt="page world "/><em>page_world.png</em></td>
+		<td><img src="icons/paintbrush.png" title="paintbrush.png" alt="paintbrush "/><em>paintbrush.png</em></td>
+		<td><img src="icons/paintcan.png" title="paintcan.png" alt="paintcan "/><em>paintcan.png</em></td>
+		<td><img src="icons/palette.png" title="palette.png" alt="palette "/><em>palette.png</em></td>
+
+		<td><img src="icons/paste_plain.png" title="paste_plain.png" alt="paste plain "/><em>paste_plain.png</em></td>
+		<td><img src="icons/paste_word.png" title="paste_word.png" alt="paste word "/><em>paste_word.png</em></td>
+		<td><img src="icons/pencil.png" title="pencil.png" alt="pencil "/><em>pencil.png</em></td>
+		<td><img src="icons/pencil_add.png" title="pencil_add.png" alt="pencil add "/><em>pencil_add.png</em></td>
+		<td><img src="icons/pencil_delete.png" title="pencil_delete.png" alt="pencil delete "/><em>pencil_delete.png</em></td>
+		<td><img src="icons/pencil_go.png" title="pencil_go.png" alt="pencil go "/><em>pencil_go.png</em></td>
+
+		<td><img src="icons/phone.png" title="phone.png" alt="phone "/><em>phone.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/phone_add.png" title="phone_add.png" alt="phone add "/><em>phone_add.png</em></td>
+		<td><img src="icons/phone_delete.png" title="phone_delete.png" alt="phone delete "/><em>phone_delete.png</em></td>
+		<td><img src="icons/phone_sound.png" title="phone_sound.png" alt="phone sound "/><em>phone_sound.png</em></td>
+		<td><img src="icons/photo.png" title="photo.png" alt="photo "/><em>photo.png</em></td>
+
+		<td><img src="icons/photo_add.png" title="photo_add.png" alt="photo add "/><em>photo_add.png</em></td>
+		<td><img src="icons/photo_delete.png" title="photo_delete.png" alt="photo delete "/><em>photo_delete.png</em></td>
+		<td><img src="icons/photo_link.png" title="photo_link.png" alt="photo link "/><em>photo_link.png</em></td>
+		<td><img src="icons/photos.png" title="photos.png" alt="photos "/><em>photos.png</em></td>
+		<td><img src="icons/picture.png" title="picture.png" alt="picture "/><em>picture.png</em></td>
+		<td><img src="icons/picture_add.png" title="picture_add.png" alt="picture add "/><em>picture_add.png</em></td>
+
+		<td><img src="icons/picture_delete.png" title="picture_delete.png" alt="picture delete "/><em>picture_delete.png</em></td>
+		<td><img src="icons/picture_edit.png" title="picture_edit.png" alt="picture edit "/><em>picture_edit.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/picture_empty.png" title="picture_empty.png" alt="picture empty "/><em>picture_empty.png</em></td>
+		<td><img src="icons/picture_error.png" title="picture_error.png" alt="picture error "/><em>picture_error.png</em></td>
+		<td><img src="icons/picture_go.png" title="picture_go.png" alt="picture go "/><em>picture_go.png</em></td>
+
+		<td><img src="icons/picture_key.png" title="picture_key.png" alt="picture key "/><em>picture_key.png</em></td>
+		<td><img src="icons/picture_link.png" title="picture_link.png" alt="picture link "/><em>picture_link.png</em></td>
+		<td><img src="icons/picture_save.png" title="picture_save.png" alt="picture save "/><em>picture_save.png</em></td>
+		<td><img src="icons/pictures.png" title="pictures.png" alt="pictures "/><em>pictures.png</em></td>
+		<td><img src="icons/pilcrow.png" title="pilcrow.png" alt="pilcrow "/><em>pilcrow.png</em></td>
+		<td><img src="icons/pill.png" title="pill.png" alt="pill "/><em>pill.png</em></td>
+
+		<td><img src="icons/pill_add.png" title="pill_add.png" alt="pill add "/><em>pill_add.png</em></td>
+		<td><img src="icons/pill_delete.png" title="pill_delete.png" alt="pill delete "/><em>pill_delete.png</em></td>
+		<td><img src="icons/pill_go.png" title="pill_go.png" alt="pill go "/><em>pill_go.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/plugin.png" title="plugin.png" alt="plugin "/><em>plugin.png</em></td>
+		<td><img src="icons/plugin_add.png" title="plugin_add.png" alt="plugin add "/><em>plugin_add.png</em></td>
+
+		<td><img src="icons/plugin_delete.png" title="plugin_delete.png" alt="plugin delete "/><em>plugin_delete.png</em></td>
+		<td><img src="icons/plugin_disabled.png" title="plugin_disabled.png" alt="plugin disabled "/><em>plugin_disabled.png</em></td>
+		<td><img src="icons/plugin_edit.png" title="plugin_edit.png" alt="plugin edit "/><em>plugin_edit.png</em></td>
+		<td><img src="icons/plugin_error.png" title="plugin_error.png" alt="plugin error "/><em>plugin_error.png</em></td>
+		<td><img src="icons/plugin_go.png" title="plugin_go.png" alt="plugin go "/><em>plugin_go.png</em></td>
+		<td><img src="icons/plugin_link.png" title="plugin_link.png" alt="plugin link "/><em>plugin_link.png</em></td>
+
+		<td><img src="icons/printer.png" title="printer.png" alt="printer "/><em>printer.png</em></td>
+		<td><img src="icons/printer_add.png" title="printer_add.png" alt="printer add "/><em>printer_add.png</em></td>
+		<td><img src="icons/printer_delete.png" title="printer_delete.png" alt="printer delete "/><em>printer_delete.png</em></td>
+		<td><img src="icons/printer_empty.png" title="printer_empty.png" alt="printer empty "/><em>printer_empty.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/printer_error.png" title="printer_error.png" alt="printer error "/><em>printer_error.png</em></td>
+
+		<td><img src="icons/rainbow.png" title="rainbow.png" alt="rainbow "/><em>rainbow.png</em></td>
+		<td><img src="icons/report.png" title="report.png" alt="report "/><em>report.png</em></td>
+		<td><img src="icons/report_add.png" title="report_add.png" alt="report add "/><em>report_add.png</em></td>
+		<td><img src="icons/report_delete.png" title="report_delete.png" alt="report delete "/><em>report_delete.png</em></td>
+		<td><img src="icons/report_disk.png" title="report_disk.png" alt="report disk "/><em>report_disk.png</em></td>
+		<td><img src="icons/report_edit.png" title="report_edit.png" alt="report edit "/><em>report_edit.png</em></td>
+
+		<td><img src="icons/report_go.png" title="report_go.png" alt="report go "/><em>report_go.png</em></td>
+		<td><img src="icons/report_key.png" title="report_key.png" alt="report key "/><em>report_key.png</em></td>
+		<td><img src="icons/report_link.png" title="report_link.png" alt="report link "/><em>report_link.png</em></td>
+		<td><img src="icons/report_magnify.png" title="report_magnify.png" alt="report magnify "/><em>report_magnify.png</em></td>
+		<td><img src="icons/report_picture.png" title="report_picture.png" alt="report picture "/><em>report_picture.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/report_user.png" title="report_user.png" alt="report user "/><em>report_user.png</em></td>
+		<td><img src="icons/report_word.png" title="report_word.png" alt="report word "/><em>report_word.png</em></td>
+		<td><img src="icons/resultset_first.png" title="resultset_first.png" alt="resultset first "/><em>resultset_first.png</em></td>
+		<td><img src="icons/resultset_last.png" title="resultset_last.png" alt="resultset last "/><em>resultset_last.png</em></td>
+		<td><img src="icons/resultset_next.png" title="resultset_next.png" alt="resultset next "/><em>resultset_next.png</em></td>
+
+		<td><img src="icons/resultset_previous.png" title="resultset_previous.png" alt="resultset previous "/><em>resultset_previous.png</em></td>
+		<td><img src="icons/rosette.png" title="rosette.png" alt="rosette "/><em>rosette.png</em></td>
+		<td><img src="icons/rss.png" title="rss.png" alt="rss "/><em>rss.png</em></td>
+		<td><img src="icons/rss_add.png" title="rss_add.png" alt="rss add "/><em>rss_add.png</em></td>
+		<td><img src="icons/rss_delete.png" title="rss_delete.png" alt="rss delete "/><em>rss_delete.png</em></td>
+		<td><img src="icons/rss_go.png" title="rss_go.png" alt="rss go "/><em>rss_go.png</em></td>
+
+		<td><img src="icons/rss_valid.png" title="rss_valid.png" alt="rss valid "/><em>rss_valid.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/ruby.png" title="ruby.png" alt="ruby "/><em>ruby.png</em></td>
+		<td><img src="icons/ruby_add.png" title="ruby_add.png" alt="ruby add "/><em>ruby_add.png</em></td>
+		<td><img src="icons/ruby_delete.png" title="ruby_delete.png" alt="ruby delete "/><em>ruby_delete.png</em></td>
+		<td><img src="icons/ruby_gear.png" title="ruby_gear.png" alt="ruby gear "/><em>ruby_gear.png</em></td>
+
+		<td><img src="icons/ruby_get.png" title="ruby_get.png" alt="ruby get "/><em>ruby_get.png</em></td>
+		<td><img src="icons/ruby_go.png" title="ruby_go.png" alt="ruby go "/><em>ruby_go.png</em></td>
+		<td><img src="icons/ruby_key.png" title="ruby_key.png" alt="ruby key "/><em>ruby_key.png</em></td>
+		<td><img src="icons/ruby_link.png" title="ruby_link.png" alt="ruby link "/><em>ruby_link.png</em></td>
+		<td><img src="icons/ruby_put.png" title="ruby_put.png" alt="ruby put "/><em>ruby_put.png</em></td>
+		<td><img src="icons/script.png" title="script.png" alt="script "/><em>script.png</em></td>
+
+		<td><img src="icons/script_add.png" title="script_add.png" alt="script add "/><em>script_add.png</em></td>
+		<td><img src="icons/script_code.png" title="script_code.png" alt="script code "/><em>script_code.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/script_code_red.png" title="script_code_red.png" alt="script code red "/><em>script_code_red.png</em></td>
+		<td><img src="icons/script_delete.png" title="script_delete.png" alt="script delete "/><em>script_delete.png</em></td>
+		<td><img src="icons/script_edit.png" title="script_edit.png" alt="script edit "/><em>script_edit.png</em></td>
+
+		<td><img src="icons/script_error.png" title="script_error.png" alt="script error "/><em>script_error.png</em></td>
+		<td><img src="icons/script_gear.png" title="script_gear.png" alt="script gear "/><em>script_gear.png</em></td>
+		<td><img src="icons/script_go.png" title="script_go.png" alt="script go "/><em>script_go.png</em></td>
+		<td><img src="icons/script_key.png" title="script_key.png" alt="script key "/><em>script_key.png</em></td>
+		<td><img src="icons/script_lightning.png" title="script_lightning.png" alt="script lightning "/><em>script_lightning.png</em></td>
+		<td><img src="icons/script_link.png" title="script_link.png" alt="script link "/><em>script_link.png</em></td>
+
+		<td><img src="icons/script_palette.png" title="script_palette.png" alt="script palette "/><em>script_palette.png</em></td>
+		<td><img src="icons/script_save.png" title="script_save.png" alt="script save "/><em>script_save.png</em></td>
+		<td><img src="icons/server.png" title="server.png" alt="server "/><em>server.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/server_add.png" title="server_add.png" alt="server add "/><em>server_add.png</em></td>
+		<td><img src="icons/server_chart.png" title="server_chart.png" alt="server chart "/><em>server_chart.png</em></td>
+
+		<td><img src="icons/server_compressed.png" title="server_compressed.png" alt="server compressed "/><em>server_compressed.png</em></td>
+		<td><img src="icons/server_connect.png" title="server_connect.png" alt="server connect "/><em>server_connect.png</em></td>
+		<td><img src="icons/server_database.png" title="server_database.png" alt="server database "/><em>server_database.png</em></td>
+		<td><img src="icons/server_delete.png" title="server_delete.png" alt="server delete "/><em>server_delete.png</em></td>
+		<td><img src="icons/server_edit.png" title="server_edit.png" alt="server edit "/><em>server_edit.png</em></td>
+		<td><img src="icons/server_error.png" title="server_error.png" alt="server error "/><em>server_error.png</em></td>
+
+		<td><img src="icons/server_go.png" title="server_go.png" alt="server go "/><em>server_go.png</em></td>
+		<td><img src="icons/server_key.png" title="server_key.png" alt="server key "/><em>server_key.png</em></td>
+		<td><img src="icons/server_lightning.png" title="server_lightning.png" alt="server lightning "/><em>server_lightning.png</em></td>
+		<td><img src="icons/server_link.png" title="server_link.png" alt="server link "/><em>server_link.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/server_uncompressed.png" title="server_uncompressed.png" alt="server uncompressed "/><em>server_uncompressed.png</em></td>
+
+		<td><img src="icons/shading.png" title="shading.png" alt="shading "/><em>shading.png</em></td>
+		<td><img src="icons/shape_align_bottom.png" title="shape_align_bottom.png" alt="shape align bottom "/><em>shape_align_bottom.png</em></td>
+		<td><img src="icons/shape_align_center.png" title="shape_align_center.png" alt="shape align center "/><em>shape_align_center.png</em></td>
+		<td><img src="icons/shape_align_left.png" title="shape_align_left.png" alt="shape align left "/><em>shape_align_left.png</em></td>
+		<td><img src="icons/shape_align_middle.png" title="shape_align_middle.png" alt="shape align middle "/><em>shape_align_middle.png</em></td>
+		<td><img src="icons/shape_align_right.png" title="shape_align_right.png" alt="shape align right "/><em>shape_align_right.png</em></td>
+
+		<td><img src="icons/shape_align_top.png" title="shape_align_top.png" alt="shape align top "/><em>shape_align_top.png</em></td>
+		<td><img src="icons/shape_flip_horizontal.png" title="shape_flip_horizontal.png" alt="shape flip horizontal "/><em>shape_flip_horizontal.png</em></td>
+		<td><img src="icons/shape_flip_vertical.png" title="shape_flip_vertical.png" alt="shape flip vertical "/><em>shape_flip_vertical.png</em></td>
+		<td><img src="icons/shape_group.png" title="shape_group.png" alt="shape group "/><em>shape_group.png</em></td>
+		<td><img src="icons/shape_handles.png" title="shape_handles.png" alt="shape handles "/><em>shape_handles.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/shape_move_back.png" title="shape_move_back.png" alt="shape move back "/><em>shape_move_back.png</em></td>
+		<td><img src="icons/shape_move_backwards.png" title="shape_move_backwards.png" alt="shape move backwards "/><em>shape_move_backwards.png</em></td>
+		<td><img src="icons/shape_move_forwards.png" title="shape_move_forwards.png" alt="shape move forwards "/><em>shape_move_forwards.png</em></td>
+		<td><img src="icons/shape_move_front.png" title="shape_move_front.png" alt="shape move front "/><em>shape_move_front.png</em></td>
+		<td><img src="icons/shape_rotate_anticlockwise.png" title="shape_rotate_anticlockwise.png" alt="shape rotate anticlockwise "/><em>shape_rotate_anticlockwise.png</em></td>
+
+		<td><img src="icons/shape_rotate_clockwise.png" title="shape_rotate_clockwise.png" alt="shape rotate clockwise "/><em>shape_rotate_clockwise.png</em></td>
+		<td><img src="icons/shape_square.png" title="shape_square.png" alt="shape square "/><em>shape_square.png</em></td>
+		<td><img src="icons/shape_square_add.png" title="shape_square_add.png" alt="shape square add "/><em>shape_square_add.png</em></td>
+		<td><img src="icons/shape_square_delete.png" title="shape_square_delete.png" alt="shape square delete "/><em>shape_square_delete.png</em></td>
+		<td><img src="icons/shape_square_edit.png" title="shape_square_edit.png" alt="shape square edit "/><em>shape_square_edit.png</em></td>
+		<td><img src="icons/shape_square_error.png" title="shape_square_error.png" alt="shape square error "/><em>shape_square_error.png</em></td>
+
+		<td><img src="icons/shape_square_go.png" title="shape_square_go.png" alt="shape square go "/><em>shape_square_go.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/shape_square_key.png" title="shape_square_key.png" alt="shape square key "/><em>shape_square_key.png</em></td>
+		<td><img src="icons/shape_square_link.png" title="shape_square_link.png" alt="shape square link "/><em>shape_square_link.png</em></td>
+		<td><img src="icons/shape_ungroup.png" title="shape_ungroup.png" alt="shape ungroup "/><em>shape_ungroup.png</em></td>
+		<td><img src="icons/shield.png" title="shield.png" alt="shield "/><em>shield.png</em></td>
+
+		<td><img src="icons/shield_add.png" title="shield_add.png" alt="shield add "/><em>shield_add.png</em></td>
+		<td><img src="icons/shield_delete.png" title="shield_delete.png" alt="shield delete "/><em>shield_delete.png</em></td>
+		<td><img src="icons/shield_go.png" title="shield_go.png" alt="shield go "/><em>shield_go.png</em></td>
+		<td><img src="icons/sitemap.png" title="sitemap.png" alt="sitemap "/><em>sitemap.png</em></td>
+		<td><img src="icons/sitemap_color.png" title="sitemap_color.png" alt="sitemap color "/><em>sitemap_color.png</em></td>
+		<td><img src="icons/sound.png" title="sound.png" alt="sound "/><em>sound.png</em></td>
+
+		<td><img src="icons/sound_add.png" title="sound_add.png" alt="sound add "/><em>sound_add.png</em></td>
+		<td><img src="icons/sound_delete.png" title="sound_delete.png" alt="sound delete "/><em>sound_delete.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/sound_low.png" title="sound_low.png" alt="sound low "/><em>sound_low.png</em></td>
+		<td><img src="icons/sound_mute.png" title="sound_mute.png" alt="sound mute "/><em>sound_mute.png</em></td>
+		<td><img src="icons/sound_none.png" title="sound_none.png" alt="sound none "/><em>sound_none.png</em></td>
+
+		<td><img src="icons/spellcheck.png" title="spellcheck.png" alt="spellcheck "/><em>spellcheck.png</em></td>
+		<td><img src="icons/sport_8ball.png" title="sport_8ball.png" alt="sport 8ball "/><em>sport_8ball.png</em></td>
+		<td><img src="icons/sport_basketball.png" title="sport_basketball.png" alt="sport basketball "/><em>sport_basketball.png</em></td>
+		<td><img src="icons/sport_football.png" title="sport_football.png" alt="sport football "/><em>sport_football.png</em></td>
+		<td><img src="icons/sport_golf.png" title="sport_golf.png" alt="sport golf "/><em>sport_golf.png</em></td>
+		<td><img src="icons/sport_raquet.png" title="sport_raquet.png" alt="sport raquet "/><em>sport_raquet.png</em></td>
+
+		<td><img src="icons/sport_shuttlecock.png" title="sport_shuttlecock.png" alt="sport shuttlecock "/><em>sport_shuttlecock.png</em></td>
+		<td><img src="icons/sport_soccer.png" title="sport_soccer.png" alt="sport soccer "/><em>sport_soccer.png</em></td>
+		<td><img src="icons/sport_tennis.png" title="sport_tennis.png" alt="sport tennis "/><em>sport_tennis.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/star.png" title="star.png" alt="star "/><em>star.png</em></td>
+		<td><img src="icons/status_away.png" title="status_away.png" alt="status away "/><em>status_away.png</em></td>
+
+		<td><img src="icons/status_busy.png" title="status_busy.png" alt="status busy "/><em>status_busy.png</em></td>
+		<td><img src="icons/status_offline.png" title="status_offline.png" alt="status offline "/><em>status_offline.png</em></td>
+		<td><img src="icons/status_online.png" title="status_online.png" alt="status online "/><em>status_online.png</em></td>
+		<td><img src="icons/stop.png" title="stop.png" alt="stop "/><em>stop.png</em></td>
+		<td><img src="icons/style.png" title="style.png" alt="style "/><em>style.png</em></td>
+		<td><img src="icons/style_add.png" title="style_add.png" alt="style add "/><em>style_add.png</em></td>
+
+		<td><img src="icons/style_delete.png" title="style_delete.png" alt="style delete "/><em>style_delete.png</em></td>
+		<td><img src="icons/style_edit.png" title="style_edit.png" alt="style edit "/><em>style_edit.png</em></td>
+		<td><img src="icons/style_go.png" title="style_go.png" alt="style go "/><em>style_go.png</em></td>
+		<td><img src="icons/sum.png" title="sum.png" alt="sum "/><em>sum.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/tab.png" title="tab.png" alt="tab "/><em>tab.png</em></td>
+
+		<td><img src="icons/tab_add.png" title="tab_add.png" alt="tab add "/><em>tab_add.png</em></td>
+		<td><img src="icons/tab_delete.png" title="tab_delete.png" alt="tab delete "/><em>tab_delete.png</em></td>
+		<td><img src="icons/tab_edit.png" title="tab_edit.png" alt="tab edit "/><em>tab_edit.png</em></td>
+		<td><img src="icons/tab_go.png" title="tab_go.png" alt="tab go "/><em>tab_go.png</em></td>
+		<td><img src="icons/table.png" title="table.png" alt="table "/><em>table.png</em></td>
+		<td><img src="icons/table_add.png" title="table_add.png" alt="table add "/><em>table_add.png</em></td>
+
+		<td><img src="icons/table_delete.png" title="table_delete.png" alt="table delete "/><em>table_delete.png</em></td>
+		<td><img src="icons/table_edit.png" title="table_edit.png" alt="table edit "/><em>table_edit.png</em></td>
+		<td><img src="icons/table_error.png" title="table_error.png" alt="table error "/><em>table_error.png</em></td>
+		<td><img src="icons/table_gear.png" title="table_gear.png" alt="table gear "/><em>table_gear.png</em></td>
+		<td><img src="icons/table_go.png" title="table_go.png" alt="table go "/><em>table_go.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/table_key.png" title="table_key.png" alt="table key "/><em>table_key.png</em></td>
+		<td><img src="icons/table_lightning.png" title="table_lightning.png" alt="table lightning "/><em>table_lightning.png</em></td>
+		<td><img src="icons/table_link.png" title="table_link.png" alt="table link "/><em>table_link.png</em></td>
+		<td><img src="icons/table_multiple.png" title="table_multiple.png" alt="table multiple "/><em>table_multiple.png</em></td>
+		<td><img src="icons/table_refresh.png" title="table_refresh.png" alt="table refresh "/><em>table_refresh.png</em></td>
+
+		<td><img src="icons/table_relationship.png" title="table_relationship.png" alt="table relationship "/><em>table_relationship.png</em></td>
+		<td><img src="icons/table_row_delete.png" title="table_row_delete.png" alt="table row delete "/><em>table_row_delete.png</em></td>
+		<td><img src="icons/table_row_insert.png" title="table_row_insert.png" alt="table row insert "/><em>table_row_insert.png</em></td>
+		<td><img src="icons/table_save.png" title="table_save.png" alt="table save "/><em>table_save.png</em></td>
+		<td><img src="icons/table_sort.png" title="table_sort.png" alt="table sort "/><em>table_sort.png</em></td>
+		<td><img src="icons/tag.png" title="tag.png" alt="tag "/><em>tag.png</em></td>
+
+		<td><img src="icons/tag_blue.png" title="tag_blue.png" alt="tag blue "/><em>tag_blue.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/tag_blue_add.png" title="tag_blue_add.png" alt="tag blue add "/><em>tag_blue_add.png</em></td>
+		<td><img src="icons/tag_blue_delete.png" title="tag_blue_delete.png" alt="tag blue delete "/><em>tag_blue_delete.png</em></td>
+		<td><img src="icons/tag_blue_edit.png" title="tag_blue_edit.png" alt="tag blue edit "/><em>tag_blue_edit.png</em></td>
+		<td><img src="icons/tag_green.png" title="tag_green.png" alt="tag green "/><em>tag_green.png</em></td>
+
+		<td><img src="icons/tag_orange.png" title="tag_orange.png" alt="tag orange "/><em>tag_orange.png</em></td>
+		<td><img src="icons/tag_pink.png" title="tag_pink.png" alt="tag pink "/><em>tag_pink.png</em></td>
+		<td><img src="icons/tag_purple.png" title="tag_purple.png" alt="tag purple "/><em>tag_purple.png</em></td>
+		<td><img src="icons/tag_red.png" title="tag_red.png" alt="tag red "/><em>tag_red.png</em></td>
+		<td><img src="icons/tag_yellow.png" title="tag_yellow.png" alt="tag yellow "/><em>tag_yellow.png</em></td>
+		<td><img src="icons/telephone.png" title="telephone.png" alt="telephone "/><em>telephone.png</em></td>
+
+		<td><img src="icons/telephone_add.png" title="telephone_add.png" alt="telephone add "/><em>telephone_add.png</em></td>
+		<td><img src="icons/telephone_delete.png" title="telephone_delete.png" alt="telephone delete "/><em>telephone_delete.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/telephone_edit.png" title="telephone_edit.png" alt="telephone edit "/><em>telephone_edit.png</em></td>
+		<td><img src="icons/telephone_error.png" title="telephone_error.png" alt="telephone error "/><em>telephone_error.png</em></td>
+		<td><img src="icons/telephone_go.png" title="telephone_go.png" alt="telephone go "/><em>telephone_go.png</em></td>
+
+		<td><img src="icons/telephone_key.png" title="telephone_key.png" alt="telephone key "/><em>telephone_key.png</em></td>
+		<td><img src="icons/telephone_link.png" title="telephone_link.png" alt="telephone link "/><em>telephone_link.png</em></td>
+		<td><img src="icons/television.png" title="television.png" alt="television "/><em>television.png</em></td>
+		<td><img src="icons/television_add.png" title="television_add.png" alt="television add "/><em>television_add.png</em></td>
+		<td><img src="icons/television_delete.png" title="television_delete.png" alt="television delete "/><em>television_delete.png</em></td>
+		<td><img src="icons/text_align_center.png" title="text_align_center.png" alt="text align center "/><em>text_align_center.png</em></td>
+
+		<td><img src="icons/text_align_justify.png" title="text_align_justify.png" alt="text align justify "/><em>text_align_justify.png</em></td>
+		<td><img src="icons/text_align_left.png" title="text_align_left.png" alt="text align left "/><em>text_align_left.png</em></td>
+		<td><img src="icons/text_align_right.png" title="text_align_right.png" alt="text align right "/><em>text_align_right.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/text_allcaps.png" title="text_allcaps.png" alt="text allcaps "/><em>text_allcaps.png</em></td>
+		<td><img src="icons/text_bold.png" title="text_bold.png" alt="text bold "/><em>text_bold.png</em></td>
+
+		<td><img src="icons/text_columns.png" title="text_columns.png" alt="text columns "/><em>text_columns.png</em></td>
+		<td><img src="icons/text_dropcaps.png" title="text_dropcaps.png" alt="text dropcaps "/><em>text_dropcaps.png</em></td>
+		<td><img src="icons/text_heading_1.png" title="text_heading_1.png" alt="text heading 1 "/><em>text_heading_1.png</em></td>
+		<td><img src="icons/text_heading_2.png" title="text_heading_2.png" alt="text heading 2 "/><em>text_heading_2.png</em></td>
+		<td><img src="icons/text_heading_3.png" title="text_heading_3.png" alt="text heading 3 "/><em>text_heading_3.png</em></td>
+		<td><img src="icons/text_heading_4.png" title="text_heading_4.png" alt="text heading 4 "/><em>text_heading_4.png</em></td>
+
+		<td><img src="icons/text_heading_5.png" title="text_heading_5.png" alt="text heading 5 "/><em>text_heading_5.png</em></td>
+		<td><img src="icons/text_heading_6.png" title="text_heading_6.png" alt="text heading 6 "/><em>text_heading_6.png</em></td>
+		<td><img src="icons/text_horizontalrule.png" title="text_horizontalrule.png" alt="text horizontalrule "/><em>text_horizontalrule.png</em></td>
+		<td><img src="icons/text_indent.png" title="text_indent.png" alt="text indent "/><em>text_indent.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/text_indent_remove.png" title="text_indent_remove.png" alt="text indent remove "/><em>text_indent_remove.png</em></td>
+
+		<td><img src="icons/text_italic.png" title="text_italic.png" alt="text italic "/><em>text_italic.png</em></td>
+		<td><img src="icons/text_kerning.png" title="text_kerning.png" alt="text kerning "/><em>text_kerning.png</em></td>
+		<td><img src="icons/text_letter_omega.png" title="text_letter_omega.png" alt="text letter omega "/><em>text_letter_omega.png</em></td>
+		<td><img src="icons/text_letterspacing.png" title="text_letterspacing.png" alt="text letterspacing "/><em>text_letterspacing.png</em></td>
+		<td><img src="icons/text_linespacing.png" title="text_linespacing.png" alt="text linespacing "/><em>text_linespacing.png</em></td>
+		<td><img src="icons/text_list_bullets.png" title="text_list_bullets.png" alt="text list bullets "/><em>text_list_bullets.png</em></td>
+
+		<td><img src="icons/text_list_numbers.png" title="text_list_numbers.png" alt="text list numbers "/><em>text_list_numbers.png</em></td>
+		<td><img src="icons/text_lowercase.png" title="text_lowercase.png" alt="text lowercase "/><em>text_lowercase.png</em></td>
+		<td><img src="icons/text_padding_bottom.png" title="text_padding_bottom.png" alt="text padding bottom "/><em>text_padding_bottom.png</em></td>
+		<td><img src="icons/text_padding_left.png" title="text_padding_left.png" alt="text padding left "/><em>text_padding_left.png</em></td>
+		<td><img src="icons/text_padding_right.png" title="text_padding_right.png" alt="text padding right "/><em>text_padding_right.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/text_padding_top.png" title="text_padding_top.png" alt="text padding top "/><em>text_padding_top.png</em></td>
+		<td><img src="icons/text_replace.png" title="text_replace.png" alt="text replace "/><em>text_replace.png</em></td>
+		<td><img src="icons/text_signature.png" title="text_signature.png" alt="text signature "/><em>text_signature.png</em></td>
+		<td><img src="icons/text_smallcaps.png" title="text_smallcaps.png" alt="text smallcaps "/><em>text_smallcaps.png</em></td>
+		<td><img src="icons/text_strikethrough.png" title="text_strikethrough.png" alt="text strikethrough "/><em>text_strikethrough.png</em></td>
+
+		<td><img src="icons/text_subscript.png" title="text_subscript.png" alt="text subscript "/><em>text_subscript.png</em></td>
+		<td><img src="icons/text_superscript.png" title="text_superscript.png" alt="text superscript "/><em>text_superscript.png</em></td>
+		<td><img src="icons/text_underline.png" title="text_underline.png" alt="text underline "/><em>text_underline.png</em></td>
+		<td><img src="icons/text_uppercase.png" title="text_uppercase.png" alt="text uppercase "/><em>text_uppercase.png</em></td>
+		<td><img src="icons/textfield.png" title="textfield.png" alt="textfield "/><em>textfield.png</em></td>
+		<td><img src="icons/textfield_add.png" title="textfield_add.png" alt="textfield add "/><em>textfield_add.png</em></td>
+
+		<td><img src="icons/textfield_delete.png" title="textfield_delete.png" alt="textfield delete "/><em>textfield_delete.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/textfield_key.png" title="textfield_key.png" alt="textfield key "/><em>textfield_key.png</em></td>
+		<td><img src="icons/textfield_rename.png" title="textfield_rename.png" alt="textfield rename "/><em>textfield_rename.png</em></td>
+		<td><img src="icons/thumb_down.png" title="thumb_down.png" alt="thumb down "/><em>thumb_down.png</em></td>
+		<td><img src="icons/thumb_up.png" title="thumb_up.png" alt="thumb up "/><em>thumb_up.png</em></td>
+
+		<td><img src="icons/tick.png" title="tick.png" alt="tick "/><em>tick.png</em></td>
+		<td><img src="icons/time.png" title="time.png" alt="time "/><em>time.png</em></td>
+		<td><img src="icons/time_add.png" title="time_add.png" alt="time add "/><em>time_add.png</em></td>
+		<td><img src="icons/time_delete.png" title="time_delete.png" alt="time delete "/><em>time_delete.png</em></td>
+		<td><img src="icons/time_go.png" title="time_go.png" alt="time go "/><em>time_go.png</em></td>
+		<td><img src="icons/timeline_marker.png" title="timeline_marker.png" alt="timeline marker "/><em>timeline_marker.png</em></td>
+
+		<td><img src="icons/transmit.png" title="transmit.png" alt="transmit "/><em>transmit.png</em></td>
+		<td><img src="icons/transmit_add.png" title="transmit_add.png" alt="transmit add "/><em>transmit_add.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/transmit_blue.png" title="transmit_blue.png" alt="transmit blue "/><em>transmit_blue.png</em></td>
+		<td><img src="icons/transmit_delete.png" title="transmit_delete.png" alt="transmit delete "/><em>transmit_delete.png</em></td>
+		<td><img src="icons/transmit_edit.png" title="transmit_edit.png" alt="transmit edit "/><em>transmit_edit.png</em></td>
+
+		<td><img src="icons/transmit_error.png" title="transmit_error.png" alt="transmit error "/><em>transmit_error.png</em></td>
+		<td><img src="icons/transmit_go.png" title="transmit_go.png" alt="transmit go "/><em>transmit_go.png</em></td>
+		<td><img src="icons/tux.png" title="tux.png" alt="tux "/><em>tux.png</em></td>
+		<td><img src="icons/user.png" title="user.png" alt="user "/><em>user.png</em></td>
+		<td><img src="icons/user_add.png" title="user_add.png" alt="user add "/><em>user_add.png</em></td>
+		<td><img src="icons/user_comment.png" title="user_comment.png" alt="user comment "/><em>user_comment.png</em></td>
+
+		<td><img src="icons/user_delete.png" title="user_delete.png" alt="user delete "/><em>user_delete.png</em></td>
+		<td><img src="icons/user_edit.png" title="user_edit.png" alt="user edit "/><em>user_edit.png</em></td>
+		<td><img src="icons/user_female.png" title="user_female.png" alt="user female "/><em>user_female.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/user_go.png" title="user_go.png" alt="user go "/><em>user_go.png</em></td>
+		<td><img src="icons/user_gray.png" title="user_gray.png" alt="user gray "/><em>user_gray.png</em></td>
+
+		<td><img src="icons/user_green.png" title="user_green.png" alt="user green "/><em>user_green.png</em></td>
+		<td><img src="icons/user_orange.png" title="user_orange.png" alt="user orange "/><em>user_orange.png</em></td>
+		<td><img src="icons/user_red.png" title="user_red.png" alt="user red "/><em>user_red.png</em></td>
+		<td><img src="icons/user_suit.png" title="user_suit.png" alt="user suit "/><em>user_suit.png</em></td>
+		<td><img src="icons/vcard.png" title="vcard.png" alt="vcard "/><em>vcard.png</em></td>
+		<td><img src="icons/vcard_add.png" title="vcard_add.png" alt="vcard add "/><em>vcard_add.png</em></td>
+
+		<td><img src="icons/vcard_delete.png" title="vcard_delete.png" alt="vcard delete "/><em>vcard_delete.png</em></td>
+		<td><img src="icons/vcard_edit.png" title="vcard_edit.png" alt="vcard edit "/><em>vcard_edit.png</em></td>
+		<td><img src="icons/vector.png" title="vector.png" alt="vector "/><em>vector.png</em></td>
+		<td><img src="icons/vector_add.png" title="vector_add.png" alt="vector add "/><em>vector_add.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/vector_delete.png" title="vector_delete.png" alt="vector delete "/><em>vector_delete.png</em></td>
+
+		<td><img src="icons/wand.png" title="wand.png" alt="wand "/><em>wand.png</em></td>
+		<td><img src="icons/weather_clouds.png" title="weather_clouds.png" alt="weather clouds "/><em>weather_clouds.png</em></td>
+		<td><img src="icons/weather_cloudy.png" title="weather_cloudy.png" alt="weather cloudy "/><em>weather_cloudy.png</em></td>
+		<td><img src="icons/weather_lightning.png" title="weather_lightning.png" alt="weather lightning "/><em>weather_lightning.png</em></td>
+		<td><img src="icons/weather_rain.png" title="weather_rain.png" alt="weather rain "/><em>weather_rain.png</em></td>
+		<td><img src="icons/weather_snow.png" title="weather_snow.png" alt="weather snow "/><em>weather_snow.png</em></td>
+
+		<td><img src="icons/weather_sun.png" title="weather_sun.png" alt="weather sun "/><em>weather_sun.png</em></td>
+		<td><img src="icons/webcam.png" title="webcam.png" alt="webcam "/><em>webcam.png</em></td>
+		<td><img src="icons/webcam_add.png" title="webcam_add.png" alt="webcam add "/><em>webcam_add.png</em></td>
+		<td><img src="icons/webcam_delete.png" title="webcam_delete.png" alt="webcam delete "/><em>webcam_delete.png</em></td>
+		<td><img src="icons/webcam_error.png" title="webcam_error.png" alt="webcam error "/><em>webcam_error.png</em></td>
+	</tr>
+
+	<tr>
+		<td><img src="icons/world.png" title="world.png" alt="world "/><em>world.png</em></td>
+		<td><img src="icons/world_add.png" title="world_add.png" alt="world add "/><em>world_add.png</em></td>
+		<td><img src="icons/world_delete.png" title="world_delete.png" alt="world delete "/><em>world_delete.png</em></td>
+		<td><img src="icons/world_edit.png" title="world_edit.png" alt="world edit "/><em>world_edit.png</em></td>
+		<td><img src="icons/world_go.png" title="world_go.png" alt="world go "/><em>world_go.png</em></td>
+
+		<td><img src="icons/world_link.png" title="world_link.png" alt="world link "/><em>world_link.png</em></td>
+		<td><img src="icons/wrench.png" title="wrench.png" alt="wrench "/><em>wrench.png</em></td>
+		<td><img src="icons/wrench_orange.png" title="wrench_orange.png" alt="wrench orange "/><em>wrench_orange.png</em></td>
+		<td><img src="icons/xhtml.png" title="xhtml.png" alt="xhtml "/><em>xhtml.png</em></td>
+		<td><img src="icons/xhtml_add.png" title="xhtml_add.png" alt="xhtml add "/><em>xhtml_add.png</em></td>
+		<td><img src="icons/xhtml_delete.png" title="xhtml_delete.png" alt="xhtml delete "/><em>xhtml_delete.png</em></td>
+
+		<td><img src="icons/xhtml_go.png" title="xhtml_go.png" alt="xhtml go "/><em>xhtml_go.png</em></td>
+	</tr>
+	<tr>
+		<td><img src="icons/xhtml_valid.png" title="xhtml_valid.png" alt="xhtml valid "/><em>xhtml_valid.png</em></td>
+		<td><img src="icons/zoom.png" title="zoom.png" alt="zoom "/><em>zoom.png</em></td>
+		<td><img src="icons/zoom_in.png" title="zoom_in.png" alt="zoom in "/><em>zoom_in.png</em></td>
+		<td><img src="icons/zoom_out.png" title="zoom_out.png" alt="zoom out "/><em>zoom_out.png</em></td>
+
+		<td>&nbsp;</td>
+		<td>&nbsp;</td>
+		<td>&nbsp;</td>
+		<td>&nbsp;</td>
+		<td>&nbsp;</td>
+		<td>&nbsp;</td>
+		<td>&nbsp;</td>
+		<td>&nbsp;</td>
+	</tr></table>
+						</p>
+							
+					</div><!-- /content_inner -->
+					<!-- A break! -->
+					<br class="clear" />
+	 
+			</div><!-- /content_outer -->
+		
+		</div><!-- /container_inner -->
+	</div><!-- /container_outer -->
+
+	
+	</body>
+</html>
\ No newline at end of file
diff --git a/html/images/readme.txt b/html/images/readme.txt
new file mode 100755
index 0000000000..400a64d785
--- /dev/null
+++ b/html/images/readme.txt
@@ -0,0 +1,22 @@
+Silk icon set 1.3
+
+_________________________________________
+Mark James
+http://www.famfamfam.com/lab/icons/silk/
+_________________________________________
+
+This work is licensed under a
+Creative Commons Attribution 2.5 License.
+[ http://creativecommons.org/licenses/by/2.5/ ]
+
+This means you may use it for any purpose,
+and make any changes you like.
+All I ask is that you include a link back
+to this page in your credits.
+
+Are you using this icon set? Send me an email
+(including a link or picture if available) to
+mjames@gmail.com
+
+Any other questions about this icon set please
+contact mjames@gmail.com
\ No newline at end of file
diff --git a/html/images/shade.gif b/html/images/shade.gif
new file mode 100755
index 0000000000..2dd62496ae
Binary files /dev/null and b/html/images/shade.gif differ
diff --git a/html/images/shadeactive.gif b/html/images/shadeactive.gif
new file mode 100755
index 0000000000..a329e63816
Binary files /dev/null and b/html/images/shadeactive.gif differ
diff --git a/html/images/sites.png b/html/images/sites.png
new file mode 100755
index 0000000000..426ea907e1
Binary files /dev/null and b/html/images/sites.png differ
diff --git a/html/images/small/add.png b/html/images/small/add.png
new file mode 100755
index 0000000000..d3e570d0f0
Binary files /dev/null and b/html/images/small/add.png differ
diff --git a/html/images/small/cog.png b/html/images/small/cog.png
new file mode 100755
index 0000000000..a2aa786fda
Binary files /dev/null and b/html/images/small/cog.png differ
diff --git a/html/images/small/dns.png b/html/images/small/dns.png
new file mode 100755
index 0000000000..85dbfe46bf
Binary files /dev/null and b/html/images/small/dns.png differ
diff --git a/html/images/small/graphs.png b/html/images/small/graphs.png
new file mode 100755
index 0000000000..5871920603
Binary files /dev/null and b/html/images/small/graphs.png differ
diff --git a/html/images/small/help.png b/html/images/small/help.png
new file mode 100755
index 0000000000..f914d0d290
Binary files /dev/null and b/html/images/small/help.png differ
diff --git a/html/images/small/home.png b/html/images/small/home.png
new file mode 100755
index 0000000000..e72800a1d6
Binary files /dev/null and b/html/images/small/home.png differ
diff --git a/html/images/small/important.png b/html/images/small/important.png
new file mode 100755
index 0000000000..1e3bbb311b
Binary files /dev/null and b/html/images/small/important.png differ
diff --git a/html/images/small/info.png b/html/images/small/info.png
new file mode 100755
index 0000000000..8d10a16936
Binary files /dev/null and b/html/images/small/info.png differ
diff --git a/html/images/small/internet.png b/html/images/small/internet.png
new file mode 100755
index 0000000000..d2ee2389af
Binary files /dev/null and b/html/images/small/internet.png differ
diff --git a/html/images/small/monitor.png b/html/images/small/monitor.png
new file mode 100755
index 0000000000..bf9cf90d4c
Binary files /dev/null and b/html/images/small/monitor.png differ
diff --git a/html/images/small/refresh.png b/html/images/small/refresh.png
new file mode 100755
index 0000000000..3235e72564
Binary files /dev/null and b/html/images/small/refresh.png differ
diff --git a/html/images/small/screens.png b/html/images/small/screens.png
new file mode 100755
index 0000000000..cd7b11f6b9
Binary files /dev/null and b/html/images/small/screens.png differ
diff --git a/html/images/small/server.png b/html/images/small/server.png
new file mode 100755
index 0000000000..5c442fa35e
Binary files /dev/null and b/html/images/small/server.png differ
diff --git a/html/images/small/users.png b/html/images/small/users.png
new file mode 100755
index 0000000000..0bdf797176
Binary files /dev/null and b/html/images/small/users.png differ
diff --git a/html/images/small/wiki.png b/html/images/small/wiki.png
new file mode 100755
index 0000000000..e12717effc
Binary files /dev/null and b/html/images/small/wiki.png differ
diff --git a/html/images/small/world.png b/html/images/small/world.png
new file mode 100755
index 0000000000..07a756888c
Binary files /dev/null and b/html/images/small/world.png differ
diff --git a/html/images/status.png b/html/images/status.png
new file mode 100755
index 0000000000..3b9c725ed1
Binary files /dev/null and b/html/images/status.png differ
diff --git a/html/images/sub2a.gif b/html/images/sub2a.gif
new file mode 100755
index 0000000000..2de1089ab8
Binary files /dev/null and b/html/images/sub2a.gif differ
diff --git a/html/images/tabs/norm_left.gif b/html/images/tabs/norm_left.gif
new file mode 100755
index 0000000000..f3e3679a17
Binary files /dev/null and b/html/images/tabs/norm_left.gif differ
diff --git a/html/images/tabs/norm_left_on.gif b/html/images/tabs/norm_left_on.gif
new file mode 100755
index 0000000000..f9952e86cc
Binary files /dev/null and b/html/images/tabs/norm_left_on.gif differ
diff --git a/html/images/tabs/norm_right.gif b/html/images/tabs/norm_right.gif
new file mode 100755
index 0000000000..4b27fc361f
Binary files /dev/null and b/html/images/tabs/norm_right.gif differ
diff --git a/html/images/tabs/norm_right_on.gif b/html/images/tabs/norm_right_on.gif
new file mode 100755
index 0000000000..fc8ac15a15
Binary files /dev/null and b/html/images/tabs/norm_right_on.gif differ
diff --git a/html/images/transit.png b/html/images/transit.png
new file mode 100755
index 0000000000..368df2f01b
Binary files /dev/null and b/html/images/transit.png differ
diff --git a/html/images/txt.gif b/html/images/txt.gif
new file mode 100755
index 0000000000..f67d54f7b2
Binary files /dev/null and b/html/images/txt.gif differ
diff --git a/html/images/wiki.png b/html/images/wiki.png
new file mode 100755
index 0000000000..82ff766092
Binary files /dev/null and b/html/images/wiki.png differ
diff --git a/html/includes/.confirm_login.php.swp b/html/includes/.confirm_login.php.swp
new file mode 100644
index 0000000000..e542b03859
Binary files /dev/null and b/html/includes/.confirm_login.php.swp differ
diff --git a/html/includes/.login.inc.php.swo b/html/includes/.login.inc.php.swo
new file mode 100644
index 0000000000..e4331bcd51
Binary files /dev/null and b/html/includes/.login.inc.php.swo differ
diff --git a/html/includes/.login.inc.php.swp b/html/includes/.login.inc.php.swp
new file mode 100644
index 0000000000..f8e57a0a5e
Binary files /dev/null and b/html/includes/.login.inc.php.swp differ
diff --git a/html/includes/add-srv.inc b/html/includes/add-srv.inc
new file mode 100644
index 0000000000..e6943e56cd
--- /dev/null
+++ b/html/includes/add-srv.inc
@@ -0,0 +1,16 @@
+<?
+
+  $updated = '1';
+
+  $sql = "INSERT INTO `services` (`service_host`,`service_ip`,`service_type`,`service_desc`,`service_param`,`service_ignore`) 
+                          VALUES ('" . $_POST['device']. "','" . $_POST['ip'] . "','" . $_POST['type'] . "',
+                                  '" . $_POST['descr'] . "','" . $_POST['params'] . "','0')";
+
+  $query = mysql_query($sql);
+  $affected = mysql_affected_rows() . "records affected";
+
+  $message .= $message_break . "Service added!";
+  $message_break .= "<br />"
+
+
+?>
diff --git a/html/includes/ajaxtabs.inc b/html/includes/ajaxtabs.inc
new file mode 100644
index 0000000000..051c428d68
--- /dev/null
+++ b/html/includes/ajaxtabs.inc
@@ -0,0 +1,9 @@
+<script type="text/javascript" src="ajaxtabs/ajaxtabs.js">
+
+/***********************************************
+* Ajax Tabs Content script- � Dynamic Drive DHTML code library (www.dynamicdrive.com)
+* This notice MUST stay intact for legal use
+* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
+***********************************************/
+
+</script>
diff --git a/html/includes/authenticate.inc b/html/includes/authenticate.inc
new file mode 100644
index 0000000000..02db0f8182
--- /dev/null
+++ b/html/includes/authenticate.inc
@@ -0,0 +1,36 @@
+<?php 
+
+if($_GET['logout']) {
+  session_start();
+  session_destroy();
+  header('Location: /');
+  setcookie ("username", "", time() - 3600);
+  setcookie ("encrypted", "", time() - 3600);
+  echo("$_COOKIE[username]");
+
+} else {
+
+  session_start();  
+
+  if($_POST['username'] && $_POST['password']){ 
+    $_SESSION['username']=$_POST['username']; 
+    $_SESSION['password']=$_POST['password'];   
+    $password = $_SESSION['password'];
+    $encrypted = md5($password);
+  } elseif($_COOKIE['username'] && $_COOKIE['encrypted'] && !$_SESSION['authenticated']) {
+    $_SESSION['username']=$_COOKIE['username'];
+    $encrypted=$_COOKIE['encrypted'];
+  }
+
+  $sql = "select username, level from users where username='$_SESSION[username]' and password='$encrypted'"; 
+  $row = mysql_fetch_row(mysql_query($sql));
+
+  if ( $_SESSION['username'] != "" && $row[0] == $_SESSION['username'] ) {
+    $_SESSION['userlevel'] = $row[1];
+    $_SESSION['authenticated'] = true;
+    setcookie("username", $username);
+    setcookie("encrypted", $encrypted);
+  }
+}
+
+?>
diff --git a/html/includes/dev-data-linux.inc b/html/includes/dev-data-linux.inc
new file mode 100644
index 0000000000..7ee3c14ab3
--- /dev/null
+++ b/html/includes/dev-data-linux.inc
@@ -0,0 +1,14 @@
+<?php
+
+if($device['uptime'] < '86400') { $uptime_colour = $warn_colour_a; }
+
+echo("
+<table width=100% cellspacing=0 cellpadding=0>
+  <tr><td class=tablehead>Operating System</td><td>$device[os] $device[version] ($device[features])</td></tr>
+  <tr><td class=tablehead>Hardware        </td><td>$device[hardware]</td></tr>
+  <tr><td class=tablehead>Uptime          </td><td bgcolor=$uptime_colour>" . formatuptime($device[uptime]) . "</td></tr>
+</table>
+");
+
+
+?>
diff --git a/html/includes/dev-edit.inc b/html/includes/dev-edit.inc
new file mode 100644
index 0000000000..4dd7eb2fe6
--- /dev/null
+++ b/html/includes/dev-edit.inc
@@ -0,0 +1,137 @@
+<?php
+
+if($_SESSION[userlevel] < '5') { 
+  print_error("Insufficient Privileges");
+} else {
+
+if($_POST['editing']) {
+  if($userlevel > "5") {
+    include("includes/edit-host.inc");
+  }
+}
+
+if($_POST['addsrv']) {
+  if($userlevel > "5") {
+    include("includes/add-srv.inc");
+  }
+}
+
+
+$device = mysql_fetch_array(mysql_query("SELECT * FROM `devices` WHERE `id` = '$_GET[id]'"));
+$descr  = $device['purpose'];
+
+if($updated) { print_message("Device Settings Saved"); }
+
+if($device['type'] == 'server') { $server_select = "selected"; }
+if($device['type'] == 'network') { $network_select = "selected"; }
+if($device['type'] == 'firewall') { $firewall_select = "selected"; }
+if($device['type'] == 'workstation') { $workstation_select = "selected"; }
+if($device['type'] == 'other') { $other_select = "selected"; }
+
+echo("<table cellpadding=0 cellspacing=0><tr><td>
+
+<h4>Edit Device</h4>
+
+<form id='edit' name='edit' method='post' action=''>
+  <input type=hidden name='editing' value='yes'>
+  <table width='200' border='0'>
+    <tr>
+      <td width='300'><div align='right'>Description</div></td>
+      <td colspan='3'><textarea name='descr' cols='50'>$descr</textarea></td>
+    </tr>
+   <tr>
+      <td>
+        Type
+      </td> 
+      <td>
+        <select name='type'>
+          <option value='server' $server_select>Server</option>
+          <option value='network' $network_select>Network</option>
+          <option value='firewall' $firewall_select>Firewall</option>
+          <option value='workstation' $workstation_select>Workstation</option>
+          <option value='other' $other_select>Other</option>
+        </select>
+      </td>
+    </tr>
+    <tr>
+      <td width='300'><div align='right'>Disable</div></td>
+      <td width='300'><input name='disable' type='checkbox' id='disable' value='1'");
+if($device['disabled']) {echo("checked=checked");}
+echo("/></td>
+      <td width='300'><div align='right'>Ignore</div></td>
+      <td width='300'><input name='ignore' type='checkbox' id='disable' value='1'");
+if($device['ignore']) {echo("checked=checked");}
+echo("/></td>
+    </tr>
+    <tr>
+      <td width='300'><div align='right'>Apache</div></td>
+      <td width='300'><label>
+        <input name='apache' type='checkbox' id='apache' value='1'");
+
+if($device['apache']) {echo("checked=checked");}
+
+echo("/>
+      </label></td>
+      <td width='300'><div align='right'>Temp</div></td>
+      <td width='300'><input name='temp' type='checkbox' id='temp' value='1'");
+if($device['temp']) {echo("checked=checked");}
+echo("/></td>
+    </tr>
+  </table>
+  <input type='submit' name='Submit' value='Save' />
+  <label><br />
+  </label>
+</form></td>
+<td width=50></td><td>");
+
+$srvdir = $installdir . "/includes/services/";
+
+if ($handle = opendir($srvdir)) {
+    while (false !== ($file = readdir($handle))) {
+        if ($file != "." && $file != "..") {
+            $services[] = $file;
+            $servicesform .= "<option value='$file'>$file</option>";
+        }
+    }
+    closedir($handle);
+}
+
+echo("
+
+<h4>Add Service</h4>
+
+<form id='addsrv' name='addsrv' method='post' action=''>
+  <input type=hidden name='addsrv' value='yes'>
+  <table width='200' border='0'>
+      <td>
+        Type
+      </td> 
+      <td>
+        <select name='type'>
+          $servicesform
+        </select>
+      </td>
+    </tr>
+    <tr>
+      <td width='300'><div align='right'>Description</div></td>
+      <td colspan='2'><textarea name='descr' cols='50'></textarea></td>
+    </tr>
+    <tr>
+      <td width='300'><div align='right'>IP Address</div></td>
+      <td colspan='2'><input name='ip'></textarea></td>
+    </tr>
+    <tr>
+      <td width='300'><div align='right'>Parameters</div></td>
+      <td colspan='2'><input name='params'></textarea></td>
+    </tr>
+   <tr>
+  </table>
+  <input type='submit' name='Submit' value='Add' />
+  <label><br />
+  </label>
+</form>");
+
+echo("</td></tr></table>");
+
+}
+
diff --git a/html/includes/dev-events.inc b/html/includes/dev-events.inc
new file mode 100644
index 0000000000..81818272a8
--- /dev/null
+++ b/html/includes/dev-events.inc
@@ -0,0 +1,15 @@
+<?
+
+$query = "SELECT *,DATE_FORMAT(datetime, '%D %b %Y %T') as humandate  FROM `eventlog` WHERE `host` = '$_GET[id]' ORDER BY `datetime` DESC LIMIT 0,250";
+$data = mysql_query($query);
+
+echo("<table cellspacing=0 cellpadding=1 width=100%>");
+
+while($entry = mysql_fetch_array($data)) {
+
+include("includes/print-event.inc");
+
+}
+echo("</table>");
+
+ ?>
diff --git a/html/includes/dev-graphs.inc b/html/includes/dev-graphs.inc
new file mode 100644
index 0000000000..9a7f7c2df3
--- /dev/null
+++ b/html/includes/dev-graphs.inc
@@ -0,0 +1,189 @@
+<?
+
+$device_query = mysql_query("select * from devices WHERE id = '$_GET[id]'");
+while($device = mysql_fetch_array($device_query)) {
+   $hostname = $device[hostname];
+   $bg="#ffffff";
+
+
+   echo("<div style='clear: both;'>");
+
+   switch ($device['os']) {
+   case "ProCurve":
+      echo("<div class=graphhead>Processor Utilisation</div>");
+      $graph_type = "cpu";              include ("includes/print-device-graph.php");
+      echo("<br />");
+      echo("<div class=graphhead>Memory Usage</div>");
+      $graph_type = "mem";              include ("includes/print-device-graph.php");
+      echo("<br />");
+      echo("<div class=graphhead>Device Uptime</div>");
+      $graph_type = "uptime";         include ("includes/print-device-graph.php"); break;
+      echo("<br />");
+
+      break;
+   case "Windows":
+      $graph_type = "cpu";
+      include ("includes/print-device-graph.php");
+
+      $memgraph  =   memgraphWin   ($device[hostname] . "-mem.rrd",  $device[hostname] . "-mem.png", $day, $now, 335, 100);
+      $loadgraph  =  loadgraphWin  ($device[hostname] . "-load.rrd", $device[hostname] . "-load.png", $day, $now, 335, 100);
+      $cpugraphm  =  cpugraphWin   ($device[hostname] . "-cpu.rrd",  $device[hostname] . "-cpu-m.png", $month, $now, 335, 100);
+      $memgraphm  =  memgraphWin   ($device[hostname] . "-mem.rrd",  $device[hostname] . "-mem-m.png", $month, $now, 335, 100);
+      $loadgraphm  = loadgraphWin  ($device[hostname] . "-load.rrd", $device[hostname] . "-load-m.png", $month, $now, 335, 100);
+      $usersgraph  = usersgraphWin ($device[hostname] . "-sys.rrd",  $device[hostname] . "-users.png", $day, $now, 335, 100);
+      $usersgraphm = usersgraphWin ($device[hostname] . "-sys.rrd",  $device[hostname] . "-users-m.png", $month, $now, 335, 100);
+      $procsgraph  = procsgraphWin ($device[hostname] . "-sys.rrd",  $device[hostname] . "-procs.png", $day, $now, 335, 100);
+      $procsgraphm = procsgraphWin ($device[hostname] . "-sys.rrd",  $device[hostname] . "-procs-m.png", $month, $now, 335, 100);
+      break;
+   case "FreeBSD":
+   case "NetBSD":
+   case "Linux":
+   case "m0n0wall":
+   case "Voswall":
+   case "DragonFly":
+   case "OpenBSD":
+   case "pfSense":
+      echo("<div class=graphhead>Processor Utilisation</div>");
+      $graph_type = "cpu";              include ("includes/print-device-graph.php");
+      echo("<br />");
+      if($device[os] == "m0n0wall" || $device[os] == "pfSense" || $device[os] == "Voswall" || $device[monowall]) {
+        echo("<div class=graphhead>Device Uptime</div>");
+        $graph_type = "uptime";         include ("includes/print-device-graph.php"); break;
+        echo("<br />");
+      }
+      if($device['os'] != "NetBSD") {
+      echo("<div class=graphhead>Memory Utilisation</div>");
+      $graph_type = "mem";              include ("includes/print-device-graph.php");
+      echo("<br />");
+      }
+
+      if(mysql_result(mysql_query("SELECT count(storage_id) FROM storage WHERE host_id = '$device[id]'"),0)) {
+        echo("<div class=graphhead>Storage</div>");
+        $graph_type = "unixfs";           include ("includes/print-device-graph.php");
+        echo("<br />");
+      }
+
+      if(mysql_result(mysql_query("SELECT count(*) FROM temperature WHERE temp_host = '$device[id]'"),0)) {
+        echo("<div class=graphhead>Temperatures</div>");
+        $graph_type = "temp";           include ("includes/print-device-graph.php");
+        echo("<br />");
+      }
+      echo("<div class=graphhead>IP Statistics</div>");
+      $graph_type = "ip_graph";           include ("includes/print-device-graph.php");
+      echo("<br />");
+      echo("<div class=graphhead>TCP Statistics</div>");
+      $graph_type = "tcp_graph";          include ("includes/print-device-graph.php");
+      echo("<br />");
+      echo("<div class=graphhead>UDP Statistics</div>");
+      $graph_type = "udp_graph";          include ("includes/print-device-graph.php");
+      echo("<br />");
+      echo("<div class=graphhead>ICMP Statistics</div>");
+      $graph_type = "icmp_graph";          include ("includes/print-device-graph.php");
+      echo("<br />");
+      echo("<div class=graphhead>System Load</div>");
+      $graph_type = "load";             include ("includes/print-device-graph.php");
+      echo("<br />");
+      echo("<div class=graphhead>Users Logged On</div>");
+      $graph_type = "users";            include ("includes/print-device-graph.php");
+     echo("<br />");
+      echo("<div class=graphhead>Running Processes</div>");
+      $graph_type = "procs";            include ("includes/print-device-graph.php");
+     echo("<br />");
+      if($device[postfix] == '1') {
+        echo("<div class=graphhead>Postfix Mail Statistics</div>");
+        $graph_type = "postfix";        include ("includes/print-device-graph.php");
+        echo("<br />");
+        echo("<div class=graphhead>Postfix Mail Error Statistics</div>");
+        $graph_type = "postfixerrors";  include ("includes/print-device-graph.php");
+        echo("<br />");
+      }
+      if($device[courier] == '1') {
+        echo("<div class=graphhead>Postfix Mail Statistics</div>");
+        $graph_type = "courier";        include ("includes/print-device-graph.php");
+        echo("<br />");
+      }
+      if($device[apache] == '1') {
+        echo("<div class=graphhead>Apache Hits</div>");
+        $graph_type = "apachehits";     include ("includes/print-device-graph.php");
+        echo("<br />");
+        echo("<div class=graphhead>Apache Traffic</div>");
+        $graph_type = "apachebits";     include ("includes/print-device-graph.php");
+        echo("<br />");
+      }
+      echo("<div class=graphhead>Device Uptime</div>");
+      $graph_type = "uptime"; include ("includes/print-device-graph.php");
+      echo("<br />");
+      break;
+   case "IOS":
+      echo("<div class=graphhead>CPU Usage</div>");
+      $graph_type = "cpu";              include ("includes/print-device-graph.php");
+      echo("<div class=graphhead>Memory Usage</div>");
+      echo("<br />");
+      $graph_type = "mem";              include ("includes/print-device-graph.php");
+      echo("<br />");
+      if(mysql_result(mysql_query("SELECT count(*) FROM temperature WHERE temp_host = '$device[id]'"),0)) {
+        echo("<div class=graphhead>Temperatures</div>");
+        $graph_type = "temp";             include ("includes/print-device-graph.php");
+        echo("<br />");
+      }
+      echo("<div class=graphhead>IP Statistics</div>");
+      $graph_type = "ip_graph";           include ("includes/print-device-graph.php");
+      echo("<br />");
+      echo("<div class=graphhead>TCP Statistics</div>");
+      $graph_type = "tcp_graph";          include ("includes/print-device-graph.php");
+      echo("<br />");
+      echo("<div class=graphhead>UDP Statistics</div>");
+      $graph_type = "udp_graph";          include ("includes/print-device-graph.php");
+      echo("<br />");
+      echo("<div class=graphhead>ICMP Statistics</div>");
+      $graph_type = "icmp_graph";          include ("includes/print-device-graph.php");
+      echo("<br />");
+      echo("<div class=graphhead>Uptime</div>");
+      $graph_type = "uptime";           include ("includes/print-device-graph.php");
+      break;
+    case "Snom":
+      echo("<div class=graphhead>Calls</div>");
+      $graph_type = "calls";              include ("includes/print-device-graph.php");
+   }
+
+   if($memgraph) {
+     echo("<img src='$memgraph'> <img src='$memgraphm'>");
+   }
+   if($storagegraph) {
+     echo("$storagegraph");
+   }
+   if($loadgraph) {
+     echo("<img src='$loadgraph'> <img src='$loadgraphm'>");
+   }
+   if($tempgraph) {
+     echo("<img src='$tempgraph'> <img src='$tempgraphm'>");
+   }
+   if($mailsgraph) {
+     echo("<img src='$mailsgraph'> <img src='$mailsgraphm'>");
+   }
+   if($mailerrorgraph) {
+     echo("<img src='$mailerrorgraph'> <img src='$mailerrorgraphm'>");
+   }
+   if($couriergraph) {
+     echo("<img src='$couriergraph'> <img src='$couriergraphm'>");
+   }
+   if($ahitsgraph) {
+     echo("<img src='$ahitsgraph'> <img src='$ahitsgraphm'>");
+   }
+   if($abitsgraph) {
+     echo("<img src='$abitsgraph'> <img src='$abitsgraphm'>");
+   }
+   if($usersgraph) {
+     echo("<img src='$usersgraph'> <img src='$usersgraphm'>");
+   }
+   if($procsgraph) {
+     echo("<img src='$procsgraph'> <img src='$procsgraphm'>");
+   }
+   if($uptimegraph) {
+     echo("<img src='$uptimegraph'> <img src='$uptimegraphm'>");
+   }
+   echo("</div>");
+}
+
+?>
+
diff --git a/html/includes/dev-ifgraphs.inc b/html/includes/dev-ifgraphs.inc
new file mode 100644
index 0000000000..ca12154d56
--- /dev/null
+++ b/html/includes/dev-ifgraphs.inc
@@ -0,0 +1,7 @@
+<?php
+
+$dographs = 1;
+
+include("includes/dev-ifs.inc");
+
+?>
diff --git a/html/includes/dev-ifs.inc b/html/includes/dev-ifs.inc
new file mode 100644
index 0000000000..ba0f2cf856
--- /dev/null
+++ b/html/includes/dev-ifs.inc
@@ -0,0 +1,13 @@
+<?php
+
+$hostname = gethostbyid($_GET[id]);
+
+   echo("<div style='margin: 5px;'><table border=0 cellspacing=0 cellpadding=5 width=100%>");
+   $i = "1";
+   $interface_query = mysql_query("select * from interfaces WHERE host = '$_GET[id]' ORDER BY 'ifIndex'");
+   while($interface = mysql_fetch_array($interface_query)) {
+     include("includes/print-interface.inc");
+   }
+   echo("</table></div>");
+
+?>
diff --git a/html/includes/dev-overview.inc b/html/includes/dev-overview.inc
new file mode 100644
index 0000000000..c6b71620ef
--- /dev/null
+++ b/html/includes/dev-overview.inc
@@ -0,0 +1,123 @@
+<?php
+
+$overview = 1;
+
+$id = $_GET[id];
+
+$device = mysql_fetch_array(mysql_query("SELECT * FROM `devices` WHERE id = '$_GET[id]'"));
+
+$interfaces['total'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces  WHERE host = '$id'"),0);
+$interfaces['up'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces  WHERE host = '$id' AND up = 'up'"),0);
+$interfaces['down'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE host = '$id' AND up = 'down' AND up_admin = 'up'"),0);
+$interfaces['disabled'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE host = '$id' AND up_admin = 'down'"),0);
+
+$services['total'] = mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_host = '$id'"),0);
+$services['up'] = mysql_result(mysql_query("SELECT count(service_id) FROM services  WHERE service_host = '$id' AND service_status = '1' AND service_ignore ='0'"),0);
+$services['down'] = mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_host = '$id' AND service_status = '0' AND service_ignore = '0'"),0);
+$services['disabled'] = mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_host = '$id' AND service_ignore = '1'"),0);
+
+if($services['down']) { $services_colour = $warn_colour_a; } else { $services_colour = $list_colour_a; }
+if($interfaces['down']) { $interfaces_colour = $warn_colour_a; } else { $interfaces_colour = $list_colour_a; }
+
+echo("
+<table width=100% cellspacing=0 cellpadding=0>
+  <tr><td width=50% valign=top>");
+
+
+if(file_exists("includes/dev-data-" . strtolower($device[os]) . ".inc")) {
+  echo("<div style='background-color: #eeeeee; margin: 5px; padding: 5px;'>");
+  echo("<p class=sectionhead>Device Data</p><div style='height: 5px;'></div>");
+  include("includes/dev-data-" . strtolower($device[os]) . ".inc");
+  echo("</div>");
+}
+
+
+echo("<div style='background-color: #eeeeee; margin: 5px; padding: 5px;'>");
+
+$query = "SELECT *,DATE_FORMAT(datetime, '%d/%b/%y %T') as humandate  FROM `eventlog` WHERE `host` = '$_GET[id]' ORDER BY `datetime` DESC LIMIT 0,10";
+$data = mysql_query($query);
+
+echo("<p class=sectionhead>Recent Events</p><div style='height: 5px;'></div>
+<table cellspacing=0 cellpadding=2 width=100%>");
+
+while($entry = mysql_fetch_array($data)) {
+
+include("includes/print-event.inc");
+
+}
+echo("</table></div>");
+
+echo("</td><td width=50% valign=top>");
+
+if($interfaces['total']) {
+
+  echo("<div style='background-color: #eeeeee; margin: 5px; padding: 5px;'>");
+  echo("<p class=sectionhead>Interfaces</p><div style='height: 5px;'></div>");
+
+echo("
+<table class=tablehead cellpadding=2 cellspacing=0 width=100%>
+<tr bgcolor=$interfaces_colour align=center><td></td>
+<td width=25%><img src='images/16/connect.png' align=absmiddle> $interfaces[total]</td>
+<td width=25% class=green><img src='images/16/if-connect.png' align=absmiddle> $interfaces[up]</td>
+<td width=25% class=red><img src='images/16/if-disconnect.png' align=absmiddle> $interfaces[down]</td>
+<td width=25% class=grey><img src='images/16/if-disable.png' align=absmiddle> $interfaces[disabled]</td></tr>
+</table>");
+
+  echo("<div style='margin: 8px; font-size: 11px; font-weight: bold;'>");
+
+  $sql = "SELECT * FROM interfaces WHERE host = '$id'";
+  $query = mysql_query($sql);
+  while($data = mysql_fetch_array($query)) {
+    $up_admin = $data['up_admin'];
+    $up = $data['up'];
+    if ($up_admin == "down") { $status = "grey"; }
+    if ($up_admin == "up" && $up == "down") { $status = "red"; }
+    if ($up_admin == "up" && $up == "up") { $status = "blue"; }
+    echo("$ifbreak<a class=$status>" . generateiflink($data, makeshortif(strtolower($data['if']))) . "</a>");
+    $ifbreak = ", ";
+  }
+  unset($break);
+  echo("</div>");
+
+  echo("</div>");
+
+}
+
+if($services['total']) {
+
+  echo("<div style='background-color: #eeeeee; margin: 5px; padding: 5px;'>");
+  echo("<p class=sectionhead>Services</p><div style='height: 5px;'></div>");
+
+echo("
+<table class=tablehead cellpadding=2 cellspacing=0 width=100%>
+<tr bgcolor=$services_colour align=center><td></td>
+<td width=25%><img src='images/16/cog.png' align=absmiddle> $services[total]</td>
+<td width=25% class=green><img src='images/16/cog_go.png' align=absmiddle> $services[up]</td>
+<td width=25% class=red><img src='images/16/cog_error.png' align=absmiddle> $services[down]</td>
+<td width=25% class=grey><img src='images/16/cog_disable.png' align=absmiddle> $services[disabled]</td></tr>
+</table>");
+
+
+
+  echo("<div style='padding: 8px; font-size: 11px; font-weight: bold;'>");
+
+  $sql = "SELECT * FROM services WHERE service_host = '$id' ORDER BY service_type";
+  $query = mysql_query($sql);
+  while($data = mysql_fetch_array($query)) {
+    if ($data[service_status] == "0" && $data[service_ignore] == "1") { $status = "grey"; }
+    if ($data[service_status] == "1" && $data[service_ignore] == "1") { $status = "green"; }
+    if ($data[service_status] == "0" && $data[service_ignore] == "0") { $status = "red"; }
+    if ($data[service_status] == "1" && $data[service_ignore] == "0") { $status = "blue"; }
+    echo("$break<a class=$status>" . strtolower($data[service_type]) . "</a>");
+    $break = ", ";
+  }
+
+  echo("</div>");
+
+}
+
+
+
+echo("</td></tr></table>");
+
+?>
diff --git a/html/includes/dev-srv.inc b/html/includes/dev-srv.inc
new file mode 100644
index 0000000000..507a78ebdd
--- /dev/null
+++ b/html/includes/dev-srv.inc
@@ -0,0 +1,24 @@
+<?
+
+$hostname = gethostbyid($_GET[id]);
+
+if(mysql_result(mysql_query("select count(service_id) from services WHERE service_host = '$_GET[id]'"), 0) > '0') {
+
+   echo("<div style='margin: 5px;'><table cellpadding=7 border=0 cellspacing=0 width=100%>");
+   $i = "1";
+   $service_query = mysql_query("select * from services WHERE service_host = '$_GET[id]' ORDER BY service_type");
+   while($service = mysql_fetch_array($service_query)) {
+
+	include("includes/print-service.inc");
+   }
+   echo("</table></div>");
+
+} else {
+
+   echo("No Services");
+
+}
+
+
+?>
+
diff --git a/html/includes/dev-syslog.inc b/html/includes/dev-syslog.inc
new file mode 100644
index 0000000000..ea740df5cc
--- /dev/null
+++ b/html/includes/dev-syslog.inc
@@ -0,0 +1,15 @@
+<?
+
+$query = "SELECT * FROM `syslog` WHERE `host` = '$_GET[id]' ORDER BY `datetime` DESC LIMIT 0,250";
+$data = mysql_query($query);
+
+echo("<table cellspacing=0 cellpadding=1 width=100%>");
+
+while($entry = mysql_fetch_array($data)) {
+
+include("includes/print-syslog.inc");
+
+}
+echo("</table>");
+
+ ?>
diff --git a/html/includes/device-header.inc b/html/includes/device-header.inc
new file mode 100644
index 0000000000..e7f627ca33
--- /dev/null
+++ b/html/includes/device-header.inc
@@ -0,0 +1,21 @@
+<?php
+
+   if ($device['status'] == '0') { $class = "list-device-down"; } else { $class = "list-device"; }
+   if ($device['ignore'] == '1') {
+     $class = "list-device-ignored";
+     if ($device['status'] == '1') { $class = "list-device-ignored-up"; }
+   }
+   $type = strtolower($device['os']);
+   unset($image);
+
+   $image = getImage($device[id]);
+
+   echo("
+            <tr >
+             <td width='40' align=center valign=middle>$image</td>
+             <td valign=middle><span style='font-weight: bold; font-size: 20px;'>" . generatedevicelink($device) . "</span>
+             <br />$device[purpose]</td>
+             <td></td>
+           </tr>");
+
+?>
diff --git a/html/includes/edit-host.inc b/html/includes/edit-host.inc
new file mode 100644
index 0000000000..0b65bede20
--- /dev/null
+++ b/html/includes/edit-host.inc
@@ -0,0 +1,16 @@
+<?
+
+  $updated = '1';
+
+  $descr = $_POST['descr'];
+  $apache = $_POST['apache'];
+  $temp = $_POST['temp'];
+  $ignore = $_POST['ignore'];
+  $type = $_POST['type'];
+
+  $sql = "UPDATE `devices` SET `purpose` = '$descr', `apache` = '$apache', `temp` = '$temp', `type` = '$type', `ignore` = '$ignore' WHERE `id` = '$_GET[id]'";
+  $query = mysql_query($sql);
+
+  $affected = mysql_affected_rows() . "records affected";
+
+?>
diff --git a/html/includes/hostbox-old.inc b/html/includes/hostbox-old.inc
new file mode 100644
index 0000000000..63dba2eba3
--- /dev/null
+++ b/html/includes/hostbox-old.inc
@@ -0,0 +1,32 @@
+<?php
+
+   $type = strtolower($device['os']);
+   if(file_exists("images/os/$type" . ".gif")){ $image = "<img src='/images/os/$type.gif'>"; }
+
+   echo("<table cellpadding=0 cellspacing=0 class=devicetable width=100%>");
+   echo("
+            <tr bgcolor='#e5e5e5'>
+             <td width='40' align=center valign=middle>$image</td>
+             <td width='250' style='font-weight: bold;'><a class='$class' href='?page=device&id=$device[id]'>$device[hostname]</a>
+                <br />$device[hardware]</td>
+             <td width='150'>$device[os] $device[version]<br />
+             $device[features]</td>
+             <td>$device[location]<br />
+             Up " . formatUptime($device[uptime]) ."</td>
+             <td>");
+
+   if($_GET['page'] == 'device') {
+     if($_GET['graphs'] == 'yes') {
+       echo("<p class=interface><a href='?page=device&id=$_GET[id]'>
+       <img src='/images/neu/hide-graphs.png' border=0 align=absmiddle> Hide Graphs</a></p>");
+     } else {
+       echo("<p class=interface><a href='?page=device&id=$_GET[id]&graphs=yes'>
+       <img src='/images/neu/show-graphs.png' border=0 align=absmiddle> Show Graphs</a></p>");
+     }
+   }
+
+echo("           </tr>");
+
+   echo("</table>");
+
+?>
diff --git a/html/includes/hostbox.inc b/html/includes/hostbox.inc
new file mode 100644
index 0000000000..41ca28b546
--- /dev/null
+++ b/html/includes/hostbox.inc
@@ -0,0 +1,30 @@
+<?php
+
+   if($bg == $list_colour_a) { $bg = $list_colour_b; } else { $bg = $list_colour_a; }
+   if ($device['status'] == '0') { $class = "list-device-down"; } else { $class = "list-device"; }
+   if ($device['ignore'] == '1') {
+     $class = "list-device-ignored";
+     if ($device['status'] == '1') { $class = "list-device-ignored-up"; }
+   }
+   $type = strtolower($device['os']);
+   unset($image);
+
+   $image = getImage($device[id]);
+
+   echo("
+            <tr bgcolor='$bg'>
+             <td width='40' align=center valign=middle>$image</td>
+             <td width='300'><span style='font-weight: bold; font-size: 14px;'>" . generatedevicelink($device) . "</span>
+             <br />$device[purpose]</td>
+             <td width='200'>$device[os]<br />
+             $device[version]</td>
+             <td width='200'>$device[hardware]<br />
+             $device[features]</td>
+             <td>" . formatUptime($device[uptime]) . "
+             <br />
+             $device[location]</td>
+             <td width=10>
+             </td>
+           </tr>");
+
+?>
diff --git a/html/includes/ifbox.inc b/html/includes/ifbox.inc
new file mode 100644
index 0000000000..2b06ec1858
--- /dev/null
+++ b/html/includes/ifbox.inc
@@ -0,0 +1,22 @@
+<?php
+
+  $iftype = fixiftype($interface[ifType]);
+
+  echo ("<p class=interface-header>$inf</p>");
+  if($ifalias && $ifalias != "") { echo("<span class=box-desc>$ifalias</span><br />"); }
+  if($iftype && $iftype != "") { echo("<span class=box-desc>$iftype</span> "); 
+    if($mac && $mac != "") { echo("<span class=box-desc>$mac</span><br />");
+    } else { echo("<br />"); }
+  }
+
+  if($interface[ifType] != "softwareLoopback") { 
+    if($speed == '0') { $speed = "0bps"; }
+    echo("<span class=box-desc>$speed");
+    if($interface[ifDuplex] != unknown) { echo(" / $interface[ifDuplex]-duplex"); }
+    if($interface[ifMtu] && $interface[ifMtu] != "") { echo(" / $interface[ifMtu]MTU</span>"); }
+    echo("</span>");
+  }
+
+  echo ("<span class=box-desc><b>$status</b></span>");
+
+?>
diff --git a/html/includes/print-device-graph.php b/html/includes/print-device-graph.php
new file mode 100644
index 0000000000..5a6d1b3c23
--- /dev/null
+++ b/html/includes/print-device-graph.php
@@ -0,0 +1,25 @@
+<?php
+
+  $daily_traffic   = "graph.php?host=$device[id]&type=$graph_type&from=$day&to=$now&width=215&height=100";
+  $daily_url       = "graph.php?host=$device[id]&type=$graph_type&from=$day&to=$now&width=400&height=150";
+
+  $weekly_traffic  = "graph.php?host=$device[id]&type=$graph_type&from=$week&to=$now&width=215&height=100";
+  $weekly_url      = "graph.php?host=$device[id]&type=$graph_type&from=$week&to=$now&width=400&height=150";
+
+  $monthly_traffic = "graph.php?host=$device[id]&type=$graph_type&from=$month&to=$now&width=215&height=100";
+  $monthly_url     = "graph.php?host=$device[id]&type=$graph_type&from=$month&to=$now&width=400&height=150";
+
+  $yearly_traffic  = "graph.php?host=$device[id]&type=$graph_type&from=$year&to=$now&width=215&height=100";
+  $yearly_url  = "graph.php?host=$device[id]&type=$graph_type&from=$year&to=$now&width=400&height=150";
+
+  echo("<a onmouseover=\"return overlib('<img src=\'$daily_url\'>', LEFT);\" onmouseout=\"return nd();\">
+        <img src='$daily_traffic' border=0></a> ");
+  echo("<a onmouseover=\"return overlib('<img src=\'$weekly_url\'>', LEFT);\" onmouseout=\"return nd();\">
+        <img src='$weekly_traffic' border=0></a> ");
+  echo("<a onmouseover=\"return overlib('<img src=\'$monthly_url\'>', LEFT);\" onmouseout=\"return nd();\">
+        <img src='$monthly_traffic' border=0></a> ");
+  echo("<a onmouseover=\"return overlib('<img src=\'$yearly_url\'>', LEFT);\" onmouseout=\"return nd();\">
+        <img src='$yearly_traffic' border=0></a>");
+
+?>
+
diff --git a/html/includes/print-event-short.inc b/html/includes/print-event-short.inc
new file mode 100644
index 0000000000..ad5f0d1736
--- /dev/null
+++ b/html/includes/print-event-short.inc
@@ -0,0 +1,35 @@
+
+<?
+
+if($bg == $list_colour_a) { $bg = $list_colour_b; } else { $bg=$list_colour_a; }
+
+  $hostname = gethostbyid($entry['host']);
+  $interface = fixifname(getifbyid($entry['interface']));
+
+  unset($icon);
+
+  $icon = geteventicon($entry['message']);
+  if($icon) {$icon = "<img src='/images/16/$icon'>"; }
+
+
+  echo("<tr style=\"background-color: $bg\">
+    <td width=0></td>
+    <td class=syslog width=130>
+      $entry[humandate]
+    </td>");
+    $if['id'] = $entry[interface];
+    $if['if'] = $interface;
+    echo("<td class=list-bold>
+      " . generateiflink($if) . "
+    </td>
+    <td width=30 align=center>$icon</td>
+    <td class=syslog>
+      $entry[message]
+    </td>
+    <td></td>
+  </tr>");
+
+
+
+
+?>
diff --git a/html/includes/print-event.inc b/html/includes/print-event.inc
new file mode 100644
index 0000000000..c3f76890a5
--- /dev/null
+++ b/html/includes/print-event.inc
@@ -0,0 +1,43 @@
+
+<?
+
+if($bg == $list_colour_a) { $bg = $list_colour_b; } else { $bg=$list_colour_a; }
+
+  $hostname = gethostbyid($entry['host']);
+  $interface = fixifname(getifbyid($entry['interface']));
+
+  unset($icon);
+
+  $icon = geteventicon($entry['message']);
+  if($icon) {$icon = "<img src='/images/16/$icon'>"; }
+
+
+  echo("<tr style=\"background-color: $bg\">
+    <td width=0></td>
+    <td class=syslog width=180>
+      $entry[humandate]
+    </td>");
+  if(!$_GET[id] && !$overview) {
+    $dev['id'] = $entry['host'];
+    $dev['hostname'] = $hostname;
+    echo("<td class=list-bold width=250>
+      " . generatedevicelink($dev) . "
+    </td>");
+  }
+
+    $if['id'] = $entry[interface];
+    $if['if'] = $interface;
+    echo("<td class=list-bold width=175>
+      " . generateiflink($if) . "
+    </td>
+    <td width=20>$icon</td>
+    <td class=syslog>
+      $entry[message]
+    </td>
+    <td></td>
+  </tr>");
+
+
+
+
+?>
diff --git a/html/includes/print-interface-graphs.php b/html/includes/print-interface-graphs.php
new file mode 100644
index 0000000000..3d84aa81a6
--- /dev/null
+++ b/html/includes/print-interface-graphs.php
@@ -0,0 +1,24 @@
+<?php
+
+  $daily_traffic   = "graph.php?if=$iid&type=$graph_type&from=$day&to=$now&width=217&height=100";
+  $daily_url       = "graph.php?if=$iid&type=$graph_type&from=$day&to=$now&width=400&height=150";
+
+  $weekly_traffic  = "graph.php?if=$iid&type=$graph_type&from=$week&to=$now&width=217&height=100";
+  $weekly_url      = "graph.php?if=$iid&type=$graph_type&from=$week&to=$now&width=400&height=150";
+
+  $monthly_traffic = "graph.php?if=$iid&type=$graph_type&from=$month&to=$now&width=217&height=100";
+  $monthly_url     = "graph.php?if=$iid&type=$graph_type&from=$month&to=$now&width=400&height=150";
+
+  $yearly_traffic  = "graph.php?if=$iid&type=$graph_type&from=$year&to=$now&width=217&height=100";
+  $yearly_url  = "graph.php?if=$iid&type=$graph_type&from=$year&to=$now&width=400&height=150";
+
+  echo("<a href='?page=interface&id=$iid' onmouseover=\"return overlib('<img src=\'$daily_url\'>', LEFT);\" onmouseout=\"return nd();\">
+        <img src='$daily_traffic' border=0></a> ");
+  echo("<a href='?page=interface&id=$iid' onmouseover=\"return overlib('<img src=\'$weekly_url\'>', LEFT);\" onmouseout=\"return nd();\">
+        <img src='$weekly_traffic' border=0></a> ");
+  echo("<a href='?page=interface&id=$iid' onmouseover=\"return overlib('<img src=\'$monthly_url\'>', LEFT);\" onmouseout=\"return nd();\">
+        <img src='$monthly_traffic' border=0></a> ");
+  echo("<a href='?page=interface&id=$iid' onmouseover=\"return overlib('<img src=\'$yearly_url\'>', LEFT);\" onmouseout=\"return nd();\">
+        <img src='$yearly_traffic' border=0></a>");
+
+?>
diff --git a/html/includes/print-interface.inc b/html/includes/print-interface.inc
new file mode 100644
index 0000000000..105505b3de
--- /dev/null
+++ b/html/includes/print-interface.inc
@@ -0,0 +1,102 @@
+<?php
+
+#  This file prints a table row for each interface 
+ 
+  $if_id = $interface['id'];
+  $inf = fixifName($interface['if']);
+  $ifIndex = $interface['ifIndex'];
+  $ifclass = ifclass($interface['up'], $interface['up_admin']);
+  $ifname = $interface['name'];
+  $speed = humanspeed($interface['ifSpeed']);
+  $mac = $interface['ifPhysAddress'];
+  if($ifname) {$ifname = $ifname . "</br>";}
+  if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; }
+  $graph_url = "graph.php?if=$if_id&from=$twoday&to=$now&width=400&height=120&type=bits";
+  echo("<tr style=\"background-color: $bg; padding: 5px;\" valign=top>
+           <td valign=top width=275>
+              <span class=list-large><a onmouseover=\"return overlib('<img src=\'$graph_url\'>');\" onmouseout=\"return nd();\" 
+               class='$ifclass' href='?page=interface&id=$interface[id]'>
+                 $i. $inf
+              </a></span><br /><span class=interface-desc>$ifname</span>");
+  unset ($break);
+  $iftype = fixiftype($interface[ifType]);
+  if(!$dographs) {
+    $ipdata = mysql_query("SELECT * FROM `ipaddr` WHERE `interface_id` = '$interface[id]'");
+    while($ip = mysql_fetch_Array($ipdata)) {
+      echo("$break <a class=interface-desc href=\"javascript:popUp('/netcmd.php?cmd=whois&query=$ip[addr]')\">$ip[addr]/$ip[cidr]</a>");
+      $break = " ";
+    } 
+  echo("</span>");
+  echo("</td><td width=80>");
+  if($speed && $speed != "") { echo("<span class=box-desc>$speed</span>"); }
+  echo("</td><td width=80>");
+  if($iftype && $iftype != "") { echo("<span class=box-desc>$iftype</span>"); } else { echo("-"); } 
+  echo("</td><td width=80>");
+  if($mac && $mac != "") { echo("<span class=box-desc>$mac</span>"); } else { echo("-"); }
+  echo("</td><td width=80>");
+  if($interface[ifMtu] && $interface[ifMtu] != "") { echo("<span class=box-desc>MTU $interface[ifMtu]</span>"); } else { echo("-"); }
+
+#  if($interface[ifDuplex] != unknown) { echo("<span class=box-desc>Duplex $interface[ifDuplex]</span>"); } else { echo("-"); }
+}
+
+echo("</td>");
+     echo("<td valign=top class=interface-desc>");
+     if ( strpos($inf, "oopback") === false && !$dographs) {
+       $link_query = mysql_query("select I.if, D.hostname, D.id AS dev_id, I.id from links AS L, interfaces AS I, devices AS D WHERE L.src_if = '$if_id' AND L.dst_if = I.id AND I.host = D.id");
+       while($link = mysql_fetch_array($link_query)) {
+         echo("<img src='images/16/connect.png' align=absmiddle alt='Directly Connected' /> " . generateiflink($link) . " on " . generatedevicelink($link) . "</a><br />");
+         $br = "<br />";
+       }
+       unset($br);
+       $adj_sql = "SELECT * FROM networks AS N, interfaces AS I, adjacencies AS A ";
+        $adj_sql = $adj_sql . "WHERE I.id = A.interface_id AND A.network_id = N.id ";
+        $adj_sql = $adj_sql . "AND I.id = '$if_id'";
+        $adj_query = mysql_query("$adj_sql");
+        while($adjs = mysql_fetch_array($adj_query)) {
+          $network_id = $adjs['network_id'];
+          $newsql = "SELECT *, I.id AS iid, D.id AS did FROM adjacencies AS A, networks as N, interfaces as I, devices as D ";
+          $newsql = $newsql . "WHERE N.id = '$network_id'  AND A.network_id = N.id AND I.id = A.interface_id AND D.id = I.host ";
+          $newsql = $newsql . "AND D.id != '$device[id]' AND I.if NOT LIKE '%loopback%' GROUP BY D.id ORDER BY D.hostname";
+          $new_query = mysql_query($newsql);
+          while($new = mysql_fetch_array($new_query)) {
+            if ($new['status'] == '0') { $class = "red"; } else { $class = "blue"; }
+            if ($new['ignore'] == '1') {
+              $class = "grey";
+              if ($new['status'] == '1') { $class = "green"; }
+            }
+            $this_ifid = $new['iid'];
+            $this_hostid = $new['did'];
+            $this_hostname = $new['hostname'];
+            $this_ifname = fixifName($new['if']);
+            $wq = mysql_query("select count(*) FROM links  WHERE dst_if = '$this_ifid' AND src_if = $if_id;");
+            if (@mysql_result($wq, 0) == '0' && $this_hostname != $hostname) {
+              $graph_url = "graph.php?if=$this_ifid&from=$twoday&to=$now&width=400&height=120&type=bits";
+              echo("$br &nbsp;<img src='images/16/bullet_go.png' alt='Same Subnet' align=absmiddle />" . generateiflink($new) . " on " . generatedevicelink($new));
+              $br = "<br />";
+            }
+          }
+        }
+        unset($br);
+      }
+   
+     echo("</td></tr>");
+
+     // If we're showing graphs, generate the graph and print the img tags
+     if($dographs && is_file("rrd/" . $hostname . ".". $ifIndex . ".rrd")) {
+          $daily_traffic = "graph.php?if=$if_id&type=bits&from=$day&to=$now&width=210&height=100";
+          $weekly_traffic = "graph.php?if=$if_id&type=bits&from=$week&to=$now&width=210&height=100";
+          $monthly_traffic = "graph.php?if=$if_id&type=bits&from=$month&to=$now&width=210&height=100";
+          $yearly_traffic = "graph.php?if=$if_id&type=bits&from=$year&to=$now&width=210&height=100";
+
+          echo("<tr style='background-color: $bg; padding: 5px;'><td colspan=3>");
+          echo("<img src='$daily_traffic'> <img src='$weekly_traffic'> ");
+          echo("<img src='$monthly_traffic'> <img src='$yearly_traffic'>");
+          echo("</td></tr>");
+      }
+
+   
+
+   $i++;
+
+
+?>
diff --git a/html/includes/print-menubar.php b/html/includes/print-menubar.php
new file mode 100644
index 0000000000..6e59475125
--- /dev/null
+++ b/html/includes/print-menubar.php
@@ -0,0 +1,118 @@
+<?php 
+
+  $service_alerts = mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_status = '0'"),0);
+  $if_alerts = mysql_result(mysql_query("SELECT count(id) FROM `interfaces` WHERE `up` = 'down' AND `up_admin` = 'up' AND `ignore` = '0'"),0);
+  $device_alerts = "0"; 
+  $device_alert_sql = "WHERE 0";
+
+  $query_a = mysql_query("SELECT * FROM `devices`");
+  while($device = mysql_fetch_array($query_a)) {
+
+    if($device[status] == 0 && $device[ignore] == '0') { $this_alert = "1"; } elseif($device[ignore] == '0') {
+      if(mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_status = '0' AND service_host = '$device[id]'"),0)) { $this_alert = "1"; }
+      if(mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE `up` = 'down' AND `up_admin` = 'up' AND host = '$device[id]'"),0)) { $this_alert = "1"; }
+    }
+
+    if($this_alert) { 
+     $device_alerts++;
+     $device_alert_sql .= " OR `id` = '$device[id]'"; 
+    }    
+    unset($this_alert);
+  }
+
+?>
+
+<div class="menu2">
+<ul>
+<li><a><img src='/images/16/lightbulb.png' border=0 align=absmiddle> Status
+<!--[if IE 7]><!--></a><!--<![endif]-->
+        <table><tr><td>
+        <ul>
+        <li><a href="?page=overview"><img src='/images/16/zoom.png' border=0 align=absmiddle> Overview</a></li>
+        <li><a href="?page=eventlog"><img src='/images/16/information.png' border=0 align=absmiddle> Eventlog</a></li>
+        <li><a href="?page=alerts"><img src='/images/16/exclamation.png' border=0 align=absmiddle> Alerts</a></li>
+        </ul>
+        </td></tr></table>
+<!--[if lte IE 6]></a><![endif]-->
+
+</li>
+</ul>
+<ul>
+<li><a><img src='/images/16/server.png' border=0 align=absmiddle> Devices
+<!--[if IE 7]><!--></a><!--<![endif]-->
+        <table><tr><td>
+        <ul>
+        <li><a href='?page=devices'><img src='/images/16/server.png' border=0 align=absmiddle> All Devices</a></li>
+        <li><hr width=140 /></li>
+        <li><a href="?page=devices&type=server"><img src='/images/16/server.png' border=0 align=absmiddle> Servers</a></li>
+        <li><a href="?page=devices&type=network"><img src='/images/16/arrow_switch.png' border=0 align=absmiddle> Network</a></li>
+        <li><a href="?page=devices&type=firewall"><img src='/images/16/shield.png' border=0 align=absmiddle> Firewalls</a></li>
+<?php
+echo("        <li><hr width=140 /></li>
+        <li><a href='?page=devices&status=alerted'><img src='/images/16/server_error.png' border=0 align=absmiddle> Alerts ($device_alerts)</a></li>");
+?>
+        <li><hr width=140 /></li>
+        <li><a href="?page=addhost"><img src='/images/16/server_add.png' border=0 align=absmiddle> Add Device</a></li>
+        <li><a href="?page=delhost"><img src='/images/16/server_delete.png' border=0 align=absmiddle> Delete Device</a></li>
+        </ul>
+        </td></tr></table>
+<!--[if lte IE 6]></a><![endif]-->
+</li>
+<li><a><img src='/images/16/cog.png' border=0 align=absmiddle> Services
+<!--[if IE 7]><!--></a><!--<![endif]-->
+        <table><tr><td>
+        <ul>
+        <li><a href="?page=services"><img src='/images/16/cog.png' border=0 align=absmiddle> All Services </a></li>
+<?php if($service_alerts) { 
+echo("  <li><hr width=140 /></li>
+        <li><a href='?page=services&status=0'><img src='/images/16/cog_error.png' border=0 align=absmiddle> Alerts ($service_alerts)</a></li>"); 
+} ?>
+        <li><hr width=140 /></li>
+        <li><a href="?page=addsrv"><img src='/images/16/cog_add.png' border=0 align=absmiddle> Add Service</a></li>
+        <li><a href="?page=delsrv"><img src='/images/16/cog_delete.png' border=0 align=absmiddle> Delete Service</a></li>
+
+        </ul>
+        </td></tr></table>
+<!--[if lte IE 6]></a><![endif]-->
+</li>
+<li><a class="menu2four" href="?page=locations"><img src='/images/16/building.png' border=0 align=absmiddle> Locations</a></li>
+
+<li><a><img src='/images/16/connect.png' border=0 align=absmiddle> Interfaces
+<!--[if IE 7]><!--></a><!--<![endif]-->
+
+<table><tr><td>
+        <ul>
+
+
+<li><a href='?page=interfaces'><img src='/images/16/connect.png' border=0 align=absmiddle> All Interfaces</a></li>
+<li><hr width=140 /></li>
+
+<?php
+
+if($show_if_customers) { echo("<li><a href='?page=customers'><img src='/images/16/group_link.png' border=0 align=absmiddle> Customers</a></li>"); $ifbreak = 1;}
+if($show_if_transit) { echo("<li><a href='?page=iftype&type=transit'><img src='/images/16/world_link.png' border=0 align=absmiddle> Transit</a></li>");  $ifbreak = 1; }
+if($show_if_peering) { echo("<li><a href='?page=iftype&type=peering'><img src='/images/16/brick_link.png' border=0 align=absmiddle> Peering</a></li>"); $ifbreak = 1; }
+
+if($ifbreak && $interface_alerts) { echo("<li><hr width=140 /></li>"); }
+
+if($interface_alerts) {
+echo("<li><a href='?page=interfaces&status=0'><img src='/images/16/link_error.png' border=0 align=absmiddle> Alerts ($interface_alerts)</a></li>");
+}
+
+
+?>
+
+
+
+</ul></td></tr></table>
+
+<!--[if lte IE 6]></a><![endif]-->
+</li>
+
+
+
+<li style='float: right;'><a href='?page=configuration'><img src='/images/16/wrench.png' border=0 align=absmiddle> Configuration</a></li>
+</ul>
+
+
+</div>
diff --git a/html/includes/print-service.inc b/html/includes/print-service.inc
new file mode 100644
index 0000000000..f6b955f9df
--- /dev/null
+++ b/html/includes/print-service.inc
@@ -0,0 +1,53 @@
+<?php
+
+if(!$samehost) {
+  if($bg == $list_colour_a) { $bg = $list_colour_b; } else { $bg = $list_colour_a; }
+}
+
+  $service_type = strtolower($service[service_type]);
+
+  if($service[service_status] == '0') {$status = "<span class=red><b>$service_type</b></span>";
+  } elseif ($service[service_status] == '1') {$status = "<span class=green><b>$service_type</b></span>";
+  } elseif ($service[service_status] == '2') {$status = "<span class=grey><b>$service_type</b></span>";}
+
+  $message = trim($service[service_message]);
+  $message = str_replace("\n", "<br />", $message);
+
+  $since = time() - $service[service_changed];
+  $since = formatUptime($since);
+
+  if($service[service_checked]) {
+    $checked = time() - $service[service_checked];
+    $checked = formatUptime($checked);
+  } else { $checked = "Never"; }
+
+
+  echo("
+         <tr style=\"background-color: $bg; padding: 5px;\"><td valign=top>$service[service_id].</td>");
+
+if($device_id) {
+  if(!$samehost) { 
+    $device[id] = $device_id;
+    $device[hostname] = $device_hostname;
+    echo("<td valign=top width=200><span style='font-weight:bold;'>" . generatedevicelink($device) . "</span></td>");  
+  } else { 
+    echo("<td></td>");  
+  }
+}
+
+echo("     
+           <td valign=top class=list-bold>
+             $status
+           </td>
+           <td valign=top width=175>
+             $since
+           </td>
+           <td valign=top>
+             <span class=box-desc>$message</span>
+           </td>
+         </tr>");
+
+  $i++;
+
+
+?>
diff --git a/html/includes/print-syslog.inc b/html/includes/print-syslog.inc
new file mode 100644
index 0000000000..e9cf49f50a
--- /dev/null
+++ b/html/includes/print-syslog.inc
@@ -0,0 +1,35 @@
+
+<?
+
+if($bg == $list_colour_a) { $bg = $list_colour_b; } else { $bg=$list_colour_a; }
+
+  $hostname = gethostbyid($entry['host']);
+  $interface = fixifname(getifbyid($entry['interface']));
+
+  unset($icon);
+
+  $icon = geteventicon($entry['message']);
+  if($icon) {$icon = "<img src='/images/16/$icon'>"; }
+
+
+  echo("<tr style=\"background-color: $bg\">
+    <td width=0></td>
+    <td class=syslog width=150>
+      $entry[datetime]
+    </td>
+    <td class=list-bold width=100>
+      $entry[priority]
+    </td>
+    <td class=syslog width=100>
+      $entry[program]
+    </td>
+    <td class=syslog>
+      $entry[msg]
+    </td>
+    <td></td>
+  </tr>");
+
+
+
+
+?>
diff --git a/html/includes/publicnav.inc b/html/includes/publicnav.inc
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/html/includes/topnav.inc b/html/includes/topnav.inc
new file mode 100644
index 0000000000..1a8a7da024
--- /dev/null
+++ b/html/includes/topnav.inc
@@ -0,0 +1,58 @@
+<?php
+
+$devices['count'] = mysql_result(mysql_query("SELECT count(id) FROM devices"),0);
+$devices['up'] = mysql_result(mysql_query("SELECT count(id) FROM devices  WHERE status = '1' AND `ignore` = '0'"),0);
+$devices['down'] = mysql_result(mysql_query("SELECT count(id) FROM devices WHERE status = '0' AND `ignore` = '0'"),0);
+$devices['disabled'] = mysql_result(mysql_query("SELECT count(id) FROM devices WHERE `ignore` = '1'"),0);
+
+$interfaces['count'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces"),0);
+$interfaces['up'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces  WHERE up = 'up'"),0);
+$interfaces['down'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE up = 'down' AND up_admin = 'up'"),0);
+$interfaces['disabled'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE up_admin = 'down'"),0);
+
+$services['count'] = mysql_result(mysql_query("SELECT count(service_id) FROM services"),0);
+$services['up'] = mysql_result(mysql_query("SELECT count(service_id) FROM services  WHERE service_status = '1' AND service_ignore ='0'"),0);
+$services['down'] = mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_status = '0' AND service_ignore = '0'"),0);
+$services['disabled'] = mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_ignore = '1'"),0);
+
+if($devices['down']) { $devices['bgcolour'] = "#ffcccc"; } else { $devices['bgcolour'] = ""; }
+if($interfaces['down']) { $interfaces['bgcolour'] = "#ffcccc"; } else { $interfaces['bgcolour'] = "#e5e5e5"; }
+if($services['down']) { $services['bgcolour'] = "#ffcccc"; } else { $services['bgcolour'] = ""; }
+
+
+
+?>
+
+
+<table cellpadding=2 cellspacing=0 border=0>
+    <?php
+      echo("<tr bgcolor=$devices[bgcolour]><td width=5></td>
+            <td>Devices : 
+            </td><td>$devices[count] 
+            </td><td> ( <span class=green>$devices[up] up</span>
+            </td><td><span class=red>$devices[down] down</span>
+            </td><td><span class=grey>$devices[disabled]</span> ignored ) 
+            </td><td width=5></td>");
+      echo("</tr><tr bgcolor=$interfaces[bgcolour]>");
+      echo("<td width=5></td><td>Interfaces : 
+            </td><td>$interfaces[count]
+            </td><td> ( <span class=green> $interfaces[up] up </span>
+            </td><td><span class=red> $interfaces[down] down </span>
+            </td><td><span class=grey> $interfaces[disabled] </span> disabled ) 
+            </td><td width=5></td>");
+      echo("</tr><tr bgcolor=$services[bgcolour]>");
+      echo("<td width=5></td><td>Services : 
+	    </td><td>$services[count]
+            </td><td> ( <span class=green>$services[up] up</span>
+            </td><td><span class=red>$services[down] down</span>
+            </td><td><span class=grey>$services[disabled]</span> ignored ) 
+            </td><td width=5></td>");
+      echo("</tr>");
+    ?>
+    </td>
+  </tr>
+  <tr>
+    <td align=left>
+    </td>
+  </tr>
+</table>
diff --git a/html/index.php b/html/index.php
new file mode 100755
index 0000000000..0e3543b47f
--- /dev/null
+++ b/html/index.php
@@ -0,0 +1,114 @@
+<?php 
+  ini_set('allow_url_fopen', 0);
+
+if($_GET[debug]) {
+  ini_set('display_errors', 1);
+  ini_set('display_startup_errors', 1);
+  ini_set('log_errors', 1);
+  ini_set('error_reporting', E_ALL);
+}
+
+  include("../config.php"); 
+  include("../includes/functions.php");  
+  include("includes/authenticate.inc");
+  $start = utime();
+
+  $now = time();
+  $day = time() - (24 * 60 * 60);
+  $twoday = time() - (2 * 24 * 60 * 60);
+  $week = time() - (7 * 24 * 60 * 60);
+  $month = time() - (31 * 24 * 60 * 60);
+  $year = time() - (365 * 24 * 60 * 60);
+
+?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml2/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <title><?php echo("$page_title"); ?></title>
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+  <!-- <meta http-equiv="refresh" content="300"> -->
+  <link href="/css/styles.css" rel="stylesheet" type="text/css">
+  <?php include("includes/ajaxtabs.inc"); ?>
+</head>
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Begin
+function popUp(URL) {
+  day = new Date();
+  id = day.getTime();
+  eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=550,height=600');"); 
+}
+// End -->
+</script>
+<script type="text/javascript" src="js/overlib.js"></script>
+<body topmargin=0 leftmargin=0 rightmargin=0 bottommargin=0>
+<div id="center">
+<div id="top">
+<table cellpadding=0 cellspacing=0 width=100%>
+<tr>
+<td align=left></td>
+<td align=right>
+  <? 
+     if($_SESSION['authenticated']) { 
+       echo("Logged in as <b>$_SESSION[username]</b> (<a href='?logout=yes'>Logout</a>)"); 
+     } else { 
+       echo("Not logged in!"); 
+     } 
+  ?>
+ </td></tr>
+</table>
+</div>
+
+<div id="header" style="border: 1px none #ccf;">
+  <table width="100%" style="padding: 0px; margin:0px;">
+    <tr>
+      <td style="padding: 0px; margin:0px; border: none;">
+        <div id=logo style="padding: 10px"><a href="/"><img src="<?php echo("$title_image"); ?>" border="0" /></a></div>
+      </td>
+      <td align=right style="margin-right: 10px;">
+        <div id="topnav" style="float: right;">
+ 	  <?php if($_SESSION['authenticated']) {
+	    include("includes/topnav.inc");		
+	  } ?>
+        </div>
+      </td>
+    </tr>
+  </table>
+</div>
+
+<?php if($_SESSION['authenticated']) {include("includes/print-menubar.php");} else {echo("<hr colour=#444444 />");} ?>
+
+<div class=clearer></div>
+
+
+<div class="content-mat" style="border: 1px none #fcc;">
+<div id="content" style="border: 1px none #ccc;">
+<div style="margin: 7px;"></div>
+<?php
+  if($_SESSION['authenticated']) {
+    if($_GET['page'] && is_file("pages/" . $_GET['page'] . ".php")) {
+      include("pages/" . $_GET['page'] . ".php");
+    } else { 
+      include("pages/default.php");
+    }
+  } else {
+    include("pages/logon.inc");
+    exit;
+  } 
+?>
+                </div>
+                <div class="clearer"></div>
+            </div>
+        </div>
+ </div>
+<?php
+    $end = utime(); $run = $end - $start;
+    $gentime = substr($run, 0, 5);
+    echo("<br /> <center>Generated in $gentime seconds 
+          <br /> <a href='http://www.project-observer.org'>Project Observer $observer_version</a> &copy; 2006-2007 Adam Armstrong
+          <br /> Development Sponsored by <a href='http://www.vostron.net'>Vostron</a>.");
+          
+?>
+</body>
+</html>
+
diff --git a/html/js/Mini/overlib_anchor_mini.js b/html/js/Mini/overlib_anchor_mini.js
new file mode 100644
index 0000000000..c12a034dfc
--- /dev/null
+++ b/html/js/Mini/overlib_anchor_mini.js
@@ -0,0 +1,98 @@
+//\/////
+//\  overLIB Anchor Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.10 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//\/////
+//\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
+if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Anchor Plugin.');else{registerCommands('anchor,anchorx,anchory,noanchorwarn,anchoralign');
+if(typeof ol_anchor=='undefined')var ol_anchor='';if(typeof ol_anchorx=='undefined')var ol_anchorx=0;if(typeof ol_anchory=='undefined')var ol_anchory=0;if(typeof ol_noanchorwarn=='undefined')var ol_noanchorwarn=1;if(typeof ol_anchoralign=='undefined')var ol_anchoralign='UL';
+var o3_anchor="",o3_anchorx=0,o3_anchory=0,o3_noanchorwarn=1,o3_anchoralign='UL',mrkObj,rmrkPosition;
+function setAnchorVariables(){o3_anchor=ol_anchor;o3_anchorx=ol_anchorx;o3_anchory=ol_anchory;o3_noanchorwarn=ol_noanchorwarn;o3_anchoralign=ol_anchoralign;mrkObj=null;}
+function parseAnchorExtras(pf,i,ar){var v,k=i;
+if(k<ar.length){if(ar[k]==ANCHOR){eval(pf+"anchor='"+escSglQuote(ar[++k])+"'");return k;}
+if(ar[k]==ANCHORX){eval(pf+'anchorx='+ar[++k]);return k;}
+if(ar[k]==ANCHORY){eval(pf+'anchory='+ar[++k]);return k;}
+if(ar[k]==NOANCHORWARN){eval(pf+'noanchorwarn=('+pf+'noanchorwarn==1)?0:1');return k;}
+if(ar[k]==ANCHORALIGN){k=opt_MULTIPLEARGS(++k,ar,(pf+'anchoralign')); return k;}}
+return-1;}
+function checkAnchorObject(){var w=o3_anchor;
+if(w){if(!(mrkObj=getAnchorObjectRef(w))){if(o3_noanchorwarn){alert('WARNING!  Reference mark "'+w+'" not found.');return false;}else w='';}}
+return true;}
+function anchorHorizontal(browserWidth,horizontalScrollAmount,widthFix){var hasAnchor=(typeof o3_anchor!='undefined'&&o3_anchor);if(!hasAnchor)return void(0);
+if(typeof o3_followscroll!='undefined'&&o3_followscroll&&o3_sticky)o3_relx=rmrkPosition[0];
+return rmrkPosition[0];}
+function anchorVertical(browserHeight,verticalScrollAmount){var hasAnchor=(typeof o3_anchor!='undefined'&&o3_anchor);if(!hasAnchor)return void(0);
+if(typeof o3_followscroll!='undefined'&&o3_followscroll&&o3_sticky)o3_rely=rmrkPosition[1];
+return rmrkPosition[1];}
+function anchorPreface(){if(!mrkObj)return;rmrkPosition=getAnchorLocation(mrkObj);}
+function getAnchorObjectRef(aObj){return getRefById(aObj,o3_frame.document)||getRefByName(aObj,o3_frame.document)}
+function getAnchorLocation(objRef){var mkObj,of,offsets,mlyr
+mkObj=mlyr=objRef
+offsets=[o3_anchorx,o3_anchory]
+if(document.layers){if(typeof mlyr.length!='undefined'&& mlyr.length>1){mkObj=mlyr[0]
+offsets[0]+=mlyr[0].x+mlyr[1].pageX
+offsets[1]+=mlyr[0].y+mlyr[1].pageY
+}else{if(mlyr.toString().indexOf('Image')!=-1||mlyr.toString().indexOf('Anchor')!=-1){offsets[0]+=mlyr.x
+offsets[1]+=mlyr.y
+}else{offsets[0]+=mlyr.pageX
+offsets[1]+=mlyr.pageY}}
+}else{offsets[0]+=pageLocation(mlyr,'Left')
+offsets[1]+=pageLocation(mlyr,'Top')}
+of=getAnchorOffsets(mkObj)
+if(typeof o3_dragimg!='undefined'&& o3_dragimg){olImgLeft=offsets[0];olImgTop=offsets[1];}
+offsets[0]+=of[0]
+offsets[1]+=of[1]
+if(typeof o3_dragimg!='undefined'&& o3_dragimg){olImgRight=offsets[0];olImgBottom=offsets[1];return;}
+return offsets;}
+function getAnchorOffsets(mkObj){var fx=fy=0, mp,puc,mkAry,sx=sy=0,w=o3_anchoralign
+var mW=mH=pW=pH=0
+var off=[0,0]
+mkAry=w.split(',');
+if(mkAry.length<3){mp=mkAry[0].toUpperCase();puc=(mkAry.length==1)?mp:mkAry[1].toUpperCase();}else if(mkAry.length==3){if(!isNaN(mkAry[0])){mp=mkAry.slice(0,2);puc=mkAry[2].toUpperCase();}else{mp=mkAry[0].toUpperCase();puc=mkAry.slice(1);}
+}else{mp=mkAry.slice(0,2);puc=mkAry.slice(2);}
+var shdwPresent=typeof o3_shadow!='undefined'&& o3_shadow
+if(shdwPresent){sx=Math.abs(o3_shadowx);sy=Math.abs(o3_shadowy);}
+pW=(shdwPresent?parseInt(o3_width):(olNs4?over.clip.width:over.offsetWidth))
+pH=(shdwPresent?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight))
+if(olOp&& o3_wrap){pW=(shdwPresent?parseInt(o3_width):(olNs4?over.clip.width:over.offsetWidth))
+pH=(shdwPresent?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight))}
+if(!olOp&& mkObj.toString().indexOf('Image')!=-1){mW=mkObj.width
+mH=mkObj.height
+}else if(!olOp&& mkObj.toString().indexOf('Anchor')!=-1){mp='UL'
+}else{mW=(olNs4)?mkObj.clip.width:mkObj.offsetWidth
+mH=(olNs4)?mkObj.clip.height:mkObj.offsetHeight}
+if(!isNaN(mp)||typeof mp=='object'){if(typeof mp=='object'){fx=parseFloat(mp[0]);fy=parseFloat(mp[1]);}else
+fx=fy=parseFloat(mp);off=[Math.round(fx*mW),Math.round(fy*mH)];}else{if(mp=='UR')off=[mW,0]
+else if(mp=='LL')off=[0,mH]
+else if(mp=='LR')off=[mW,mH]}
+if(typeof o3_dragimg!='undefined'&& o3_dragimg)return off;else{if(!isNaN(puc)||typeof puc=='object' ){if(typeof puc=='object'){fx=parseFloat(puc[0]);fy=parseFloat(puc[1]);}else
+fx=fy=parseFloat(puc);off[0]-=Math.round(fx*(pW-sx));off[1]-=Math.round(fy*(pH-sy));}else{if(puc=='UR'){off[0]-=(pW-sx);off[1]-=sy
+}else if(puc=='LL'){off[0]-=sx;off[1]-=(pH-sy)
+}else if(puc=='LR'){off[0]-=(pW-sx);off[1]-=(pH-sy)}}
+return off}}
+function pageLocation(o,t){var x=0
+while(o.offsetParent){x+=o['offset'+t]
+o=o.offsetParent}
+x+=o['offset'+t]
+return x}
+function getRefById(l,d){var r="",j
+d=(d||document)
+if(d.all)return d.all[l]
+else if(d.getElementById)return d.getElementById(l)
+else if(d.layers&& d.layers.length>0){if(d.layers[l])return d.layers[l]
+for(j=0;j<d.layers.length;j++){r=getRefById(l,d.layers[j].document)
+if(r)return r}}
+return false}
+function getRefByName(l,d){var r=null,j
+d=(d||document)
+if(d.images[l])return d.images[l]
+else if(d.anchors[l])return d.anchors[l];else if(d.layers&& d.layers.length>0){for(j=0;j<d.layers.length;j++){r=getRefByName(l,d.layers[j].document)
+if(r&& r.length>0)return r
+else if(r)return [r,d.layers[j]]}}
+return null}
+registerRunTimeFunction(setAnchorVariables);registerCmdLineFunction(parseAnchorExtras);registerPostParseFunction(checkAnchorObject);registerHook("createPopup",anchorPreface,FAFTER);registerHook("horizontalPlacement",anchorHorizontal,FCHAIN);registerHook("verticalPlacement",anchorVertical,FCHAIN);if(olInfo.meets(4.10))registerNoParameterCommands('noanchorwarn');
+}
diff --git a/html/js/Mini/overlib_centerpopup_mini.js b/html/js/Mini/overlib_centerpopup_mini.js
new file mode 100644
index 0000000000..595385f223
--- /dev/null
+++ b/html/js/Mini/overlib_centerpopup_mini.js
@@ -0,0 +1,28 @@
+//\/////
+//\  overLIB Center Popup Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.10 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2003. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//\/////
+//\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
+if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Center Popup Plugin.');else{registerCommands('centerpopup,centeroffset');
+if(typeof ol_centerpopup=='undefined')var ol_centerpopup=0;if(typeof ol_centeroffset=='undefined')var ol_centeroffset='0';
+var o3_centerpopup=0,o3_centeroffset='0';
+function setCenterPopupVariables(){o3_centerpopup=ol_centerpopup;o3_centeroffset=ol_centeroffset;}
+function parseCenterPopupExtras(pf,i,ar){var k=i,v;
+if(k<ar.length){if(ar[k]==CENTERPOPUP){eval(pf+'centerpopup=('+pf+'centerpopup==0)?1:0');return k;}
+if(ar[k]==CENTEROFFSET){k=opt_MULTIPLEARGS(++k,ar,(pf+'centeroffset'));return k;}}
+return-1;}
+function centerPopupHorizontal(browserWidth,horizontalScrollAmount,widthFix){if(!o3_centerpopup)return void(0);
+var vdisp=o3_centeroffset.split(','),placeX,iwidth=browserWidth,winoffset=horizontalScrollAmount,pWd=parseInt(o3_width);
+placeX=winoffset+Math.round((iwidth-widthFix-pWd)/2)+parseInt(vdisp[0]);if(typeof o3_followscroll!='undefined'&&o3_followscroll&&o3_sticky)o3_relx=placeX;
+return placeX;}
+function centerPopupVertical(browserHeight,verticalScrollAmount){if(!o3_centerpopup)return void(0);
+var placeY,iheight=browserHeight,scrolloffset=verticalScrollAmount,vdisp=o3_centeroffset.split(','),pHeight=(o3_aboveheight?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight));
+placeY=scrolloffset+Math.round((iheight-pHeight)/2)+(vdisp.length>1?parseInt(vdisp[1]):0);if(typeof o3_followscroll!='undefined'&&o3_followscroll&&o3_sticky)o3_rely=placeY;
+return placeY;}
+registerRunTimeFunction(setCenterPopupVariables);registerCmdLineFunction(parseCenterPopupExtras);registerHook('horizontalPlacement',centerPopupHorizontal,FCHAIN);registerHook('verticalPlacement',centerPopupVertical,FCHAIN);if(olInfo.meets(4.10))registerNoParameterCommands('centerpopup');
+}
diff --git a/html/js/Mini/overlib_crossframe_mini.js b/html/js/Mini/overlib_crossframe_mini.js
new file mode 100644
index 0000000000..b69000e7c6
--- /dev/null
+++ b/html/js/Mini/overlib_crossframe_mini.js
@@ -0,0 +1,36 @@
+//\/////
+//\  overLIB Crossframe Support Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.05 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//\/////
+//\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
+if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Cross Frame Support Plugin.');else{registerCommands('frame');
+function parseFrameExtras(pf,i,ar){var k=i,v;
+if(k<ar.length){if(ar[k]==FRAME){v=ar[++k];if(pf=='ol_')ol_frame=v;else opt_FRAME(v);return k;}}
+return-1;}
+function opt_FRAME(frm){o3_frame=frm;over=createDivContainer('overDiv');return 0;}
+function frmDepth(thisFrame,ofrm){var retVal='';
+for(var i=0;i<thisFrame.length;i++){if(thisFrame[i].length>0){retVal=frmDepth(thisFrame[i],ofrm);if(retVal=='')continue;}else if(thisFrame[i]!=ofrm)continue;retVal='['+i+']'+retVal;break;}
+return retVal;}
+function getFrmRef(srcFrm,tgetFrm){var rtnVal=''
+if(tgetFrm!=srcFrm){var tFrm=frmDepth(top.frames,tgetFrm)
+var sFrm=frmDepth(top.frames,srcFrm)
+if(sFrm.length==tFrm.length){l=tFrm.lastIndexOf('[')
+if(l){while( sFrm.substring(0,l)!=tFrm.substring(0,l) )
+l=tFrm.lastIndexOf('[',l-1)
+tFrm=tFrm.substr(l)
+sFrm=sFrm.substr(l)}}
+var cnt=0,p='',str=tFrm
+while((k=str.lastIndexOf('['))!=-1){cnt++
+str=str.substring(0,k)}
+for(var i=0;i<cnt;i++)p=p+'parent.'
+rtnVal=p+'frames'+sFrm+'.'}
+return rtnVal}
+function chkForFrmRef(){if(o3_frame!=ol_frame)fnRef=getFrmRef(ol_frame,o3_frame)
+return true;}
+registerCmdLineFunction(parseFrameExtras);registerPostParseFunction(chkForFrmRef);
+}
diff --git a/html/js/Mini/overlib_csstyle_mini.js b/html/js/Mini/overlib_csstyle_mini.js
new file mode 100644
index 0000000000..210f038705
--- /dev/null
+++ b/html/js/Mini/overlib_csstyle_mini.js
@@ -0,0 +1,45 @@
+//\/////
+//\  overLIB CSS Style Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.05 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//\/////
+//\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
+if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the CSS Style Plugin.');else{registerCommands('cssstyle,padunit,heightunit,widthunit,textsizeunit,textdecoration,textstyle,textweight,captionsizeunit,captiondecoration,captionstyle,captionweight,closesizeunit,closedecoration,closestyle,closeweight');
+if(typeof ol_padunit=='undefined')var ol_padunit="px";if(typeof ol_heightunit=='undefined')var ol_heightunit="px";if(typeof ol_widthunit=='undefined')var ol_widthunit="px";if(typeof ol_textsizeunit=='undefined')var ol_textsizeunit="px";if(typeof ol_textdecoration=='undefined')var ol_textdecoration="none";if(typeof ol_textstyle=='undefined')var ol_textstyle="normal";if(typeof ol_textweight=='undefined')var ol_textweight="normal";if(typeof ol_captionsizeunit=='undefined')var ol_captionsizeunit="px";if(typeof ol_captiondecoration=='undefined')var ol_captiondecoration="none";if(typeof ol_captionstyle=='undefined')var ol_captionstyle="normal";if(typeof ol_captionweight=='undefined')var ol_captionweight="bold";if(typeof ol_closesizeunit=='undefined')var ol_closesizeunit="px";if(typeof ol_closedecoration=='undefined')var ol_closedecoration="none";if(typeof ol_closestyle=='undefined')var ol_closestyle="normal";if(typeof ol_closeweight=='undefined')var ol_closeweight="normal";
+var o3_padunit="px",o3_heightunit="px",o3_widthunit="px",o3_textsizeunit="px",o3_textdecoration="",o3_textstyle="",o3_textweight="",o3_captionsizeunit="px",o3_captiondecoration="",o3_captionstyle="",o3_captionweight="",o3_closesizeunit="px",o3_closedecoration="",o3_closestyle="",o3_closeweight="";
+function setCSSStyleVariables(){o3_padunit=ol_padunit;o3_heightunit=ol_heightunit;o3_widthunit=ol_widthunit;o3_textsizeunit=ol_textsizeunit;o3_textdecoration=ol_textdecoration;o3_textstyle=ol_textstyle;o3_textweight=ol_textweight;o3_captionsizeunit=ol_captionsizeunit;o3_captiondecoration=ol_captiondecoration;o3_captionstyle=ol_captionstyle;o3_captionweight=ol_captionweight;o3_closesizeunit=ol_closesizeunit;o3_closedecoration=ol_closedecoration;o3_closestyle=ol_closestyle;o3_closeweight=ol_closeweight;}
+function parseCSSStyleExtras(pf,i,ar){var k=i;
+if(k<ar.length){if(ar[k]==CSSSTYLE){eval(pf+'css='+ar[k]);return k;}
+if(ar[k]==PADUNIT){eval(pf+'padunit="'+ar[++k]+'"');return k;}
+if(ar[k]==HEIGHTUNIT){eval(pf+'heightunit="'+ar[++k]+'"');return k;}
+if(ar[k]==WIDTHUNIT){eval(pf+'widthunit="'+ar[++k]+'"');return k;}
+if(ar[k]==TEXTSIZEUNIT){eval(pf+'textsizeunit="'+ar[++k]+'"');return k;}
+if(ar[k]==TEXTDECORATION){eval(pf+'textdecoration="'+ar[++k]+'"');return k;}
+if(ar[k]==TEXTSTYLE){eval(pf+'textstyle="'+ar[++k]+'"');return k;}
+if(ar[k]==TEXTWEIGHT){eval(pf+'textweight="'+ar[++k]+'"');return k;}
+if(ar[k]==CAPTIONSIZEUNIT){eval(pf+'captionsizeunit="'+ar[++k]+'"');return k;}
+if(ar[k]==CAPTIONDECORATION){eval(pf+'captiondecoration="'+ar[++k]+'"');return k;}
+if(ar[k]==CAPTIONSTYLE){eval(pf+'captionstyle="'+ar[++k]+'"');return k;}
+if(ar[k]==CAPTIONWEIGHT){eval(pf+'captionweight="'+ar[++k]+'"');return k;}
+if(ar[k]==CLOSESIZEUNIT){eval(pf+'closesizeunit="'+ar[++k]+'"');return k;}
+if(ar[k]==CLOSEDECORATION){eval(pf+'closedecoration="'+ar[++k]+'"');return k;}
+if(ar[k]==CLOSESTYLE){eval(pf+'closestyle="'+ar[++k]+'"');return k;}
+if(ar[k]==CLOSEWEIGHT){eval(pf+'closeweight="'+ar[++k]+'"');return k;}}
+return-1;}
+function ol_content_simple_cssstyle(text){txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" style="background-color: '+o3_bgcolor+';height: '+o3_height+o3_heightunit+';"><tr><td><table width="100%" border="0" cellpadding="'+o3_cellpad+'" cellspacing="0" style="color: '+o3_fgcolor+';background-color: '+o3_fgcolor+';height: '+o3_height+o3_heightunit+';"><tr><td valign="TOP"><font style="font-family: '+o3_textfont+';color: '+o3_textcolor+';font-size: '+o3_textsize+o3_textsizeunit+';text-decoration: '+o3_textdecoration+';font-weight: '+o3_textweight+';font-style:'+o3_textstyle+'">'+text+'</font></td></tr></table></td></tr></table>';set_background("");
+return txt;}
+function ol_content_caption_cssstyle(text,title,close){var nameId;closing="";closeevent="onMouseOver";
+if(o3_closeclick==1)closeevent=(o3_closetitle?"title='"+o3_closetitle+"'":"")+" onClick";
+if(o3_capicon!=""){nameId=' hspace=\"5\"'+' align=\"middle\" alt=\"\"';if(typeof o3_dragimg!='undefined'&&o3_dragimg)nameId=' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';o3_capicon='<img src=\"'+o3_capicon+'\"'+nameId+' />';}
+if(close!=""){closing='<td align="RIGHT"><a href="javascript:return '+fnRef+'cClick();" '+closeevent+'="return '+fnRef+'cClick();" style="color: '+o3_closecolor+';font-family: '+o3_closefont+';font-size: '+o3_closesize+o3_closesizeunit+';text-decoration: '+o3_closedecoration+';font-weight: '+o3_closeweight+';font-style:'+o3_closestyle+';">'+close+'</a></td>';}
+txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" style="background-color: '+o3_bgcolor+';background-image: url('+o3_bgbackground+');height: '+o3_height+o3_heightunit+';"><tr><td><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td><font style="font-family: '+o3_captionfont+';color: '+o3_capcolor+';font-size: '+o3_captionsize+o3_captionsizeunit+';font-weight: '+o3_captionweight+';font-style: '+o3_captionstyle+';text-decoration: '+o3_captiondecoration+';">'+o3_capicon+title+'</font></td>'+closing+'</tr></table><table width="100%" border="0" cellpadding="'+o3_cellpad+'" cellspacing="0" style="color: '+o3_fgcolor+';background-color: '+o3_fgcolor+';height: '+o3_height+o3_heightunit+';"><tr><td valign="TOP"><font style="font-family: '+o3_textfont+';color: '+o3_textcolor+';font-size: '+o3_textsize+o3_textsizeunit+';text-decoration: '+o3_textdecoration+';font-weight: '+o3_textweight+';font-style:'+o3_textstyle+'">'+text+'</font></td></tr></table></td></tr></table>';set_background("");
+return txt;}
+function ol_content_background_cssstyle(text,picture,hasfullhtml){if(hasfullhtml){txt=text;}else{var pU,hU,wU;pU=(o3_padunit=='%'?'%':'');hU=(o3_heightunit=='%'?'%':'');wU=(o3_widthunit=='%'?'%':'');txt='<table width="'+o3_width+wu+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+hu+'"><tr><td colspan="3" height="'+o3_padyt+pu+'"></td></tr><tr><td width="'+o3_padxl+pu+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+pu+'"><font style="font-family: '+o3_textfont+';color: '+o3_textcolor+';font-size: '+o3_textsize+o3_textsizeunit+';">'+text+'</font></td><td width="'+o3_padxr+pu+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+pu+'"></td></tr></table>';}
+set_background(picture);
+return txt;}
+registerRunTimeFunction(setCSSStyleVariables);registerCmdLineFunction(parseCSSStyleExtras);registerHook("ol_content_simple",ol_content_simple_cssstyle,FALTERNATE,CSSSTYLE);registerHook("ol_content_caption",ol_content_caption_cssstyle,FALTERNATE,CSSSTYLE);registerHook("ol_content_background",ol_content_background_cssstyle,FALTERNATE,CSSSTYLE);
+}
diff --git a/html/js/Mini/overlib_debug_mini.js b/html/js/Mini/overlib_debug_mini.js
new file mode 100644
index 0000000000..ec88637a65
--- /dev/null
+++ b/html/js/Mini/overlib_debug_mini.js
@@ -0,0 +1,49 @@
+//\/////
+//\  overLIB Debug Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.05 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2003. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//\/////
+//\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
+if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Debug Plugin.');else{var olZindex;registerCommands('allowdebug');
+function parseDebugExtras(pf,i,ar){var k=i,v;
+if(k<ar.length){if(ar[k]==ALLOWDEBUG){v=ar[k+1];if(typeof v=='string'){v=ar[++k];if(pf!='ol_')setCanShowParm(v);} return k;}}
+return-1;}
+function showProperties(){var args=showProperties.arguments,sho,shoObj,vis,lvl=0,istrt=0,theDiv='showProps',txt='';
+if(args.length==0)return;if(args.length % 2&&typeof args[0]=='string'){istrt=1;theDiv=args[0];}
+sho=createDivContainer(theDiv);
+if(olNs4){shoObj=sho;txt+='<table cellpadding="1" cellspacing="0" border="0" bgcolor="#000000"><tr><td>';}else{with(sho.style){backgroundColor='#ffffcc';padding='5px';border='1px #000000 solid';}
+shoObj=sho.style;}
+lvl=getLayerLevel(theDiv);
+if(typeof sho.position=='undefined'){sho.position=new Pagelocation(10+lvl*20,10,1);if(typeof olZindex=='undefined')olZindex=getDivZindex();shoObj.zIndex=olZindex+1+lvl;}
+txt+='<table cellpadding="5" border="0" cellspacing="0"'+(olNs4?' bgcolor="#ffffcc"':'')+'>';txt+='<tr><td><strong><A HREF="javascript:moveToBack(\''+theDiv+'\');" title="Move to back">'+theDiv+'</A></strong></td><td align="RIGHT"><strong><a href="javascript:closeLayer(\''+theDiv+'\');" TITLE="Close Layer'+(!olNs4?'" style="background-color: #CCCCCC;border:2px #333369 outset;padding: 2px;':'')+'">X</a></strong></td></tr>';txt+='<tr><td style="text-decoration: underline;"><strong>Item</strong></td><td style="text-decoration: underline;"><strong>Value</strong></td></tr>';for(var i=istrt;i<args.length-1;i++)
+txt+='<tr><td align="right"><strong>'+args[i]+':&nbsp;</strong></td><td>'+args[++i]+'</td></tr>';txt+='</table>'+(olNs4?'</td></tr></table>':'');
+if(olNs4){sho.document.open();sho.document.write(txt);sho.document.close();}else{if(olIe5&&isMac)sho.innerHTML='';sho.innerHTML=txt;}
+showAllVisibleLayers();}
+function getLayerLevel(lyr){var i=0;
+if(typeof document.popups=='undefined'){document.popups=new Array(lyr);}else{var l=document.popups;for(var i=0;i<l.length;i++)if(lyr==l[i])break;if(i==l.length)l[l.length++]=lyr;}
+return i;}
+function getDivZindex(id){var obj;
+if(id==''||id==null)id='overDiv';
+obj=layerReference(id);obj=(olNs4?obj:obj.style);
+return obj.zIndex;}
+function setCanShowParm(debugID){var lyr,pLyr;
+if(typeof debugID!='string')return;
+pLyr=debugID.split(',');for(var i=0;i<pLyr.length;i++){lyr=layerReference(pLyr[i]);if(lyr!=null&&typeof lyr.position!='undefined')lyr.position.canShow=1;}}
+function Pagelocation(x,y,canShow){this.x=x;this.y=y;this.canShow=(canShow==null)?0:canShow;}
+function showAllVisibleLayers(){var lyr,lyrObj,l=document.popups;
+for(var i=0;i<l.length;i++){lyr=layerReference(l[i]);lyrObj=(olNs4?lyr:lyr.style);if(lyr.position.canShow){positionLayer(lyrObj,lyr.position.x,lyr.position.y);lyrObj.visibility='visible';}}}
+function positionLayer(Obj,x,y){Obj.left=x+(olIe4?eval(docRoot+'.scrollLeft'):window.pageXOffset)+(olNs4?0:'px');Obj.top=y+(olIe4?eval(docRoot+'.scrollTop'):window.pageYOffset)+(olNs4?0:'px');}
+function closeLayer(lyrID){var lyr=layerReference(lyrID);
+lyr.position.canShow=0;lyr=(olNs4?lyr:lyr.style);lyr.visibility='hidden';}
+function moveToBack(layer){var l=document.popups,lyr,obj,i,x=10,y=10,dx=20,z=olZindex+1;
+if(l.length==1)return;
+lyr=layerReference(layer);lyr.position.x=x;lyr.position.y=y;obj=(olNs4?lyr:lyr.style);obj.zIndex=z;
+for(i=0;i<l.length;i++){if(layer==l[i])continue;lyr=layerReference(l[i]);if(lyr.position.canShow==0)continue;obj=(olNs4?lyr:lyr.style);obj.zIndex+=1;lyr.position.x+=dx;lyr.position.y=y;}
+showAllVisibleLayers();}
+function rawTxt(txt){if(typeof txt!='string')return;return txt.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;");}
+registerCmdLineFunction(parseDebugExtras);
+}
diff --git a/html/js/Mini/overlib_exclusive_mini.js b/html/js/Mini/overlib_exclusive_mini.js
new file mode 100644
index 0000000000..f51d89d11c
--- /dev/null
+++ b/html/js/Mini/overlib_exclusive_mini.js
@@ -0,0 +1 @@
+}
diff --git a/html/js/Mini/overlib_followscroll_mini.js b/html/js/Mini/overlib_followscroll_mini.js
new file mode 100644
index 0000000000..09e7db823e
--- /dev/null
+++ b/html/js/Mini/overlib_followscroll_mini.js
@@ -0,0 +1,38 @@
+//\/////
+//\  overLIB Follow Scroll Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.10 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//\/////
+//\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
+if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Follow Scroll Plugin.');else{registerCommands('followscroll,followscrollrefresh');
+if(typeof ol_followscroll=='undefined')var ol_followscroll=0;if(typeof ol_followscrollrefresh=='undefined')var ol_followscrollrefresh=100;
+var o3_followscroll=0,o3_followscrollrefresh=100;
+function setScrollVariables(){o3_followscroll=ol_followscroll;o3_followscrollrefresh=ol_followscrollrefresh;}
+function parseScrollExtras(pf,i,ar){var k=i,v;if(k<ar.length){if(ar[k]==FOLLOWSCROLL){eval(pf+'followscroll=('+pf+'followscroll==0)?1:0');return k;}
+if(ar[k]==FOLLOWSCROLLREFRESH){eval(pf+'followscrollrefresh='+ar[++k]);return k;}}
+return-1;}
+function scroll_placeLayer(){var placeX,placeY,widthFix=0;
+if(o3_frame.innerWidth){widthFix=Math.ceil(1.2*(o3_frame.outerWidth-o3_frame.innerWidth));widthFix=(widthFix>50)?20:widthFix;iwidth=o3_frame.innerWidth;}else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth'))
+iwidth=eval('o3_frame.'+docRoot+'.clientWidth');
+winoffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollLeft'):o3_frame.pageXOffset;
+placeX=runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);
+if(o3_frame.innerHeight)iheight=o3_frame.innerHeight;else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight'))
+iheight=eval('o3_frame.'+docRoot+'.clientHeight');
+scrolloffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollTop'):o3_frame.pageYOffset;
+placeY=runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);
+repositionTo(over,placeX,placeY);
+if(o3_followscroll&&o3_sticky&&(o3_relx||o3_rely)&&(typeof o3_draggable=='undefined'||!o3_draggable)){if(typeof over.scroller=='undefined'||over.scroller.canScroll)over.scroller=new Scroller(placeX-winoffset,placeY-scrolloffset,o3_followscrollrefresh);}}
+function Scroller(X,Y,refresh){this.canScroll=0;this.refresh=refresh;this.x=X;this.y=Y;this.timer=setTimeout("repositionOver()",this.refresh);}
+function cancelScroll(){if(!o3_followscroll||typeof over.scroller=='undefined')return;over.scroller.canScroll=1;
+if(over.scroller.timer){clearTimeout(over.scroller.timer);over.scroller.timer=null;}}
+function getPageScrollY(){if(o3_frame.pageYOffset)return o3_frame.pageYOffset;if(eval(docRoot))return eval('o3_frame.'+docRoot+'.scrollTop');return-1;}
+function getPageScrollX(){if(o3_frame.pageXOffset)return o3_frame.pageXOffset;if(eval(docRoot))return eval('o3_frame.'+docRoot+'.scrollLeft');return-1;}
+function getLayerTop(layer){if(layer.pageY)return layer.pageY;if(layer.style.top)return parseInt(layer.style.top);return-1;}
+function getLayerLeft(layer){if(layer.pageX)return layer.pageX;if(layer.style.left)return parseInt(layer.style.left);return-1;}
+function repositionOver(){var X,Y,pgLeft,pgTop;pgTop=getPageScrollY();pgLeft=getPageScrollX();X=getLayerLeft(over)-pgLeft;Y=getLayerTop(over)-pgTop;
+if(X!=over.scroller.x||Y!=over.scroller.y)repositionTo(over,pgLeft+over.scroller.x,pgTop+over.scroller.y);over.scroller.timer=setTimeout("repositionOver()",over.scroller.refresh);}
+registerRunTimeFunction(setScrollVariables);registerCmdLineFunction(parseScrollExtras);registerHook("hideObject",cancelScroll,FAFTER);registerHook("placeLayer",scroll_placeLayer,FREPLACE);if(olInfo.meets(4.10))registerNoParameterCommands('followscroll');}
diff --git a/html/js/Mini/overlib_hideform_mini.js b/html/js/Mini/overlib_hideform_mini.js
new file mode 100644
index 0000000000..4a4ffca76c
--- /dev/null
+++ b/html/js/Mini/overlib_hideform_mini.js
@@ -0,0 +1,33 @@
+//\/////
+//\  overLIB Hide Form Plugin
+//\
+//\  Uses an iframe shim to mask system controls for IE v5.5 or higher as suggested in
+//\  http://dotnetjunkies.com/weblog/jking/posts/488.aspx
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.05 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//\/////
+//\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
+if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the HideForm Plugin.');else{
+function generatePopUp(content){if(!olIe4||olOp||!olIe55||(typeof o3_shadow!='undefined'&&o3_shadow)||(typeof o3_bubble!='undefined'&&o3_bubble))return;
+var wd,ht,txt,zIdx=0;
+wd=parseInt(o3_width);ht=over.offsetHeight;txt=backDropSource(wd,ht,zIdx++);txt+='<div style="position: absolute;top: 0;left: 0;width: '+wd+'px;z-index: '+zIdx+';">'+content+'</div>';layerWrite(txt);}
+function backDropSource(width,height,Z){return '<iframe frameborder="0" scrolling="no" src="javascript:false;" width="'+width+'" height="'+height+'" style="z-index: '+Z+';filter: Beta(Style=0,Opacity=0);"></iframe>';}
+function hideSelectBox(){if(olNs4||olOp||olIe55)return;var px,py,pw,ph,sx,sw,sy,sh,selEl,v;
+if(olIe4)v=0;else{v=navigator.userAgent.match(/Gecko\/(\d{8})/i);if(!v)return;v=parseInt(v[1]);}
+if(v<20030624){px=parseInt(over.style.left);py=parseInt(over.style.top);pw=o3_width;ph=(o3_aboveheight?parseInt(o3_aboveheight):over.offsetHeight);selEl=(olIe4)?o3_frame.document.all.tags("SELECT"):o3_frame.document.getElementsByTagName("SELECT");for(var i=0;i<selEl.length;i++){if(!olIe4&&selEl[i].size<2)continue;sx=pageLocation(selEl[i],'Left');sy=pageLocation(selEl[i],'Top');sw=selEl[i].offsetWidth;sh=selEl[i].offsetHeight;if((px+pw)<sx||px>(sx+sw)||(py+ph)<sy||py>(sy+sh))continue;selEl[i].isHidden=1;selEl[i].style.visibility='hidden';}}}
+function showSelectBox(){if(olNs4||olOp||olIe55)return;var selEl,v;
+if(olIe4)v=0;else{v=navigator.userAgent.match(/Gecko\/(\d{8})/i);if(!v)return;v=parseInt(v[1]);}
+if(v<20030624){selEl=(olIe4)?o3_frame.document.all.tags("SELECT"):o3_frame.document.getElementsByTagName("SELECT");for(var i=0;i<selEl.length;i++){if(typeof selEl[i].isHidden!='undefined'&&selEl[i].isHidden){selEl[i].isHidden=0;selEl[i].style.visibility='visible';}}}}
+function pageLocation(o,t){var x=0
+while(o.offsetParent){x+=o['offset'+t]
+o=o.offsetParent}
+x+=o['offset'+t]
+return x}
+if(!(olNs4||olOp||olIe55||navigator.userAgent.indexOf('Netscape6')!=-1)){var MMStr=olMouseMove.toString();var strRe=/(if\s*\(o3_allowmove\s*==\s*1.*\)\s*)/;var f=MMStr.match(strRe);
+if(f){var ls=MMStr.search(strRe);ls+=f[1].length;var le=MMStr.substring(ls).search(/[;|}]\n/);MMStr=MMStr.substring(0,ls)+' {runHook("placeLayer",FREPLACE);if(olHideForm)hideSelectBox();'+MMStr.substring(ls+(le!=-1?le+3:0));document.writeln('<script type="text/javascript">\n<!--\n'+MMStr+'\n//-->\n</'+'script>');}
+f=capExtent.onmousemove.toString().match(/function[ ]+(\w*)\(/);if(f&&f[1]!='anonymous')capExtent.onmousemove=olMouseMove;}
+registerHook("createPopup",generatePopUp,FAFTER);registerHook("hideObject",showSelectBox,FAFTER);olHideForm=1;}
diff --git a/html/js/Mini/overlib_mini.js b/html/js/Mini/overlib_mini.js
new file mode 100644
index 0000000000..704d12351c
--- /dev/null
+++ b/html/js/Mini/overlib_mini.js
@@ -0,0 +1,322 @@
+//\/////
+//\  overLIB 4.21 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\
+//\  Contributors are listed on the homepage.
+//\  This file might be old, always check for the latest version at:
+//\  http://www.bosrup.com/web/overlib/
+//\
+//\  Please read the license agreement (available through the link above)
+//\  before using overLIB. Direct any licensing questions to erik@bosrup.com.
+//\
+//\  Do not sell this as your own work or remove this copyright notice. 
+//\  For full details on copying or changing this script please read the
+//\  license agreement at the link above. Please give credit on sites that
+//\  use overLIB and submit changes of the script so other people can use
+//\  them as well.
+//\/////
+//\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
+var olLoaded=0,pmStart=10000000,pmUpper=10001000,pmCount=pmStart+1,pmt='',pms=new Array(),olInfo=new Info('4.21',1),FREPLACE=0,FBEFORE=1,FAFTER=2,FALTERNATE=3,FCHAIN=4,olHideForm=0,olHautoFlag=0,olVautoFlag=0,hookPts=new Array(),postParse=new Array(),cmdLine=new Array(),runTime=new Array();
+registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass');
+if(typeof ol_fgcolor=='undefined')var ol_fgcolor="#CCCCFF";if(typeof ol_bgcolor=='undefined')var ol_bgcolor="#333399";if(typeof ol_textcolor=='undefined')var ol_textcolor="#000000";if(typeof ol_capcolor=='undefined')var ol_capcolor="#FFFFFF";if(typeof ol_closecolor=='undefined')var ol_closecolor="#9999FF";if(typeof ol_textfont=='undefined')var ol_textfont="Verdana,Arial,Helvetica";if(typeof ol_captionfont=='undefined')var ol_captionfont="Verdana,Arial,Helvetica";if(typeof ol_closefont=='undefined')var ol_closefont="Verdana,Arial,Helvetica";if(typeof ol_textsize=='undefined')var ol_textsize="1";if(typeof ol_captionsize=='undefined')var ol_captionsize="1";if(typeof ol_closesize=='undefined')var ol_closesize="1";if(typeof ol_width=='undefined')var ol_width="200";if(typeof ol_border=='undefined')var ol_border="1";if(typeof ol_cellpad=='undefined')var ol_cellpad=2;if(typeof ol_offsetx=='undefined')var ol_offsetx=10;if(typeof ol_offsety=='undefined')var ol_offsety=10;if(typeof ol_text=='undefined')var ol_text="Default Text";if(typeof ol_cap=='undefined')var ol_cap="";if(typeof ol_sticky=='undefined')var ol_sticky=0;if(typeof ol_background=='undefined')var ol_background="";if(typeof ol_close=='undefined')var ol_close="Close";if(typeof ol_hpos=='undefined')var ol_hpos=RIGHT;if(typeof ol_status=='undefined')var ol_status="";if(typeof ol_autostatus=='undefined')var ol_autostatus=0;if(typeof ol_height=='undefined')var ol_height=-1;if(typeof ol_snapx=='undefined')var ol_snapx=0;if(typeof ol_snapy=='undefined')var ol_snapy=0;if(typeof ol_fixx=='undefined')var ol_fixx=-1;if(typeof ol_fixy=='undefined')var ol_fixy=-1;if(typeof ol_relx=='undefined')var ol_relx=null;if(typeof ol_rely=='undefined')var ol_rely=null;if(typeof ol_fgbackground=='undefined')var ol_fgbackground="";if(typeof ol_bgbackground=='undefined')var ol_bgbackground="";if(typeof ol_padxl=='undefined')var ol_padxl=1;if(typeof ol_padxr=='undefined')var ol_padxr=1;if(typeof ol_padyt=='undefined')var ol_padyt=1;if(typeof ol_padyb=='undefined')var ol_padyb=1;if(typeof ol_fullhtml=='undefined')var ol_fullhtml=0;if(typeof ol_vpos=='undefined')var ol_vpos=BELOW;if(typeof ol_aboveheight=='undefined')var ol_aboveheight=0;if(typeof ol_capicon=='undefined')var ol_capicon="";if(typeof ol_frame=='undefined')var ol_frame=self;if(typeof ol_timeout=='undefined')var ol_timeout=0;if(typeof ol_function=='undefined')var ol_function=null;if(typeof ol_delay=='undefined')var ol_delay=0;if(typeof ol_hauto=='undefined')var ol_hauto=0;if(typeof ol_vauto=='undefined')var ol_vauto=0;if(typeof ol_closeclick=='undefined')var ol_closeclick=0;if(typeof ol_wrap=='undefined')var ol_wrap=0;if(typeof ol_followmouse=='undefined')var ol_followmouse=1;if(typeof ol_mouseoff=='undefined')var ol_mouseoff=0;if(typeof ol_closetitle=='undefined')var ol_closetitle='Close';if(typeof ol_compatmode=='undefined')var ol_compatmode=0;if(typeof ol_css=='undefined')var ol_css=CSSOFF;if(typeof ol_fgclass=='undefined')var ol_fgclass="";if(typeof ol_bgclass=='undefined')var ol_bgclass="";if(typeof ol_textfontclass=='undefined')var ol_textfontclass="";if(typeof ol_captionfontclass=='undefined')var ol_captionfontclass="";if(typeof ol_closefontclass=='undefined')var ol_closefontclass="";
+if(typeof ol_texts=='undefined')var ol_texts=new Array("Text 0","Text 1");if(typeof ol_caps=='undefined')var ol_caps=new Array("Caption 0","Caption 1");
+var o3_text="",o3_cap="",o3_sticky=0,o3_background="",o3_close="Close",o3_hpos=RIGHT,o3_offsetx=2,o3_offsety=2,o3_fgcolor="",o3_bgcolor="",o3_textcolor="",o3_capcolor="",o3_closecolor="",o3_width=100,o3_border=1,o3_cellpad=2,o3_status="",o3_autostatus=0,o3_height=-1,o3_snapx=0,o3_snapy=0,o3_fixx=-1,o3_fixy=-1,o3_relx=null,o3_rely=null,o3_fgbackground="",o3_bgbackground="",o3_padxl=0,o3_padxr=0,o3_padyt=0,o3_padyb=0,o3_fullhtml=0,o3_vpos=BELOW,o3_aboveheight=0,o3_capicon="",o3_textfont="Verdana,Arial,Helvetica",o3_captionfont="Verdana,Arial,Helvetica",o3_closefont="Verdana,Arial,Helvetica",o3_textsize="1",o3_captionsize="1",o3_closesize="1",o3_frame=self,o3_timeout=0,o3_timerid=0,o3_allowmove=0,o3_function=null,o3_delay=0,o3_delayid=0,o3_hauto=0,o3_vauto=0,o3_closeclick=0,o3_wrap=0,o3_followmouse=1,o3_mouseoff=0,o3_closetitle='',o3_compatmode=0,o3_css=CSSOFF,o3_fgclass="",o3_bgclass="",o3_textfontclass="",o3_captionfontclass="",o3_closefontclass="";
+var o3_x=0,o3_y=0,o3_showingsticky=0,o3_removecounter=0;
+var over=null,fnRef,hoveringSwitch=false,olHideDelay;
+var isMac=(navigator.userAgent.indexOf("Mac")!=-1),olOp=(navigator.userAgent.toLowerCase().indexOf('opera')>-1&&document.createTextNode),olNs4=(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==4),olNs6=(document.getElementById)?true:false,olKq=(olNs6&&/konqueror/i.test(navigator.userAgent)),olIe4=(document.all)?true:false,olIe5=false,olIe55=false,docRoot='document.body';
+if(olNs4){var oW=window.innerWidth;var oH=window.innerHeight;window.onresize=function(){if(oW!=window.innerWidth||oH!=window.innerHeight)location.reload();}}
+if(olIe4){var agent=navigator.userAgent;if(/MSIE/.test(agent)){var versNum=parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]);if(versNum>=5){olIe5=true;olIe55=(versNum>=5.5&&!olOp)?true:false;if(olNs6)olNs6=false;}}
+if(olNs6)olIe4=false;}
+if(document.compatMode&&document.compatMode=='CSS1Compat'){docRoot=((olIe4&&!olOp)?'document.documentElement':docRoot);}
+if(window.addEventListener)window.addEventListener("load",OLonLoad_handler,false);else if(window.attachEvent)window.attachEvent("onload",OLonLoad_handler);
+var capExtent;
+function overlib(){if(!olLoaded||isExclusive(overlib.arguments))return true;if(olCheckMouseCapture)olMouseCapture();if(over){over=(typeof over.id!='string')?o3_frame.document.all['overDiv']:over;cClick();}
+olHideDelay=0;o3_text=ol_text;o3_cap=ol_cap;o3_sticky=ol_sticky;o3_background=ol_background;o3_close=ol_close;o3_hpos=ol_hpos;o3_offsetx=ol_offsetx;o3_offsety=ol_offsety;o3_fgcolor=ol_fgcolor;o3_bgcolor=ol_bgcolor;o3_textcolor=ol_textcolor;o3_capcolor=ol_capcolor;o3_closecolor=ol_closecolor;o3_width=ol_width;o3_border=ol_border;o3_cellpad=ol_cellpad;o3_status=ol_status;o3_autostatus=ol_autostatus;o3_height=ol_height;o3_snapx=ol_snapx;o3_snapy=ol_snapy;o3_fixx=ol_fixx;o3_fixy=ol_fixy;o3_relx=ol_relx;o3_rely=ol_rely;o3_fgbackground=ol_fgbackground;o3_bgbackground=ol_bgbackground;o3_padxl=ol_padxl;o3_padxr=ol_padxr;o3_padyt=ol_padyt;o3_padyb=ol_padyb;o3_fullhtml=ol_fullhtml;o3_vpos=ol_vpos;o3_aboveheight=ol_aboveheight;o3_capicon=ol_capicon;o3_textfont=ol_textfont;o3_captionfont=ol_captionfont;o3_closefont=ol_closefont;o3_textsize=ol_textsize;o3_captionsize=ol_captionsize;o3_closesize=ol_closesize;o3_timeout=ol_timeout;o3_function=ol_function;o3_delay=ol_delay;o3_hauto=ol_hauto;o3_vauto=ol_vauto;o3_closeclick=ol_closeclick;o3_wrap=ol_wrap;o3_followmouse=ol_followmouse;o3_mouseoff=ol_mouseoff;o3_closetitle=ol_closetitle;o3_css=ol_css;o3_compatmode=ol_compatmode;o3_fgclass=ol_fgclass;o3_bgclass=ol_bgclass;o3_textfontclass=ol_textfontclass;o3_captionfontclass=ol_captionfontclass;o3_closefontclass=ol_closefontclass;
+setRunTimeVariables();
+fnRef='';
+o3_frame=ol_frame;
+if(!(over=createDivContainer()))return false;
+parseTokens('o3_',overlib.arguments);if(!postParseChecks())return false;
+if(o3_delay==0){return runHook("olMain",FREPLACE);}else{o3_delayid=setTimeout("runHook('olMain',FREPLACE)",o3_delay);return false;}}
+function nd(time){if(olLoaded&&!isExclusive()){hideDelay(time);
+if(o3_removecounter>=1){o3_showingsticky=0 };
+if(o3_showingsticky==0){o3_allowmove=0;if(over!=null&&o3_timerid==0)runHook("hideObject",FREPLACE,over);}else{o3_removecounter++;}}
+return true;}
+function cClick(){if(olLoaded){runHook("hideObject",FREPLACE,over);o3_showingsticky=0;}
+return false;}
+function overlib_pagedefaults(){parseTokens('ol_',overlib_pagedefaults.arguments);}
+function olMain(){var layerhtml,styleType;runHook("olMain",FBEFORE);
+if(o3_background!=""||o3_fullhtml){
+layerhtml=runHook('ol_content_background',FALTERNATE,o3_css,o3_text,o3_background,o3_fullhtml);}else{
+styleType=(pms[o3_css-1-pmStart]=="cssoff"||pms[o3_css-1-pmStart]=="cssclass");
+if(o3_fgbackground!="")o3_fgbackground="background=\""+o3_fgbackground+"\"";if(o3_bgbackground!="")o3_bgbackground=(styleType?"background=\""+o3_bgbackground+"\"":o3_bgbackground);
+if(o3_fgcolor!="")o3_fgcolor=(styleType?"bgcolor=\""+o3_fgcolor+"\"":o3_fgcolor);if(o3_bgcolor!="")o3_bgcolor=(styleType?"bgcolor=\""+o3_bgcolor+"\"":o3_bgcolor);
+if(o3_height>0)o3_height=(styleType?"height=\""+o3_height+"\"":o3_height);else o3_height="";
+if(o3_cap==""){
+layerhtml=runHook('ol_content_simple',FALTERNATE,o3_css,o3_text);}else{
+if(o3_sticky){
+layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,o3_close);}else{
+layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,"");}}}
+if(o3_sticky){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;}
+o3_showingsticky=1;o3_removecounter=0;}
+if(!runHook("createPopup",FREPLACE,layerhtml))return false;
+if(o3_autostatus>0){o3_status=o3_text;if(o3_autostatus>1)o3_status=o3_cap;}
+o3_allowmove=0;
+if(o3_timeout>0){if(o3_timerid>0)clearTimeout(o3_timerid);o3_timerid=setTimeout("cClick()",o3_timeout);}
+runHook("disp",FREPLACE,o3_status);runHook("olMain",FAFTER);
+return(olOp&&event&&event.type=='mouseover'&&!o3_status)?'':(o3_status!='');}
+function ol_content_simple(text){var cpIsMultiple=/,/.test(o3_cellpad);var txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass?'class="'+o3_bgclass+'"':o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple)?'cellpadding="'+o3_cellpad+'" ':'')+'cellspacing="0" '+(o3_fgclass?'class="'+o3_fgclass+'"':o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass?' class="'+o3_textfontclass+'">':((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';
+set_background("");return txt;}
+function ol_content_caption(text,title,close){var nameId,txt,cpIsMultiple=/,/.test(o3_cellpad);var closing,closeevent;
+closing="";closeevent="onmouseover";if(o3_closeclick==1)closeevent=(o3_closetitle?"title='"+o3_closetitle+"'":"")+" onclick";if(o3_capicon!=""){nameId=' hspace=\"5\"'+' align=\"middle\" alt=\"\"';if(typeof o3_dragimg!='undefined'&&o3_dragimg)nameId=' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';o3_capicon='<img src=\"'+o3_capicon+'\"'+nameId+' />';}
+if(close!="")
+closing='<td '+(!o3_compatmode&&o3_closefontclass?'class="'+o3_closefontclass:'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode&&o3_closefontclass)?' class="'+o3_closefontclass+'" ':' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass?'':wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass?'':wrapStr(1,o3_closesize,'close'))+'</a></td>';txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass?'class="'+o3_bgclass+'"':o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass?' class="'+o3_captionfontclass+'">':'>')+(o3_captionfontclass?'':'<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass?'':wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple)?'cellpadding="'+o3_cellpad+'" ':'')+'cellspacing="0" '+(o3_fgclass?'class="'+o3_fgclass+'"':o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass?' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';
+set_background("");return txt;}
+function ol_content_background(text,picture,hasfullhtml){if(hasfullhtml){txt=text;}else{txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass?'" class="'+o3_textfontclass:'')+'">'+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>';}
+set_background(picture);return txt;}
+function set_background(pic){if(pic==""){if(olNs4){over.background.src=null;}else if(over.style){over.style.backgroundImage="none";}
+}else{if(olNs4){over.background.src=pic;}else if(over.style){over.style.width=o3_width+'px';over.style.backgroundImage="url("+pic+")";}}}
+var olShowId=-1;
+function disp(statustext){runHook("disp",FBEFORE);
+if(o3_allowmove==0){runHook("placeLayer",FREPLACE);(olNs6&&olShowId<0)?olShowId=setTimeout("runHook('showObject',FREPLACE,over)",1):runHook("showObject",FREPLACE,over);o3_allowmove=(o3_sticky||o3_followmouse==0)?0:1;}
+runHook("disp",FAFTER);
+if(statustext!="")self.status=statustext;}
+function createPopup(lyrContent){runHook("createPopup",FBEFORE);
+if(o3_wrap){var wd,ww,theObj=(olNs4?over:over.style);theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0);layerWrite(lyrContent);wd=(olNs4?over.clip.width:over.offsetWidth);if(wd>(ww=windowWidth())){lyrContent=lyrContent.replace(/\&nbsp;/g,' ');o3_width=ww;o3_wrap=0;}}
+layerWrite(lyrContent);
+if(o3_wrap)o3_width=(olNs4?over.clip.width:over.offsetWidth);
+runHook("createPopup",FAFTER,lyrContent);
+return true;}
+function placeLayer(){var placeX,placeY,widthFix=0;
+if(o3_frame.innerWidth)widthFix=18;iwidth=windowWidth();
+winoffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollLeft'):o3_frame.pageXOffset;
+placeX=runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);
+if(o3_frame.innerHeight){iheight=o3_frame.innerHeight;}else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')){iheight=eval('o3_frame.'+docRoot+'.clientHeight');}
+scrolloffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollTop'):o3_frame.pageYOffset;placeY=runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);
+repositionTo(over,placeX,placeY);}
+function olMouseMove(e){var e=(e)?e:event;
+if(e.pageX){o3_x=e.pageX;o3_y=e.pageY;}else if(e.clientX){o3_x=eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');o3_y=eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');}
+if(o3_allowmove==1)runHook("placeLayer",FREPLACE);
+if(hoveringSwitch&&!olNs4&&runHook("cursorOff",FREPLACE)){(olHideDelay?hideDelay(olHideDelay):cClick());hoveringSwitch=!hoveringSwitch;}}
+function no_overlib(){return ver3fix;}
+function olMouseCapture(){capExtent=document;var fN,str='',l,k,f,wMv,sS,mseHandler=olMouseMove;var re=/function[ ]*(\w*)\(/;
+wMv=(!olIe4&&window.onmousemove);if(document.onmousemove||wMv){if(wMv)capExtent=window;f=capExtent.onmousemove.toString();fN=f.match(re);if(fN==null){str=f+'(e);';}else if(fN[1]=='anonymous'||fN[1]=='olMouseMove'||(wMv&&fN[1]=='onmousemove')){if(!olOp&&wMv){l=f.indexOf('{')+1;k=f.lastIndexOf('}');sS=f.substring(l,k);if((l=sS.indexOf('('))!=-1){sS=sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');if(eval("typeof "+sS+"=='undefined'"))window.onmousemove=null;else str=sS+'(e);';}}
+if(!str){olCheckMouseCapture=false;return;}
+}else{if(fN[1])str=fN[1]+'(e);';else{l=f.indexOf('{')+1;k=f.lastIndexOf('}');str=f.substring(l,k)+'\n';}}
+str+='olMouseMove(e);';mseHandler=new Function('e',str);}
+capExtent.onmousemove=mseHandler;if(olNs4)capExtent.captureEvents(Event.MOUSEMOVE);}
+function parseTokens(pf,ar){
+var v,i,mode=-1,par=(pf!='ol_'),fnMark=(par&&!ar.length?1:0);
+for(i=0;i<ar.length;i++){if(mode<0){
+if(typeof ar[i]=='number'&&ar[i]>pmStart&&ar[i]<pmUpper){fnMark=(par?1:0);i--;}else{switch(pf){case 'ol_':
+ol_text=ar[i].toString();break;default:
+o3_text=ar[i].toString();}}
+mode=0;}else{
+if(ar[i]>=pmCount||ar[i]==DONOTHING){continue;}
+if(ar[i]==INARRAY){fnMark=0;eval(pf+'text=ol_texts['+ar[++i]+'].toString()');continue;}
+if(ar[i]==CAPARRAY){eval(pf+'cap=ol_caps['+ar[++i]+'].toString()');continue;}
+if(ar[i]==STICKY){if(pf!='ol_')eval(pf+'sticky=1');continue;}
+if(ar[i]==BACKGROUND){eval(pf+'background="'+ar[++i]+'"');continue;}
+if(ar[i]==NOCLOSE){if(pf!='ol_')opt_NOCLOSE();continue;}
+if(ar[i]==CAPTION){eval(pf+"cap='"+escSglQuote(ar[++i])+"'");continue;}
+if(ar[i]==CENTER||ar[i]==LEFT||ar[i]==RIGHT){eval(pf+'hpos='+ar[i]);if(pf!='ol_')olHautoFlag=1;continue;}
+if(ar[i]==OFFSETX){eval(pf+'offsetx='+ar[++i]);continue;}
+if(ar[i]==OFFSETY){eval(pf+'offsety='+ar[++i]);continue;}
+if(ar[i]==FGCOLOR){eval(pf+'fgcolor="'+ar[++i]+'"');continue;}
+if(ar[i]==BGCOLOR){eval(pf+'bgcolor="'+ar[++i]+'"');continue;}
+if(ar[i]==TEXTCOLOR){eval(pf+'textcolor="'+ar[++i]+'"');continue;}
+if(ar[i]==CAPCOLOR){eval(pf+'capcolor="'+ar[++i]+'"');continue;}
+if(ar[i]==CLOSECOLOR){eval(pf+'closecolor="'+ar[++i]+'"');continue;}
+if(ar[i]==WIDTH){eval(pf+'width='+ar[++i]);continue;}
+if(ar[i]==BORDER){eval(pf+'border='+ar[++i]);continue;}
+if(ar[i]==CELLPAD){i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad'));continue;}
+if(ar[i]==STATUS){eval(pf+"status='"+escSglQuote(ar[++i])+"'");continue;}
+if(ar[i]==AUTOSTATUS){eval(pf+'autostatus=('+pf+'autostatus==1)?0:1');continue;}
+if(ar[i]==AUTOSTATUSCAP){eval(pf+'autostatus=('+pf+'autostatus==2)?0:2');continue;}
+if(ar[i]==HEIGHT){eval(pf+'height='+pf+'aboveheight='+ar[++i]);continue;}
+if(ar[i]==CLOSETEXT){eval(pf+"close='"+escSglQuote(ar[++i])+"'");continue;}
+if(ar[i]==SNAPX){eval(pf+'snapx='+ar[++i]);continue;}
+if(ar[i]==SNAPY){eval(pf+'snapy='+ar[++i]);continue;}
+if(ar[i]==FIXX){eval(pf+'fixx='+ar[++i]);continue;}
+if(ar[i]==FIXY){eval(pf+'fixy='+ar[++i]);continue;}
+if(ar[i]==RELX){eval(pf+'relx='+ar[++i]);continue;}
+if(ar[i]==RELY){eval(pf+'rely='+ar[++i]);continue;}
+if(ar[i]==FGBACKGROUND){eval(pf+'fgbackground="'+ar[++i]+'"');continue;}
+if(ar[i]==BGBACKGROUND){eval(pf+'bgbackground="'+ar[++i]+'"');continue;}
+if(ar[i]==PADX){eval(pf+'padxl='+ar[++i]);eval(pf+'padxr='+ar[++i]);continue;}
+if(ar[i]==PADY){eval(pf+'padyt='+ar[++i]);eval(pf+'padyb='+ar[++i]);continue;}
+if(ar[i]==FULLHTML){if(pf!='ol_')eval(pf+'fullhtml=1');continue;}
+if(ar[i]==BELOW||ar[i]==ABOVE){eval(pf+'vpos='+ar[i]);if(pf!='ol_')olVautoFlag=1;continue;}
+if(ar[i]==CAPICON){eval(pf+'capicon="'+ar[++i]+'"');continue;}
+if(ar[i]==TEXTFONT){eval(pf+"textfont='"+escSglQuote(ar[++i])+"'");continue;}
+if(ar[i]==CAPTIONFONT){eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'");continue;}
+if(ar[i]==CLOSEFONT){eval(pf+"closefont='"+escSglQuote(ar[++i])+"'");continue;}
+if(ar[i]==TEXTSIZE){eval(pf+'textsize="'+ar[++i]+'"');continue;}
+if(ar[i]==CAPTIONSIZE){eval(pf+'captionsize="'+ar[++i]+'"');continue;}
+if(ar[i]==CLOSESIZE){eval(pf+'closesize="'+ar[++i]+'"');continue;}
+if(ar[i]==TIMEOUT){eval(pf+'timeout='+ar[++i]);continue;}
+if(ar[i]==FUNCTION){if(pf=='ol_'){if(typeof ar[i+1]!='number'){v=ar[++i];ol_function=(typeof v=='function'?v:null);}}else{fnMark=0;v=null;if(typeof ar[i+1]!='number')v=ar[++i]; opt_FUNCTION(v);} continue;}
+if(ar[i]==DELAY){eval(pf+'delay='+ar[++i]);continue;}
+if(ar[i]==HAUTO){eval(pf+'hauto=('+pf+'hauto==0)?1:0');continue;}
+if(ar[i]==VAUTO){eval(pf+'vauto=('+pf+'vauto==0)?1:0');continue;}
+if(ar[i]==CLOSECLICK){eval(pf+'closeclick=('+pf+'closeclick==0)?1:0');continue;}
+if(ar[i]==WRAP){eval(pf+'wrap=('+pf+'wrap==0)?1:0');continue;}
+if(ar[i]==FOLLOWMOUSE){eval(pf+'followmouse=('+pf+'followmouse==1)?0:1');continue;}
+if(ar[i]==MOUSEOFF){eval(pf+'mouseoff=('+pf+'mouseoff==0)?1:0');v=ar[i+1];if(pf!='ol_'&&eval(pf+'mouseoff')&&typeof v=='number'&&(v<pmStart||v>pmUpper))olHideDelay=ar[++i];continue;}
+if(ar[i]==CLOSETITLE){eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'");continue;}
+if(ar[i]==CSSOFF||ar[i]==CSSCLASS){eval(pf+'css='+ar[i]);continue;}
+if(ar[i]==COMPATMODE){eval(pf+'compatmode=('+pf+'compatmode==0)?1:0');continue;}
+if(ar[i]==FGCLASS){eval(pf+'fgclass="'+ar[++i]+'"');continue;}
+if(ar[i]==BGCLASS){eval(pf+'bgclass="'+ar[++i]+'"');continue;}
+if(ar[i]==TEXTFONTCLASS){eval(pf+'textfontclass="'+ar[++i]+'"');continue;}
+if(ar[i]==CAPTIONFONTCLASS){eval(pf+'captionfontclass="'+ar[++i]+'"');continue;}
+if(ar[i]==CLOSEFONTCLASS){eval(pf+'closefontclass="'+ar[++i]+'"');continue;}
+i=parseCmdLine(pf,i,ar);}}
+if(fnMark&&o3_function)o3_text=o3_function();
+if((pf=='o3_')&&o3_wrap){o3_width=0;
+var tReg=/<.*\n*>/ig;if(!tReg.test(o3_text))o3_text=o3_text.replace(/[ ]+/g,'&nbsp;');if(!tReg.test(o3_cap))o3_cap=o3_cap.replace(/[ ]+/g,'&nbsp;');}
+if((pf=='o3_')&&o3_sticky){if(!o3_close&&(o3_frame!=ol_frame))o3_close=ol_close;if(o3_mouseoff&&(o3_frame==ol_frame))opt_NOCLOSE(' ');}}
+function layerWrite(txt){txt+="\n";if(olNs4){var lyr=o3_frame.document.layers['overDiv'].document
+lyr.write(txt)
+lyr.close()
+}else if(typeof over.innerHTML!='undefined'){if(olIe5&&isMac)over.innerHTML='';over.innerHTML=txt;}else{range=o3_frame.document.createRange();range.setStartAfter(over);domfrag=range.createContextualFragment(txt);
+while(over.hasChildNodes()){over.removeChild(over.lastChild);}
+over.appendChild(domfrag);}}
+function showObject(obj){runHook("showObject",FBEFORE);
+var theObj=(olNs4?obj:obj.style);theObj.visibility='visible';
+runHook("showObject",FAFTER);}
+function hideObject(obj){runHook("hideObject",FBEFORE);
+var theObj=(olNs4?obj:obj.style);if(olNs6&&olShowId>0){clearTimeout(olShowId);olShowId=0;}
+theObj.visibility='hidden';theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0);
+if(o3_timerid>0)clearTimeout(o3_timerid);if(o3_delayid>0)clearTimeout(o3_delayid);
+o3_timerid=0;o3_delayid=0;self.status="";
+if(obj.onmouseout||obj.onmouseover){if(olNs4)obj.releaseEvents(Event.MOUSEOUT||Event.MOUSEOVER);obj.onmouseout=obj.onmouseover=null;}
+runHook("hideObject",FAFTER);}
+function repositionTo(obj,xL,yL){var theObj=(olNs4?obj:obj.style);theObj.left=xL+(!olNs4?'px':0);theObj.top=yL+(!olNs4?'px':0);}
+function cursorOff(){var left=parseInt(over.style.left);var top=parseInt(over.style.top);var right=left+(over.offsetWidth>=parseInt(o3_width)?over.offsetWidth:parseInt(o3_width));var bottom=top+(over.offsetHeight>=o3_aboveheight?over.offsetHeight:o3_aboveheight);
+if(o3_x<left||o3_x>right||o3_y<top||o3_y>bottom)return true;
+return false;}
+function opt_FUNCTION(callme){o3_text=(callme?(typeof callme=='string'?(/.+\(.*\)/.test(callme)?eval(callme):callme):callme()):(o3_function?o3_function():'No Function'));
+return 0;}
+function opt_NOCLOSE(unused){if(!unused)o3_close="";
+if(olNs4){over.captureEvents(Event.MOUSEOUT||Event.MOUSEOVER);over.onmouseover=function(){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} }
+over.onmouseout=function(e){if(olHideDelay)hideDelay(olHideDelay);else cClick(e);}
+}else{over.onmouseover=function(){hoveringSwitch=true;if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} }}
+return 0;}
+function opt_MULTIPLEARGS(i,args,parameter){var k=i,re,pV,str='';
+for(k=i;k<args.length;k++){if(typeof args[k]=='number'&&args[k]>pmStart)break;str+=args[k]+',';}
+if(str)str=str.substring(0,--str.length);
+k--;pV=(olNs4&&/cellpad/i.test(parameter))?str.split(',')[0]:str;eval(parameter+'="'+pV+'"');
+return k;}
+function nbspCleanup(){if(o3_wrap){o3_text=o3_text.replace(/\&nbsp;/g,' ');o3_cap=o3_cap.replace(/\&nbsp;/g,' ');}}
+function escSglQuote(str){return str.toString().replace(/'/g,"\\'");}
+function OLonLoad_handler(e){var re=/\w+\(.*\)[;\s]+/g,olre=/overlib\(|nd\(|cClick\(/,fn,l,i;
+if(!olLoaded)olLoaded=1;
+if(window.removeEventListener&&e.eventPhase==3)window.removeEventListener("load",OLonLoad_handler,false);else if(window.detachEvent){window.detachEvent("onload",OLonLoad_handler);var fN=document.body.getAttribute('onload');if(fN){fN=fN.toString().match(re);if(fN&&fN.length){for(i=0;i<fN.length;i++){if(/anonymous/.test(fN[i]))continue;while((l=fN[i].search(/\)[;\s]+/))!=-1){fn=fN[i].substring(0,l+1);fN[i]=fN[i].substring(l+2);if(olre.test(fn))eval(fn);}}}}}}
+function wrapStr(endWrap,fontSizeStr,whichString){var fontStr,fontColor,isClose=((whichString=='close')?1:0),hasDims=/[%\-a-z]+$/.test(fontSizeStr);fontSizeStr=(olNs4)?(!hasDims?fontSizeStr:'1'):fontSizeStr;if(endWrap)return(hasDims&&!olNs4)?(isClose?'</span>':'</div>'):'</font>';else{fontStr='o3_'+whichString+'font';fontColor='o3_'+((whichString=='caption')? 'cap':whichString)+'color';return(hasDims&&!olNs4)?(isClose?'<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+';color: '+eval(fontColor)+';font-size: '+fontSizeStr+';">':'<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+';color: '+eval(fontColor)+';font-size: '+fontSizeStr+';">'):'<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7?'7':fontSizeStr)+'">';}}
+function quoteMultiNameFonts(theFont){var v,pM=theFont.split(',');for(var i=0;i<pM.length;i++){v=pM[i];v=v.replace(/^\s+/,'').replace(/\s+$/,'');if(/\s/.test(v)&&!/['"]/.test(v)){v="\'"+v+"\'";pM[i]=v;}}
+return pM.join();}
+function isExclusive(args){return false;}
+function setCellPadStr(parameter){var Str='',j=0,ary=new Array(),top,bottom,left,right;
+Str+='padding: ';ary=parameter.replace(/\s+/g,'').split(',');
+switch(ary.length){case 2:
+top=bottom=ary[j];left=right=ary[++j];break;case 3:
+top=ary[j];left=right=ary[++j];bottom=ary[++j];break;case 4:
+top=ary[j];right=ary[++j];bottom=ary[++j];left=ary[++j];break;}
+Str+=((ary.length==1)?ary[0]+'px;':top+'px '+right+'px '+bottom+'px '+left+'px;');
+return Str;}
+function hideDelay(time){if(time&&!o3_delay){if(o3_timerid>0)clearTimeout(o3_timerid);
+o3_timerid=setTimeout("cClick()",(o3_timeout=time));}}
+function horizontalPlacement(browserWidth,horizontalScrollAmount,widthFix){var placeX,iwidth=browserWidth,winoffset=horizontalScrollAmount;var parsedWidth=parseInt(o3_width);
+if(o3_fixx>-1||o3_relx!=null){
+placeX=(o3_relx!=null?( o3_relx<0?winoffset+o3_relx+iwidth-parsedWidth-widthFix:winoffset+o3_relx):o3_fixx);}else{
+if(o3_hauto==1){if((o3_x-winoffset)>(iwidth/2)){o3_hpos=LEFT;}else{o3_hpos=RIGHT;}}
+if(o3_hpos==CENTER){placeX=o3_x+o3_offsetx-(parsedWidth/2);
+if(placeX<winoffset)placeX=winoffset;}
+if(o3_hpos==RIGHT){placeX=o3_x+o3_offsetx;
+if((placeX+parsedWidth)>(winoffset+iwidth-widthFix)){placeX=iwidth+winoffset-parsedWidth-widthFix;if(placeX<0)placeX=0;}}
+if(o3_hpos==LEFT){placeX=o3_x-o3_offsetx-parsedWidth;if(placeX<winoffset)placeX=winoffset;}
+if(o3_snapx>1){var snapping=placeX % o3_snapx;
+if(o3_hpos==LEFT){placeX=placeX-(o3_snapx+snapping);}else{
+placeX=placeX+(o3_snapx-snapping);}
+if(placeX<winoffset)placeX=winoffset;}}
+return placeX;}
+function verticalPlacement(browserHeight,verticalScrollAmount){var placeY,iheight=browserHeight,scrolloffset=verticalScrollAmount;var parsedHeight=(o3_aboveheight?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight));
+if(o3_fixy>-1||o3_rely!=null){
+placeY=(o3_rely!=null?(o3_rely<0?scrolloffset+o3_rely+iheight-parsedHeight:scrolloffset+o3_rely):o3_fixy);}else{
+if(o3_vauto==1){if((o3_y-scrolloffset)>(iheight/2)&&o3_vpos==BELOW&&(o3_y+parsedHeight+o3_offsety-(scrolloffset+iheight)>0)){o3_vpos=ABOVE;}else if(o3_vpos==ABOVE&&(o3_y-(parsedHeight+o3_offsety)-scrolloffset<0)){o3_vpos=BELOW;}}
+if(o3_vpos==ABOVE){if(o3_aboveheight==0)o3_aboveheight=parsedHeight;
+placeY=o3_y-(o3_aboveheight+o3_offsety);if(placeY<scrolloffset)placeY=scrolloffset;}else{
+placeY=o3_y+o3_offsety;}
+if(o3_snapy>1){var snapping=placeY % o3_snapy;
+if(o3_aboveheight>0&&o3_vpos==ABOVE){placeY=placeY-(o3_snapy+snapping);}else{placeY=placeY+(o3_snapy-snapping);}
+if(placeY<scrolloffset)placeY=scrolloffset;}}
+return placeY;}
+function checkPositionFlags(){if(olHautoFlag)olHautoFlag=o3_hauto=0;if(olVautoFlag)olVautoFlag=o3_vauto=0;return true;}
+function windowWidth(){var w;if(o3_frame.innerWidth)w=o3_frame.innerWidth;else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth'))
+w=eval('o3_frame.'+docRoot+'.clientWidth');return w;}
+function createDivContainer(id,frm,zValue){id=(id||'overDiv'),frm=(frm||o3_frame),zValue=(zValue||1000);var objRef,divContainer=layerReference(id);
+if(divContainer==null){if(olNs4){divContainer=frm.document.layers[id]=new Layer(window.innerWidth,frm);objRef=divContainer;}else{var body=(olIe4?frm.document.all.tags('BODY')[0]:frm.document.getElementsByTagName("BODY")[0]);if(olIe4&&!document.getElementById){body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>');divContainer=layerReference(id);}else{divContainer=frm.document.createElement("DIV");divContainer.id=id;body.appendChild(divContainer);}
+objRef=divContainer.style;}
+objRef.position='absolute';objRef.visibility='hidden';objRef.zIndex=zValue;if(olIe4&&!olOp)objRef.left=objRef.top='0px';else objRef.left=objRef.top=-10000+(!olNs4?'px':0);}
+return divContainer;}
+function layerReference(id){return(olNs4?o3_frame.document.layers[id]:(document.all?o3_frame.document.all[id]:o3_frame.document.getElementById(id)));}
+function isFunction(fnRef){var rtn=true;
+if(typeof fnRef=='object'){for(var i=0;i<fnRef.length;i++){if(typeof fnRef[i]=='function')continue;rtn=false;break;}
+}else if(typeof fnRef!='function'){rtn=false;}
+return rtn;}
+function argToString(array,strtInd,argName){var jS=strtInd,aS='',ar=array;argName=(argName?argName:'ar');
+if(ar.length>jS){for(var k=jS;k<ar.length;k++)aS+=argName+'['+k+'], ';aS=aS.substring(0,aS.length-2);}
+return aS;}
+function reOrder(hookPt,fnRef,order){var newPt=new Array(),match,i,j;
+if(!order||typeof order=='undefined'||typeof order=='number')return hookPt;
+if(typeof order=='function'){if(typeof fnRef=='object'){newPt=newPt.concat(fnRef);}else{newPt[newPt.length++]=fnRef;}
+for(i=0;i<hookPt.length;i++){match=false;if(typeof fnRef=='function'&&hookPt[i]==fnRef){continue;}else{for(j=0;j<fnRef.length;j++)if(hookPt[i]==fnRef[j]){match=true;break;}}
+if(!match)newPt[newPt.length++]=hookPt[i];}
+newPt[newPt.length++]=order;
+}else if(typeof order=='object'){if(typeof fnRef=='object'){newPt=newPt.concat(fnRef);}else{newPt[newPt.length++]=fnRef;}
+for(j=0;j<hookPt.length;j++){match=false;if(typeof fnRef=='function'&&hookPt[j]==fnRef){continue;}else{for(i=0;i<fnRef.length;i++)if(hookPt[j]==fnRef[i]){match=true;break;}}
+if(!match)newPt[newPt.length++]=hookPt[j];}
+for(i=0;i<newPt.length;i++)hookPt[i]=newPt[i];newPt.length=0;
+for(j=0;j<hookPt.length;j++){match=false;for(i=0;i<order.length;i++){if(hookPt[j]==order[i]){match=true;break;}}
+if(!match)newPt[newPt.length++]=hookPt[j];}
+newPt=newPt.concat(order);}
+hookPt=newPt;
+return hookPt;}
+function setRunTimeVariables(){if(typeof runTime!='undefined'&&runTime.length){for(var k=0;k<runTime.length;k++){runTime[k]();}}}
+function parseCmdLine(pf,i,args){if(typeof cmdLine!='undefined'&&cmdLine.length){for(var k=0;k<cmdLine.length;k++){var j=cmdLine[k](pf,i,args);if(j >-1){i=j;break;}}}
+return i;}
+function postParseChecks(pf,args){if(typeof postParse!='undefined'&&postParse.length){for(var k=0;k<postParse.length;k++){if(postParse[k](pf,args))continue;return false;}}
+return true;}
+function registerCommands(cmdStr){if(typeof cmdStr!='string')return;
+var pM=cmdStr.split(',');pms=pms.concat(pM);
+for(var i=0;i< pM.length;i++){eval(pM[i].toUpperCase()+'='+pmCount++);}}
+function registerNoParameterCommands(cmdStr){if(!cmdStr&&typeof cmdStr!='string')return;pmt=(!pmt)?cmdStr:pmt+','+cmdStr;}
+function registerHook(fnHookTo,fnRef,hookType,optPm){var hookPt,last=typeof optPm;
+if(fnHookTo=='plgIn'||fnHookTo=='postParse')return;if(typeof hookPts[fnHookTo]=='undefined')hookPts[fnHookTo]=new FunctionReference();
+hookPt=hookPts[fnHookTo];
+if(hookType!=null){if(hookType==FREPLACE){hookPt.ovload=fnRef;if(fnHookTo.indexOf('ol_content_')>-1)hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef;
+}else if(hookType==FBEFORE||hookType==FAFTER){var hookPt=(hookType==1?hookPt.before:hookPt.after);
+if(typeof fnRef=='object'){hookPt=hookPt.concat(fnRef);}else{hookPt[hookPt.length++]=fnRef;}
+if(optPm)hookPt=reOrder(hookPt,fnRef,optPm);
+}else if(hookType==FALTERNATE){if(last=='number')hookPt.alt[pms[optPm-1-pmStart]]=fnRef;}else if(hookType==FCHAIN){hookPt=hookPt.chain;if(typeof fnRef=='object')hookPt=hookPt.concat(fnRef);else hookPt[hookPt.length++]=fnRef;}
+return;}}
+function registerRunTimeFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){runTime=runTime.concat(fn);}else{runTime[runTime.length++]=fn;}}}
+function registerCmdLineFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){cmdLine=cmdLine.concat(fn);}else{cmdLine[cmdLine.length++]=fn;}}}
+function registerPostParseFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){postParse=postParse.concat(fn);}else{postParse[postParse.length++]=fn;}}}
+function runHook(fnHookTo,hookType){var l=hookPts[fnHookTo],k,rtnVal=null,optPm,arS,ar=runHook.arguments;
+if(hookType==FREPLACE){arS=argToString(ar,2);
+if(typeof l=='undefined'||!(l=l.ovload))rtnVal=eval(fnHookTo+'('+arS+')');else rtnVal=eval('l('+arS+')');
+}else if(hookType==FBEFORE||hookType==FAFTER){if(typeof l!='undefined'){l=(hookType==1?l.before:l.after);
+if(l.length){arS=argToString(ar,2);for(var k=0;k<l.length;k++)eval('l[k]('+arS+')');}}
+}else if(hookType==FALTERNATE){optPm=ar[2];arS=argToString(ar,3);
+if(typeof l=='undefined'||(l=l.alt[pms[optPm-1-pmStart]])=='undefined'){rtnVal=eval(fnHookTo+'('+arS+')');}else{rtnVal=eval('l('+arS+')');}
+}else if(hookType==FCHAIN){arS=argToString(ar,2);l=l.chain;
+for(k=l.length;k>0;k--)if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0))break;}
+return rtnVal;}
+function FunctionReference(){this.ovload=null;this.before=new Array();this.after=new Array();this.alt=new Array();this.chain=new Array();}
+function Info(version,prerelease){this.version=version;this.prerelease=prerelease;
+this.simpleversion=Math.round(this.version*100);this.major=parseInt(this.simpleversion/100);this.minor=parseInt(this.simpleversion/10)-this.major * 10;this.revision=parseInt(this.simpleversion)-this.major * 100-this.minor * 10;this.meets=meets;}
+function meets(reqdVersion){return(!reqdVersion)?false:this.simpleversion>=Math.round(100*parseFloat(reqdVersion));}
+registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSOFF);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSOFF);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSOFF);registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSCLASS);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSCLASS);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSCLASS);registerPostParseFunction(checkPositionFlags);registerHook("hideObject",nbspCleanup,FAFTER);registerHook("horizontalPlacement",horizontalPlacement,FCHAIN);registerHook("verticalPlacement",verticalPlacement,FCHAIN);if(olNs4||(olIe5&&isMac)||olKq)olLoaded=1;registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode');
+var olCheckMouseCapture=true;if((olNs4||olNs6||olIe4)){olMouseCapture();}else{overlib=no_overlib;nd=no_overlib;ver3fix=true;}
diff --git a/html/js/Mini/overlib_setonoff_mini.js b/html/js/Mini/overlib_setonoff_mini.js
new file mode 100644
index 0000000000..95659e8318
--- /dev/null
+++ b/html/js/Mini/overlib_setonoff_mini.js
@@ -0,0 +1,32 @@
+//\/////
+//\  overLIB Set On/Off Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.10 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2003. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//\/////
+//\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
+if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Set On/Off Plugin.');else{registerCommands('seton,setoff');var olSetType;
+function setOnOffVariables(){olSetType=0;}
+function parseOnOffExtras(pf,i,ar){var k=i,v;
+if(k<ar.length){if(ar[k]==SETON||ar[k]==SETOFF){olSetType=1;k=opt_MULTICOMMANDS(++k,ar);return k;}}
+return-1;}
+function hasCommand(istrt,args,COMMAND){for(var i=istrt;i<args.length;i++){if(typeof args[i]=='number'&& args[i]==COMMAND)return i;}
+return-1;}
+function scanCommandSet(pf,args){var k=-1,j,je;
+if(olSetType){
+while((k=hasCommand(++k,args,SETON))<args.length&&k>-1){je=opt_MULTICOMMANDS(k+1,args);for(j=k+1;j<(k+je);j++)setNoParamCommand(1,pf,args[j]);k+=(je-1);}
+k=-1;while((k=hasCommand(++k,args,SETOFF))<args.length&&k>-1){je=opt_MULTICOMMANDS(k+1,args);for(j=k+1;j<(k+je);j++)setNoParamCommand(0,pf,args[j]);k+=(je-1);}}
+return true;}
+var olRe;
+function setNoParamCommand(whichType,pf,COMMAND){var v=pms[COMMAND-1-pmStart];
+if(pmt&&!olRe)olRe=eval('/'+pmt.split(',').join('|')+'/');if(pf!='ol_'&& /capturefirst/.test(v))return;if(pf!='ol_'&& /wrap/.test(v)&& eval(pf+'wrap')&&(whichType==0)){nbspCleanup();o3_width=ol_width;}
+if(olRe.test(v))eval(pf+v+'='+((whichType&&COMMAND==AUTOSTATUSCAP)?whichType++:whichType));}
+function opt_MULTICOMMANDS(i,ar){var k=i;
+while(k<ar.length&& typeof ar[k]=='number'&& ar[k]>pmStart){k++;if(ar[k-1]=='SETON'||ar[k-1]=='SETOFF')break;}
+k-=(k<ar.length?2:1);
+return k;}
+registerRunTimeFunction(setOnOffVariables);registerCmdLineFunction(parseOnOffExtras);registerPostParseFunction(scanCommandSet);
+}
diff --git a/html/js/Mini/overlib_shadow_mini.js b/html/js/Mini/overlib_shadow_mini.js
new file mode 100644
index 0000000000..43ac9e6582
--- /dev/null
+++ b/html/js/Mini/overlib_shadow_mini.js
@@ -0,0 +1,53 @@
+//\/////
+//\  overLIB Shadow Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.05 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2003. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//\/////
+//\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
+if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Shadow Plugin.');else{registerCommands('shadow,shadowcolor,shadowimage,shadowopacity,shadowx,shadowy');
+if(typeof ol_shadowadjust=='undefined')var ol_shadowadjust=2;if(typeof ol_shadow=='undefined')var ol_shadow=0;if(typeof ol_shadowcolor=='undefined')var ol_shadowcolor='#CCCCCC';if(typeof ol_shadowimage=='undefined')var  ol_shadowimage='';if(typeof ol_shadowopacity=='undefined')var  ol_shadowopacity=0;if(typeof ol_shadowx=='undefined')var ol_shadowx=5;if(typeof ol_shadowy=='undefined')var ol_shadowy=5;
+var o3_shadow=0,o3_shadowcolor="#cccccc",o3_shadowimage='',o3_shadowopacity=0,o3_shadowx=5,o3_shadowy=5,bkSet=0;
+function setShadowVariables(){o3_shadow=ol_shadow;o3_shadowcolor=ol_shadowcolor;o3_shadowimage=ol_shadowimage;o3_shadowopacity=ol_shadowopacity;o3_shadowx=ol_shadowx;o3_shadowy=ol_shadowy;}
+function parseShadowExtras(pf,i,ar){var k=i,v;
+if(k<ar.length){if(ar[k]==SHADOW){eval(pf+'shadow=('+pf+'shadow==0)?1:0');return k;}
+if(ar[k]==SHADOWCOLOR){eval(pf+'shadowcolor="'+ar[++k]+'"');return k;}
+if(ar[k]==SHADOWOPACITY){v=ar[++k];eval(pf+'shadowopacity='+(olOp?0:v));return k;}
+if(ar[k]==SHADOWIMAGE){eval(pf+'shadowimage="'+ar[++k]+'"');return k;}
+if(ar[k]==SHADOWX){eval(pf+'shadowx='+ar[++k]);return k;}
+if(ar[k]==SHADOWY){eval(pf+'shadowy='+ar[++k]);return k;}}
+return-1;}
+function shadow_cursorOff(){var left=parseInt(over.style.left);var top=parseInt(over.style.top);var right=left+(o3_shadow?o3_width:over.offsetWidth);var bottom=top+(o3_shadow?o3_aboveheight:over.offsetHeight);
+if(o3_x<left||o3_x>right||o3_y<top||o3_y>bottom)return true;return false;}
+function checkShadowPreHide(){if(o3_shadow&&o3_shadowopacity)cleanUpShadowEffects();if(o3_shadow&&(olIe4&&isMac) )over.style.pixelWidth=over.style.pixelHeight=0;}
+function generateShadow(content){var wd,ht,X=0,Y=0,zIdx=0,txt,dpObj,puObj,bS='',aPos,posStr=new Array();
+if(!o3_shadow||(o3_shadowx==0&&o3_shadowy==0))return;
+X=Math.abs(o3_shadowx);Y=Math.abs(o3_shadowy);wd=parseInt(o3_width);ht=(olNs4)?over.clip.height:over.offsetHeight;
+if(o3_shadowx==0){if(o3_shadowy<0){posStr[0]=' left:0;top: 0';posStr[1]=' left:0;top: '+Y+'px';}else if(o3_shadowy>0){posStr[0]=' left:0;top: '+Y+'px';posStr[1]=' left:0;top:0';}
+}else if(o3_shadowy==0){if(o3_shadowx<0){posStr[0]=' left:0;top: 0';posStr[1]=' left: '+X+'px';}else if(o3_shadowx>0){posStr[0]=' left: '+X+'px;top: 0';posStr[1]=' left:0;top:0';}
+}else if(o3_shadowx>0){if(o3_shadowy>0){posStr[0]=' left:'+X+'px;top:'+Y+'px';posStr[1]=' left:0;top:0';}else if(o3_shadowy<0){posStr[0]=' left:'+X+'px;top:0';posStr[1]=' left:0;top: '+Y+'px';}
+}else if(o3_shadowx<0){if(o3_shadowy>0){posStr[0]=' left:0;top:'+Y+'px';posStr[1]=' left:'+X+'px;top:0';}else if(o3_shadowy<0){posStr[0]=' left:0;top:0';posStr[1]=' left:'+X+'px;top:'+Y+'px';}}
+txt=(olNs4)?'<div id="backdrop"></div>':((olIe55&&olHideForm)?backDropSource(wd+X,ht+Y,zIdx++):'')+'<div id="backdrop" style="position: absolute;'+posStr[0]+';width: '+wd+'px;height: '+ht+'px;z-index: '+(zIdx++)+';';
+if(o3_shadowimage){bS='background-image: url('+o3_shadowimage+');';if(olNs4)bkSet=1;}else{bS='background-color: '+o3_shadowcolor+';';if(olNs4)bkSet=2;}
+if(olNs4){txt+='<div id="PUContent">'+content+'</div>';}else{txt+=bS+'"></div><div id="PUContent" style="position: absolute;'+posStr[1]+';width: '+wd+'px;z-index: '+(zIdx++)+';">'+content+'</div>';}
+layerWrite(txt);
+if(olNs4&&bkSet){dpObj=over.document.layers['backdrop'];if(typeof dpObj=='undefined')return;
+puObj=over.document.layers['PUContent'];wd=puObj.clip.width;ht=puObj.clip.height;aPos=posStr[0].split(';');
+dpObj.clip.width=wd;dpObj.clip.height=ht;dpObj.left=parseInt(aPos[0].split(':')[1]);dpObj.top=parseInt(aPos[1].split(':')[1]);
+dpObj.bgColor=(bkSet==1)?null:o3_shadowcolor;dpObj.background.src=(bkSet==2)?null:o3_shadowimage;dpObj.zIndex=0;
+aPos=posStr[1].split(';');puObj.left=parseInt(aPos[0].split(':')[1]);puObj.top=parseInt(aPos[1].split(':')[1]);puObj.zIndex=1;
+}else{puObj=(olIe4?o3_frame.document.all['PUContent']:o3_frame.document.getElementById('PUContent'));dpObj=(olIe4?o3_frame.document.all['backdrop']:o3_frame.document.getElementById('backdrop'));ht=puObj.offsetHeight;dpObj.style.height=ht+'px';
+if(o3_shadowopacity){var op=o3_shadowopacity;op=(op<=100?op:100);
+setBrowserOpacity(op,dpObj);}}
+o3_width=wd+X;o3_aboveheight=ht+Y;}
+function cleanUpShadowEffects(){if(olNs4||olOp)return;var dpObj=(olIe4?o3_frame.document.all['backdrop']:o3_frame.document.getElementById('backdrop'));cleanUpBrowserOpacity(dpObj);}
+function setBrowserOpacity(op,lyr){if(olNs4||!op)return;lyr=(lyr)?lyr:over;if(olIe4&&typeof lyr.filters!='undefined'){lyr.style.filter='Alpha(Opacity='+op+')';lyr.filters.alpha.enabled=true;}else{var sOp=(typeof(lyr.style.MozOpacity)!='undefined')?'MozOpacity':(typeof(lyr.style.KhtmlOpacity)!='undefined'?'KhtmlOpacity':(typeof(lyr.style.opacity)!='undefined'?'opacity':''));if(sOp)eval('lyr.style.'+sOp+'=op/100');}}
+function cleanUpBrowserOpacity(lyr){if(olNs4)return;lyr=(lyr)?lyr:over;if(olIe4&&(typeof lyr.filters!='undefined'&&lyr.filters.alpha.enabled)){lyr.style.filter='Alpha(Opacity=100)';lyr.filters.alpha.enabled=false;}else{var sOp=(typeof(lyr.style.MozOpacity)!='undefined')?'MozOpacity':(typeof(lyr.style.KhtmlOpacity)!='undefined'?'KhtmlOpacity':(typeof(lyr.style.opacity)!='undefined'?'opacity':''));if(sOp)eval('lyr.style.'+sOp+'=1.0');}}
+function shadowAdjust(){if(!olNs4)return;var fac=ol_shadowadjust;if(olNs4){document.write('<style type="text/css">\n<!--\n');document.write('#backdrop,#PUContent {position: absolute;left: '+fac*o3_shadowx+'px;top: '+fac*o3_shadowy+'px;}\n');document.write('-->\n<'+'\/style>');}}
+var before=(typeof rmrkPreface!='undefined'?rmrkPreface:null);
+registerRunTimeFunction(setShadowVariables);registerCmdLineFunction(parseShadowExtras);registerHook("cursorOff",shadow_cursorOff,FREPLACE);registerHook("hideObject",checkShadowPreHide,FBEFORE);registerHook("createPopup",generateShadow,FAFTER,before);if(olInfo.meets(4.10))registerNoParameterCommands('shadow');
+if(olNs4)shadowAdjust();
+}
diff --git a/html/js/ajaxtabs.js b/html/js/ajaxtabs.js
new file mode 100644
index 0000000000..4fccd88b5f
--- /dev/null
+++ b/html/js/ajaxtabs.js
@@ -0,0 +1,111 @@
+var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
+var loadstatustext="<img src='ajaxtabs/loading.gif' /> Requesting content..."
+
+////NO NEED TO EDIT BELOW////////////////////////
+var loadedobjects=""
+var defaultcontentarray=new Object()
+var bustcacheparameter=""
+
+function ajaxpage(url, containerid, targetobj){
+var page_request = false
+if (window.XMLHttpRequest) // if Mozilla, Safari etc
+page_request = new XMLHttpRequest()
+else if (window.ActiveXObject){ // if IE
+try {
+page_request = new ActiveXObject("Msxml2.XMLHTTP")
+} 
+catch (e){
+try{
+page_request = new ActiveXObject("Microsoft.XMLHTTP")
+}
+catch (e){}
+}
+}
+else
+return false
+var ullist=targetobj.parentNode.parentNode.getElementsByTagName("li")
+for (var i=0; i<ullist.length; i++)
+ullist[i].className=""  //deselect all tabs
+targetobj.parentNode.className="selected"  //highlight currently clicked on tab
+if (url.indexOf("#default")!=-1){ //if simply show default content within container (verus fetch it via ajax)
+document.getElementById(containerid).innerHTML=defaultcontentarray[containerid]
+return
+}
+document.getElementById(containerid).innerHTML=loadstatustext
+page_request.onreadystatechange=function(){
+loadpage(page_request, containerid)
+}
+if (bustcachevar) //if bust caching of external page
+bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
+page_request.open('GET', url+bustcacheparameter, true)
+page_request.send(null)
+}
+
+function loadpage(page_request, containerid){
+if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
+document.getElementById(containerid).innerHTML=page_request.responseText
+}
+
+function loadobjs(revattribute){
+if (revattribute!=null && revattribute!=""){ //if "rev" attribute is defined (load external .js or .css files)
+var objectlist=revattribute.split(/\s*,\s*/) //split the files and store as array
+for (var i=0; i<objectlist.length; i++){
+var file=objectlist[i]
+var fileref=""
+if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
+if (file.indexOf(".js")!=-1){ //If object is a js file
+fileref=document.createElement('script')
+fileref.setAttribute("type","text/javascript");
+fileref.setAttribute("src", file);
+}
+else if (file.indexOf(".css")!=-1){ //If object is a css file
+fileref=document.createElement("link")
+fileref.setAttribute("rel", "stylesheet");
+fileref.setAttribute("type", "text/css");
+fileref.setAttribute("href", file);
+}
+}
+if (fileref!=""){
+document.getElementsByTagName("head").item(0).appendChild(fileref)
+loadedobjects+=file+" " //Remember this object as being already added to page
+}
+}
+}
+}
+
+function expandtab(tabcontentid, tabnumber){ //interface for selecting a tab (plus expand corresponding content)
+var thetab=document.getElementById(tabcontentid).getElementsByTagName("a")[tabnumber]
+if (thetab.getAttribute("rel")){
+ajaxpage(thetab.getAttribute("href"), thetab.getAttribute("rel"), thetab)
+loadobjs(thetab.getAttribute("rev"))
+}
+}
+
+function savedefaultcontent(contentid){// save default ajax tab content
+if (typeof defaultcontentarray[contentid]=="undefined") //if default content hasn't already been saved
+defaultcontentarray[contentid]=document.getElementById(contentid).innerHTML
+}
+
+function startajaxtabs(){
+for (var i=0; i<arguments.length; i++){ //loop through passed UL ids
+var ulobj=document.getElementById(arguments[i])
+var ulist=ulobj.getElementsByTagName("li") //array containing the LI elements within UL
+for (var x=0; x<ulist.length; x++){ //loop through each LI element
+var ulistlink=ulist[x].getElementsByTagName("a")[0]
+if (ulistlink.getAttribute("rel")){
+var modifiedurl=ulistlink.getAttribute("href").replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/")
+ulistlink.setAttribute("href", modifiedurl) //replace URL's root domain with dynamic root domain, for ajax security sake
+savedefaultcontent(ulistlink.getAttribute("rel")) //save default ajax tab content
+ulistlink.onclick=function(){
+ajaxpage(this.getAttribute("href"), this.getAttribute("rel"), this)
+loadobjs(this.getAttribute("rev"))
+return false
+}
+if (ulist[x].className=="selected"){
+ajaxpage(ulistlink.getAttribute("href"), ulistlink.getAttribute("rel"), ulistlink) //auto load currenly selected tab content
+loadobjs(ulistlink.getAttribute("rev")) //auto load any accompanying .js and .css files
+}
+}
+}
+}
+}
\ No newline at end of file
diff --git a/html/js/makemini.pl b/html/js/makemini.pl
new file mode 100644
index 0000000000..3d29ebbeb6
--- /dev/null
+++ b/html/js/makemini.pl
@@ -0,0 +1,95 @@
+#!/usr/bin/perl
+
+my $doPlugin = 0;
+my $x = shift(@ARGV);
+if ($x !~ /^-p/) { unshift(@ARGV, $x); }
+else { $doPlugin=1; }
+my $injs = shift(@ARGV);
+my $outjs = shift(@ARGV);
+
+if ($injs eq '' or $outjs eq '') {
+	print "Please use this script like this: makemini.pl [-p] in.js out.js\n";	
+	exit(0);
+}
+
+
+open(INJS, $injs);
+open(OUTJS, ">$outjs");
+
+my $output = '';
+
+while (<INJS>) {
+	my $line = $_;
+	
+	if ($line =~ /^\/\//) {
+		# Remove lines that aren't important: //\
+		$line = "" if ($line !~ /^\/\/\\/);
+		$line = "\n//\\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!\n\n" if ($line =~ /\/\/\\mini/);
+	} else {
+		chop $line;
+
+		$line =~ s/, /,/g unless ($line =~ /'\], '/);           # ,{sp} -> ,
+		$line =~ s/; /;/g;           # ;{sp} -> ;
+		$line =~ s/ = /=/g;          # {sp}={sp} -> =
+		$line =~ s/ == /==/g;        # {sp}=={sp} -> ==
+		$line =~ s/ < /</g;          # {sp}<{sp} -> <
+		$line =~ s/ > />/g;          # {sp}>{sp} -> >
+		$line =~ s/ & /&/g;          # {sp}&{sp} -> &
+		$line =~ s/ \| /\|/g;        # {sp}|{sp} -> |
+		$line =~ s/ <= /<=/g;        # {sp}<={sp} -> <=
+		$line =~ s/ >= />=/g;        # {sp}>={sp} -> >=
+		$line =~ s/ \+ /\+/g;        # {sp}+{sp} -> +
+		$line =~ s/ - /-/g;          # {sp}-{sp} -> -
+		$line =~ s/ \/ /\//g;
+		$line =~ s/ \|\| /\|\|/g;    # {sp}||{sp} -> ||
+		$line =~ s/ && /&&/g;        # {sp}&&{sp} -> &&
+		$line =~ s/ \? /\?/g;        # {sp?{sp} -> ?
+		$line =~ s/ \: /\:/g;        # {sp}:{sp} -> :
+		$line =~ s/ != /!=/g;        # {sp}!={sp} -> !=
+		$line =~ s/ += /+=/g;        # {sp}+={sp} -> +=
+		$line =~ s/ -= /-=/g;        # {sp}-={sp} -> -=
+		$line =~ s/ \*= /\*=/g;      # {sp}*={sp} -> *=
+		$line =~ s/ \|= /\|=/g;       # {sp}|={sp} -> |=
+		$line =~ s/ \^= /\^=/g;       # {sp}^={sp} -> ^=
+		$line =~ s/= /=/g;           # ={sp} -> =
+		$line =~ s/ =/=/g;           # {sp}= -> =
+		$line =~ s/\+ /\+/g;
+		$line =~ s/ \+/\+/g;
+		$line =~ s/- /-/g;
+		$line =~ s/ -/-/g;
+
+		$line =~ s/\/\/(.*)$//g if ($line !~ /\/\/-->(.*)$/ && $line !~ /http:\/\/(.*)$/); # remove trailing comments unless its part of a javascript insert or web address
+		$line = '' if $line =~ /^[\n|\/\/]/; # skip blank lines or any line starting with //
+
+		$line =~ s/^\s+//g;
+		$line =~ s/\s+$//g;
+		$line =~ s/(.+)\s+(.+)/$1 $2/g;
+		$line =~ s/\{ (\w)/\{$1/g;
+		$line =~ s/\) (\w)/\)$1/g;
+		$line =~ s/\) var/\)var/g;
+		$line =~ s/[ ]+\(/\(/g;
+		$line =~ s/\) \{/\)\{/g;
+		$line =~ s/\} else/\}else/g;
+		$line =~ s/else \{/else\{/g;
+		if ($line =~ /^\}$/) {
+			if ($output =~ /;$/) {
+				$output .= "}";
+			} else {
+				$output = substr($output,0,length($output)-1) . "}";
+			}
+			$line = '';
+		}
+	}
+
+	$output .= $line if ($line ne '');
+	$output .= "\n" unless ($line =~ /;\n*$/ or $line =~ /{\n*$/);
+}
+
+$output =~ s/\n+/\n/g;
+$output .= "}\n" if ($doPlugin && $output !~ /\}\s+$/);
+# replace multiple ;var xx to ,xx if the line contains var
+@lines = split(/^/,$output);
+foreach $line (@lines) {
+	$line =~ s/;var /,/g if ($line =~ /^\s*var / && $line !~ /(turn|ment|Capture\(\)|Div'\)|1000\));var /);
+	print OUTJS $line;
+}
diff --git a/html/js/overlib.js b/html/js/overlib.js
new file mode 100644
index 0000000000..e900ab4a4c
--- /dev/null
+++ b/html/js/overlib.js
@@ -0,0 +1,1491 @@
+//\/////
+//\  overLIB 4.21 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\
+//\  Contributors are listed on the homepage.
+//\  This file might be old, always check for the latest version at:
+//\  http://www.bosrup.com/web/overlib/
+//\
+//\  Please read the license agreement (available through the link above)
+//\  before using overLIB. Direct any licensing questions to erik@bosrup.com.
+//\
+//\  Do not sell this as your own work or remove this copyright notice. 
+//\  For full details on copying or changing this script please read the
+//\  license agreement at the link above. Please give credit on sites that
+//\  use overLIB and submit changes of the script so other people can use
+//\  them as well.
+//   $Revision: 1.119 $                $Date: 2005/07/02 23:41:44 $
+//\/////
+//\mini
+
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+var olLoaded = 0;var pmStart = 10000000; var pmUpper = 10001000; var pmCount = pmStart+1; var pmt=''; var pms = new Array(); var olInfo = new Info('4.21', 1);
+var FREPLACE = 0; var FBEFORE = 1; var FAFTER = 2; var FALTERNATE = 3; var FCHAIN=4;
+var olHideForm=0;  // parameter for hiding SELECT and ActiveX elements in IE5.5+ 
+var olHautoFlag = 0;  // flags for over-riding VAUTO and HAUTO if corresponding
+var olVautoFlag = 0;  // positioning commands are used on the command line
+var hookPts = new Array(), postParse = new Array(), cmdLine = new Array(), runTime = new Array();
+// for plugins
+registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass');
+
+////////
+// DEFAULT CONFIGURATION
+// Settings you want everywhere are set here. All of this can also be
+// changed on your html page or through an overLIB call.
+////////
+if (typeof ol_fgcolor=='undefined') var ol_fgcolor="#CCCCFF";
+if (typeof ol_bgcolor=='undefined') var ol_bgcolor="#333399";
+if (typeof ol_textcolor=='undefined') var ol_textcolor="#000000";
+if (typeof ol_capcolor=='undefined') var ol_capcolor="#FFFFFF";
+if (typeof ol_closecolor=='undefined') var ol_closecolor="#9999FF";
+if (typeof ol_textfont=='undefined') var ol_textfont="Verdana,Arial,Helvetica";
+if (typeof ol_captionfont=='undefined') var ol_captionfont="Verdana,Arial,Helvetica";
+if (typeof ol_closefont=='undefined') var ol_closefont="Verdana,Arial,Helvetica";
+if (typeof ol_textsize=='undefined') var ol_textsize="1";
+if (typeof ol_captionsize=='undefined') var ol_captionsize="1";
+if (typeof ol_closesize=='undefined') var ol_closesize="1";
+if (typeof ol_width=='undefined') var ol_width="200";
+if (typeof ol_border=='undefined') var ol_border="1";
+if (typeof ol_cellpad=='undefined') var ol_cellpad=2;
+if (typeof ol_offsetx=='undefined') var ol_offsetx=10;
+if (typeof ol_offsety=='undefined') var ol_offsety=10;
+if (typeof ol_text=='undefined') var ol_text="Default Text";
+if (typeof ol_cap=='undefined') var ol_cap="";
+if (typeof ol_sticky=='undefined') var ol_sticky=0;
+if (typeof ol_background=='undefined') var ol_background="";
+if (typeof ol_close=='undefined') var ol_close="Close";
+if (typeof ol_hpos=='undefined') var ol_hpos=RIGHT;
+if (typeof ol_status=='undefined') var ol_status="";
+if (typeof ol_autostatus=='undefined') var ol_autostatus=0;
+if (typeof ol_height=='undefined') var ol_height=-1;
+if (typeof ol_snapx=='undefined') var ol_snapx=0;
+if (typeof ol_snapy=='undefined') var ol_snapy=0;
+if (typeof ol_fixx=='undefined') var ol_fixx=-1;
+if (typeof ol_fixy=='undefined') var ol_fixy=-1;
+if (typeof ol_relx=='undefined') var ol_relx=null;
+if (typeof ol_rely=='undefined') var ol_rely=null;
+if (typeof ol_fgbackground=='undefined') var ol_fgbackground="";
+if (typeof ol_bgbackground=='undefined') var ol_bgbackground="";
+if (typeof ol_padxl=='undefined') var ol_padxl=1;
+if (typeof ol_padxr=='undefined') var ol_padxr=1;
+if (typeof ol_padyt=='undefined') var ol_padyt=1;
+if (typeof ol_padyb=='undefined') var ol_padyb=1;
+if (typeof ol_fullhtml=='undefined') var ol_fullhtml=0;
+if (typeof ol_vpos=='undefined') var ol_vpos=BELOW;
+if (typeof ol_aboveheight=='undefined') var ol_aboveheight=0;
+if (typeof ol_capicon=='undefined') var ol_capicon="";
+if (typeof ol_frame=='undefined') var ol_frame=self;
+if (typeof ol_timeout=='undefined') var ol_timeout=0;
+if (typeof ol_function=='undefined') var ol_function=null;
+if (typeof ol_delay=='undefined') var ol_delay=0;
+if (typeof ol_hauto=='undefined') var ol_hauto=0;
+if (typeof ol_vauto=='undefined') var ol_vauto=0;
+if (typeof ol_closeclick=='undefined') var ol_closeclick=0;
+if (typeof ol_wrap=='undefined') var ol_wrap=0;
+if (typeof ol_followmouse=='undefined') var ol_followmouse=1;
+if (typeof ol_mouseoff=='undefined') var ol_mouseoff=0;
+if (typeof ol_closetitle=='undefined') var ol_closetitle='Close';
+if (typeof ol_compatmode=='undefined') var ol_compatmode=0;
+if (typeof ol_css=='undefined') var ol_css=CSSOFF;
+if (typeof ol_fgclass=='undefined') var ol_fgclass="";
+if (typeof ol_bgclass=='undefined') var ol_bgclass="";
+if (typeof ol_textfontclass=='undefined') var ol_textfontclass="";
+if (typeof ol_captionfontclass=='undefined') var ol_captionfontclass="";
+if (typeof ol_closefontclass=='undefined') var ol_closefontclass="";
+
+////////
+// ARRAY CONFIGURATION
+////////
+
+// You can use these arrays to store popup text here instead of in the html.
+if (typeof ol_texts=='undefined') var ol_texts = new Array("Text 0", "Text 1");
+if (typeof ol_caps=='undefined') var ol_caps = new Array("Caption 0", "Caption 1");
+
+////////
+// END OF CONFIGURATION
+// Don't change anything below this line, all configuration is above.
+////////
+
+
+
+
+
+////////
+// INIT
+////////
+// Runtime variables init. Don't change for config!
+var o3_text="";
+var o3_cap="";
+var o3_sticky=0;
+var o3_background="";
+var o3_close="Close";
+var o3_hpos=RIGHT;
+var o3_offsetx=2;
+var o3_offsety=2;
+var o3_fgcolor="";
+var o3_bgcolor="";
+var o3_textcolor="";
+var o3_capcolor="";
+var o3_closecolor="";
+var o3_width=100;
+var o3_border=1;
+var o3_cellpad=2;
+var o3_status="";
+var o3_autostatus=0;
+var o3_height=-1;
+var o3_snapx=0;
+var o3_snapy=0;
+var o3_fixx=-1;
+var o3_fixy=-1;
+var o3_relx=null;
+var o3_rely=null;
+var o3_fgbackground="";
+var o3_bgbackground="";
+var o3_padxl=0;
+var o3_padxr=0;
+var o3_padyt=0;
+var o3_padyb=0;
+var o3_fullhtml=0;
+var o3_vpos=BELOW;
+var o3_aboveheight=0;
+var o3_capicon="";
+var o3_textfont="Verdana,Arial,Helvetica";
+var o3_captionfont="Verdana,Arial,Helvetica";
+var o3_closefont="Verdana,Arial,Helvetica";
+var o3_textsize="1";
+var o3_captionsize="1";
+var o3_closesize="1";
+var o3_frame=self;
+var o3_timeout=0;
+var o3_timerid=0;
+var o3_allowmove=0;
+var o3_function=null; 
+var o3_delay=0;
+var o3_delayid=0;
+var o3_hauto=0;
+var o3_vauto=0;
+var o3_closeclick=0;
+var o3_wrap=0;
+var o3_followmouse=1;
+var o3_mouseoff=0;
+var o3_closetitle='';
+var o3_compatmode=0;
+var o3_css=CSSOFF;
+var o3_fgclass="";
+var o3_bgclass="";
+var o3_textfontclass="";
+var o3_captionfontclass="";
+var o3_closefontclass="";
+
+// Display state variables
+var o3_x = 0;
+var o3_y = 0;
+var o3_showingsticky = 0;
+var o3_removecounter = 0;
+
+// Our layer
+var over = null;
+var fnRef, hoveringSwitch = false;
+var olHideDelay;
+
+// Decide browser version
+var isMac = (navigator.userAgent.indexOf("Mac") != -1);
+var olOp = (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && document.createTextNode);  // Opera 7
+var olNs4 = (navigator.appName=='Netscape' && parseInt(navigator.appVersion) == 4);
+var olNs6 = (document.getElementById) ? true : false;
+var olKq = (olNs6 && /konqueror/i.test(navigator.userAgent));
+var olIe4 = (document.all) ? true : false;
+var olIe5 = false; 
+var olIe55 = false; // Added additional variable to identify IE5.5+
+var docRoot = 'document.body';
+
+// Resize fix for NS4.x to keep track of layer
+if (olNs4) {
+	var oW = window.innerWidth;
+	var oH = window.innerHeight;
+	window.onresize = function() { if (oW != window.innerWidth || oH != window.innerHeight) location.reload(); }
+}
+
+// Microsoft Stupidity Check(tm).
+if (olIe4) {
+	var agent = navigator.userAgent;
+	if (/MSIE/.test(agent)) {
+		var versNum = parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]);
+		if (versNum >= 5){
+			olIe5=true;
+			olIe55=(versNum>=5.5&&!olOp) ? true : false;
+			if (olNs6) olNs6=false;
+		}
+	}
+	if (olNs6) olIe4 = false;
+}
+
+// Check for compatability mode.
+if (document.compatMode && document.compatMode == 'CSS1Compat') {
+	docRoot= ((olIe4 && !olOp) ? 'document.documentElement' : docRoot);
+}
+
+// Add window onload handlers to indicate when all modules have been loaded
+// For Netscape 6+ and Mozilla, uses addEventListener method on the window object
+// For IE it uses the attachEvent method of the window object and for Netscape 4.x
+// it sets the window.onload handler to the OLonload_handler function for Bubbling
+if(window.addEventListener) window.addEventListener("load",OLonLoad_handler,false);
+else if (window.attachEvent) window.attachEvent("onload",OLonLoad_handler);
+
+var capExtent;
+
+////////
+// PUBLIC FUNCTIONS
+////////
+
+// overlib(arg0,...,argN)
+// Loads parameters into global runtime variables.
+function overlib() {
+	if (!olLoaded || isExclusive(overlib.arguments)) return true;
+	if (olCheckMouseCapture) olMouseCapture();
+	if (over) {
+		over = (typeof over.id != 'string') ? o3_frame.document.all['overDiv'] : over;
+		cClick();
+	}
+
+	// Load defaults to runtime.
+  olHideDelay=0;
+	o3_text=ol_text;
+	o3_cap=ol_cap;
+	o3_sticky=ol_sticky;
+	o3_background=ol_background;
+	o3_close=ol_close;
+	o3_hpos=ol_hpos;
+	o3_offsetx=ol_offsetx;
+	o3_offsety=ol_offsety;
+	o3_fgcolor=ol_fgcolor;
+	o3_bgcolor=ol_bgcolor;
+	o3_textcolor=ol_textcolor;
+	o3_capcolor=ol_capcolor;
+	o3_closecolor=ol_closecolor;
+	o3_width=ol_width;
+	o3_border=ol_border;
+	o3_cellpad=ol_cellpad;
+	o3_status=ol_status;
+	o3_autostatus=ol_autostatus;
+	o3_height=ol_height;
+	o3_snapx=ol_snapx;
+	o3_snapy=ol_snapy;
+	o3_fixx=ol_fixx;
+	o3_fixy=ol_fixy;
+	o3_relx=ol_relx;
+	o3_rely=ol_rely;
+	o3_fgbackground=ol_fgbackground;
+	o3_bgbackground=ol_bgbackground;
+	o3_padxl=ol_padxl;
+	o3_padxr=ol_padxr;
+	o3_padyt=ol_padyt;
+	o3_padyb=ol_padyb;
+	o3_fullhtml=ol_fullhtml;
+	o3_vpos=ol_vpos;
+	o3_aboveheight=ol_aboveheight;
+	o3_capicon=ol_capicon;
+	o3_textfont=ol_textfont;
+	o3_captionfont=ol_captionfont;
+	o3_closefont=ol_closefont;
+	o3_textsize=ol_textsize;
+	o3_captionsize=ol_captionsize;
+	o3_closesize=ol_closesize;
+	o3_timeout=ol_timeout;
+	o3_function=ol_function;
+	o3_delay=ol_delay;
+	o3_hauto=ol_hauto;
+	o3_vauto=ol_vauto;
+	o3_closeclick=ol_closeclick;
+	o3_wrap=ol_wrap;	
+	o3_followmouse=ol_followmouse;
+	o3_mouseoff=ol_mouseoff;
+	o3_closetitle=ol_closetitle;
+	o3_css=ol_css;
+	o3_compatmode=ol_compatmode;
+	o3_fgclass=ol_fgclass;
+	o3_bgclass=ol_bgclass;
+	o3_textfontclass=ol_textfontclass;
+	o3_captionfontclass=ol_captionfontclass;
+	o3_closefontclass=ol_closefontclass;
+	
+	setRunTimeVariables();
+	
+	fnRef = '';
+	
+	// Special for frame support, over must be reset...
+	o3_frame = ol_frame;
+	
+	if(!(over=createDivContainer())) return false;
+
+	parseTokens('o3_', overlib.arguments);
+	if (!postParseChecks()) return false;
+
+	if (o3_delay == 0) {
+		return runHook("olMain", FREPLACE);
+ 	} else {
+		o3_delayid = setTimeout("runHook('olMain', FREPLACE)", o3_delay);
+		return false;
+	}
+}
+
+// Clears popups if appropriate
+function nd(time) {
+	if (olLoaded && !isExclusive()) {
+		hideDelay(time);  // delay popup close if time specified
+
+		if (o3_removecounter >= 1) { o3_showingsticky = 0 };
+		
+		if (o3_showingsticky == 0) {
+			o3_allowmove = 0;
+			if (over != null && o3_timerid == 0) runHook("hideObject", FREPLACE, over);
+		} else {
+			o3_removecounter++;
+		}
+	}
+	
+	return true;
+}
+
+// The Close onMouseOver function for stickies
+function cClick() {
+	if (olLoaded) {
+		runHook("hideObject", FREPLACE, over);
+		o3_showingsticky = 0;	
+	}	
+	return false;
+}
+
+// Method for setting page specific defaults.
+function overlib_pagedefaults() {
+	parseTokens('ol_', overlib_pagedefaults.arguments);
+}
+
+
+////////
+// OVERLIB MAIN FUNCTION
+////////
+
+// This function decides what it is we want to display and how we want it done.
+function olMain() {
+	var layerhtml, styleType;
+ 	runHook("olMain", FBEFORE);
+ 	
+	if (o3_background!="" || o3_fullhtml) {
+		// Use background instead of box.
+		layerhtml = runHook('ol_content_background', FALTERNATE, o3_css, o3_text, o3_background, o3_fullhtml);
+	} else {
+		// They want a popup box.
+		styleType = (pms[o3_css-1-pmStart] == "cssoff" || pms[o3_css-1-pmStart] == "cssclass");
+
+		// Prepare popup background
+		if (o3_fgbackground != "") o3_fgbackground = "background=\""+o3_fgbackground+"\"";
+		if (o3_bgbackground != "") o3_bgbackground = (styleType ? "background=\""+o3_bgbackground+"\"" : o3_bgbackground);
+
+		// Prepare popup colors
+		if (o3_fgcolor != "") o3_fgcolor = (styleType ? "bgcolor=\""+o3_fgcolor+"\"" : o3_fgcolor);
+		if (o3_bgcolor != "") o3_bgcolor = (styleType ? "bgcolor=\""+o3_bgcolor+"\"" : o3_bgcolor);
+
+		// Prepare popup height
+		if (o3_height > 0) o3_height = (styleType ? "height=\""+o3_height+"\"" : o3_height);
+		else o3_height = "";
+
+		// Decide which kinda box.
+		if (o3_cap=="") {
+			// Plain
+			layerhtml = runHook('ol_content_simple', FALTERNATE, o3_css, o3_text);
+		} else {
+			// With caption
+			if (o3_sticky) {
+				// Show close text
+				layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, o3_close);
+			} else {
+				// No close text
+				layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, "");
+			}
+		}
+	}	
+
+	// We want it to stick!
+	if (o3_sticky) {
+		if (o3_timerid > 0) {
+			clearTimeout(o3_timerid);
+			o3_timerid = 0;
+		}
+		o3_showingsticky = 1;
+		o3_removecounter = 0;
+	}
+
+	// Created a separate routine to generate the popup to make it easier
+	// to implement a plugin capability
+	if (!runHook("createPopup", FREPLACE, layerhtml)) return false;
+
+	// Prepare status bar
+	if (o3_autostatus > 0) {
+		o3_status = o3_text;
+		if (o3_autostatus > 1) o3_status = o3_cap;
+	}
+
+	// When placing the layer the first time, even stickies may be moved.
+	o3_allowmove = 0;
+
+	// Initiate a timer for timeout
+	if (o3_timeout > 0) {          
+		if (o3_timerid > 0) clearTimeout(o3_timerid);
+		o3_timerid = setTimeout("cClick()", o3_timeout);
+	}
+
+	// Show layer
+	runHook("disp", FREPLACE, o3_status);
+	runHook("olMain", FAFTER);
+
+	return (olOp && event && event.type == 'mouseover' && !o3_status) ? '' : (o3_status != '');
+}
+
+////////
+// LAYER GENERATION FUNCTIONS
+////////
+// These functions just handle popup content with tags that should adhere to the W3C standards specification.
+
+// Makes simple table without caption
+function ol_content_simple(text) {
+	var cpIsMultiple = /,/.test(o3_cellpad);
+	var txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' : ((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';
+
+	set_background("");
+	return txt;
+}
+
+// Makes table with caption and optional close link
+function ol_content_caption(text,title,close) {
+	var nameId, txt, cpIsMultiple = /,/.test(o3_cellpad);
+	var closing, closeevent;
+
+	closing = "";
+	closeevent = "onmouseover";
+	if (o3_closeclick == 1) closeevent = (o3_closetitle ? "title='" + o3_closetitle +"'" : "") + " onclick";
+	if (o3_capicon != "") {
+	  nameId = ' hspace = \"5\"'+' align = \"middle\" alt = \"\"';
+	  if (typeof o3_dragimg != 'undefined' && o3_dragimg) nameId =' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';
+	  o3_capicon = '<img src=\"'+o3_capicon+'\"'+nameId+' />';
+	}
+
+	if (close != "")
+		closing = '<td '+(!o3_compatmode && o3_closefontclass ? 'class="'+o3_closefontclass : 'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode && o3_closefontclass) ? ' class="' + o3_closefontclass + '" ' : ' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass ? '' : wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass ? '' : wrapStr(1,o3_closesize,'close'))+'</a></td>';
+	txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass ? ' class="'+o3_captionfontclass+'">' : '>')+(o3_captionfontclass ? '' : '<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass ? '' : wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize)) + '</td></tr></table></td></tr></table>';
+
+	set_background("");
+	return txt;
+}
+
+// Sets the background picture,padding and lots more. :)
+function ol_content_background(text,picture,hasfullhtml) {
+	if (hasfullhtml) {
+		txt=text;
+	} else {
+		txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass ? '" class="'+o3_textfontclass : '')+'">'+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>';
+	}
+
+	set_background(picture);
+	return txt;
+}
+
+// Loads a picture into the div.
+function set_background(pic) {
+	if (pic == "") {
+		if (olNs4) {
+			over.background.src = null; 
+		} else if (over.style) {
+			over.style.backgroundImage = "none";
+		}
+	} else {
+		if (olNs4) {
+			over.background.src = pic;
+		} else if (over.style) {
+			over.style.width=o3_width + 'px';
+			over.style.backgroundImage = "url("+pic+")";
+		}
+	}
+}
+
+////////
+// HANDLING FUNCTIONS
+////////
+var olShowId=-1;
+
+// Displays the popup
+function disp(statustext) {
+	runHook("disp", FBEFORE);
+	
+	if (o3_allowmove == 0) {
+		runHook("placeLayer", FREPLACE);
+		(olNs6&&olShowId<0) ? olShowId=setTimeout("runHook('showObject', FREPLACE, over)", 1) : runHook("showObject", FREPLACE, over);
+		o3_allowmove = (o3_sticky || o3_followmouse==0) ? 0 : 1;
+	}
+	
+	runHook("disp", FAFTER);
+
+	if (statustext != "") self.status = statustext;
+}
+
+// Creates the actual popup structure
+function createPopup(lyrContent){
+	runHook("createPopup", FBEFORE);
+	
+	if (o3_wrap) {
+		var wd,ww,theObj = (olNs4 ? over : over.style);
+		theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0);
+		layerWrite(lyrContent);
+		wd = (olNs4 ? over.clip.width : over.offsetWidth);
+		if (wd > (ww=windowWidth())) {
+			lyrContent=lyrContent.replace(/\&nbsp;/g, ' ');
+			o3_width=ww;
+			o3_wrap=0;
+		} 
+	}
+
+	layerWrite(lyrContent);
+	
+	// Have to set o3_width for placeLayer() routine if o3_wrap is turned on
+	if (o3_wrap) o3_width=(olNs4 ? over.clip.width : over.offsetWidth);
+	
+	runHook("createPopup", FAFTER, lyrContent);
+
+	return true;
+}
+
+// Decides where we want the popup.
+function placeLayer() {
+	var placeX, placeY, widthFix = 0;
+	
+	// HORIZONTAL PLACEMENT, re-arranged to work in Safari
+	if (o3_frame.innerWidth) widthFix=18; 
+	iwidth = windowWidth();
+
+	// Horizontal scroll offset
+	winoffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollLeft') : o3_frame.pageXOffset;
+
+	placeX = runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);
+
+	// VERTICAL PLACEMENT, re-arranged to work in Safari
+	if (o3_frame.innerHeight) {
+		iheight=o3_frame.innerHeight;
+	} else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')) { 
+		iheight=eval('o3_frame.'+docRoot+'.clientHeight');
+	}			
+
+	// Vertical scroll offset
+	scrolloffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollTop') : o3_frame.pageYOffset;
+	placeY = runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);
+
+	// Actually move the object.
+	repositionTo(over, placeX, placeY);
+}
+
+// Moves the layer
+function olMouseMove(e) {
+	var e = (e) ? e : event;
+
+	if (e.pageX) {
+		o3_x = e.pageX;
+		o3_y = e.pageY;
+	} else if (e.clientX) {
+		o3_x = eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');
+		o3_y = eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');
+	}
+	
+	if (o3_allowmove == 1) runHook("placeLayer", FREPLACE);
+
+	// MouseOut handler
+	if (hoveringSwitch && !olNs4 && runHook("cursorOff", FREPLACE)) {
+		(olHideDelay ? hideDelay(olHideDelay) : cClick());
+		hoveringSwitch = !hoveringSwitch;
+	}
+}
+
+// Fake function for 3.0 users.
+function no_overlib() { return ver3fix; }
+
+// Capture the mouse and chain other scripts.
+function olMouseCapture() {
+	capExtent = document;
+	var fN, str = '', l, k, f, wMv, sS, mseHandler = olMouseMove;
+	var re = /function[ ]*(\w*)\(/;
+	
+	wMv = (!olIe4 && window.onmousemove);
+	if (document.onmousemove || wMv) {
+		if (wMv) capExtent = window;
+		f = capExtent.onmousemove.toString();
+		fN = f.match(re);
+		if (fN == null) {
+			str = f+'(e); ';
+		} else if (fN[1] == 'anonymous' || fN[1] == 'olMouseMove' || (wMv && fN[1] == 'onmousemove')) {
+			if (!olOp && wMv) {
+				l = f.indexOf('{')+1;
+				k = f.lastIndexOf('}');
+				sS = f.substring(l,k);
+				if ((l = sS.indexOf('(')) != -1) {
+					sS = sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');
+					if (eval("typeof " + sS + " == 'undefined'")) window.onmousemove = null;
+					else str = sS + '(e);';
+				}
+			}
+			if (!str) {
+				olCheckMouseCapture = false;
+				return;
+			}
+		} else {
+			if (fN[1]) str = fN[1]+'(e); ';
+			else {
+				l = f.indexOf('{')+1;
+				k = f.lastIndexOf('}');
+				str = f.substring(l,k) + '\n';
+			}
+		}
+		str += 'olMouseMove(e); ';
+		mseHandler = new Function('e', str);
+	}
+
+	capExtent.onmousemove = mseHandler;
+	if (olNs4) capExtent.captureEvents(Event.MOUSEMOVE);
+}
+
+////////
+// PARSING FUNCTIONS
+////////
+
+// Does the actual command parsing.
+function parseTokens(pf, ar) {
+	// What the next argument is expected to be.
+	var v, i, mode=-1, par = (pf != 'ol_');	
+	var fnMark = (par && !ar.length ? 1 : 0);
+
+	for (i = 0; i < ar.length; i++) {
+		if (mode < 0) {
+			// Arg is maintext,unless its a number between pmStart and pmUpper
+			// then its a command.
+			if (typeof ar[i] == 'number' && ar[i] > pmStart && ar[i] < pmUpper) {
+				fnMark = (par ? 1 : 0);
+				i--;   // backup one so that the next block can parse it
+			} else {
+				switch(pf) {
+					case 'ol_':
+						ol_text = ar[i].toString();
+						break;
+					default:
+						o3_text=ar[i].toString();  
+				}
+			}
+			mode = 0;
+		} else {
+			// Note: NS4 doesn't like switch cases with vars.
+			if (ar[i] >= pmCount || ar[i]==DONOTHING) { continue; }
+			if (ar[i]==INARRAY) { fnMark = 0; eval(pf+'text=ol_texts['+ar[++i]+'].toString()'); continue; }
+			if (ar[i]==CAPARRAY) { eval(pf+'cap=ol_caps['+ar[++i]+'].toString()'); continue; }
+			if (ar[i]==STICKY) { if (pf!='ol_') eval(pf+'sticky=1'); continue; }
+			if (ar[i]==BACKGROUND) { eval(pf+'background="'+ar[++i]+'"'); continue; }
+			if (ar[i]==NOCLOSE) { if (pf!='ol_') opt_NOCLOSE(); continue; }
+			if (ar[i]==CAPTION) { eval(pf+"cap='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==CENTER || ar[i]==LEFT || ar[i]==RIGHT) { eval(pf+'hpos='+ar[i]); if(pf!='ol_') olHautoFlag=1; continue; }
+			if (ar[i]==OFFSETX) { eval(pf+'offsetx='+ar[++i]); continue; }
+			if (ar[i]==OFFSETY) { eval(pf+'offsety='+ar[++i]); continue; }
+			if (ar[i]==FGCOLOR) { eval(pf+'fgcolor="'+ar[++i]+'"'); continue; }
+			if (ar[i]==BGCOLOR) { eval(pf+'bgcolor="'+ar[++i]+'"'); continue; }
+			if (ar[i]==TEXTCOLOR) { eval(pf+'textcolor="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CAPCOLOR) { eval(pf+'capcolor="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CLOSECOLOR) { eval(pf+'closecolor="'+ar[++i]+'"'); continue; }
+			if (ar[i]==WIDTH) { eval(pf+'width='+ar[++i]); continue; }
+			if (ar[i]==BORDER) { eval(pf+'border='+ar[++i]); continue; }
+			if (ar[i]==CELLPAD) { i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad')); continue; }
+			if (ar[i]==STATUS) { eval(pf+"status='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==AUTOSTATUS) { eval(pf +'autostatus=('+pf+'autostatus == 1) ? 0 : 1'); continue; }
+			if (ar[i]==AUTOSTATUSCAP) { eval(pf +'autostatus=('+pf+'autostatus == 2) ? 0 : 2'); continue; }
+			if (ar[i]==HEIGHT) { eval(pf+'height='+pf+'aboveheight='+ar[++i]); continue; } // Same param again.
+			if (ar[i]==CLOSETEXT) { eval(pf+"close='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==SNAPX) { eval(pf+'snapx='+ar[++i]); continue; }
+			if (ar[i]==SNAPY) { eval(pf+'snapy='+ar[++i]); continue; }
+			if (ar[i]==FIXX) { eval(pf+'fixx='+ar[++i]); continue; }
+			if (ar[i]==FIXY) { eval(pf+'fixy='+ar[++i]); continue; }
+			if (ar[i]==RELX) { eval(pf+'relx='+ar[++i]); continue; }
+			if (ar[i]==RELY) { eval(pf+'rely='+ar[++i]); continue; }
+			if (ar[i]==FGBACKGROUND) { eval(pf+'fgbackground="'+ar[++i]+'"'); continue; }
+			if (ar[i]==BGBACKGROUND) { eval(pf+'bgbackground="'+ar[++i]+'"'); continue; }
+			if (ar[i]==PADX) { eval(pf+'padxl='+ar[++i]); eval(pf+'padxr='+ar[++i]); continue; }
+			if (ar[i]==PADY) { eval(pf+'padyt='+ar[++i]); eval(pf+'padyb='+ar[++i]); continue; }
+			if (ar[i]==FULLHTML) { if (pf!='ol_') eval(pf+'fullhtml=1'); continue; }
+			if (ar[i]==BELOW || ar[i]==ABOVE) { eval(pf+'vpos='+ar[i]); if (pf!='ol_') olVautoFlag=1; continue; }
+			if (ar[i]==CAPICON) { eval(pf+'capicon="'+ar[++i]+'"'); continue; }
+			if (ar[i]==TEXTFONT) { eval(pf+"textfont='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==CAPTIONFONT) { eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==CLOSEFONT) { eval(pf+"closefont='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==TEXTSIZE) { eval(pf+'textsize="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CAPTIONSIZE) { eval(pf+'captionsize="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CLOSESIZE) { eval(pf+'closesize="'+ar[++i]+'"'); continue; }
+			if (ar[i]==TIMEOUT) { eval(pf+'timeout='+ar[++i]); continue; }
+			if (ar[i]==FUNCTION) { if (pf=='ol_') { if (typeof ar[i+1]!='number') { v=ar[++i]; ol_function=(typeof v=='function' ? v : null); }} else {fnMark = 0; v = null; if (typeof ar[i+1]!='number') v = ar[++i];  opt_FUNCTION(v); } continue; }
+			if (ar[i]==DELAY) { eval(pf+'delay='+ar[++i]); continue; }
+			if (ar[i]==HAUTO) { eval(pf+'hauto=('+pf+'hauto == 0) ? 1 : 0'); continue; }
+			if (ar[i]==VAUTO) { eval(pf+'vauto=('+pf+'vauto == 0) ? 1 : 0'); continue; }
+			if (ar[i]==CLOSECLICK) { eval(pf +'closeclick=('+pf+'closeclick == 0) ? 1 : 0'); continue; }
+			if (ar[i]==WRAP) { eval(pf +'wrap=('+pf+'wrap == 0) ? 1 : 0'); continue; }
+			if (ar[i]==FOLLOWMOUSE) { eval(pf +'followmouse=('+pf+'followmouse == 1) ? 0 : 1'); continue; }
+			if (ar[i]==MOUSEOFF) { eval(pf +'mouseoff=('+pf+'mouseoff==0) ? 1 : 0'); v=ar[i+1]; if (pf != 'ol_' && eval(pf+'mouseoff') && typeof v == 'number' && (v < pmStart || v > pmUpper)) olHideDelay=ar[++i]; continue; }
+			if (ar[i]==CLOSETITLE) { eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==CSSOFF||ar[i]==CSSCLASS) { eval(pf+'css='+ar[i]); continue; }
+			if (ar[i]==COMPATMODE) { eval(pf+'compatmode=('+pf+'compatmode==0) ? 1 : 0'); continue; }
+			if (ar[i]==FGCLASS) { eval(pf+'fgclass="'+ar[++i]+'"'); continue; }
+			if (ar[i]==BGCLASS) { eval(pf+'bgclass="'+ar[++i]+'"'); continue; }
+			if (ar[i]==TEXTFONTCLASS) { eval(pf+'textfontclass="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CAPTIONFONTCLASS) { eval(pf+'captionfontclass="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CLOSEFONTCLASS) { eval(pf+'closefontclass="'+ar[++i]+'"'); continue; }
+			i = parseCmdLine(pf, i, ar);
+		}
+	}
+
+	if (fnMark && o3_function) o3_text = o3_function();
+	
+	if ((pf == 'o3_') && o3_wrap) {
+		o3_width = 0;
+		
+		var tReg=/<.*\n*>/ig;
+		if (!tReg.test(o3_text)) o3_text = o3_text.replace(/[ ]+/g, '&nbsp;');
+		if (!tReg.test(o3_cap))o3_cap = o3_cap.replace(/[ ]+/g, '&nbsp;');
+	}
+	if ((pf == 'o3_') && o3_sticky) {
+		if (!o3_close && (o3_frame != ol_frame)) o3_close = ol_close;
+		if (o3_mouseoff && (o3_frame == ol_frame)) opt_NOCLOSE(' ');
+	}
+}
+
+
+////////
+// LAYER FUNCTIONS
+////////
+
+// Writes to a layer
+function layerWrite(txt) {
+	txt += "\n";
+	if (olNs4) {
+		var lyr = o3_frame.document.layers['overDiv'].document
+		lyr.write(txt)
+		lyr.close()
+	} else if (typeof over.innerHTML != 'undefined') {
+		if (olIe5 && isMac) over.innerHTML = '';
+		over.innerHTML = txt;
+	} else {
+		range = o3_frame.document.createRange();
+		range.setStartAfter(over);
+		domfrag = range.createContextualFragment(txt);
+		
+		while (over.hasChildNodes()) {
+			over.removeChild(over.lastChild);
+		}
+		
+		over.appendChild(domfrag);
+	}
+}
+
+// Make an object visible
+function showObject(obj) {
+	runHook("showObject", FBEFORE);
+
+	var theObj=(olNs4 ? obj : obj.style);
+	theObj.visibility = 'visible';
+
+	runHook("showObject", FAFTER);
+}
+
+// Hides an object
+function hideObject(obj) {
+	runHook("hideObject", FBEFORE);
+
+	var theObj=(olNs4 ? obj : obj.style);
+	if (olNs6 && olShowId>0) { clearTimeout(olShowId); olShowId=0; }
+	theObj.visibility = 'hidden';
+	theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0);
+
+	if (o3_timerid > 0) clearTimeout(o3_timerid);
+	if (o3_delayid > 0) clearTimeout(o3_delayid);
+
+	o3_timerid = 0;
+	o3_delayid = 0;
+	self.status = "";
+
+	if (obj.onmouseout||obj.onmouseover) {
+		if (olNs4) obj.releaseEvents(Event.MOUSEOUT || Event.MOUSEOVER);
+		obj.onmouseout = obj.onmouseover = null;
+	}
+
+	runHook("hideObject", FAFTER);
+}
+
+// Move a layer
+function repositionTo(obj, xL, yL) {
+	var theObj=(olNs4 ? obj : obj.style);
+	theObj.left = xL + (!olNs4 ? 'px' : 0);
+	theObj.top = yL + (!olNs4 ? 'px' : 0);
+}
+
+// Check position of cursor relative to overDiv DIVision; mouseOut function
+function cursorOff() {
+	var left = parseInt(over.style.left);
+	var top = parseInt(over.style.top);
+	var right = left + (over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width));
+	var bottom = top + (over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight);
+
+	if (o3_x < left || o3_x > right || o3_y < top || o3_y > bottom) return true;
+
+	return false;
+}
+
+
+////////
+// COMMAND FUNCTIONS
+////////
+
+// Calls callme or the default function.
+function opt_FUNCTION(callme) {
+	o3_text = (callme ? (typeof callme=='string' ? (/.+\(.*\)/.test(callme) ? eval(callme) : callme) : callme()) : (o3_function ? o3_function() : 'No Function'));
+
+	return 0;
+}
+
+// Handle hovering
+function opt_NOCLOSE(unused) {
+	if (!unused) o3_close = "";
+
+	if (olNs4) {
+		over.captureEvents(Event.MOUSEOUT || Event.MOUSEOVER);
+		over.onmouseover = function () { if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid = 0; } }
+		over.onmouseout = function (e) { if (olHideDelay) hideDelay(olHideDelay); else cClick(e); }
+	} else {
+		over.onmouseover = function () {hoveringSwitch = true; if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid =0; } }
+	}
+
+	return 0;
+}
+
+// Function to scan command line arguments for multiples
+function opt_MULTIPLEARGS(i, args, parameter) {
+  var k=i, re, pV, str='';
+
+  for(k=i; k<args.length; k++) {
+		if(typeof args[k] == 'number' && args[k]>pmStart) break;
+		str += args[k] + ',';
+	}
+	if (str) str = str.substring(0,--str.length);
+
+	k--;  // reduce by one so the for loop this is in works correctly
+	pV=(olNs4 && /cellpad/i.test(parameter)) ? str.split(',')[0] : str;
+	eval(parameter + '="' + pV + '"');
+
+	return k;
+}
+
+// Remove &nbsp; in texts when done.
+function nbspCleanup() {
+	if (o3_wrap) {
+		o3_text = o3_text.replace(/\&nbsp;/g, ' ');
+		o3_cap = o3_cap.replace(/\&nbsp;/g, ' ');
+	}
+}
+
+// Escape embedded single quotes in text strings
+function escSglQuote(str) {
+  return str.toString().replace(/'/g,"\\'");
+}
+
+// Onload handler for window onload event
+function OLonLoad_handler(e) {
+	var re = /\w+\(.*\)[;\s]+/g, olre = /overlib\(|nd\(|cClick\(/, fn, l, i;
+
+	if(!olLoaded) olLoaded=1;
+
+  // Remove it for Gecko based browsers
+	if(window.removeEventListener && e.eventPhase == 3) window.removeEventListener("load",OLonLoad_handler,false);
+	else if(window.detachEvent) { // and for IE and Opera 4.x but execute calls to overlib, nd, or cClick()
+		window.detachEvent("onload",OLonLoad_handler);
+		var fN = document.body.getAttribute('onload');
+		if (fN) {
+			fN=fN.toString().match(re);
+			if (fN && fN.length) {
+				for (i=0; i<fN.length; i++) {
+					if (/anonymous/.test(fN[i])) continue;
+					while((l=fN[i].search(/\)[;\s]+/)) != -1) {
+						fn=fN[i].substring(0,l+1);
+						fN[i] = fN[i].substring(l+2);
+						if (olre.test(fn)) eval(fn);
+					}
+				}
+			}
+		}
+	}
+}
+
+// Wraps strings in Layer Generation Functions with the correct tags
+//    endWrap true(if end tag) or false if start tag
+//    fontSizeStr - font size string such as '1' or '10px'
+//    whichString is being wrapped -- 'text', 'caption', or 'close'
+function wrapStr(endWrap,fontSizeStr,whichString) {
+	var fontStr, fontColor, isClose=((whichString=='close') ? 1 : 0), hasDims=/[%\-a-z]+$/.test(fontSizeStr);
+	fontSizeStr = (olNs4) ? (!hasDims ? fontSizeStr : '1') : fontSizeStr;
+	if (endWrap) return (hasDims&&!olNs4) ? (isClose ? '</span>' : '</div>') : '</font>';
+	else {
+		fontStr='o3_'+whichString+'font';
+		fontColor='o3_'+((whichString=='caption')? 'cap' : whichString)+'color';
+		return (hasDims&&!olNs4) ? (isClose ? '<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">' : '<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">') : '<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7 ? '7' : fontSizeStr)+'">';
+	}
+}
+
+// Quotes Multi word font names; needed for CSS Standards adherence in font-family
+function quoteMultiNameFonts(theFont) {
+	var v, pM=theFont.split(',');
+	for (var i=0; i<pM.length; i++) {
+		v=pM[i];
+		v=v.replace(/^\s+/,'').replace(/\s+$/,'');
+		if(/\s/.test(v) && !/['"]/.test(v)) {
+			v="\'"+v+"\'";
+			pM[i]=v;
+		}
+	}
+	return pM.join();
+}
+
+// dummy function which will be overridden 
+function isExclusive(args) {
+	return false;
+}
+
+// Sets cellpadding style string value
+function setCellPadStr(parameter) {
+	var Str='', j=0, ary = new Array(), top, bottom, left, right;
+
+	Str+='padding: ';
+	ary=parameter.replace(/\s+/g,'').split(',');
+
+	switch(ary.length) {
+		case 2:
+			top=bottom=ary[j];
+			left=right=ary[++j];
+			break;
+		case 3:
+			top=ary[j];
+			left=right=ary[++j];
+			bottom=ary[++j];
+			break;
+		case 4:
+			top=ary[j];
+			right=ary[++j];
+			bottom=ary[++j];
+			left=ary[++j];
+			break;
+	}
+
+	Str+= ((ary.length==1) ? ary[0] + 'px;' : top + 'px ' + right + 'px ' + bottom + 'px ' + left + 'px;');
+
+	return Str;
+}
+
+// function will delay close by time milliseconds
+function hideDelay(time) {
+	if (time&&!o3_delay) {
+		if (o3_timerid > 0) clearTimeout(o3_timerid);
+
+		o3_timerid=setTimeout("cClick()",(o3_timeout=time));
+	}
+}
+
+// Was originally in the placeLayer() routine; separated out for future ease
+function horizontalPlacement(browserWidth, horizontalScrollAmount, widthFix) {
+	var placeX, iwidth=browserWidth, winoffset=horizontalScrollAmount;
+	var parsedWidth = parseInt(o3_width);
+
+	if (o3_fixx > -1 || o3_relx != null) {
+		// Fixed position
+		placeX=(o3_relx != null ? ( o3_relx < 0 ? winoffset +o3_relx+ iwidth - parsedWidth - widthFix : winoffset+o3_relx) : o3_fixx);
+	} else {  
+		// If HAUTO, decide what to use.
+		if (o3_hauto == 1) {
+			if ((o3_x - winoffset) > (iwidth / 2)) {
+				o3_hpos = LEFT;
+			} else {
+				o3_hpos = RIGHT;
+			}
+		}  		
+
+		// From mouse
+		if (o3_hpos == CENTER) { // Center
+			placeX = o3_x+o3_offsetx-(parsedWidth/2);
+
+			if (placeX < winoffset) placeX = winoffset;
+		}
+
+		if (o3_hpos == RIGHT) { // Right
+			placeX = o3_x+o3_offsetx;
+
+			if ((placeX+parsedWidth) > (winoffset+iwidth - widthFix)) {
+				placeX = iwidth+winoffset - parsedWidth - widthFix;
+				if (placeX < 0) placeX = 0;
+			}
+		}
+		if (o3_hpos == LEFT) { // Left
+			placeX = o3_x-o3_offsetx-parsedWidth;
+			if (placeX < winoffset) placeX = winoffset;
+		}  	
+
+		// Snapping!
+		if (o3_snapx > 1) {
+			var snapping = placeX % o3_snapx;
+
+			if (o3_hpos == LEFT) {
+				placeX = placeX - (o3_snapx+snapping);
+			} else {
+				// CENTER and RIGHT
+				placeX = placeX+(o3_snapx - snapping);
+			}
+
+			if (placeX < winoffset) placeX = winoffset;
+		}
+	}	
+
+	return placeX;
+}
+
+// was originally in the placeLayer() routine; separated out for future ease
+function verticalPlacement(browserHeight,verticalScrollAmount) {
+	var placeY, iheight=browserHeight, scrolloffset=verticalScrollAmount;
+	var parsedHeight=(o3_aboveheight ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight));
+
+	if (o3_fixy > -1 || o3_rely != null) {
+		// Fixed position
+		placeY=(o3_rely != null ? (o3_rely < 0 ? scrolloffset+o3_rely+iheight - parsedHeight : scrolloffset+o3_rely) : o3_fixy);
+	} else {
+		// If VAUTO, decide what to use.
+		if (o3_vauto == 1) {
+			if ((o3_y - scrolloffset) > (iheight / 2) && o3_vpos == BELOW && (o3_y + parsedHeight + o3_offsety - (scrolloffset + iheight) > 0)) {
+				o3_vpos = ABOVE;
+			} else if (o3_vpos == ABOVE && (o3_y - (parsedHeight + o3_offsety) - scrolloffset < 0)) {
+				o3_vpos = BELOW;
+			}
+		}
+
+		// From mouse
+		if (o3_vpos == ABOVE) {
+			if (o3_aboveheight == 0) o3_aboveheight = parsedHeight; 
+
+			placeY = o3_y - (o3_aboveheight+o3_offsety);
+			if (placeY < scrolloffset) placeY = scrolloffset;
+		} else {
+			// BELOW
+			placeY = o3_y+o3_offsety;
+		} 
+
+		// Snapping!
+		if (o3_snapy > 1) {
+			var snapping = placeY % o3_snapy;  			
+
+			if (o3_aboveheight > 0 && o3_vpos == ABOVE) {
+				placeY = placeY - (o3_snapy+snapping);
+			} else {
+				placeY = placeY+(o3_snapy - snapping);
+			} 			
+
+			if (placeY < scrolloffset) placeY = scrolloffset;
+		}
+	}
+
+	return placeY;
+}
+
+// checks positioning flags
+function checkPositionFlags() {
+	if (olHautoFlag) olHautoFlag = o3_hauto=0;
+	if (olVautoFlag) olVautoFlag = o3_vauto=0;
+	return true;
+}
+
+// get Browser window width
+function windowWidth() {
+	var w;
+	if (o3_frame.innerWidth) w=o3_frame.innerWidth;
+	else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) 
+		w=eval('o3_frame.'+docRoot+'.clientWidth');
+	return w;			
+}
+
+// create the div container for popup content if it doesn't exist
+function createDivContainer(id,frm,zValue) {
+	id = (id || 'overDiv'), frm = (frm || o3_frame), zValue = (zValue || 1000);
+	var objRef, divContainer = layerReference(id);
+
+	if (divContainer == null) {
+		if (olNs4) {
+			divContainer = frm.document.layers[id] = new Layer(window.innerWidth, frm);
+			objRef = divContainer;
+		} else {
+			var body = (olIe4 ? frm.document.all.tags('BODY')[0] : frm.document.getElementsByTagName("BODY")[0]);
+			if (olIe4&&!document.getElementById) {
+				body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>');
+				divContainer=layerReference(id);
+			} else {
+				divContainer = frm.document.createElement("DIV");
+				divContainer.id = id;
+				body.appendChild(divContainer);
+			}
+			objRef = divContainer.style;
+		}
+
+		objRef.position = 'absolute';
+		objRef.visibility = 'hidden';
+		objRef.zIndex = zValue;
+		if (olIe4&&!olOp) objRef.left = objRef.top = '0px';
+		else objRef.left = objRef.top =  -10000 + (!olNs4 ? 'px' : 0);
+	}
+
+	return divContainer;
+}
+
+// get reference to a layer with ID=id
+function layerReference(id) {
+	return (olNs4 ? o3_frame.document.layers[id] : (document.all ? o3_frame.document.all[id] : o3_frame.document.getElementById(id)));
+}
+////////
+//  UTILITY FUNCTIONS
+////////
+
+// Checks if something is a function.
+function isFunction(fnRef) {
+	var rtn = true;
+
+	if (typeof fnRef == 'object') {
+		for (var i = 0; i < fnRef.length; i++) {
+			if (typeof fnRef[i]=='function') continue;
+			rtn = false;
+			break;
+		}
+	} else if (typeof fnRef != 'function') {
+		rtn = false;
+	}
+	
+	return rtn;
+}
+
+// Converts an array into an argument string for use in eval.
+function argToString(array, strtInd, argName) {
+	var jS = strtInd, aS = '', ar = array;
+	argName=(argName ? argName : 'ar');
+	
+	if (ar.length > jS) {
+		for (var k = jS; k < ar.length; k++) aS += argName+'['+k+'], ';
+		aS = aS.substring(0, aS.length-2);
+	}
+	
+	return aS;
+}
+
+// Places a hook in the correct position in a hook point.
+function reOrder(hookPt, fnRef, order) {
+	var newPt = new Array(), match, i, j;
+
+	if (!order || typeof order == 'undefined' || typeof order == 'number') return hookPt;
+	
+	if (typeof order=='function') {
+		if (typeof fnRef=='object') {
+			newPt = newPt.concat(fnRef);
+		} else {
+			newPt[newPt.length++]=fnRef;
+		}
+		
+		for (i = 0; i < hookPt.length; i++) {
+			match = false;
+			if (typeof fnRef == 'function' && hookPt[i] == fnRef) {
+				continue;
+			} else {
+				for(j = 0; j < fnRef.length; j++) if (hookPt[i] == fnRef[j]) {
+					match = true;
+					break;
+				}
+			}
+			if (!match) newPt[newPt.length++] = hookPt[i];
+		}
+
+		newPt[newPt.length++] = order;
+
+	} else if (typeof order == 'object') {
+		if (typeof fnRef == 'object') {
+			newPt = newPt.concat(fnRef);
+		} else {
+			newPt[newPt.length++] = fnRef;
+		}
+		
+		for (j = 0; j < hookPt.length; j++) {
+			match = false;
+			if (typeof fnRef == 'function' && hookPt[j] == fnRef) {
+				continue;
+			} else {
+				for (i = 0; i < fnRef.length; i++) if (hookPt[j] == fnRef[i]) {
+					match = true;
+					break;
+				}
+			}
+			if (!match) newPt[newPt.length++]=hookPt[j];
+		}
+
+		for (i = 0; i < newPt.length; i++) hookPt[i] = newPt[i];
+		newPt.length = 0;
+		
+		for (j = 0; j < hookPt.length; j++) {
+			match = false;
+			for (i = 0; i < order.length; i++) {
+				if (hookPt[j] == order[i]) {
+					match = true;
+					break;
+				}
+			}
+			if (!match) newPt[newPt.length++] = hookPt[j];
+		}
+		newPt = newPt.concat(order);
+	}
+
+	hookPt = newPt;
+
+	return hookPt;
+}
+
+////////
+//  PLUGIN ACTIVATION FUNCTIONS
+////////
+
+// Runs plugin functions to set runtime variables.
+function setRunTimeVariables(){
+	if (typeof runTime != 'undefined' && runTime.length) {
+		for (var k = 0; k < runTime.length; k++) {
+			runTime[k]();
+		}
+	}
+}
+
+// Runs plugin functions to parse commands.
+function parseCmdLine(pf, i, args) {
+	if (typeof cmdLine != 'undefined' && cmdLine.length) { 
+		for (var k = 0; k < cmdLine.length; k++) { 
+			var j = cmdLine[k](pf, i, args);
+			if (j >- 1) {
+				i = j;
+				break;
+			}
+		}
+	}
+
+	return i;
+}
+
+// Runs plugin functions to do things after parse.
+function postParseChecks(pf,args){
+	if (typeof postParse != 'undefined' && postParse.length) {
+		for (var k = 0; k < postParse.length; k++) {
+			if (postParse[k](pf,args)) continue;
+			return false;  // end now since have an error
+		}
+	}
+	return true;
+}
+
+
+////////
+//  PLUGIN REGISTRATION FUNCTIONS
+////////
+
+// Registers commands and creates constants.
+function registerCommands(cmdStr) {
+	if (typeof cmdStr!='string') return;
+
+	var pM = cmdStr.split(',');
+	pms = pms.concat(pM);
+
+	for (var i = 0; i< pM.length; i++) {
+		eval(pM[i].toUpperCase()+'='+pmCount++);
+	}
+}
+
+// Registers no-parameter commands
+function registerNoParameterCommands(cmdStr) {
+	if (!cmdStr && typeof cmdStr != 'string') return;
+	pmt=(!pmt) ? cmdStr : pmt + ',' + cmdStr;
+}
+
+// Register a function to hook at a certain point.
+function registerHook(fnHookTo, fnRef, hookType, optPm) {
+	var hookPt, last = typeof optPm;
+	
+	if (fnHookTo == 'plgIn'||fnHookTo == 'postParse') return;
+	if (typeof hookPts[fnHookTo] == 'undefined') hookPts[fnHookTo] = new FunctionReference();
+
+	hookPt = hookPts[fnHookTo];
+
+	if (hookType != null) {
+		if (hookType == FREPLACE) {
+			hookPt.ovload = fnRef;  // replace normal overlib routine
+			if (fnHookTo.indexOf('ol_content_') > -1) hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef; 
+
+		} else if (hookType == FBEFORE || hookType == FAFTER) {
+			var hookPt=(hookType == 1 ? hookPt.before : hookPt.after);
+
+			if (typeof fnRef == 'object') {
+				hookPt = hookPt.concat(fnRef);
+			} else {
+				hookPt[hookPt.length++] = fnRef;
+			}
+
+			if (optPm) hookPt = reOrder(hookPt, fnRef, optPm);
+
+		} else if (hookType == FALTERNATE) {
+			if (last=='number') hookPt.alt[pms[optPm-1-pmStart]] = fnRef;
+		} else if (hookType == FCHAIN) {
+			hookPt = hookPt.chain; 
+			if (typeof fnRef=='object') hookPt=hookPt.concat(fnRef); // add other functions 
+			else hookPt[hookPt.length++]=fnRef;
+		}
+
+		return;
+	}
+}
+
+// Register a function that will set runtime variables.
+function registerRunTimeFunction(fn) {
+	if (isFunction(fn)) {
+		if (typeof fn == 'object') {
+			runTime = runTime.concat(fn);
+		} else {
+			runTime[runTime.length++] = fn;
+		}
+	}
+}
+
+// Register a function that will handle command parsing.
+function registerCmdLineFunction(fn){
+	if (isFunction(fn)) {
+		if (typeof fn == 'object') {
+			cmdLine = cmdLine.concat(fn);
+		} else {
+			cmdLine[cmdLine.length++] = fn;
+		}
+	}
+}
+
+// Register a function that does things after command parsing. 
+function registerPostParseFunction(fn){
+	if (isFunction(fn)) {
+		if (typeof fn == 'object') {
+			postParse = postParse.concat(fn);
+		} else {
+			postParse[postParse.length++] = fn;
+		}
+	}
+}
+
+////////
+//  PLUGIN REGISTRATION FUNCTIONS
+////////
+
+// Runs any hooks registered.
+function runHook(fnHookTo, hookType) {
+	var l = hookPts[fnHookTo], k, rtnVal = null, optPm, arS, ar = runHook.arguments;
+
+	if (hookType == FREPLACE) {
+		arS = argToString(ar, 2);
+
+		if (typeof l == 'undefined' || !(l = l.ovload)) rtnVal = eval(fnHookTo+'('+arS+')');
+		else rtnVal = eval('l('+arS+')');
+
+	} else if (hookType == FBEFORE || hookType == FAFTER) {
+		if (typeof l != 'undefined') {
+			l=(hookType == 1 ? l.before : l.after);
+	
+			if (l.length) {
+				arS = argToString(ar, 2);
+				for (var k = 0; k < l.length; k++) eval('l[k]('+arS+')');
+			}
+		}
+	} else if (hookType == FALTERNATE) {
+		optPm = ar[2];
+		arS = argToString(ar, 3);
+
+		if (typeof l == 'undefined' || (l = l.alt[pms[optPm-1-pmStart]]) == 'undefined') {
+			rtnVal = eval(fnHookTo+'('+arS+')');
+		} else {
+			rtnVal = eval('l('+arS+')');
+		}
+	} else if (hookType == FCHAIN) {
+		arS=argToString(ar,2);
+		l=l.chain;
+
+		for (k=l.length; k > 0; k--) if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0)) break;
+	}
+
+	return rtnVal;
+}
+
+////////
+// OBJECT CONSTRUCTORS
+////////
+
+// Object for handling hooks.
+function FunctionReference() {
+	this.ovload = null;
+	this.before = new Array();
+	this.after = new Array();
+	this.alt = new Array();
+	this.chain = new Array();
+}
+
+// Object for simple access to the overLIB version used.
+// Examples: simpleversion:351 major:3 minor:5 revision:1
+function Info(version, prerelease) {
+	this.version = version;
+	this.prerelease = prerelease;
+
+	this.simpleversion = Math.round(this.version*100);
+	this.major = parseInt(this.simpleversion / 100);
+	this.minor = parseInt(this.simpleversion / 10) - this.major * 10;
+	this.revision = parseInt(this.simpleversion) - this.major * 100 - this.minor * 10;
+	this.meets = meets;
+}
+
+// checks for Core Version required
+function meets(reqdVersion) {
+	return (!reqdVersion) ? false : this.simpleversion >= Math.round(100*parseFloat(reqdVersion));
+}
+
+
+////////
+// STANDARD REGISTRATIONS
+////////
+registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSOFF);
+registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSOFF);
+registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSOFF);
+registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSCLASS);
+registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSCLASS);
+registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSCLASS);
+registerPostParseFunction(checkPositionFlags);
+registerHook("hideObject", nbspCleanup, FAFTER);
+registerHook("horizontalPlacement", horizontalPlacement, FCHAIN);
+registerHook("verticalPlacement", verticalPlacement, FCHAIN);
+if (olNs4||(olIe5&&isMac)||olKq) olLoaded=1;
+registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode');
+///////
+// ESTABLISH MOUSECAPTURING
+///////
+
+// Capture events, alt. diffuses the overlib function.
+var olCheckMouseCapture=true;
+if ((olNs4 || olNs6 || olIe4)) {
+	olMouseCapture();
+} else {
+	overlib = no_overlib;
+	nd = no_overlib;
+	ver3fix = true;
+}
diff --git a/html/js/overlib_adaptive_width.js b/html/js/overlib_adaptive_width.js
new file mode 100644
index 0000000000..2122285d41
--- /dev/null
+++ b/html/js/overlib_adaptive_width.js
@@ -0,0 +1,100 @@
+//\/////
+//\  overLIB Adaptive_Width Plugin
+//\
+//\  You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2003. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//\/////
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.14)) alert('overLIB 4.14 or later is required for the Adaptive_Width Plugin.');
+else {
+registerCommands('adaptive_width');
+////////
+// DEFAULT CONFIGURATION
+// You don't have to change anything here if you don't want to. All of this can be
+// changed on your html page or through an overLIB call.
+////////
+// Default value for adaptive_width -- 300 px minimum width, 720 px maximum width
+// 4 if dividing factor for text length, 9 multiplying factor for caption text
+// if want to change just one value and keep the others at these defaults specifiy
+// a zero (0)
+var olAWDefault='300,720,4,9';
+if (typeof ol_adaptive_width=='undefined') var ol_adaptive_width='';
+////////
+// END OF CONFIGURATION
+// Don't change anything below this line, all configuration is above.
+////////
+////////
+// INIT
+////////
+// Runtime variables init. Don't change for config!
+var o3_adaptive_width='';
+////////
+// PLUGIN FUNCTIONS
+////////
+function setAdaptiveWidthVariables() {
+	o3_adaptive_width=ol_adaptive_width;
+}
+// Parses Shadow and Scroll commands
+function parseAdaptiveWidthExtras(pf,i,ar) {
+	var k=i;
+	if (k < ar.length) {
+		if (ar[k]==ADAPTIVE_WIDTH) { k=getAWArgs(++k,ar,(pf+'adaptive_width')); adjustAWSettings(pf+'adaptive_width'); return k; }
+	}
+	return -1;
+}
+// Function to scan command for multiple arguments for ADAPTIVE_WIDTH
+function getAWArgs(i, args, parameter) {
+  var k=i,l,re,pV,str='';
+  for(k=i; k<args.length; k++) {
+		if(typeof args[k]=='number'&&args[k]>pmStart) break;
+		str += args[k] + ',';
+	}
+	if (str) str=str.replace(/,$/,'');
+	k--;  // reduce by one so the for loop this is in works correctly
+	pV=(olNs4&&/cellpad/i.test(parameter)) ? str.split(',')[0] : str;
+	eval(parameter+'="' + pV + '"');
+	return k;
+}
+function adjustAWSettings(pmStr) {
+	if(/'ol_'/.test(pmStr)) {
+		if(!eval(pmStr)) return;
+		else olAWDefault = setAWarr(eval(pmStr)).join(',');
+	} else if(!eval(pmStr)) eval(pmStr + '="' + olAWDefault + '"');
+}
+function checkAdaptiveWidth() {
+	if (o3_adaptive_width) {
+		if (o3_wrap) clearWrapSettings();
+		o3_width = dynamicSizer(o3_text, o3_cap, setAWarr(o3_adaptive_width));
+	}
+	return true;		
+}
+// sets Adaptive Width array, using default settings for any zero values
+function setAWarr(vArrStr){
+	var tmpArr=new Array(), dfArr=olAWDefault.split(','), awArr=vArrStr.split(',');
+	for (var i=0; i<dfArr.length; i++) tmpArr[tmpArr.length++]=(i<awArr.length&&awArr[i]) ? awArr[i] : dfArr[i];
+	return tmpArr;
+}
+// function adapted from Dennis Sandow
+function dynamicSizer(aText,aCap,awArr){
+  var textWide=Math.floor( parseInt(awArr[0])+aText.length/awArr[2] );
+  if (aCap) textWide=Math.max( textWide, Math.floor( aCap.length*awArr[3] ) );
+  return Math.min( parseInt(awArr[1]),textWide );
+}
+// function to undo any wrap commands
+function clearWrapSettings() {
+	nbspCleanup();
+	o3_wrap=0;
+}
+////////
+// PLUGIN REGISTRATIONS
+////////
+registerRunTimeFunction(setAdaptiveWidthVariables);
+registerCmdLineFunction(parseAdaptiveWidthExtras);
+registerPostParseFunction(checkAdaptiveWidth);
+}
+//end 
diff --git a/html/js/overlib_anchor.js b/html/js/overlib_anchor.js
new file mode 100644
index 0000000000..6287c39a8c
--- /dev/null
+++ b/html/js/overlib_anchor.js
@@ -0,0 +1,333 @@
+//\/////
+//\  overLIB Anchor Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.10 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//   $Revision: 1.7 $                      $Date: 2004/11/25 21:27:19 $
+//\/////
+//\mini
+
+
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.10)) alert('overLIB 4.10 or later is required for the Anchor Plugin.');
+else {
+registerCommands('anchor,anchorx,anchory,noanchorwarn,anchoralign');
+
+
+
+////////
+// DEFAULT CONFIGURATION
+// Settings you want everywhere are set here. All of this can also be
+// changed on your html page or through an overLIB call.
+////////
+if (typeof ol_anchor ==  'undefined') var ol_anchor = '';
+if (typeof ol_anchorx ==  'undefined') var ol_anchorx = 0;
+if (typeof ol_anchory ==  'undefined') var ol_anchory = 0;
+if (typeof ol_noanchorwarn ==  'undefined') var ol_noanchorwarn = 1;
+if (typeof ol_anchoralign ==  'undefined') var ol_anchoralign = 'UL';
+
+////////
+// END OF CONFIGURATION
+// Don't change anything below this line, all configuration is above.
+////////
+
+
+
+
+
+////////
+// INIT
+////////
+// Runtime variables init. Don't change for config!
+var o3_anchor = "";
+var o3_anchorx = 0;
+var o3_anchory = 0;
+var o3_noanchorwarn = 1;
+var o3_anchoralign = 'UL';
+var mrkObj, rmrkPosition;  //reference mark object, reference mark position, an array;
+
+
+////////
+// PLUGIN FUNCTIONS
+////////
+function setAnchorVariables() {
+	o3_anchor = ol_anchor;
+	o3_anchorx = ol_anchorx;
+	o3_anchory = ol_anchory;
+	o3_noanchorwarn = ol_noanchorwarn;
+	o3_anchoralign = ol_anchoralign;
+	mrkObj = null;  // initialize this variable
+}
+
+// Parses Reference Mark commands
+function parseAnchorExtras(pf,i,ar) {
+	var v, k=i;
+
+	if (k < ar.length) {
+		if (ar[k] ==  ANCHOR) { eval(pf + "anchor = '" + escSglQuote(ar[++k]) + "'"); return k; }
+		if (ar[k] ==  ANCHORX) { eval(pf + 'anchorx = ' + ar[++k]); return k; }
+		if (ar[k] ==  ANCHORY) { eval(pf + 'anchory = ' + ar[++k]); return k; }
+		if (ar[k] ==  NOANCHORWARN) { eval(pf + 'noanchorwarn = (' + pf + 'noanchorwarn==1) ? 0 : 1'); return k; }
+		if (ar[k] ==  ANCHORALIGN) { k = opt_MULTIPLEARGS(++k, ar, (pf + 'anchoralign'));  return k; }
+	}
+
+	return -1;
+}
+
+
+///////
+//  FUNCTION WHICH CHECKS FOR THE EXISTENCE OF A REFERENCE MARKER
+///////
+function checkAnchorObject() {
+	var w = o3_anchor;
+
+	if (w) {
+		if (!(mrkObj = getAnchorObjectRef(w))) {
+			if (o3_noanchorwarn) {
+				alert('WARNING!  Reference mark "' + w + '" not found.');
+				return false;
+			} else w = '';
+		}
+	}
+
+	return true;
+}
+
+///////
+// EXTERNAL SUPPORT FUNCTIONS TO HANDLE ANCHOR PROPERTIES
+///////
+
+// Horizontal placement routine with anchors
+function anchorHorizontal(browserWidth, horizontalScrollAmount, widthFix) {
+	var hasAnchor = (typeof o3_anchor != 'undefined' && o3_anchor);
+	if (!hasAnchor) return void(0);
+
+	// set o3_relx for follow scroll if defined
+	if (typeof o3_followscroll != 'undefined' && o3_followscroll && o3_sticky) o3_relx = rmrkPosition[0];
+
+	return rmrkPosition[0];
+}
+
+// Vertical placement routine with anchors
+function anchorVertical(browserHeight,verticalScrollAmount) {
+	var hasAnchor = (typeof o3_anchor != 'undefined' && o3_anchor);	
+	if (!hasAnchor) return void(0);
+
+	// set o3_rely for follow scroll if defined
+	if (typeof o3_followscroll != 'undefined' && o3_followscroll && o3_sticky) o3_rely = rmrkPosition[1];
+
+	return rmrkPosition[1];
+}
+
+// Stub function for the runHook routine
+function anchorPreface() {
+	if (!mrkObj) return;
+	rmrkPosition = getAnchorLocation(mrkObj);
+}
+
+// Get Reference Mark object 
+function getAnchorObjectRef(aObj) {
+	return getRefById(aObj, o3_frame.document) || getRefByName(aObj, o3_frame.document)
+}
+
+// Adapted to overlib from jwin by Jason Anderson -- http://www.jwinlib.com
+function getAnchorLocation(objRef){
+	var mkObj, of, offsets, mlyr
+	
+	mkObj = mlyr = objRef
+	offsets = [o3_anchorx, o3_anchory]
+	
+	if (document.layers){
+		if (typeof mlyr.length != 'undefined' &&  mlyr.length > 1) {
+				mkObj = mlyr[0]
+				offsets[0] += mlyr[0].x + mlyr[1].pageX
+				offsets[1] += mlyr[0].y + mlyr[1].pageY
+			} else {
+				if(mlyr.toString().indexOf('Image') != -1 || mlyr.toString().indexOf('Anchor') != -1){
+					offsets[0] += mlyr.x
+					offsets[1] += mlyr.y
+				} else {
+					offsets[0] += mlyr.pageX
+					offsets[1] += mlyr.pageY
+				}
+			}          
+	} else {
+		offsets[0] += pageLocation(mlyr, 'Left')
+		offsets[1] += pageLocation(mlyr, 'Top')
+	}
+	
+	of = getAnchorOffsets(mkObj)
+	
+	if (typeof o3_dragimg != 'undefined' &&  o3_dragimg) {
+		olImgLeft = offsets[0];
+		olImgTop = offsets[1];
+	}
+	
+	offsets[0] += of[0]                    
+	offsets[1] += of[1]
+	
+	if (typeof o3_dragimg != 'undefined' &&  o3_dragimg) {
+		olImgRight = offsets[0]; 
+		olImgBottom = offsets[1];
+		return;
+	}
+	
+	return offsets;
+}
+
+// Adapted to overlib from jwin by Jason Anderson -- http://www.jwinlib.com
+function getAnchorOffsets(mkObj){
+	var fx = fy = 0,  mp, puc, mkAry, sx = sy = 0, w = o3_anchoralign  
+	var mW = mH = pW = pH = 0
+	var off = [0, 0]
+
+	mkAry = w.split(',');
+
+	if (mkAry.length < 3) {
+		mp = mkAry[0].toUpperCase();
+		puc = (mkAry.length == 1) ? mp : mkAry[1].toUpperCase();
+	} else if (mkAry.length == 3) {
+		if (!isNaN(mkAry[0])) {
+			mp = mkAry.slice(0, 2);
+			puc = mkAry[2].toUpperCase();
+		 } else {
+			mp = mkAry[0].toUpperCase();
+			puc = mkAry.slice(1);
+		 }
+	} else {
+		mp = mkAry.slice(0, 2);
+		puc = mkAry.slice(2);
+	}
+
+	var shdwPresent = typeof o3_shadow != 'undefined' &&  o3_shadow
+
+	if (shdwPresent) {
+		sx = Math.abs(o3_shadowx);
+		sy = Math.abs(o3_shadowy);
+	}
+
+	pW = (shdwPresent ? parseInt(o3_width) : (olNs4 ? over.clip.width : over.offsetWidth))
+	pH = (shdwPresent ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight))
+
+	if (olOp &&  o3_wrap) {
+		pW = (shdwPresent ? parseInt(o3_width) : (olNs4 ? over.clip.width : over.offsetWidth))
+		pH = (shdwPresent ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight))
+	}
+
+	if (!olOp &&  mkObj.toString().indexOf('Image') != -1){
+		mW = mkObj.width
+		mH = mkObj.height
+	} else if (!olOp &&  mkObj.toString().indexOf('Anchor') != -1) {  // enforced only for NS4
+		mp = 'UL'
+	} else {
+		mW = (olNs4) ? mkObj.clip.width : mkObj.offsetWidth
+		mH = (olNs4) ? mkObj.clip.height : mkObj.offsetHeight
+	}
+
+	if (!isNaN(mp) || typeof mp == 'object') {
+		if (typeof mp == 'object') {
+			fx = parseFloat(mp[0]);
+			fy = parseFloat(mp[1]);
+		} else
+			fx = fy = parseFloat(mp);
+		off = [Math.round(fx*mW), Math.round(fy*mH)];
+	} else {
+		 if (mp == 'UR') off = [mW, 0]
+		 else if (mp == 'LL') off = [0, mH]
+		 else if (mp == 'LR') off = [mW, mH]
+	}
+
+	if (typeof o3_dragimg != 'undefined' &&  o3_dragimg) return off;
+	else {
+		if (!isNaN(puc) || typeof puc == 'object' ) {
+			if (typeof puc == 'object') {
+				fx = parseFloat(puc[0]);
+				fy = parseFloat(puc[1]);
+			} else
+				fx = fy = parseFloat(puc);
+			off[0] -= Math.round(fx*(pW - sx));
+			off[1] -= Math.round(fy*(pH - sy));
+		} else {
+			if (puc == 'UR') {
+				off[0] -= (pW - sx); 
+				off[1] -= sy
+			} else if (puc == 'LL') {
+				off[0] -= sx;
+				off[1] -= (pH - sy)
+			} else if (puc == 'LR') {
+				off[0] -= (pW-sx);
+				off[1] -= (pH - sy)
+			}
+		}
+		return off
+	}
+}
+
+// Adapted to overlib from jwin by Jason Anderson -- http://www.jwinlib.com
+function pageLocation(o, t){
+	var x = 0
+
+	while(o.offsetParent){
+		x += o['offset' + t]
+		o = o.offsetParent
+	}
+	x += o['offset' + t]
+
+	return x
+} 
+
+// Adapted to overlib from jwin by Jason Anderson -- http://www.jwinlib.com
+function getRefById(l, d){
+	var r = "", j
+
+	d = (d || document)
+	if (d.all) return d.all[l]    
+	else if (d.getElementById) return d.getElementById(l)
+	else if (d.layers &&  d.layers.length > 0) {
+		if (d.layers[l]) return d.layers[l]
+		
+		for (j=0; j < d.layers.length; j++) {
+			r = getRefById(l, d.layers[j].document)
+			if(r) return r               
+		}
+	}
+
+	return false
+}
+
+// Adapted to overlib from jwin by Jason Anderson -- http://www.jwinlib.com
+function getRefByName(l, d) {
+	var r = null, j
+
+	d = (d || document)
+
+	if (d.images[l]) return d.images[l]
+	else if (d.anchors[l]) return d.anchors[l];
+	else if (d.layers &&  d.layers.length > 0) {
+		for (j=0; j < d.layers.length; j++) {
+			r = getRefByName(l, d.layers[j].document)
+			if (r &&  r.length > 0) return r
+			else if (r) return [r, d.layers[j]]
+		}
+	}
+
+	return null
+}
+
+////////
+// PLUGIN REGISTRATIONS
+////////
+registerRunTimeFunction(setAnchorVariables);
+registerCmdLineFunction(parseAnchorExtras);
+registerPostParseFunction(checkAnchorObject);
+registerHook("createPopup", anchorPreface, FAFTER);
+registerHook("horizontalPlacement", anchorHorizontal, FCHAIN);
+registerHook("verticalPlacement", anchorVertical, FCHAIN);
+if(olInfo.meets(4.10)) registerNoParameterCommands('noanchorwarn');
+}
\ No newline at end of file
diff --git a/html/js/overlib_centerpopup.js b/html/js/overlib_centerpopup.js
new file mode 100644
index 0000000000..a31de50510
--- /dev/null
+++ b/html/js/overlib_centerpopup.js
@@ -0,0 +1,89 @@
+//\/////
+//\  overLIB Center Popup Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.10 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2003. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//   $Revision: 1.3 $                $Date: 2004/11/25 21:27:19 $
+//
+//\/////
+//\mini
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.10)) alert('overLIB 4.10 or later is required for the Center Popup Plugin.');
+else {
+registerCommands('centerpopup,centeroffset');
+////////
+// DEFAULT CONFIGURATION
+// You don't have to change anything here if you don't want to. All of this can be
+// changed on your html page or through an overLIB call.
+////////
+// Default value for centerpopup is to not center the popup
+if (typeof ol_centerpopup == 'undefined') var ol_centerpopup = 0;
+if (typeof ol_centeroffset == 'undefined') var ol_centeroffset = '0';
+////////
+// END OF CONFIGURATION
+// Don't change anything below this line, all configuration is above.
+////////
+////////
+// INIT
+////////
+// Runtime variables init. Don't change for config!
+var o3_centerpopup = 0;
+var o3_centeroffset = '0';
+////////
+// PLUGIN FUNCTIONS
+////////
+function setCenterPopupVariables() {
+	o3_centerpopup = ol_centerpopup;
+	o3_centeroffset = ol_centeroffset;
+}
+// Parses Shadow and Scroll commands
+function parseCenterPopupExtras(pf,i,ar) {
+	var k = i,v;
+
+	if (k < ar.length) {
+		if (ar[k] == CENTERPOPUP) { eval(pf + 'centerpopup = (' + pf + 'centerpopup == 0) ? 1 : 0'); return k; }
+		if (ar[k] == CENTEROFFSET) { k = opt_MULTIPLEARGS(++k,ar,(pf + 'centeroffset')); return k; }
+	}
+
+	return -1;
+}
+// Function which positions popup in Center of screen
+function centerPopupHorizontal(browserWidth, horizontalScrollAmount, widthFix) {
+	if (!o3_centerpopup) return void(0);
+
+	var vdisp = o3_centeroffset.split(',');
+	var placeX, iwidth = browserWidth, winoffset = horizontalScrollAmount;
+  var pWd = parseInt(o3_width);
+
+	placeX = winoffset + Math.round((iwidth - widthFix - pWd)/2) + parseInt(vdisp[0]);
+	if(typeof o3_followscroll != 'undefined' && o3_followscroll && o3_sticky) o3_relx = placeX;
+
+	return placeX;
+}
+function centerPopupVertical(browserHeight,verticalScrollAmount) {
+	if (!o3_centerpopup) return void(0);
+
+	var placeY, iheight = browserHeight, scrolloffset = verticalScrollAmount;
+	var vdisp = o3_centeroffset.split(',');
+	var pHeight = (o3_aboveheight ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight));
+
+	placeY = scrolloffset + Math.round((iheight - pHeight)/2) + (vdisp.length > 1 ? parseInt(vdisp[1]) : 0);
+	if(typeof o3_followscroll != 'undefined' && o3_followscroll && o3_sticky) o3_rely = placeY;
+
+	return placeY;
+}
+////////
+// PLUGIN REGISTRATIONS
+////////
+registerRunTimeFunction(setCenterPopupVariables);
+registerCmdLineFunction(parseCenterPopupExtras);
+registerHook('horizontalPlacement',centerPopupHorizontal,FCHAIN);
+registerHook('verticalPlacement', centerPopupVertical, FCHAIN);
+if(olInfo.meets(4.10)) registerNoParameterCommands('centerpopup');
+}
\ No newline at end of file
diff --git a/html/js/overlib_crossframe.js b/html/js/overlib_crossframe.js
new file mode 100644
index 0000000000..d58e5a8377
--- /dev/null
+++ b/html/js/overlib_crossframe.js
@@ -0,0 +1,105 @@
+//\/////
+//\  overLIB Crossframe Support Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.05 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//   $Revision: 1.8 $                $Date: 2004/11/25 21:27:19 $
+//\/////
+//\mini
+
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.10)) alert('overLIB 4.10 or later is required for the Cross Frame Support Plugin.');
+else {
+registerCommands('frame');
+
+
+////////
+//  PLUGIN FUNCTIONS
+///////
+
+// Parses FRAME command
+function parseFrameExtras(pf,i,ar) {
+	var k = i,v;
+
+	if (k < ar.length) {
+		if (ar[k] == FRAME) { v = ar[++k]; if(pf == 'ol_') ol_frame = v; else opt_FRAME(v); return k; }
+	}
+
+	return -1;
+}
+
+////////
+// SUPPORT FUNCTIONS
+////////
+
+// Defines which frame we should point to.
+function opt_FRAME(frm) {
+ 	o3_frame = frm; 	
+	over = createDivContainer('overDiv');	
+	return 0;
+}
+
+// Get frame depth of nested frames
+function frmDepth(thisFrame,ofrm) {
+	var retVal = '';
+
+	for (var i = 0; i<thisFrame.length; i++) {
+		if (thisFrame[i].length > 0) { 
+			retVal = frmDepth(thisFrame[i],ofrm);
+			if (retVal ==  '') continue;
+		} else if (thisFrame[i] != ofrm) continue;
+		retVal = '[' + i + ']' + retVal;
+		break;
+	}
+
+	return retVal;
+}
+
+// Gets frame reference value relative to top frame
+function getFrmRef(srcFrm,tgetFrm) {
+	var rtnVal = ''
+
+	if (tgetFrm != srcFrm) {
+		var tFrm = frmDepth(top.frames,tgetFrm)
+		var sFrm = frmDepth(top.frames,srcFrm)
+		if (sFrm.length ==  tFrm.length) {
+			l = tFrm.lastIndexOf('[')
+			
+			if (l) {
+				while ( sFrm.substring(0,l) != tFrm.substring(0,l) )
+				l = tFrm.lastIndexOf('[',l-1)
+				tFrm = tFrm.substr(l)
+				sFrm = sFrm.substr(l)
+			}
+		}
+	
+		var cnt = 0, p = '',str = tFrm
+		while ((k = str.lastIndexOf('[')) != -1) {
+			cnt++ 
+			str = str.substring(0,k)
+		}
+
+		for (var i = 0; i<cnt; i++) p = p + 'parent.'
+		rtnVal = p + 'frames' + sFrm + '.'
+	}
+ 
+	return rtnVal
+}
+
+function chkForFrmRef() {
+	if(o3_frame != ol_frame) fnRef = getFrmRef(ol_frame,o3_frame)
+	return true;
+}
+
+////////
+// PLUGIN REGISTRATIONS
+////////
+registerCmdLineFunction(parseFrameExtras);
+registerPostParseFunction(chkForFrmRef);
+}
\ No newline at end of file
diff --git a/html/js/overlib_cssstyle.js b/html/js/overlib_cssstyle.js
new file mode 100644
index 0000000000..95c725b746
--- /dev/null
+++ b/html/js/overlib_cssstyle.js
@@ -0,0 +1,182 @@
+//\/////
+//\  overLIB CSS Style Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.05 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//   $Revision: 1.11 $                      $Date: 2004/11/25 21:27:19 $
+//\/////
+//\mini
+
+
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.10)) alert('overLIB 4.10 or later is required for the CSS Style Plugin.');
+else {
+registerCommands('cssstyle,padunit,heightunit,widthunit,textsizeunit,textdecoration,textstyle,textweight,captionsizeunit,captiondecoration,captionstyle,captionweight,closesizeunit,closedecoration,closestyle,closeweight');
+
+
+////////
+// DEFAULT CONFIGURATION
+// Settings you want everywhere are set here. All of this can also be
+// changed on your html page or through an overLIB call.
+////////
+if (typeof ol_padunit=='undefined') var ol_padunit="px";
+if (typeof ol_heightunit=='undefined') var ol_heightunit="px";
+if (typeof ol_widthunit=='undefined') var ol_widthunit="px";
+if (typeof ol_textsizeunit=='undefined') var ol_textsizeunit="px";
+if (typeof ol_textdecoration=='undefined') var ol_textdecoration="none";
+if (typeof ol_textstyle=='undefined') var ol_textstyle="normal";
+if (typeof ol_textweight=='undefined') var ol_textweight="normal";
+if (typeof ol_captionsizeunit=='undefined') var ol_captionsizeunit="px";
+if (typeof ol_captiondecoration=='undefined') var ol_captiondecoration="none";
+if (typeof ol_captionstyle=='undefined') var ol_captionstyle="normal";
+if (typeof ol_captionweight=='undefined') var ol_captionweight="bold";
+if (typeof ol_closesizeunit=='undefined') var ol_closesizeunit="px";
+if (typeof ol_closedecoration=='undefined') var ol_closedecoration="none";
+if (typeof ol_closestyle=='undefined') var ol_closestyle="normal";
+if (typeof ol_closeweight=='undefined') var ol_closeweight="normal";
+
+////////
+// END OF CONFIGURATION
+// Don't change anything below this line, all configuration is above.
+////////
+
+
+
+////////
+// INIT
+////////
+// Runtime variables init. Don't change for config!
+var o3_padunit="px";
+var o3_heightunit="px";
+var o3_widthunit="px";
+var o3_textsizeunit="px";
+var o3_textdecoration="";
+var o3_textstyle="";
+var o3_textweight="";
+var o3_captionsizeunit="px";
+var o3_captiondecoration="";
+var o3_captionstyle="";
+var o3_captionweight="";
+var o3_closesizeunit="px";
+var o3_closedecoration="";
+var o3_closestyle="";
+var o3_closeweight="";
+
+
+////////
+// PLUGIN FUNCTIONS
+////////
+
+// Function which sets runtime variables to their default values
+function setCSSStyleVariables() {
+	o3_padunit=ol_padunit;
+	o3_heightunit=ol_heightunit;
+	o3_widthunit=ol_widthunit;
+	o3_textsizeunit=ol_textsizeunit;
+	o3_textdecoration=ol_textdecoration;
+	o3_textstyle=ol_textstyle;
+	o3_textweight=ol_textweight;
+	o3_captionsizeunit=ol_captionsizeunit;
+	o3_captiondecoration=ol_captiondecoration;
+	o3_captionstyle=ol_captionstyle;
+	o3_captionweight=ol_captionweight;
+	o3_closesizeunit=ol_closesizeunit;
+	o3_closedecoration=ol_closedecoration;
+	o3_closestyle=ol_closestyle;
+	o3_closeweight=ol_closeweight;
+}
+
+// Parses CSS Style commands.
+function parseCSSStyleExtras(pf, i, ar) {
+	var k = i;
+	
+	if (k < ar.length) {
+		if (ar[k]==CSSSTYLE) { eval(pf+'css='+ar[k]); return k; }
+		if (ar[k]==PADUNIT) { eval(pf+'padunit="'+ar[++k]+'"'); return k; }
+		if (ar[k]==HEIGHTUNIT) { eval(pf+'heightunit="'+ar[++k]+'"'); return k; }
+		if (ar[k]==WIDTHUNIT) { eval(pf+'widthunit="'+ar[++k]+'"'); return k; }
+		if (ar[k]==TEXTSIZEUNIT) { eval(pf+'textsizeunit="'+ar[++k]+'"'); return k; }
+		if (ar[k]==TEXTDECORATION) { eval(pf+'textdecoration="'+ar[++k]+'"'); return k; }
+		if (ar[k]==TEXTSTYLE) { eval(pf+'textstyle="'+ar[++k]+'"'); return k; }
+		if (ar[k]==TEXTWEIGHT) { eval(pf+'textweight="'+ar[++k]+'"'); return k; }
+		if (ar[k]==CAPTIONSIZEUNIT) { eval(pf+'captionsizeunit="'+ar[++k]+'"'); return k; }
+		if (ar[k]==CAPTIONDECORATION) { eval(pf+'captiondecoration="'+ar[++k]+'"'); return k; }
+		if (ar[k]==CAPTIONSTYLE) { eval(pf+'captionstyle="'+ar[++k]+'"'); return k; }
+		if (ar[k]==CAPTIONWEIGHT) { eval(pf+'captionweight="'+ar[++k]+'"'); return k; }
+		if (ar[k]==CLOSESIZEUNIT) { eval(pf+'closesizeunit="'+ar[++k]+'"'); return k; }
+		if (ar[k]==CLOSEDECORATION) { eval(pf+'closedecoration="'+ar[++k]+'"'); return k; }
+		if (ar[k]==CLOSESTYLE) { eval(pf+'closestyle="'+ar[++k]+'"'); return k; }
+		if (ar[k]==CLOSEWEIGHT) { eval(pf+'closeweight="'+ar[++k]+'"'); return k; }
+	}
+	
+	return -1;
+}
+
+////////
+// LAYER GENERATION FUNCTIONS
+////////
+
+// Makes simple table without caption
+function ol_content_simple_cssstyle(text) {
+	txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" style="background-color: '+o3_bgcolor+'; height: '+o3_height+o3_heightunit+';"><tr><td><table width="100%" border="0" cellpadding="' + o3_cellpad + '" cellspacing="0" style="color: '+o3_fgcolor+'; background-color: '+o3_fgcolor+'; height: '+o3_height+o3_heightunit+';"><tr><td valign="TOP"><font style="font-family: '+o3_textfont+'; color: '+o3_textcolor+'; font-size: '+o3_textsize+o3_textsizeunit+'; text-decoration: '+o3_textdecoration+'; font-weight: '+o3_textweight+'; font-style:'+o3_textstyle+'">'+text+'</font></td></tr></table></td></tr></table>';
+	set_background("");
+	
+	return txt;
+}
+
+// Makes table with caption and optional close link
+function ol_content_caption_cssstyle(text, title, close) {
+	var nameId;
+	closing = "";
+	closeevent = "onMouseOver";
+	
+	if (o3_closeclick == 1) closeevent= (o3_closetitle ? "title='" + o3_closetitle +"'" : "") + " onClick";
+
+	if (o3_capicon!="") {
+		nameId=' hspace=\"5\"'+' align=\"middle\" alt=\"\"';
+		if (typeof o3_dragimg != 'undefined' && o3_dragimg) nameId = ' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';
+		o3_capicon = '<img src=\"'+o3_capicon+'\"'+nameId+' />';
+	}
+	
+	if (close != "") {
+		closing = '<td align="RIGHT"><a href="javascript:return '+fnRef+'cClick();" '+closeevent+'="return '+fnRef+'cClick();" style="color: '+o3_closecolor+'; font-family: '+o3_closefont+'; font-size: '+o3_closesize+o3_closesizeunit+'; text-decoration: '+o3_closedecoration+'; font-weight: '+o3_closeweight+'; font-style:'+o3_closestyle+';">'+close+'</a></td>';
+	}
+	
+	txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" style="background-color: '+o3_bgcolor+'; background-image: url('+o3_bgbackground+'); height: '+o3_height+o3_heightunit+';"><tr><td><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td><font style="font-family: '+o3_captionfont+'; color: '+o3_capcolor+'; font-size: '+o3_captionsize+o3_captionsizeunit+'; font-weight: '+o3_captionweight+'; font-style: '+o3_captionstyle+'; text-decoration: '+o3_captiondecoration+';">'+o3_capicon+title+'</font></td>'+closing+'</tr></table><table width="100%" border="0" cellpadding="' + o3_cellpad + '" cellspacing="0" style="color: '+o3_fgcolor+'; background-color: '+o3_fgcolor+'; height: '+o3_height+o3_heightunit+';"><tr><td valign="TOP"><font style="font-family: '+o3_textfont+'; color: '+o3_textcolor+'; font-size: '+o3_textsize+o3_textsizeunit+'; text-decoration: '+o3_textdecoration+'; font-weight: '+o3_textweight+'; font-style:'+o3_textstyle+'">'+text+'</font></td></tr></table></td></tr></table>';
+	set_background("");
+
+	return txt;
+}
+
+// Sets the background picture, padding and lots more. :)
+function ol_content_background_cssstyle(text, picture, hasfullhtml) {
+	if (hasfullhtml) {
+		txt = text;
+	} else {
+		var pU, hU, wU;
+		pU = (o3_padunit == '%' ? '%' : '');
+		hU = (o3_heightunit == '%' ? '%' : '');
+		wU = (o3_widthunit == '%' ? '%' : '');
+		txt = '<table width="'+o3_width+wu+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+hu+'"><tr><td colspan="3" height="'+o3_padyt+pu+'"></td></tr><tr><td width="'+o3_padxl+pu+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+pu+'"><font style="font-family: '+o3_textfont+'; color: '+o3_textcolor+'; font-size: '+o3_textsize+o3_textsizeunit+';">'+text+'</font></td><td width="'+o3_padxr+pu+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+pu+'"></td></tr></table>';
+	}
+
+	set_background(picture);
+
+	return txt;
+}
+
+////////
+// PLUGIN REGISTRATIONS
+////////
+registerRunTimeFunction(setCSSStyleVariables);
+registerCmdLineFunction(parseCSSStyleExtras);
+registerHook("ol_content_simple", ol_content_simple_cssstyle, FALTERNATE, CSSSTYLE);
+registerHook("ol_content_caption", ol_content_caption_cssstyle, FALTERNATE, CSSSTYLE);
+registerHook("ol_content_background", ol_content_background_cssstyle, FALTERNATE, CSSSTYLE);
+}
\ No newline at end of file
diff --git a/html/js/overlib_debug.js b/html/js/overlib_debug.js
new file mode 100644
index 0000000000..325516e58c
--- /dev/null
+++ b/html/js/overlib_debug.js
@@ -0,0 +1,177 @@
+//\/////
+//\  overLIB Debug Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.05 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2003. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//   $Revision: 1.6 $                $Date: 2005/02/01 22:18:44 $
+//
+//\/////
+//\mini
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.10)) alert('overLIB 4.10 or later is required for the Debug Plugin.');
+else {
+var olZindex;
+registerCommands('allowdebug');
+////////
+// PLUGIN FUNCTIONS
+////////
+// Parses Debug Parameters
+function parseDebugExtras(pf, i, ar) {
+	var k =  i, v;
+
+	if (k < ar.length) {
+		if (ar[k] == ALLOWDEBUG) { v = ar[k + 1]; if(typeof v == 'string') {v = ar[++k]; if (pf != 'ol_') setCanShowParm(v);} return k; }
+	}
+
+	return -1;
+}
+// Debug main routine
+function showProperties() {
+	var args = showProperties.arguments, sho, shoObj, vis, lvl = 0, istrt = 0, theDiv = 'showProps', txt = '';
+
+	if (args.length == 0) return;
+	if (args.length % 2 && typeof args[0] == 'string') {
+		istrt = 1;
+		theDiv = args[0];
+	}
+
+	sho = createDivContainer(theDiv);
+
+	if (olNs4) {
+		shoObj = sho;
+		txt += '<table cellpadding="1" cellspacing="0" border="0" bgcolor="#000000"><tr><td>';
+	} else {
+		with(sho.style) {
+			backgroundColor = '#ffffcc';
+			padding = '5px';
+			border = '1px #000000 solid';
+		}
+		shoObj = sho.style;
+	}
+
+	lvl = getLayerLevel(theDiv);
+
+	if(typeof sho.position == 'undefined') {
+		sho.position = new Pagelocation(10 + lvl*20, 10, 1);
+		if(typeof olZindex == 'undefined') olZindex = getDivZindex();
+		shoObj.zIndex = olZindex + 1 + lvl;
+	}
+
+	txt += '<table cellpadding="5" border="0" cellspacing="0"' + (olNs4 ? ' bgcolor="#ffffcc"' : '') + '>';
+	txt += '<tr><td><strong><A HREF="javascript:moveToBack(\'' + theDiv + '\');" title="Move to back">' + theDiv + '</A></strong></td><td align="RIGHT"><strong><a href="javascript:closeLayer(\'' + theDiv + '\');" TITLE="Close Layer' + (!olNs4 ? '" style="background-color: #CCCCCC; border:2px #333369 outset; padding: 2px;' : '') + '">X</a></strong></td></tr>';
+	txt += '<tr><td style="text-decoration: underline;"><strong>Item</strong></td><td style="text-decoration: underline;"><strong>Value</strong></td></tr>';
+	for (var i = istrt; i<args.length-1; i++) 
+		txt += '<tr><td align="right"><strong>' + args[i] + ':&nbsp;</strong></td><td>' + args[++i] + '</td></tr>';
+	txt += '</table>' + (olNs4 ? '</td></tr></table>' : '');
+
+	if (olNs4) {
+		sho.document.open();
+		sho.document.write(txt);
+		sho.document.close();
+	} else {
+		if(olIe5&&isMac) sho.innerHTML = '';
+		sho.innerHTML = txt;
+	}
+
+	showAllVisibleLayers();
+}
+function getLayerLevel(lyr) {
+	var i = 0;
+
+	if (typeof document.popups == 'undefined') {
+		document.popups = new Array(lyr);
+	} else {
+		var l = document.popups;
+		for (var i = 0; i<l.length; i++) if (lyr == l[i]) break;
+		if(i == l.length) l[l.length++] = lyr;
+	}
+
+	return i;
+}
+function getDivZindex(id) {
+	var obj;
+
+	if(id == '' || id == null) id = 'overDiv';
+
+	obj = layerReference(id);
+	obj = (olNs4 ? obj : obj.style);
+
+	return obj.zIndex;
+}
+function setCanShowParm(debugID) {
+	var lyr, pLyr;
+
+	if(typeof debugID != 'string') return;
+
+	pLyr = debugID.split(',');
+	for(var i = 0; i<pLyr.length; i++) {
+		lyr = layerReference(pLyr[i]);
+		if(lyr != null && typeof lyr.position != 'undefined') lyr.position.canShow = 1;
+	}
+}
+function Pagelocation(x, y, canShow) {
+	this.x = x;
+	this.y = y;
+  this.canShow = (canShow == null) ? 0 : canShow;
+}
+function showAllVisibleLayers(){
+	var lyr, lyrObj, l = document.popups;
+
+	for (var i = 0; i<l.length; i++) {
+		lyr = layerReference(l[i]);
+		lyrObj = (olNs4 ? lyr : lyr.style);
+    if(lyr.position.canShow) {
+  		positionLayer(lyrObj, lyr.position.x, lyr.position.y);
+  		lyrObj.visibility = 'visible';
+    }
+	}
+}
+function positionLayer(Obj, x, y) { // Obj is obj.style for IE/NS6+ but obj for NS4
+	Obj.left = x + (olIe4 ? eval(docRoot + '.scrollLeft') : window.pageXOffset) + (olNs4 ? 0 : 'px');
+	Obj.top = y + (olIe4 ? eval(docRoot + '.scrollTop') : window.pageYOffset) + (olNs4 ? 0 : 'px');
+}
+function closeLayer(lyrID) {
+	var lyr = layerReference(lyrID);
+
+  lyr.position.canShow = 0;
+	lyr = (olNs4 ? lyr : lyr.style);
+	lyr.visibility = 'hidden';
+}
+function moveToBack(layer) {
+	var l = document.popups, lyr, obj, i, x = 10, y = 10, dx = 20, z = olZindex + 1;
+
+	if(l.length == 1) return;
+
+	lyr = layerReference(layer);
+	lyr.position.x = x;
+	lyr.position.y = y;
+	obj = (olNs4 ? lyr : lyr.style);
+	obj.zIndex = z;
+
+	for (i = 0; i<l.length; i++) {
+		if (layer == l[i]) continue;
+		lyr = layerReference(l[i]);
+    if(lyr.position.canShow == 0) continue;
+		obj = (olNs4 ? lyr : lyr.style);
+		obj.zIndex += 1;
+		lyr.position.x += dx;
+		lyr.position.y = y;
+	}
+
+	showAllVisibleLayers();
+}
+function rawTxt(txt) {
+	if (typeof txt != 'string') return;
+	return txt.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;");
+}
+////////
+// PLUGIN REGISTRATIONS
+////////
+registerCmdLineFunction(parseDebugExtras);
+}
\ No newline at end of file
diff --git a/html/js/overlib_exclusive.js b/html/js/overlib_exclusive.js
new file mode 100644
index 0000000000..cccce63d41
--- /dev/null
+++ b/html/js/overlib_exclusive.js
@@ -0,0 +1,123 @@
+//\/////
+//\  overLIB Exclusive Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.05 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//   $Revision: 1.7 $                      $Date: 2004/11/25 21:27:19 $
+//\/////
+//\mini
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.10)) alert('overLIB 4.10 or later is required for the Debug Plugin.');
+else {
+registerCommands('exclusive,exclusivestatus,exclusiveoverride');
+var olOverrideIsSet;  // variable which tells if override is set
+
+
+////////
+// DEFAULT CONFIGURATION
+// Settings you want everywhere are set here. All of this can also be
+// changed on your html page or through an overLIB call.
+////////
+if (typeof ol_exclusive == 'undefined') var ol_exclusive = 0;
+if (typeof ol_exclusivestatus == 'undefined') var ol_exclusivestatus = 'Please close open popup first.';
+
+////////
+// END OF CONFIGURATION
+// Don't change anything below this line, all configuration is above.
+////////
+
+
+////////
+// INIT
+////////
+// Runtime variables init. Don't change for config!
+var o3_exclusive = 0;
+var o3_exclusivestatus = '';
+
+////////
+// PLUGIN FUNCTIONS
+////////
+
+// Set runtime variables
+function setExclusiveVariables() {
+	o3_exclusive = ol_exclusive;
+	o3_exclusivestatus = ol_exclusivestatus;
+}
+
+// Parses Exclusive Parameters
+function parseExclusiveExtras(pf,i,ar) {
+	var k = i,v;
+
+	olOverrideIsSet = false;  // a global variable
+
+	if (k < ar.length) {
+		if (ar[k] == EXCLUSIVEOVERRIDE) { if(pf !=  'ol_') olOverrideIsSet = true; return k; }
+		if (ar[k] == EXCLUSIVE) { eval(pf +  'exclusive = (' +  pf + 'exclusive == 0) ? 1 : 0'); return k; }
+		if (ar[k] == EXCLUSIVESTATUS) { eval(pf + "exclusivestatus = '" + escSglQuote(ar[++k]) + "'"); return k; }
+	}
+
+	return -1;
+}
+
+///////
+//  HELPER FUNCTIONS
+///////
+// set status message and indicate whether popup is exclusive
+function isExclusive(args) {
+	var rtnVal = false;
+
+	if(args != null) rtnVal = hasCommand(args, EXCLUSIVEOVERRIDE);
+
+	if(rtnVal) return false;
+	else {
+		self.status = (o3_exclusive) ? o3_exclusivestatus : '';
+		return o3_exclusive;
+	}
+
+}
+
+// checks overlib argument list to see if it has a COMMAND argument
+function hasCommand(args, COMMAND) {
+	var rtnFlag = false;
+
+	for (var i=0; i<args.length; i++) {
+		if (typeof args[i] == 'number' &&  args[i] == COMMAND) {
+			rtnFlag = true;
+			break;
+		}
+	}
+
+	return rtnFlag;
+}
+
+// makes sure exclusive setting is off
+function clearExclusive() {
+	o3_exclusive = 0;
+}
+
+function setExclusive() {
+	o3_exclusive = (o3_showingsticky &&  o3_exclusive);
+}
+
+function chkForExclusive() {
+	if (olOverrideIsSet) o3_exclusive = 0;  // turn it off in case it's been set.
+
+	return true;
+}
+
+////////
+// PLUGIN REGISTRATIONS
+////////
+registerRunTimeFunction(setExclusiveVariables);
+registerCmdLineFunction(parseExclusiveExtras);
+registerPostParseFunction(chkForExclusive);
+registerHook("createPopup",setExclusive,FBEFORE);
+registerHook("hideObject",clearExclusive,FAFTER);
+if (olInfo.meets(4.10)) registerNoParameterCommands('exclusive');
+}
\ No newline at end of file
diff --git a/html/js/overlib_followscroll.js b/html/js/overlib_followscroll.js
new file mode 100644
index 0000000000..6898fbbf54
--- /dev/null
+++ b/html/js/overlib_followscroll.js
@@ -0,0 +1,175 @@
+//\/////
+//\  overLIB Follow Scroll Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.10 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//   $Revision: 1.12 $                      $Date: 2004/11/25 21:27:19 $
+//\/////
+//\mini
+
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.10)) alert('overLIB 4.10 or later is required for the Follow Scroll Plugin.');
+else {
+registerCommands('followscroll,followscrollrefresh');
+
+
+////////
+// DEFAULT CONFIGURATION
+// You don't have to change anything here if you don't want to. All of this can be
+// changed on your html page or through an overLIB call.
+////////
+// Default value for scroll is not to scroll (0)
+if (typeof ol_followscroll=='undefined') var ol_followscroll=0;
+if (typeof ol_followscrollrefresh=='undefined') var ol_followscrollrefresh=100;
+
+////////
+// END OF CONFIGURATION
+// Don't change anything below this line, all configuration is above.
+////////
+
+
+
+
+
+
+
+////////
+// INIT
+////////
+// Runtime variables init. Don't change for config!
+var o3_followscroll=0;
+var o3_followscrollrefresh=100;
+
+
+////////
+// PLUGIN FUNCTIONS
+////////
+function setScrollVariables() {
+	o3_followscroll=ol_followscroll;
+	o3_followscrollrefresh=ol_followscrollrefresh;
+}
+
+// Parses Shadow and Scroll commands
+function parseScrollExtras(pf,i,ar) {
+	var k=i,v;
+	if (k < ar.length) {
+		if (ar[k]==FOLLOWSCROLL) { eval(pf +'followscroll=('+pf+'followscroll==0) ? 1 : 0'); return k; }
+		if (ar[k]==FOLLOWSCROLLREFRESH) { eval(pf+'followscrollrefresh='+ar[++k]); return k; }
+	}
+	return -1;
+}
+
+
+
+// Function to support scroll feature (overloads default)
+function scroll_placeLayer() {
+	var placeX, placeY, widthFix = 0;
+	
+	// HORIZONTAL PLACEMENT
+	if (o3_frame.innerWidth) { 
+		widthFix=Math.ceil(1.2*(o3_frame.outerWidth - o3_frame.innerWidth));
+    widthFix = (widthFix > 50) ? 20 : widthFix;
+		iwidth=o3_frame.innerWidth;
+	} else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) 
+		iwidth=eval('o3_frame.'+docRoot+'.clientWidth');			
+
+	// Horizontal scroll offset
+	winoffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollLeft') : o3_frame.pageXOffset;
+
+	placeX = runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);
+	
+	// VERTICAL PLACEMENT
+	if (o3_frame.innerHeight) iheight=o3_frame.innerHeight;
+	else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')) 
+		iheight=eval('o3_frame.'+docRoot+'.clientHeight');			
+
+	// Vertical scroll offset
+	scrolloffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollTop') : o3_frame.pageYOffset;
+
+	placeY = runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);
+
+	// Actually move the object.
+	repositionTo(over,placeX,placeY);
+	
+	if (o3_followscroll && o3_sticky && (o3_relx || o3_rely) && (typeof o3_draggable == 'undefined' || !o3_draggable)) {
+		if (typeof over.scroller=='undefined' || over.scroller.canScroll) over.scroller = new Scroller(placeX-winoffset,placeY-scrolloffset,o3_followscrollrefresh);
+	}
+}
+
+
+
+///////
+// SUPPORT ROUTINES FOR SCROLL FEATURE
+///////
+
+// Scroller constructor
+function Scroller(X,Y,refresh) {
+	this.canScroll=0;
+	this.refresh=refresh;
+	this.x=X;
+	this.y=Y;
+	this.timer=setTimeout("repositionOver()",this.refresh);
+}
+
+// Removes the timer to stop replacing the layer.
+function cancelScroll() {
+	if (!o3_followscroll || typeof over.scroller == 'undefined') return;
+	over.scroller.canScroll = 1;
+	
+	if (over.scroller.timer) {
+		clearTimeout(over.scroller.timer);
+		over.scroller.timer=null;
+	}
+}
+
+// Find out how much we've scrolled.
+	function getPageScrollY() {
+	if (o3_frame.pageYOffset) return o3_frame.pageYOffset;
+	if (eval(docRoot)) return eval('o3_frame.' + docRoot + '.scrollTop');
+	return -1;
+}
+function getPageScrollX() {
+	if (o3_frame.pageXOffset) return o3_frame.pageXOffset;
+	if (eval(docRoot)) return eval('o3_frame.'+docRoot+'.scrollLeft');
+	return -1;
+}
+
+// Find out where our layer is
+function getLayerTop(layer) {
+	if (layer.pageY) return layer.pageY;
+	if (layer.style.top) return parseInt(layer.style.top);
+	return -1;
+}
+function getLayerLeft(layer) {
+	if (layer.pageX) return layer.pageX;
+	if (layer.style.left) return parseInt(layer.style.left);
+	return -1;
+}
+
+// Repositions the layer if needed
+function repositionOver() {
+	var X, Y, pgLeft, pgTop;
+	pgTop = getPageScrollY();
+	pgLeft = getPageScrollX();
+	X = getLayerLeft(over)-pgLeft;
+	Y = getLayerTop(over)-pgTop;
+	
+	if (X != over.scroller.x || Y != over.scroller.y) repositionTo(over, pgLeft+over.scroller.x, pgTop+over.scroller.y);
+	over.scroller.timer = setTimeout("repositionOver()", over.scroller.refresh);
+}
+
+////////
+// PLUGIN REGISTRATIONS
+////////
+registerRunTimeFunction(setScrollVariables);
+registerCmdLineFunction(parseScrollExtras);
+registerHook("hideObject",cancelScroll,FAFTER);
+registerHook("placeLayer",scroll_placeLayer,FREPLACE);
+if (olInfo.meets(4.10)) registerNoParameterCommands('followscroll');
+}
diff --git a/html/js/overlib_hideform.js b/html/js/overlib_hideform.js
new file mode 100644
index 0000000000..3b576e055a
--- /dev/null
+++ b/html/js/overlib_hideform.js
@@ -0,0 +1,135 @@
+//\/////
+//\  overLIB Hide Form Plugin
+//\
+//\  Uses an iframe shim to mask system controls for IE v5.5 or higher as suggested in
+//\  http://dotnetjunkies.com/weblog/jking/posts/488.aspx
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.05 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//   $Revision: 1.20 $                $Date: 2004/11/25 21:27:19 $
+//\/////
+//\mini
+if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.10)) alert('overLIB 4.10 or later is required for the HideForm Plugin.');
+else {
+
+// Function which generates the popup with an IFRAME shim
+function generatePopUp(content) {
+	if(!olIe4||olOp||!olIe55||(typeof o3_shadow != 'undefined' && o3_shadow)||(typeof o3_bubble != 'undefined' && o3_bubble)) return;
+
+	var wd,ht,txt, zIdx =  0;
+
+	wd =  parseInt(o3_width);
+	ht =  over.offsetHeight;
+	txt =  backDropSource(wd,ht,zIdx++);
+	txt += '<div style="position: absolute; top: 0; left: 0; width: '+ wd+'px; z-index: ' + zIdx + ';">' + content + '</div>';
+	layerWrite(txt);
+}
+
+// Code for the IFRAME which is used in other places
+function backDropSource(width, height, Z) {
+	return '<iframe frameborder="0" scrolling="no" src="javascript:false;" width="' + width + '" height="' + height + '" style="z-index: ' + Z + '; filter: Beta(Style=0,Opacity=0);"></iframe>';
+}
+
+// Hides SELECT boxes that will be under the popup
+// Checking Gecko version number to try to include other browsers based on the Gecko engine
+function hideSelectBox() {
+	if(olNs4 || olOp || olIe55) return;
+	var px, py, pw, ph, sx, sw, sy, sh, selEl, v;
+
+	if(olIe4) v = 0;
+	else {
+		v = navigator.userAgent.match(/Gecko\/(\d{8})/i);
+		if(!v) return;   // return if no string match
+		v = parseInt(v[1]);
+	}
+
+	if (v < 20030624) {  // versions less than June 24, 2003 were earlier Netscape browsers
+		px = parseInt(over.style.left);
+		py = parseInt(over.style.top);
+		pw = o3_width;
+		ph = (o3_aboveheight ? parseInt(o3_aboveheight) : over.offsetHeight);
+		selEl = (olIe4) ? o3_frame.document.all.tags("SELECT") : o3_frame.document.getElementsByTagName("SELECT");
+		for (var i=0; i<selEl.length; i++) {
+			if(!olIe4 && selEl[i].size < 2) continue;  // Not IE and SELECT size is 1 or not specified
+			sx = pageLocation(selEl[i],'Left');
+			sy = pageLocation(selEl[i],'Top');
+			sw = selEl[i].offsetWidth;
+			sh = selEl[i].offsetHeight;
+			if((px+pw) < sx || px > (sx+sw) || (py+ph) < sy || py > (sy+sh)) continue;
+			selEl[i].isHidden = 1;
+			selEl[i].style.visibility = 'hidden';
+		}
+	}
+}
+
+// Shows previously hidden SELECT Boxes
+function showSelectBox() {
+	if(olNs4 || olOp || olIe55) return;
+	var selEl, v;
+
+	if(olIe4) v = 0;
+	else {
+		v = navigator.userAgent.match(/Gecko\/(\d{8})/i);
+		if(!v) return; 
+		v = parseInt(v[1]);
+	}
+
+	if(v < 20030624) {
+		selEl = (olIe4) ? o3_frame.document.all.tags("SELECT") : o3_frame.document.getElementsByTagName("SELECT");
+		for (var i=0; i<selEl.length; i++) {
+			if(typeof selEl[i].isHidden !=  'undefined' && selEl[i].isHidden) {
+				selEl[i].isHidden = 0;
+				selEl[i].style.visibility = 'visible';
+			}
+		}
+	}
+}
+
+// function gets the total offset properties of an element
+// this same function occurs in overlib_mark.js.
+function pageLocation(o,t){
+	var x = 0
+
+	while(o.offsetParent){
+		x += o['offset'+t]
+		o = o.offsetParent
+	}
+
+	x += o['offset'+t]
+
+	return x
+}
+
+// reset mouse move routine for NS7 but not NS7.1,Opera, or IE5.5+
+// It also bypasses Netscape 6 since the modifications mess up the display of popups
+// and don't work anyways.
+// Modify mouse move routine while loading so that hideSelectBox()
+// can be called from the correct location
+if (!(olNs4 || olOp || olIe55 || navigator.userAgent.indexOf('Netscape6') != -1)) {
+	var MMStr = olMouseMove.toString();
+	var strRe = /(if\s*\(o3_allowmove\s*==\s*1.*\)\s*)/;
+	var f = MMStr.match(strRe);
+
+	if (f) {
+		var ls = MMStr.search(strRe);
+		ls += f[1].length;
+		var le = MMStr.substring(ls).search(/[;|}]\n/);
+		MMStr = MMStr.substring(0,ls) + ' { runHook("placeLayer",FREPLACE); if(olHideForm) hideSelectBox(); ' + MMStr.substring(ls + (le != -1 ? le+3 : 0));
+		document.writeln('<script type="text/javascript">\n<!--\n' + MMStr + '\n//-->\n</' + 'script>');
+	}
+
+	f = capExtent.onmousemove.toString().match(/function[ ]+(\w*)\(/);
+	if (f&&f[1] != 'anonymous') capExtent.onmousemove = olMouseMove;
+}
+
+
+////////
+// PLUGIN REGISTRATIONS
+////////
+registerHook("createPopup",generatePopUp,FAFTER);
+registerHook("hideObject",showSelectBox,FAFTER);
+olHideForm=1;
+}
diff --git a/html/js/overlib_setonoff.js b/html/js/overlib_setonoff.js
new file mode 100644
index 0000000000..c996c14e72
--- /dev/null
+++ b/html/js/overlib_setonoff.js
@@ -0,0 +1,101 @@
+//\/////
+//\  overLIB Set On/Off Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.10 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2003. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//   $Revision: 1.3 $                $Date: 2004/11/25 21:27:19 $
+//
+//\/////
+//\mini
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.10)) alert('overLIB 4.10 or later is required for the Set On/Off Plugin.');
+else {
+registerCommands('seton, setoff');
+var olSetType;
+// END OF CONFIGURATION
+// Don't change anything below this line, all configuration is above.
+////////
+// PLUGIN FUNCTIONS
+////////
+// Set runtime variables
+function setOnOffVariables() {
+	olSetType = 0;
+}
+// Parses Set On/Off Parameters
+function parseOnOffExtras(pf, i, ar) {
+	var k = i, v;
+
+	if (k < ar.length) {
+		if (ar[k] == SETON||ar[k] == SETOFF) { olSetType = 1; k = opt_MULTICOMMANDS(++k, ar); return k; }
+	}
+
+	return -1;
+}
+///////
+//  HELPER FUNCTIONS
+///////
+// searches arg list for COMMAND; 
+function hasCommand(istrt, args, COMMAND) {
+	for (var i = istrt; i < args.length; i++) {
+		if (typeof args[i] == 'number' &&  args[i] == COMMAND) return i;
+	}
+
+	return -1;
+}
+// scans for toggle like commands to be forced ON/OFF
+function scanCommandSet(pf, args) {
+	var k = -1, j, je;
+
+	if (olSetType) {
+		// search for SETON command
+		while ((k = hasCommand(++k, args, SETON)) < args.length && k > -1) {
+			je = opt_MULTICOMMANDS(k + 1, args);
+			for (j = k + 1; j <  (k + je); j++) setNoParamCommand(1, pf, args[j]);
+			k += (je - 1);
+		}
+		// search for SETOFF command
+		k = -1;
+		while ((k = hasCommand(++k, args, SETOFF)) < args.length && k > -1) {
+			je = opt_MULTICOMMANDS(k + 1, args);
+			for (j = k + 1; j <  (k + je); j++) setNoParamCommand(0, pf, args[j]);
+			k += (je - 1);
+		}		
+	}
+
+	return true;
+}
+var olRe;
+// set command according to whichType (0 or 1)
+function setNoParamCommand(whichType, pf, COMMAND) {
+	var v = pms[COMMAND - 1 - pmStart];
+
+	if(pmt && !olRe) olRe = eval('/' + pmt.split(',').join('|') + '/');
+	if (pf != 'ol_' &&  /capturefirst/.test(v)) return;  // no o3_capturefirst variable
+	if (pf != 'ol_' &&  /wrap/.test(v) &&  eval(pf + 'wrap') &&  (whichType == 0)) {
+		nbspCleanup();   // undo wrap effects since checked after all parsing
+		o3_width = ol_width;
+	}
+
+	if (olRe.test(v))	eval(pf + v + '=' + ((whichType && COMMAND == AUTOSTATUSCAP) ? whichType++ : whichType));
+}
+function opt_MULTICOMMANDS(i, ar) {
+	var k = i;
+
+	while (k < ar.length &&  typeof ar[k] == 'number' &&  ar[k] > pmStart) {k++; if (ar[k - 1] == 'SETON'||ar[k - 1] == 'SETOFF') break;}
+	k -= (k < ar.length ? 2 : 1);
+
+	return k;
+}
+////////
+// PLUGIN REGISTRATIONS
+////////
+registerRunTimeFunction(setOnOffVariables);
+registerCmdLineFunction(parseOnOffExtras);
+registerPostParseFunction(scanCommandSet);
+}
\ No newline at end of file
diff --git a/html/js/overlib_shadow.js b/html/js/overlib_shadow.js
new file mode 100644
index 0000000000..b6b194e337
--- /dev/null
+++ b/html/js/overlib_shadow.js
@@ -0,0 +1,270 @@
+//\/////
+//\  overLIB Shadow Plugin
+//\  This file requires overLIB 4.10 or later.
+//\
+//\  overLIB 4.05 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2003. All rights reserved.
+//\  Contributors are listed on the homepage.
+//\  See http://www.bosrup.com/web/overlib/ for details.
+//   $Revision: 1.15 $                $Date: 2004/11/25 21:27:19 $
+//\/////
+//\mini
+
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.10)) alert('overLIB 4.10 or later is required for the Shadow Plugin.');
+else {
+registerCommands('shadow,shadowcolor,shadowimage,shadowopacity,shadowx,shadowy');
+
+
+////////
+// DEFAULT CONFIGURATION
+// You don't have to change anything here if you don't want to. All of this can be
+// changed on your html page or through an overLIB call.
+////////
+if (typeof ol_shadowadjust=='undefined') var ol_shadowadjust=2;  // for Ns4.x only
+if (typeof ol_shadow=='undefined') var ol_shadow=0;
+if (typeof ol_shadowcolor=='undefined') var ol_shadowcolor='#CCCCCC';
+if (typeof ol_shadowimage=='undefined') var  ol_shadowimage='';
+if (typeof ol_shadowopacity=='undefined') var  ol_shadowopacity=0;
+if (typeof ol_shadowx=='undefined') var ol_shadowx=5;
+if (typeof ol_shadowy=='undefined') var ol_shadowy=5;
+
+////////
+// END OF CONFIGURATION
+// Don't change anything below this line, all configuration is above.
+////////
+
+
+
+
+////////
+// INIT
+////////
+// Runtime variables init. Don't change for config!
+var o3_shadow=0;
+var o3_shadowcolor="#cccccc";
+var o3_shadowimage='';
+var o3_shadowopacity=0;
+var o3_shadowx=5;
+var o3_shadowy=5;
+var bkSet=0;  // Needed for this effect in NS4
+
+
+
+// Function which sets runtime variables to their default values
+function setShadowVariables() {
+	o3_shadow=ol_shadow;
+	o3_shadowcolor=ol_shadowcolor;
+	o3_shadowimage=ol_shadowimage;
+	o3_shadowopacity=ol_shadowopacity;
+	o3_shadowx=ol_shadowx;
+	o3_shadowy=ol_shadowy;
+}
+
+
+// Parses shadow commands
+function parseShadowExtras(pf,i,ar) {
+	var k = i, v;
+	
+	if (k < ar.length) {
+		if (ar[k]==SHADOW) { eval(pf +'shadow=('+pf+'shadow==0) ? 1 : 0'); return k; }
+		if (ar[k]==SHADOWCOLOR) { eval(pf+'shadowcolor="'+ar[++k]+'"'); return k; }
+		if (ar[k]==SHADOWOPACITY) {v=ar[++k]; eval(pf+'shadowopacity='+(olOp ? 0 : v)); return k; }
+		if (ar[k]==SHADOWIMAGE) { eval(pf+'shadowimage="'+ar[++k]+'"'); return k; }
+		if (ar[k]==SHADOWX) { eval(pf+'shadowx='+ar[++k]); return k; }
+		if (ar[k]==SHADOWY) { eval(pf+'shadowy='+ar[++k]); return k; }
+	}
+	
+	return -1;
+}
+
+
+// Function for MOUSEOUT/MOUSEOFF feature with shadow
+function shadow_cursorOff() {
+	var left= parseInt(over.style.left);
+	var top=parseInt(over.style.top);
+	var right=left+(o3_shadow ? o3_width : over.offsetWidth);
+	var bottom=top+(o3_shadow ? o3_aboveheight : over.offsetHeight);
+	
+	if (o3_x < left || o3_x > right || o3_y < top || o3_y > bottom) return true;
+	return false;
+}
+
+// Pre-hide processing to clean-up.
+function checkShadowPreHide() {
+	if (o3_shadow && o3_shadowopacity) cleanUpShadowEffects();
+	if (o3_shadow && (olIe4 && isMac) ) over.style.pixelWidth=over.style.pixelHeight = 0;
+}
+
+
+// Funciton that creates the actual shadow
+function generateShadow(content) {
+	var wd, ht, X = 0, Y = 0, zIdx = 0, txt, dpObj, puObj, bS= '', aPos, posStr=new Array();
+
+	if (!o3_shadow || (o3_shadowx == 0 && o3_shadowy == 0)) return;
+
+	X = Math.abs(o3_shadowx);
+	Y = Math.abs(o3_shadowy);
+	wd = parseInt(o3_width);
+	ht = (olNs4) ? over.clip.height : over.offsetHeight;
+
+	if (o3_shadowx == 0) {
+		if (o3_shadowy < 0) {
+		  posStr[0]=' left:0; top: 0';
+		  posStr[1]=' left:0; top: '+Y+'px';
+		} else if (o3_shadowy > 0) {
+		  posStr[0]=' left:0; top: '+Y+'px';
+		  posStr[1]=' left:0; top:0';
+		}
+	} else if (o3_shadowy == 0) {
+		if (o3_shadowx < 0) {
+		  posStr[0]=' left:0; top: 0';
+		  posStr[1]=' left: '+X+'px';
+		} else if (o3_shadowx > 0) {
+		  posStr[0]=' left: '+ X+'px; top: 0';
+		  posStr[1]=' left:0; top:0';
+		}
+	} else if (o3_shadowx > 0) {
+		if (o3_shadowy > 0) {
+		  posStr[0]=' left:'+ X+'px; top:'+Y+'px';
+		  posStr[1]=' left:0; top:0';
+		} else if (o3_shadowy < 0) {
+		  posStr[0]=' left:'+X+'px; top:0';
+		  posStr[1]=' left:0; top: '+Y+'px';
+		}
+	} else if (o3_shadowx < 0) {
+		if (o3_shadowy > 0) {
+		  posStr[0]=' left:0; top:'+Y+'px';
+		  posStr[1]=' left:'+X+'px; top:0';
+		} else if (o3_shadowy < 0) {
+		  posStr[0]=' left:0; top:0';
+		  posStr[1]=' left:'+X+'px; top:'+Y+'px';
+		}
+	}
+	
+	txt = (olNs4) ? '<div id="backdrop"></div>' : ((olIe55&&olHideForm) ? backDropSource(wd+X,ht+Y,zIdx++) : '') + '<div id="backdrop" style="position: absolute;'+posStr[0]+'; width: '+wd+'px; height: '+ht+'px; z-index: ' + (zIdx++) + '; ';
+
+	if (o3_shadowimage) {
+		bS='background-image: url('+o3_shadowimage+');';
+		if (olNs4) bkSet=1;
+	} else { 
+		bS='background-color: '+o3_shadowcolor +';';
+		if (olNs4) bkSet=2;
+	}
+
+	if (olNs4) {
+		txt += '<div id="PUContent">'+content+'</div>';
+	} else {
+		txt += bS+'"></div><div id="PUContent" style="position: absolute;'+posStr[1]+'; width: '+ wd+'px; z-index: '+(zIdx++)+';">'+content+'</div>';
+	}
+	
+	layerWrite(txt);
+
+	if (olNs4 && bkSet) {
+		dpObj = over.document.layers['backdrop'];
+		if (typeof dpObj == 'undefined') return;  // if shadow layer not found, then content layer won't be either
+		
+		puObj = over.document.layers['PUContent'];
+		wd = puObj.clip.width;
+		ht = puObj.clip.height;
+		aPos = posStr[0].split(';');
+		
+		dpObj.clip.width = wd;
+		dpObj.clip.height = ht;
+		dpObj.left = parseInt(aPos[0].split(':')[1]);
+		dpObj.top = parseInt(aPos[1].split(':')[1]);
+    
+    dpObj.bgColor = (bkSet == 1) ? null : o3_shadowcolor;
+		dpObj.background.src = (bkSet==2) ? null : o3_shadowimage;
+		dpObj.zIndex = 0;
+
+		aPos = posStr[1].split(';');
+		puObj.left = parseInt(aPos[0].split(':')[1]);
+		puObj.top = parseInt(aPos[1].split(':')[1]);
+		puObj.zIndex = 1;
+		
+	} else {
+		puObj = (olIe4 ? o3_frame.document.all['PUContent'] : o3_frame.document.getElementById('PUContent'));
+		dpObj = (olIe4 ? o3_frame.document.all['backdrop'] : o3_frame.document.getElementById('backdrop'));
+		ht = puObj.offsetHeight;
+		dpObj.style.height = ht + 'px';
+		
+		if (o3_shadowopacity) {
+			var op = o3_shadowopacity;
+			op = (op <= 100 ? op : 100);
+			
+			setBrowserOpacity(op,dpObj);
+		}
+	} 
+
+	// Set popup's new width and height values here so they are available in placeLayer()
+	o3_width = wd+X;
+	o3_aboveheight = ht+Y;
+}
+
+
+////////
+// SUPPORT FUNCTIONS
+////////
+
+// Cleans up opacity settings if any.
+function cleanUpShadowEffects() {
+	if (olNs4 || olOp) return;
+	var dpObj=(olIe4 ? o3_frame.document.all['backdrop'] : o3_frame.document.getElementById('backdrop'));
+	cleanUpBrowserOpacity(dpObj);
+}
+
+// multi browser opacity support
+function setBrowserOpacity(op,lyr){
+	if (olNs4||!op) return;  // if Ns4.x or opacity not given return;
+	lyr=(lyr) ? lyr : over;
+	if (olIe4&&typeof lyr.filters != 'undefined') {
+		lyr.style.filter='Alpha(Opacity='+op+')';
+		lyr.filters.alpha.enabled=true;
+	} else {
+		var sOp=(typeof(lyr.style.MozOpacity)!='undefined') ? 'MozOpacity' : (typeof(lyr.style.KhtmlOpacity)!='undefined' ? 'KhtmlOpacity' : (typeof(lyr.style.opacity)!='undefined' ? 'opacity' : '')); 
+		if (sOp) eval('lyr.style.'+sOp+'=op/100');
+	}
+}
+
+// multi-browser Opacity cleanup
+function cleanUpBrowserOpacity(lyr) {
+	if (olNs4) return;
+	lyr=(lyr) ? lyr : over;
+	if (olIe4&&(typeof lyr.filters != 'undefined'&&lyr.filters.alpha.enabled)) {
+		lyr.style.filter='Alpha(Opacity=100)';
+		lyr.filters.alpha.enabled=false;
+	} else {
+		var sOp=(typeof(lyr.style.MozOpacity)!='undefined') ? 'MozOpacity' : (typeof(lyr.style.KhtmlOpacity)!='undefined' ? 'KhtmlOpacity' : (typeof(lyr.style.opacity)!='undefined' ? 'opacity' : '')); 
+		if (sOp) eval('lyr.style.'+sOp+'=1.0');
+	}
+}
+
+// This routine is needed only for Ns4.x to allow use of popups with dropshadows and CSSCLASS at the same time on a page
+function shadowAdjust() {
+	if (!olNs4) return;
+	var fac = ol_shadowadjust;
+	if (olNs4) {
+		document.write('<style type="text/css">\n<!--\n');
+		document.write('#backdrop, #PUContent {position: absolute; left: '+fac*o3_shadowx+'px; top: '+fac*o3_shadowy+'px; }\n');
+		document.write('-->\n<' + '\/style>');
+	}
+}
+
+////////
+// PLUGIN REGISTRATIONS
+////////
+var before = (typeof rmrkPreface!='undefined' ? rmrkPreface : null);
+
+registerRunTimeFunction(setShadowVariables);
+registerCmdLineFunction(parseShadowExtras);
+registerHook("cursorOff",shadow_cursorOff,FREPLACE);
+registerHook("hideObject",checkShadowPreHide,FBEFORE);
+registerHook("createPopup",generateShadow,FAFTER,before);
+if (olInfo.meets(4.10)) registerNoParameterCommands('shadow');
+
+if (olNs4) shadowAdjust();  // write style rules for proper support of Ns4.x
+}
\ No newline at end of file
diff --git a/html/logo.jpg b/html/logo.jpg
new file mode 100644
index 0000000000..e5a41c40f2
Binary files /dev/null and b/html/logo.jpg differ
diff --git a/html/menu/images/menu2.gif b/html/menu/images/menu2.gif
new file mode 100644
index 0000000000..a738b7f9bf
Binary files /dev/null and b/html/menu/images/menu2.gif differ
diff --git a/html/menu/images/menu4.gif b/html/menu/images/menu4.gif
new file mode 100644
index 0000000000..5f76548a90
Binary files /dev/null and b/html/menu/images/menu4.gif differ
diff --git a/html/menu/images/menu4contact.gif b/html/menu/images/menu4contact.gif
new file mode 100644
index 0000000000..f0c8b9323c
Binary files /dev/null and b/html/menu/images/menu4contact.gif differ
diff --git a/html/menu/images/menu4drop.gif b/html/menu/images/menu4drop.gif
new file mode 100644
index 0000000000..588b8e4b61
Binary files /dev/null and b/html/menu/images/menu4drop.gif differ
diff --git a/html/menu/images/menu4home.gif b/html/menu/images/menu4home.gif
new file mode 100644
index 0000000000..99192f8562
Binary files /dev/null and b/html/menu/images/menu4home.gif differ
diff --git a/html/menu/images/menu4news.gif b/html/menu/images/menu4news.gif
new file mode 100644
index 0000000000..db976298fe
Binary files /dev/null and b/html/menu/images/menu4news.gif differ
diff --git a/html/menu/images/menu4products.gif b/html/menu/images/menu4products.gif
new file mode 100644
index 0000000000..dc80814f42
Binary files /dev/null and b/html/menu/images/menu4products.gif differ
diff --git a/html/menu/images/menu4services.gif b/html/menu/images/menu4services.gif
new file mode 100644
index 0000000000..a84c859035
Binary files /dev/null and b/html/menu/images/menu4services.gif differ
diff --git a/html/menu/images/menu4site.gif b/html/menu/images/menu4site.gif
new file mode 100644
index 0000000000..bc9e3cc6fd
Binary files /dev/null and b/html/menu/images/menu4site.gif differ
diff --git a/html/menu/images/menu4subnews.gif b/html/menu/images/menu4subnews.gif
new file mode 100644
index 0000000000..389e7498a4
Binary files /dev/null and b/html/menu/images/menu4subnews.gif differ
diff --git a/html/menu/images/menu4subnews2.gif b/html/menu/images/menu4subnews2.gif
new file mode 100644
index 0000000000..843c98947b
Binary files /dev/null and b/html/menu/images/menu4subnews2.gif differ
diff --git a/html/menu/images/menu4subnews3.gif b/html/menu/images/menu4subnews3.gif
new file mode 100644
index 0000000000..2d9ed0badc
Binary files /dev/null and b/html/menu/images/menu4subnews3.gif differ
diff --git a/html/menu/images/menu4subprod.gif b/html/menu/images/menu4subprod.gif
new file mode 100644
index 0000000000..d13a5b6589
Binary files /dev/null and b/html/menu/images/menu4subprod.gif differ
diff --git a/html/menu/images/menu4subprod2.gif b/html/menu/images/menu4subprod2.gif
new file mode 100644
index 0000000000..4803c95dba
Binary files /dev/null and b/html/menu/images/menu4subprod2.gif differ
diff --git a/html/menu/images/menu4subprod3.gif b/html/menu/images/menu4subprod3.gif
new file mode 100644
index 0000000000..31e50e180b
Binary files /dev/null and b/html/menu/images/menu4subprod3.gif differ
diff --git a/html/menu/images/menu4subserv.gif b/html/menu/images/menu4subserv.gif
new file mode 100644
index 0000000000..6e17a60b14
Binary files /dev/null and b/html/menu/images/menu4subserv.gif differ
diff --git a/html/menu/images/menu4subserv2.gif b/html/menu/images/menu4subserv2.gif
new file mode 100644
index 0000000000..860de47c2c
Binary files /dev/null and b/html/menu/images/menu4subserv2.gif differ
diff --git a/html/menu/images/menu4subserv3.gif b/html/menu/images/menu4subserv3.gif
new file mode 100644
index 0000000000..9dad8d1759
Binary files /dev/null and b/html/menu/images/menu4subserv3.gif differ
diff --git a/html/menu/images/menu4subserv4.gif b/html/menu/images/menu4subserv4.gif
new file mode 100644
index 0000000000..23a8d399b9
Binary files /dev/null and b/html/menu/images/menu4subserv4.gif differ
diff --git a/html/menu/images/menu4subserv5.gif b/html/menu/images/menu4subserv5.gif
new file mode 100644
index 0000000000..33e52d7bb6
Binary files /dev/null and b/html/menu/images/menu4subserv5.gif differ
diff --git a/html/menu/images/menu4top.gif b/html/menu/images/menu4top.gif
new file mode 100644
index 0000000000..7ccb75da78
Binary files /dev/null and b/html/menu/images/menu4top.gif differ
diff --git a/html/menu/images/next.gif b/html/menu/images/next.gif
new file mode 100644
index 0000000000..f4ae822b3f
Binary files /dev/null and b/html/menu/images/next.gif differ
diff --git a/html/menu/images/previous.gif b/html/menu/images/previous.gif
new file mode 100644
index 0000000000..428561b99f
Binary files /dev/null and b/html/menu/images/previous.gif differ
diff --git a/html/menu/images/stop.gif b/html/menu/images/stop.gif
new file mode 100644
index 0000000000..12e57a81a2
Binary files /dev/null and b/html/menu/images/stop.gif differ
diff --git a/html/menu/images/sub2a.gif b/html/menu/images/sub2a.gif
new file mode 100644
index 0000000000..2de1089ab8
Binary files /dev/null and b/html/menu/images/sub2a.gif differ
diff --git a/html/menu/menu.css b/html/menu/menu.css
new file mode 100644
index 0000000000..c04e3a2cd3
--- /dev/null
+++ b/html/menu/menu.css
@@ -0,0 +1,105 @@
+/* ================================================================ 
+This copyright notice must be untouched at all times.
+
+The original version of this stylesheet and the associated (x)html
+is available at http://www.cssplay.co.uk/menus/drop_examples.html
+Copyright (c) 2005-2007 Stu Nicholls. All rights reserved.
+This stylesheet and the assocaited (x)html may be modified in any 
+way to fit your requirements.
+=================================================================== */
+/* commom style for all browsers */
+.container4 {
+text-align:center; background:#eee url(menu4.gif); border:1px solid #e5e5e5; height:30px;
+}
+.menu4 {
+  text-align:left; 
+  font-family: verdana, sans-serif; 
+  position:relative; 
+  font-size:x-small; 
+  background:transparent; 
+  width:600px; 
+  height:30px; 
+}
+.menu4 ul {
+padding:0; margin:0; list-style-type: none;
+}
+.menu4 ul li {
+float:left; position:relative; margin: 0px;
+}
+.menu4 ul li.home {background:transparent url(menu4home.gif);}
+.menu4 ul li.products {background:transparent url(menu4products.gif);}
+.menu4 ul li.services {background:transparent url(menu4services.gif);}
+.menu4 ul li.contact {background:transparent url(menu4contact.gif);}
+.menu4 ul li.site {background:transparent url(menu4site.gif);}
+.menu4 ul li.news {background:transparent url(menu4news.gif);}
+.menu4 ul li.subprod {background:transparent url(menu4subprod.gif) no-repeat;}
+.menu4 ul li.subprod2 {background:transparent url(menu4subprod2.gif) no-repeat;}
+.menu4 ul li.subprod3 {background:transparent url(menu4subprod3.gif) no-repeat;}
+.menu4 ul li.subnews {background:transparent url(menu4subnews.gif) no-repeat;}
+.menu4 ul li.subnews2 {background:transparent url(menu4subnews2.gif) no-repeat;}
+.menu4 ul li.subnews3 {background:transparent url(menu4subnews3.gif) no-repeat;}
+.menu4 ul li.subserv {background:transparent url(menu4subserv.gif) no-repeat;}
+.menu4 ul li.subserv2 {background:transparent url(menu4subserv2.gif) no-repeat;}
+.menu4 ul li.subserv3 {background:transparent url(menu4subserv3.gif) no-repeat;}
+.menu4 ul li.subserv4 {background:transparent url(menu4subserv4.gif) no-repeat;}
+.menu4 ul li.subserv5 {background:transparent url(menu4subserv5.gif) no-repeat;}
+.menu4 ul li.subsubl {background:#eee url(next.gif) no-repeat top left;}
+.menu4 ul li.subsubr {background:#eee url(previous.gif) no-repeat 145px 0;}
+
+.menu4 ul li a, .menu4 ul li a:visited {
+display:block; text-decoration:none; width:70px; height:30px; color:#000; padding-left:30px; line-height:29px;
+}
+* html .menu4 ul li a, .menu4 ul li a:visited {
+width:100px; width:70px;
+}
+
+.menu4 ul li ul {
+visibility:hidden; position:absolute; top:0; left:0; height:0; overflow:hidden;
+}
+.menu4 table {
+margin:-1px; border-collapse:collapse; font-size:1em;
+}
+
+/* fist line style for IE7 and non-IE browsers and the second line for IE5.5 and IE6 */
+.menu4 ul li:hover a,
+.menu4 ul li a:hover {
+color:#c00; text-decoration:underline; border:0;
+}
+.menu4 ul li:hover ul,
+.menu4 ul li a:hover ul {
+visibility:visible; width:170px; height:auto; position:absolute; top:30px; left:-1px; background:#fff; border:1px solid #909; overflow:visible;
+}
+.menu4 ul li:hover ul li a,
+.menu4 ul li a:hover ul li a {
+display:block; background:transparent; text-decoration:none; color:#c00; height:auto; line-height:1.5em; padding:5px 10px 5px 35px; width:170px; w\idth:125px;
+}
+.menu4 ul li:hover ul li a.drop,
+.menu4 ul li a:hover ul li a.drop {
+display:block; color:#000; height:auto; line-height:1.5em; padding:5px 10px 5px 35px; width:170px; w\idth:125px;
+}
+.menu4 ul li:hover ul li ul,
+.menu4 ul li a:hover ul li a ul {
+visibility:hidden; position:absolute; top:0; left:0; height:0; overflow:hidden;
+}
+.menu4 ul li:hover ul li a:hover,
+.menu4 ul li a:hover ul li a:hover {
+color:#00f; text-decoration:underline;
+}
+.menu4 ul li:hover ul li:hover ul,
+.menu4 ul li a:hover ul li a:hover ul {
+visibility:visible; position:absolute; top:0; color:#000; left:166px; height:auto; border:1px solid #909;
+}
+.menu4 ul li:hover ul li:hover ul.left,
+.menu4 ul li a:hover ul li a:hover ul.left {
+left:-166px;
+}
+.menu4 ul li:hover ul li:hover ul li a,
+.menu4 ul li a:hover ul li a:hover ul li a {
+display:block; color:#00f; height:auto; line-height:1.5em; padding:5px 10px 4px 35px; width:170px; w\idth:140px;
+}
+* html .menu4 ul li a:hover ul li a:hover ul li a {padding:4px 10px 4px 35px;}
+
+.menu4 ul li:hover ul li:hover ul li:hover a,
+.menu4 ul li a:hover ul li a:hover ul li a:hover {
+color:#000; text-decoration:underline;
+}
diff --git a/html/menu/menu.php b/html/menu/menu.php
new file mode 100644
index 0000000000..a1d9ab4f24
--- /dev/null
+++ b/html/menu/menu.php
@@ -0,0 +1,68 @@
+<html>
+<head>
+  <link href="menu.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+<div class="container4">
+<div class="menu4">
+<ul>
+	<li class="home"><a href="#nogo">Home</a></li>
+	<li class="products"><a class="drop" href="#nogo">Products<!--[if IE 7]><!--></a><!--<![endif]-->
+	<!--[if lte IE 6]><table><tr><td><![endif]-->
+	<ul>
+		<li class="subprod"><a href="#nogo">Mobiles</a></li>
+		<li class="subprod2"><a href="#nogo">Photoframes</a></li>
+		<li class="subprod2"><a href="#nogo">Tripods</a></li>
+		<li class="subprod"><a href="#nogo">Memory cards</a></li>
+		<li class="subprod3"><a class="drop" href="#nogo">Cameras<!--[if IE 7]><!--></a><!--<![endif]-->
+		<!--[if lte IE 6]><table><tr><td><![endif]-->
+		<ul>
+			<li class="subsubl"><a href="#nogo">SLRs</a></li>
+			<li class="subsubl"><a href="#nogo">Compact</a></li>
+			<li class="subsubl"><a href="#nogo">Digital</a></li>
+			<li class="subsubl"><a href="#nogo">Video</a></li>
+		</ul>
+		<!--[if lte IE 6]></td></tr></table></a><![endif]-->
+		</li>
+		<li class="subprod2"><a href="#nogo">Camcorders</a></li>
+		<li class="subprod"><a href="#nogo">Accessories</a></li>
+	</ul>
+	<!--[if lte IE 6]></td></tr></table></a><![endif]-->
+	</li>
+	<li class="services"><a class="drop" href="#nogo">Services<!--[if IE 7]><!--></a><!--<![endif]-->
+	<!--[if lte IE 6]><table><tr><td><![endif]-->
+	<ul>
+		<li class="subserv4"><a href="#nogo">Photography</a></li>
+		<li class="subserv3"><a href="#nogo">Video editing</a></li>
+		<li class="subserv"><a href="#nogo">Web site Design and Hosting</a></li>
+		<li class="subserv5"><a href="#nogo">Reference guides</a></li>
+		<li class="subserv2"><a href="#nogo">Tutorials</a></li>
+	</ul>
+	<!--[if lte IE 6]></td></tr></table></a><![endif]-->
+	</li>
+	<li class="contact"><a href="#nogo">Contact us</a></li>
+	<li class="site"><a href="#nogo">Site Map</a></li>
+	<li class="news"><a class="drop" href="#nogo">News<!--[if IE 7]><!--></a><!--<![endif]-->
+	<!--[if lte IE 6]><table><tr><td><![endif]-->
+	<ul>
+		<li class="subnews3"><a href="#nogo">Breaking</a></li>
+		<li class="subnews"><a href="#nogo">Latest</a></li>
+		<li class="subnews"><a href="#nogo">May 2006</a></li>
+		<li class="subnews2"><a class="drop" href="#nogo">News Archives and Articles<!--[if IE 7]><!--></a><!--<![endif]-->
+		<!--[if lte IE 6]><table><tr><td><![endif]-->
+		<ul class="left">
+			<li class="subsubr"><a href="#nogo">April 2006</a></li>
+			<li class="subsubr"><a href="#nogo">March 2006</a></li>
+			<li class="subsubr"><a href="#nogo">February 2006</a></li>
+			<li class="subsubr"><a href="#nogo">January 2006</a></li>
+		</ul>
+		<!--[if lte IE 6]></td></tr></table></a><![endif]-->
+		</li>
+	</ul>
+	<!--[if lte IE 6]></td></tr></table></a><![endif]-->
+	</li>
+</ul>
+</div>
+</div>
+</body>
+</html>
diff --git a/html/menu/menu2.php b/html/menu/menu2.php
new file mode 100644
index 0000000000..ddac0adc5b
--- /dev/null
+++ b/html/menu/menu2.php
@@ -0,0 +1,156 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml2/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<style type="text/css">
+ /* common styling */
+.menu2 {
+float:left; width:100%; font-family: verdana, arial, sans-serif; font-size:11px; border:1px solid #aaaaaa;
+background:#ddd url(images/menu2.gif) repeat-x; 
+}
+.menu2 ul {
+padding:0;margin:0;list-style-type:none;
+}
+.menu2 ul li {
+float:left; position:relative;
+}
+.menu2 ul li.group {display:block; text-indent:10px; background:#666; color:#ff0; width:152px; padding:4px 0;}
+
+.menu2 ul li a, .menu2 ul li a:visited {
+float:left; display:block; text-decoration:none; color:#444; padding:0px 16px; line-height:30px; height:30px;
+}
+
+.menu2 ul li:hover {width:auto;}
+
+.menu2 ul li a:hover {background:#aaa url(images/sub2a.gif); color:#356AA0;}
+
+.menu2 ul li:hover a {background:#aaa url(images/sub2a.gif); color:#356AA0;}
+
+.menu2 ul li ul {
+display: none;
+}
+.menu2 table {
+margin:0; border-collapse:collapse; font-size:11px; position:absolute; top:0; left:0;
+}
+
+/* specific to non IE browsers */
+.menu2 ul li:hover ul {
+display:block; position:absolute;top:29px; background:#aaa; margin-top:1px; left:0; width:140px;
+}
+
+.menu2 ul li:hover ul.scroller {
+height:138px; width:172px; overflow:auto;}
+
+.menu2 ul li:hover ul.endstop {
+left:-90px;
+}
+.menu2 ul li:hover ul li ul {
+display: none;
+}
+.menu2 ul li:hover ul li a {
+display:block; background:#aaa; color:#fff;height:auto;line-height:15px;padding:4px 10px; width:120px;
+}
+.menu2 ul li:hover ul li a.drop {
+background:#888;
+}
+.menu2 ul li:hover ul li a:hover {
+color:#ff0; background: #888;
+}
+.menu2 ul li:hover ul li a:hover.drop {
+background: #888; color:#ff0;
+}
+.menu2 ul li:hover ul li:hover ul {
+display:block; position:absolute; left:153px; top:-70px; color:#000; left:152px; height:138px; width:172px; overflow:auto; background:#888;
+}
+.menu2 ul li:hover ul li:hover ul li a {background:#888;}
+.menu2 ul li:hover ul li:hover ul li.group {width:152px; padding:5px 0;}
+
+
+.menu2 ul li:hover ul li:hover ul.left {
+left:-172px;
+}
+.menu2 ul li:hover ul li:hover ul li a:hover {background:#666; color:#0ff;}
+
+/* specific to IE5.5 and IE6 browsers */
+.menu2 ul li a:hover ul {
+display:block;position:absolute;top:30px; t\op:29px; background:#aaa;left:0; marg\in-top:1px;
+}
+.menu2 ul li a:hover ul.scroller {
+height:138px; overflow:auto;}
+
+.menu2 ul li a:hover ul.endstop {
+left: -90px;
+}
+.menu2 ul li a:hover ul li a {
+display:block; color:#fff; height:1px; line-height:15px; padding:4px 16px; width:152px; w\idth:120px;
+}
+.menu2 ul li a:hover ul li a.drop {
+background:#888; padding-bottom:5px;
+}
+.menu2 ul li a:hover ul li a ul {
+visibility:hidden; position:absolute; height:0; width:0;
+}
+.menu2 ul li a:hover ul li a:hover {
+color:#ff0; background: #888;
+}
+.menu2 ul li a:hover ul li a:hover.drop {
+ background: #888; color:#ff0;
+}
+.menu2 ul li a:hover ul li a:hover ul {
+visibility:visible; position:absolute; top:-69px; t\op:-70px; color:#000; left:152px; height:138px; width:172px; overflow:auto; background:#888;
+}
+.menu2 ul li a:hover ul li a:hover ul.left { left:-170px; }
+
+.menu2 ul li a:hover ul li a:hover ul li a:hover {background:#666; color:#0ff;}
+
+.left {clear:both;}
+
+</style>
+
+</head>
+<body>
+
+<div class="menu2">
+<ul>
+<li><a href="/"><img src='http://demo.project-observer.org/images/16/lightning.png' border=0 align=absmiddle> Status
+<!--[if IE 7]><!--></a><!--<![endif]-->
+        <table><tr><td>
+        <ul>
+        <li><a href="?page=eventlog"><img src='http://demo.project-observer.org/images/16/information.png' border=0 align=absmiddle> Eventlog</a></li>
+        <li><a href="?page=alerts"><img src='http://demo.project-observer.org/images/16/exclamation.png' border=0 align=absmiddle> Alerts</a></li>
+        </ul>
+        </td></tr></table>
+<!--[if lte IE 6]></a><![endif]-->
+
+</li>
+</ul>
+<ul>
+<li><a href="?page=devices"><img src='http://demo.project-observer.org/images/16/server.png' border=0 align=absmiddle> Devices
+<!--[if IE 7]><!--></a><!--<![endif]-->
+	<table><tr><td>
+	<ul>
+	<li><a href="?page=devices&type=server"><img src='http://demo.project-observer.org/images/16/server.png' border=0 align=absmiddle> Servers</a></li>
+	<li><a href="?page=devices&type=network"><img src='http://demo.project-observer.org/images/16/arrow_switch.png' border=0 align=absmiddle> Network</a></li>
+	<li><a href="?page=devices&type=firewall"><img src='http://demo.project-observer.org/images/16/shield.png' border=0 align=absmiddle> Firewalls</a></li>
+        <li><hr width=140 /></li>
+	<li><a href="?page=devices&status=0"><img src='http://demo.project-observer.org/images/16/server_error.png' border=0 align=absmiddle> Alerted Devices</a></li>
+        <li><hr width=140 /></li>
+        <li><a href="?page=addhost"><img src='http://demo.project-observer.org/images/16/server_add.png' border=0 align=absmiddle> Add Device</a></li>
+        <li><a href="?page=delhost"><img src='http://demo.project-observer.org/images/16/server_delete.png' border=0 align=absmiddle> Delete Device</a></li>
+	</ul>
+	</td></tr></table>
+<!--[if lte IE 6]></a><![endif]-->
+</li>
+<li><a href="?page=services"><img src='http://demo.project-observer.org/images/16/cog.png' border=0 align=absmiddle> Services
+<!--[if IE 7]><!--></a><!--<![endif]-->
+	<table><tr><td>
+	<ul>
+	<li><a href="?page=services&status=0"><img src='http://demo.project-observer.org/images/16/cog_error.png' border=0 align=absmiddle> Down Services</a></li>
+	</ul>
+	</td></tr></table>
+<!--[if lte IE 6]></a><![endif]-->
+</li>
+<li><a class="menu2four" href="?page=locations"><img src='http://demo.project-observer.org/images/16/building.png' border=0 align=absmiddle> Locations</a></li>
+<li style="float: right;"><a href="?page=configuration"><img src='http://demo.project-observer.org/images/16/wrench.png' border=0 align=absmiddle> Configuration</a></li>
+</ul>
+</div>
+</body>
diff --git a/html/menu/simple.css b/html/menu/simple.css
new file mode 100644
index 0000000000..9090934c26
--- /dev/null
+++ b/html/menu/simple.css
@@ -0,0 +1,161 @@
+/*
+
+//
+// Copyright (C) Julian I. Kamil <julian.kamil@gmail.com>
+// No warranty is provided.  Use at your own risk.
+//
+// Commercial support is available through ESV Media Group
+// who can be reached at: http://www.ESV-i.com/.
+//
+// Name: simple.css
+// Author: Julian I. Kamil <julian.kamil@gmail.com>
+// Created: 2005-05-18
+// Description:
+//     This is a simple skin for PmWiki. Please see:
+//         http://www.madhckr.com/project/PmWiki/SimpleSkin
+//     for a live example and doumentation.
+//
+// $Id: simple.css,v 1.3 2005/09/14 15:14:27 julian Exp $
+//
+// History:
+//     2005-05-18  jik  Created.
+//     2005-08-16  jik  Simplified and cleaned up.
+//
+
+*/
+
+body {
+    margin: 0px; padding: 0px 0px 0px 0px; 
+    background-color: #fff; color: #666;
+    font: 10pt Verdana;
+    line-height: 20px;
+}
+
+table { border-collapse: collapse; margin: 0px; }
+table tr td { border: 0px solid #ddd; padding: 0px 10px; vertical-align: top; }
+form { margin: 0px; padding: 0px; }
+hr { border: 0px; height: 1px; background-color: #ccc; color: #ccc; }
+p { margin: 0px; padding: 0px; }
+
+ul { margin: 0px 24px; padding: 0px; list-style: disc outside; }
+ul ul { margin-top: 0px; padding-top: 0px; list-style: circle outside; }
+ul ul ul { margin-top: 0px; padding-top: 0px; list-style: square outside; }
+
+a { text-decoration:none; color: #00f; }
+a:visited { text-decoration:none; color: #00f; }
+a:hover { text-decoration:underline; color: #00f; }
+a:active { color: #00f; }
+
+.vspace { margin-top: 4px; margin-bottom: 4px; }
+p.vspace { padding-top: 3px; padding-bottom: 3px; }
+.content-mat { padding: 10px; margin: auto; background: none; }
+.clearer{ clear: both; display: block;  margin: 0px; padding: 0px; height: 0px; line-height: 1px; font-size: 0px; }
+.borderless-table tr td { border: none }
+
+#header { width: 100%; height: 90px; margin: 0px; text-align: left; background-color: #000; }
+#header #page-title { color: #eeeeee; font: 18pt Arial; font-weight: bold; padding: 15px 8px 8px 15px; }
+#header #page-subtitle { color: #eeeeee; font: 12pt Arial; font-weight: bold; padding: 0px 8px 8px 15px; }
+#header a { color: #eeeeee; }
+
+#main { 
+    width: 100%; margin: 0px 0px 0px 0px; 
+    border-bottom: 1px solid transparent; 
+}
+
+#main h1 { font-size: 12pt; margin: 0px; padding: 0px; }
+#main h2 { font-size: 11pt; margin: 0px; padding: 0px; }
+#main h3 { font-size: 10pt; margin: 0px; padding: 0px; }
+#main h4 { font-size:  9pt; margin: 0px; padding: 0px; }
+
+#content { margin: 0px; text-align: left; padding: 0px; }
+
+#footer {
+    width: 100%; height: 40px;
+    border: 1px none #ccc; 
+    margin: 0px  0px 0px 0px; padding: 0px 0px 8px 0px;
+}
+
+#copyright { margin: 0px 12px 0px 11px; padding: 2px 0px; border-top: 1px solid #ddd; font-size: 8pt; }
+
+#topnav {
+    margin: 0px 0px 0px 0px;
+    padding: 0px 0px 0px 0px;
+    text-align: right;
+    font-size: 11px; font-weight: bold;
+}
+
+#topnav ul { margin: 15px 0px 0px 0px; padding: 0px; }
+#topnav ul li { list-style: none; display: text-indent: 0px; display: inline; padding-right: 10px; }
+#topnav a { color: #eee;}
+
+
+#menubar {
+    margin: 0px 0px 0px 0px;
+    padding: 3px 15px 3px 15px;
+    border-bottom: 1px solid #e8e8e8;
+    background-color: #e8e8e8;
+    text-align: left;
+    font-size: 10px; font-weight: bold;
+}
+
+#menubar ul { margin: 0px; padding: 0px; }
+#menubar ul li { list-style: none; display: inline; text-indent: 0px; text-align: left; padding-right: 15px; }
+#menubar a { color: #666; }
+
+#popupmenu a { color: #aaa; }
+#popupmenu a:hover { color: #fff; }
+#popupmenu li:hover { background: #444; color: #eec; }
+#popupmenu li:hover ul { display: block; }
+#popupmenu ul { padding: 0px; margin: 0px; list-style: none; }
+#popupmenu ul li { padding: 0px 8px; float: left; position: relative; }
+
+#popupmenu li ul {
+    display: none;
+    position: absolute;
+    top: 8px;
+    right: 0px;
+    width: 180px;
+    margin-top: 10px;
+    border-top: 1px solid #888;
+    border-bottom: 1px solid #888;
+    padding-top: 3px;
+    padding-bottom: 4px;
+    background: #444;
+}
+
+#popupmenu li ul li {
+    display: block;
+    clear: both;
+    color: #aaa;
+}
+
+#popupmenu li ul li:hover { color: #aaa; }
+
+#toext { margin-top: 12px; margin-bottom: 12px; font-family: monospace; }
+
+.graphcell, .ifcell, .datacell { margin: 5px; left; padding: 10px; border: 0px; background: #e8e8e8; float: left; }
+.ifcell { float: left; clear: right; background:none; }
+
+.nofloat { clear: left; }
+
+.servercell, .corecell, .othercell, .custcell, .unlabelledcell, .cpecell, .unknowncell {
+float: left; padding: 0px; margin: 3px; border: 1px; height: 100px; width: 140px;
+text-align: center;
+}
+
+.corecell, .servercell, .othercell {
+background: #ffa0a0;
+}
+
+.custcell, .cpecell {
+background: #ffe0e0;
+}
+
+.unknowncell {
+background: #ddd;
+}
+
+.unlabelledcell {
+background: #eee;
+}
+
diff --git a/html/netcmd.php b/html/netcmd.php
new file mode 100644
index 0000000000..106fc66e4a
--- /dev/null
+++ b/html/netcmd.php
@@ -0,0 +1,20 @@
+<?php
+
+switch ($_GET[cmd]) {
+  case 'whois':
+    $output = `/usr/bin/whois $_GET[query] | grep -v \%`;
+    break;
+  case 'ping':
+    $output = `/bin/ping $_GET[query]`;
+    break;
+  case 'tracert':
+    $output = `/usr/sbin/traceroute $_GET[query]`;
+    break;
+  case 'nmap':
+    $output = `/usr/bin/nmap $_GET[query]`;
+    break;
+}
+$output = trim($output);
+echo("<pre>$output</pre>");
+
+?>
diff --git a/html/network/includes/.confirm_login.php.swp b/html/network/includes/.confirm_login.php.swp
new file mode 100644
index 0000000000..e542b03859
Binary files /dev/null and b/html/network/includes/.confirm_login.php.swp differ
diff --git a/html/network/includes/.login.inc.php.swo b/html/network/includes/.login.inc.php.swo
new file mode 100644
index 0000000000..e4331bcd51
Binary files /dev/null and b/html/network/includes/.login.inc.php.swo differ
diff --git a/html/network/includes/.login.inc.php.swp b/html/network/includes/.login.inc.php.swp
new file mode 100644
index 0000000000..f8e57a0a5e
Binary files /dev/null and b/html/network/includes/.login.inc.php.swp differ
diff --git a/html/network/includes/authenticate.inc b/html/network/includes/authenticate.inc
new file mode 100644
index 0000000000..1fb38e34b9
--- /dev/null
+++ b/html/network/includes/authenticate.inc
@@ -0,0 +1,40 @@
+<?php 
+
+session_start();  
+
+if($_GET['logout']) {
+  session_destroy();
+}
+
+// convert username and password from _POST or _SESSION 
+if($_SERVER['PHP_AUTH_PW']) {
+  $_SESSION['username']=$_SERVER['PHP_AUTH_USER'];
+  $_SESSION['password']=$_SERVER['PHP_AUTH_PW'];
+} elseif($_POST){ 
+  $_SESSION['username']=$_POST["username"]; 
+  $_SESSION['password']=$_POST["password"];   
+} 
+
+// query for a user/pass match 
+$password = $_SESSION['password'];
+$encrypted = md5($password);
+
+$sql = "select username, level from users where username='$_SESSION[username]' and password='$encrypted'"; 
+
+$row = mysql_fetch_row(mysql_query($sql));
+
+$result = $row[0];
+
+$auth_level = $row[1];
+
+if ( $_SESSION['username'] != "" && $result == $_SESSION['username'] ) {
+  $auth_user = $result;
+} else {
+   header('WWW-Authenticate: Basic realm="Vostron Administration"');
+   header('HTTP/1.0 401 Unauthorized');
+   echo 'Authentication required.';
+   exit;
+
+}
+
+?>
diff --git a/html/network/includes/hostbox.inc b/html/network/includes/hostbox.inc
new file mode 100644
index 0000000000..b6a037c5b1
--- /dev/null
+++ b/html/network/includes/hostbox.inc
@@ -0,0 +1,30 @@
+<?php
+
+   echo ("<p class=device-header><a href='?page=device&id=$device[id]'>$device[hostname]</a></p>");
+   if($device[location] != "") { $locationhtml = $device[location]; }
+
+   $type = strtolower($device['os']);
+   if(file_exists("../images/os/$type" . ".gif")){ $image = "<img src='../images/os/$type.gif' align=absmiddle>"; }
+
+   if ($device['os'] == "IOS") {
+      echo ("<p class=box-desc>
+             <div style='float: left; padding: 10px;'>$image</div>
+             $device[hardware] <br /> $device[os] $device[version] <br />
+             $device[features] <br />
+             $locationhtml<br />
+             Up " . formatUptime($device[uptime]) ."</p>");
+   } else {
+      echo ("<p class=box-desc>$image $device[os] $device[version] ($device[features])
+             <br />$locationhtml <br />
+             Up " . formatUptime($device[uptime]) ."</p>");
+   }
+
+   if($_GET['page'] == 'device') {
+     if($_GET['graphs'] == 'yes') {
+       echo("<p class=interface><a href='?page=device&id=$_GET[id]'><img src='/images/neu/hide-graphs.png' border=0 align=absmiddle> Hide Graphs</a></p>");
+     } else {
+       echo("<p class=interface><a href='?page=device&id=$_GET[id]&graphs=yes'><img src='/images/neu/show-graphs.png' border=0 align=absmiddle> Show Graphs</a></p>");
+     }
+   }
+
+?>
diff --git a/html/network/includes/ifbox.inc b/html/network/includes/ifbox.inc
new file mode 100644
index 0000000000..06fdc5c0d8
--- /dev/null
+++ b/html/network/includes/ifbox.inc
@@ -0,0 +1,23 @@
+<?php
+
+  $iftype = fixiftype($interface[ifType]);
+
+  echo ("<p class=interface-header>$inf</p>");
+  if($ifalias && $ifalias != "") { echo("<span class=box-desc>$ifalias</span><br />"); }
+  if($iftype && $iftype != "") { echo("<span class=box-desc>$iftype</span> "); 
+    if($mac && $mac != "") { echo("<span class=box-desc>$mac</span><br />");
+    } else { echo("<br />"); }
+  }
+
+  if($interface[ifType] != "softwareLoopback") { 
+    if($speed == '0') { $speed = "0bps"; }
+    echo("<span class=box-desc>$speed");
+    if($interface[ifDuplex] != unknown) { echo(" / $interface[ifDuplex]-duplex"); }
+    if($interface[ifMtu] && $interface[ifMtu] != "") { echo(" / $interface[ifMtu]MTU</span>"); }
+    echo("</span><br />");
+  }
+
+  echo ("<span class=box-desc><b>$status</b></span> <br />");
+
+
+?>
diff --git a/html/network/includes/print-interface.inc b/html/network/includes/print-interface.inc
new file mode 100644
index 0000000000..767dd7c70a
--- /dev/null
+++ b/html/network/includes/print-interface.inc
@@ -0,0 +1,95 @@
+<?php
+
+
+     $if_id = $interface['id'];
+     $inf = fixifName($interface['if']);
+     $ifIndex = $interface['ifIndex'];
+     $ifclass = ifclass($interface['up'], $interface['up_admin']);
+     $ifname = $interface['name'];
+     if($ifname) {$ifname = $ifname . "</br>";}
+     echo("<tr>
+             <td valign=top width=250>
+               <a class='$ifclass' href='?page=interface&id=$interface[id]'>
+                 $i. $inf
+               </a><br /><span class=interface-desc>$ifname</span>");
+     if($ifalias && $ifalias != "") { echo("<span class=interface-desc>$ifalias</span><br />"); }
+     unset ($break);
+
+     $iftype = fixiftype($interface[ifType]);
+if($show_all) {
+  if($iftype && $iftype != "") { echo("<span class=box-desc>$iftype</span> ");
+    if($mac && $mac != "") { echo("<span class=box-desc>$mac</span><br />");
+    } else { echo("<br />"); }
+  }
+
+  if($interface[ifType] != "softwareLoopback") {
+    if($speed == '0') { $speed = "0bps"; }
+    echo("<span class=box-desc>$speed");
+    if($interface[ifDuplex] != unknown) { echo(" / $interface[ifDuplex]-duplex"); }
+    if($interface[ifMtu] && $interface[ifMtu] != "") { echo(" / $interface[ifMtu]MTU</span>"); }
+    echo("</span><br />");
+  }
+
+  echo ("<span class=box-desc><b>$status</b></span> <br />");
+}
+
+     $ipdata = mysql_query("SELECT * FROM `ipaddr` WHERE `interface_id` = '$interface[id]'");
+     while($ip = mysql_fetch_Array($ipdata)) {
+       echo("$break <a href=\"javascript:popUp('/whois.php?query=$ip[addr]')\">$ip[addr]/$ip[cidr]</a>");
+       $break = "<br />";
+     }
+     echo("</span></td>");
+     echo("<td valign=top class=interface-desc>");
+
+     if ( strpos($inf, "oopback") === false ) {
+
+       $link_query = mysql_query("select I.if, D.hostname, D.id AS dev_id, I.id from links AS L, interfaces AS I, devices AS D WHERE L.src_if = '$if_id' AND L.dst_if = I.id AND I.host = D.id");
+       while($link = mysql_fetch_array($link_query)) {
+         $link_if = fixifName($link['if']);
+         echo("--> <a href='?page=interface&id=$link[id]'>$link_if</a> on <a href='?page=device&id=$link[dev_id]'>$link[hostname]</a><br />");
+         $br = "<br />";
+       }
+       $adj_sql = "SELECT * FROM networks AS N, interfaces AS I, adjacencies AS A ";
+        $adj_sql = $adj_sql . "WHERE I.id = A.interface_id AND A.network_id = N.id ";
+        $adj_sql = $adj_sql . "AND I.id = '$if_id'";
+        $adj_query = mysql_query("$adj_sql");
+        while($adjs = mysql_fetch_array($adj_query)) {
+          $network_id = $adjs['network_id'];
+          $newsql = "SELECT *, I.id AS iid, D.id AS did FROM adjacencies AS A, networks as N, interfaces as I, devices as D ";
+          $newsql = $newsql . "WHERE N.id = '$network_id'  AND A.network_id = N.id AND I.id = A.interface_id AND D.id = I.host ";
+          $newsql = $newsql . "AND D.id != '$device[id]' AND I.if NOT LIKE '%loopback%' GROUP BY D.id ORDER BY D.hostname";
+          $new_query = mysql_query($newsql);
+          while($new = mysql_fetch_array($new_query)) {
+            if ($new['status'] == '0') { $class = "red"; } else { $class = "blue"; }
+            if ($new['ignore'] == '1') {
+              $class = "list-device-ignored";
+              if ($new['status'] == '1') { $class = "green"; }
+            }
+            $this_ifid = $new['iid'];
+            $this_hostid = $new['did'];
+            $this_hostname = $new['hostname'];
+            $this_ifname = fixifName($new['if']);
+            $wq = mysql_query("select count(*) FROM links  WHERE dst_if = '$this_ifid' AND src_if = $if_id;");
+            if (@mysql_result($wq, 0) == '0') {
+              echo("$br &nbsp;|- <a href=?page=interface&id=$this_ifid>$this_ifname</a> on <a class=$class href=?page=device&id=$this_hostid>$this_hostname</a>");
+              $br = "<br />";
+            }
+          }
+        }
+      }
+     echo("</td></tr>");
+
+     // If we're showing graphs, generate the graph and print the img tags
+     if($_GET[graphs] == 'yes' && is_file("rrd/" . $hostname . ".". $ifIndex . ".rrd")) {
+        $trafgraph = trafgraph ($hostname . ".". $ifIndex . ".rrd", $hostname . ".". $ifIndex . "-traf.png");
+        $trafgraphmonth = trafgraph ($hostname . ".". $ifIndex . ".rrd", $hostname . ".". $ifIndex . "-month-traf.png", "-1m");
+        if($trafgraph !== false) {
+         echo("<tr><td colspan=2><img src='$trafgraph'> <img src='$trafgraphmonth'></td></tr>");
+        }
+      }
+
+   $i++;
+   echo("<tr height=5><td colspan=2></td></tr>");
+
+
+?>
diff --git a/html/network/includes/topnav.inc b/html/network/includes/topnav.inc
new file mode 100644
index 0000000000..9b4d7637b5
--- /dev/null
+++ b/html/network/includes/topnav.inc
@@ -0,0 +1,20 @@
+<table>
+  <tr>
+    <td align=left>
+      <a href='/network/'><img src='/images/neu/monitor.png' align=absmiddle border=0> Network</a>
+    </td>
+    <td width=5></td>
+    <td align=left>
+      <a href='/wiki/'><img src='/images/neu/edit.png' align=absmiddle border=0> Wiki</a>
+    </td>
+  </tr>
+  <tr>
+    <td align=left>
+      <a href='http://customer.vostron.net/support/staff.cgi'><img src='/images/neu/info.png' align=absmiddle border=0> Support</a>
+    </td>
+    <td width=5></td>
+    <td align=left>
+      <a href='/dns/'><img src='/images/neu/dns.png' align=absmiddle border=0> DNS Admin</a>
+    </td>
+  </tr>
+</table>
diff --git a/html/pages/addhost.php b/html/pages/addhost.php
new file mode 100644
index 0000000000..4107e5d920
--- /dev/null
+++ b/html/pages/addhost.php
@@ -0,0 +1,40 @@
+<?php
+
+if($_POST['hostname'] && $_POST['community']) {
+  if($_SESSION['userlevel'] > '5') {
+    $hostname = $_POST['hostname'];
+    $community = $_POST['community'];
+    $snmpver = $_POST['snmpver'];
+    echo("<p class='messagebox'>");
+    echo("Adding host $hostname community $community</p>");
+    addHost($hostname, $community, $snmpver);  
+    echo("</p>");
+  } else {
+    echo("<p class='errorbox'><b>Error:</b> You don't have the necessary privileges to add hosts.</p>");
+  }
+} elseif ( $_POST['hostname'] && !$_POST['community'] ) {
+  echo("<p class='errorbox'><b>Error:</b> A community string is required.</p>");
+} elseif ( !$_POST['hostname'] && $_POST['community'] ) {
+echo("<p class='errorbox'><b>Error:</b> A hostname is required.</p>");
+}
+
+?>
+
+<form name="form1" method="post" action="/?page=addhost">
+  <h1>Add Host</h1>
+  <br />
+  <p>Hostname: 
+    <input type="text" name="hostname">
+    <br>
+    Community: 
+    <input type="text" name="community">
+    <br>
+      SNMP Version: <select name="snmpver">
+      <option value="v1">v1</option>
+      <option value="v2c">v2c</option>
+    </select>
+  </p>
+  <p>
+    <input type="submit" name="Submit" value="Add Host">
+</p>
+</form>
diff --git a/html/pages/addsrv.php b/html/pages/addsrv.php
new file mode 100644
index 0000000000..43b2e6f6db
--- /dev/null
+++ b/html/pages/addsrv.php
@@ -0,0 +1,75 @@
+<?php
+
+if($_SESSION[userlevel] < '5') { 
+  print_error("Insufficient Privileges");
+} else {
+
+if($_POST['addsrv']) {
+  if($userlevel > "5") {
+    include("includes/add-srv.inc");
+  }
+}
+
+if ($handle = opendir($installdir . "/includes/services/")) {
+    while (false !== ($file = readdir($handle))) {
+        if ($file != "." && $file != "..") {
+            $servicesform .= "<option value='$file'>$file</option>";
+        }
+    }
+    closedir($handle);
+}
+
+$query = mysql_query("SELECT * FROM `devices` ORDER BY `hostname`");
+while($device = mysql_fetch_array($query)) {
+  $devicesform .= "<option value='" . $device[id] . "'>" . $device['hostname'] . "</option>";
+}
+
+if($updated) { print_message("Device Settings Saved"); }
+
+echo("
+<h4>Add Service</h4>
+<form id='addsrv' name='addsrv' method='post' action=''>
+  <input type=hidden name='addsrv' value='yes'>
+  <table width='200' border='0'>
+    <tr>
+      <td>
+        Device
+      </td>
+      <td>
+        <select name='device'>
+          $devicesform
+        </select>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        Type
+      </td> 
+      <td>
+        <select name='type'>
+          $servicesform
+        </select>
+      </td>
+    </tr>
+    <tr>
+      <td width='300'><div align='right'>Description</div></td>
+      <td colspan='2'><textarea name='descr' cols='50'></textarea></td>
+    </tr>
+    <tr>
+      <td width='300'><div align='right'>IP Address</div></td>
+      <td colspan='2'><input name='ip'></textarea></td>
+    </tr>
+    <tr>
+      <td width='300'><div align='right'>Parameters</div></td>
+      <td colspan='2'><input name='params'></textarea></td>
+    </tr>
+   <tr>
+  </table>
+  <input type='submit' name='Submit' value='Add' />
+  <label><br />
+  </label>
+</form>");
+
+
+}
+
diff --git a/html/pages/alerts.php b/html/pages/alerts.php
new file mode 100644
index 0000000000..2c96939d4e
--- /dev/null
+++ b/html/pages/alerts.php
@@ -0,0 +1,69 @@
+<meta http-equiv="refresh" content="60">
+<?
+
+if($_GET['del']) { 
+  $id = $_GET['del'];
+  $query = "DELETE FROM `alerts` WHERE `id` = '$id'";
+  mysql_query($query); 
+}
+
+$sql = "select *,DATE_FORMAT(time_logged, '%D %M %Y %T') as time, A.id as id, D.id as device_id from alerts AS A, devices as D WHERE A.device_id = D.id ORDER BY time_logged DESC LIMIT 100";
+
+echo("
+<table cellspacing=0 cellpadding=2 width=100%>
+");
+
+$query = mysql_query($sql);
+while($event = mysql_fetch_array($query)) 
+{
+
+if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; }
+
+$type = $event[importance];
+
+switch ($type) {
+case "9":
+   $type = "<img src='images/16/flag_red.png'>";
+   break;
+case "7":
+   $type = "<img src='images/16/flag_pink.png'>";
+   break;
+case "2":
+   $type = "<img src='images/16/flag_blue.png'>";
+   break;
+case "0":
+   $type = "<img src='images/16/flag_green.png'>";
+   break;
+}
+
+if(!$argh) {
+   echo ("
+  <tr style=\"background-color: $bg;\">
+    <td width=10></td>
+    <td class=syslog width=200>
+      $event[time]     
+    </td>
+    <td class=syslog width=200>
+      $event[hostname]
+    </td>
+    <td width=20>
+      $type
+    </td>
+    <td class=syslog align=left>
+      $event[message]
+    </td>
+   <td>
+   </td>
+   <td width=40>
+     <a href='?page=alerts&del=$event[id]'><img border=0 src='images/16/cross.png'" . overlibprint("Remove Alert") . "'></a>
+     <a href='?page=alerts&ack=$event[id]'><img border=0 src='images/16/tick.png' onmouseover=\"return overlib('Acknowledge Alert');\" onmouseout=\"return nd();\"></a>
+   </td>
+  </tr>
+
+");
+}
+
+}
+
+?>
+</table>
diff --git a/html/pages/customers.php b/html/pages/customers.php
new file mode 100644
index 0000000000..de76571603
--- /dev/null
+++ b/html/pages/customers.php
@@ -0,0 +1,61 @@
+<?php
+
+  $sql  = "select *, I.id as iid, I.ifIndex as ifIndex, D.id as did, D.hostname as hostname, I.if as ifname, I.name as ifalias ";
+  $sql .= "from interfaces as I, devices as D WHERE `name` like 'Cust: %' AND I.host = D.id AND D.hostname LIKE '%" . $mydomain . "' ORDER BY I.name";
+  $query = mysql_query($sql);
+
+  if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; }
+
+  echo("<table border=0 cellspacing=0 cellpadding=2 class=devicetable width=100%>");
+
+  while($data = mysql_fetch_array($query)) {
+    unset($class);
+    $iid = $data[iid];
+    $ifIndex = $data[ifIndex];
+    $did = $data[did];
+    $hostname = $data[hostname];
+    $up = $data[up];
+    $up_admin = $data[up_admin];
+    $ifname = fixifname($data[ifname]);
+    $ifalias = $data[ifalias];
+    $ifalias = str_replace("Cust: ", "", $ifalias);
+    $ifalias = str_replace("[PNI]", "Private", $ifalias);
+    $ifclass = ifclass($up, $up_admin);
+    
+    $displayifalias = $ifalias;
+    $ifalias = str_replace(" [","|",$ifalias);
+    $ifalias = str_replace("] (","|",$ifalias);
+    $ifalias = str_replace(" (","||",$ifalias);
+    $ifalias = str_replace("]","|",$ifalias);
+    $ifalias = str_replace(")","|",$ifalias);
+    list($ifalias,$class,$notes) = explode("|", $ifalias);
+    $useifalias = $ifalias;
+    $used = '1';
+    if ($ifalias == $previfalias) { unset($useifalias );
+    } elseif ($previfalias) { 
+     echo("<tr bgcolor='#ffffff' height='5'><td></td></tr>"); 
+     if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; }
+    }
+    $previfalias = $ifalias;
+
+    $mouseoverint = "onmouseover=\"return overlib('<img src=\'graph.php?if=$iid&from=$twoday&to=$now&width=400&height=120&type=bits\'>');\"
+                 onmouseout=\"return nd();\"";
+    $mouseoverhost = "onmouseover=\"return overlib('<img src=\'graph.php?host=$did&from=$week&to=$now&width=400&height=120&type=cpu\'>');\"
+                 onmouseout=\"return nd();\"";
+
+
+    echo("
+           <tr bgcolor='$bg'>
+             <td width='7'></td>
+             <td width='250'><span class=interface>$useifalias</span></td>
+             <td width='200'><a href='?page=device&id=$did' $mouseoverhost>$hostname</a></td>
+             <td width='100'><a href='?page=interface&id=$iid' class=$ifclass $mouseoverint><span class=interface-desc>$ifname</span></td>
+             <td>$notes</td>
+           </tr>
+         ");
+
+  }
+
+  echo("</table>");
+
+?>
diff --git a/html/pages/default.php b/html/pages/default.php
new file mode 100644
index 0000000000..6821c10f78
--- /dev/null
+++ b/html/pages/default.php
@@ -0,0 +1,112 @@
+<?php
+
+
+$sql = mysql_query("SELECT * FROM `devices` WHERE `uptime` > '0' AND `uptime` < '86400'");
+while($device = mysql_fetch_array($sql)){
+  $rebooted[] = "$device[id]";
+}
+?>
+
+<table border=0 cellpadding=15 cellspacing=10 width=100%>
+  <tr>
+    <td bgcolor=#e5e5e5 width=50% valign=top>
+      <div class=graphhead>Nodes with Outages</div>
+      <table width=100% border=0><tr><td></td><td width=35 align=center><div class=tablehead>Host</div></td><td align=center width=35><div class=tablehead>Int</div></td><td align=center width=35><div class=tablehead>Srv</div></tr>
+<?php
+
+$nodes = array();
+
+$sql = mysql_query("SELECT * FROM `devices` WHERE `status` = '0'");
+while($device = mysql_fetch_array($sql)){
+  unset($already);
+  $i = 0;
+  while ($i <= count($nodes)) {
+    $thisnode = "$device[id]";
+    if ($nodes[$i] == $thisnode) { 
+     $already = "yes"; 
+    }
+    $i++;
+  }
+  if(!$already) { $nodes[] = "$device[id]"; }
+}
+
+$sql = mysql_query("SELECT D.id as `id` FROM `interfaces` AS I, `devices` AS D WHERE I.host = D.id AND up = 'down' AND up_admin = 'up'");
+while($device = mysql_fetch_array($sql)){
+  unset($already);
+  $i = 0;
+  while ($i <= count($nodes)) {
+    $thisnode = "$device[id]";
+    if ($nodes[$i] == $thisnode) {
+     $already = "yes";
+    }
+    $i++;
+  }
+  if(!$already) { $nodes[] = "$device[id]"; }
+}
+
+$sql = mysql_query("SELECT D.id as `id` FROM `services` AS S, `devices` AS D WHERE S.service_host = D.id AND service_status = 'down'");
+while($device = mysql_fetch_array($sql)){
+  unset($already);
+  $i = 0;
+  while ($i <= count($nodes)) {
+    $thisnode = "$device[id]";
+    if ($nodes[$i] == $thisnode) {
+     $already = "yes";
+    }
+    $i++;
+  }
+  if(!$already) { $nodes[] = "$device[id]"; }
+}
+
+foreach($nodes as $node) {
+
+  unset($srvpop);
+
+  $host = gethostbyid($node);
+
+  $ints = mysql_result(mysql_query("SELECT count(id) FROM `interfaces` WHERE `up` = 'down' AND `up_admin` = 'up' AND `host` = '$node'"),0);
+  $services = mysql_result(mysql_query("SELECT count(service_id) FROM `services` WHERE `service_status` = '0' AND `service_host` = '$node'"),0);
+
+  $intlist = array();
+  $sql = mysql_query("SELECT `if`, `name` FROM interfaces WHERE `up` = 'down' AND `up_admin` = 'up' AND `host` = '$node'");
+  while($int = mysql_fetch_row($sql)) { $intlist[] = "<b>$int[0]</b> - $int[1]"; } 
+  foreach ($intlist as $intname) { $intpop .= "$br $intname"; $br = "<br />"; }
+  unset($br);
+  if($intpop) {$intpop = "onmouseover=\"return overlib('$intpop', WIDTH, 350);\" onmouseout=\"return nd();\""; }
+
+  $srvlist = array();
+  $sql = mysql_query("SELECT `service_type`, `service_message` FROM services WHERE `service_status` = '0' AND `service_host` = '$node'");
+  while($srv = mysql_fetch_row($sql)) { $srvlist[] = "<b>$srv[0]</b> - " . trim($srv[1]); }
+  foreach ($srvlist as $srvname) { $srvpop .= "$br " . truncate($srvname, 100); $br = "<br />"; }
+  unset($br);
+  if($srvpop) {
+    $srvpop = "onmouseover=\"return overlib('$srvpop', WIDTH, 350);\" onmouseout=\"return nd();\"";
+    $srvpop = str_replace("\n", ". ", $srvpop);
+  }
+
+  $mouseover = "onmouseover=\"return overlib('<img src=\'graph.php?host=$node&from=$week&to=$now&width=400&height=120&type=cpu\'>');\"
+                onmouseout=\"return nd();\"";
+
+  if(hoststatus($node)) { $statimg = "<img align=absmiddle src=images/16/lightbulb.png alt='Host Up'>"; } 
+                   else { $statimg = "<img align=absmiddle src=images/16/lightbulb_off.png alt='Host Down'>";}
+  if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; }
+  echo("<tr bgcolor=$bg>
+          <td><a href='?page=device&id=$node' $mouseover>$host</a></td>
+          <td align=center>$statimg</td>
+          <td align=center><a $intpop>$ints</a></td>
+          <td align=center><a $srvpop>$services</a></td></tr>");
+
+  unset($int, $ints, $intlist, $intpop, $srv, $srvlist, $srvname, $srvpop);
+
+}
+
+echo("</table>");
+
+?>
+    </td>
+    <td bgcolor=#e5e5e5 width=50% valign=top>
+      <div class=graphhead>Network Infrastructure Diagram</div>
+      <img src="network.png" alt="Auto-generated network diagram">
+   </td>
+  </tr>
+</table>
diff --git a/html/pages/delhost.php b/html/pages/delhost.php
new file mode 100644
index 0000000000..d1d7f49af8
--- /dev/null
+++ b/html/pages/delhost.php
@@ -0,0 +1,31 @@
+<?php
+
+if($_POST['id'] && $_SESSION['userlevel'] > '9') {
+  delHost($id);  
+} elseif ($_POST['id']) {
+echo("<p class='errorbox'><b>Error:</b> You don't have the necessary privileges to remove hosts.</p>");  
+}
+
+?>
+
+<form name="form1" method="post" action="/?page=delhost">
+  <h1>Delete Host</h1>
+  <br />
+  <p><select name="id">
+<?php
+
+$query = mysql_query("SELECT id,hostname FROM `devices` ORDER BY `hostname`");
+
+while($data = mysql_fetch_array($query)) {
+
+  echo("<option value='$data[id]'>$data[hostname]</option>");
+
+}
+
+?>
+    </select>
+  
+    <input type="submit" name="Submit" value="Delete Host">
+</p>
+</form>
+
diff --git a/html/pages/device.php b/html/pages/device.php
new file mode 100644
index 0000000000..2bb13bfcab
--- /dev/null
+++ b/html/pages/device.php
@@ -0,0 +1,96 @@
+<?
+
+$selected[iface] = "selected";
+
+if(!$_GET[section]) { 
+  $_GET[section] = "dev-overview"; 
+}
+$section = $_GET[section];
+$sectionx = str_replace("-", "", $section);
+$select[$sectionx] = "selected";
+
+
+$device_query = mysql_query("select * from devices WHERE id = '$_GET[id]'");
+while($device = mysql_fetch_array($device_query)) {
+   $hostname = $device[hostname];
+   #$bg="#ffffff";
+   echo("<table cellpadding=7 cellspacing=0 class=devicetable width=100%>");
+   include("includes/device-header.inc");
+   echo("</table><br />");
+
+echo("<div class=mainpane>");
+
+echo("
+<ul id='maintab' class='shadetabs'>
+<li class=$select[devoverview]>
+  <a href='?page=device&id=$device[id]&section=dev-overview' >
+    <img src='images/16/server_lightning.png' align=absmiddle border=0> Overview
+  </a>
+</li>");
+if(mysql_result(mysql_query("select count(id) from interfaces WHERE host = '$device[id]'"), 0) > '0') {
+  echo("
+<li class=$select[devifs]>
+  <a href='?page=device&id=$device[id]&section=dev-ifs' >
+    <img src='images/16/link.png' align=absmiddle border=0> Port Details
+  </a>
+</li>
+<li class=$select[devifgraphs]>
+  <a href='?page=device&id=$device[id]&section=dev-ifgraphs'>
+    <img src='images/16/chart_curve_link.png' align=absmiddle border=0> Port Graphs
+  </a>
+</li>");
+}
+echo("<li class=$select[devgraphs]>
+  <a href='?page=device&id=$device[id]&section=dev-graphs'>
+    <img src='images/16/server_chart.png' align=absmiddle border=0> Host Graphs
+  </a>
+</li>
+");
+
+if(mysql_result(mysql_query("select count(service_id) from services WHERE service_host = '$device[id]'"), 0) > '0') {
+  echo("
+<li class=$select[devsrv]>
+  <a href='?page=device&id=$device[id]&section=dev-srv'>
+    <img src='images/16/cog.png' align=absmiddle border=0> Service Details
+  </a>
+</li>
+");
+}
+
+echo("
+<li class=$select[devevents]>
+  <a href='?page=device&id=$device[id]&section=dev-events'>
+    <img src='images/16/report_magnify.png' align=absmiddle border=0> Eventlog
+  </a>
+</li>");
+
+echo("
+<li class=$select[devsyslog]>
+  <a href='?page=device&id=$device[id]&section=dev-syslog'>
+    <img src='images/16/printer.png' align=absmiddle border=0> Syslog
+  </a>
+</li>
+");
+
+if($_SESSION[userlevel] > "5") {
+  echo("
+<li class=$select[devedit]>
+  <a href='?page=device&id=$device[id]&section=dev-edit'>
+    <img src='images/16/server_edit.png' align=absmiddle border=0> Edit Device
+  </a>
+</li>
+");
+}
+
+
+echo("</ul>");
+echo("
+<div class=contentstyle>");
+
+include("includes/$section.inc");
+
+echo("</div>
+");
+}
+?>
+
diff --git a/html/pages/devices.php b/html/pages/devices.php
new file mode 100644
index 0000000000..436724a079
--- /dev/null
+++ b/html/pages/devices.php
@@ -0,0 +1,33 @@
+<?php
+
+if($_GET['ignore']) { mysql_query("UPDATE devices SET `ignore` = '1' WHERE `id` = '$_GET[ignore]'"); }
+if($_GET['unignore']) { mysql_query("UPDATE devices SET `ignore` = '0' WHERE `id` = '$_GET[unignore]'"); }
+
+if($_GET['location']) { $where = "WHERE location = '$_GET[location]'"; }
+if($_GET['location'] == "Unset") { $where = "WHERE location = ''"; }
+if($_GET['type']) { $where = "WHERE type = '$_GET[type]'"; }
+if($_GET['status'] == "alerted") { $where = $device_alert_sql; }
+
+$sql = "select * from devices $where ORDER BY `ignore`, STATUS, os, hostname";
+$device_query = mysql_query($sql);
+
+echo("<table cellpadding=7 cellspacing=0 class=devicetable width=100%>");
+
+//echo("<tr class=interface-desc bgcolor=#e5e5e5 style='font-weight:bold;'>
+//<td></td>
+//<td>Hostname - Description</td>
+//<td>Operating System - Version</td>
+//<td>Hardware - Features</td>
+//<td>Uptime - Location</td>
+//<td></td>
+//</tr>");
+
+while($device = mysql_fetch_array($device_query)) {
+
+  include("includes/hostbox.inc");
+
+}
+
+echo("</table>");
+
+?>
diff --git a/html/pages/downhosts.php b/html/pages/downhosts.php
new file mode 100644
index 0000000000..e72520c5f3
--- /dev/null
+++ b/html/pages/downhosts.php
@@ -0,0 +1,52 @@
+<meta http-equiv="refresh" content="60">
+<?php
+
+$type = $_GET['id'];
+$sql  = "select * FROM `devices` WHERE `status` = '0' OR `uptime` <= '3600' ORDER BY `hostname`";
+$query = mysql_query($sql);
+
+echo("<p class=page-header>$type</p>");
+echo("<table cellspacing=5 border=0 bordercolor=#000000 cellpadding=2><tr>"); 
+
+$i = 1;
+
+while($data = mysql_fetch_array($query)) {
+
+    unset($class); unset($flags);
+    $id = $data[id];
+    $hostname = $data[hostname];
+    $os = $data[os];
+    $uptime = $data[uptime];
+    $hardware = $data[hardware];
+    $version = $data[version];
+    $location = $data[location];
+    $status = $data[status];
+    $hostname = str_replace(".enta.net","",$hostname);
+
+    if($status == '0') { 
+       $flags = "Unreachable"; 
+       $class = "unreachable";
+    } elseif ($uptime < '3600') { 
+       $flags = "Rebooted"; 
+       $class = "rebooted";
+    }
+    
+    unset($colour);
+    $hostname = makeshorthost($hostname);
+
+    echo("<td width=150 align=center valign=middle class='$class'>
+ 	<a class=interface href='?page=device&id=$id'>$hostname</a><br /> 
+        <span class=interface-desc>$flags </span><br />
+        <span class=interface-desc><a href='?page=device&id=$id'>$hardware $os $version</a>
+        <br/ ><a href='?page=locations&location=$location'>$location</a><br />
+        ");
+    if ($i < 5) { 
+      $i++;
+    } else { 
+      $i=1;
+      echo("</tr><tr>");
+    }
+  }
+    
+echo("</table>");
+?>
diff --git a/html/pages/downinterfaces.php b/html/pages/downinterfaces.php
new file mode 100644
index 0000000000..350c487de6
--- /dev/null
+++ b/html/pages/downinterfaces.php
@@ -0,0 +1,117 @@
+<meta http-equiv="refresh" content="60">
+<?php
+
+$type = $_GET['id'];
+$sql  = "select *, DATE_FORMAT(I.lastchange, '%l:%i%p %D %M %Y') AS changed, I.id as iid, I.snmpid as snmpid, D.id as did, D.hostname as hostname, I.if as ifname, I.name as ifalias ";
+$sql .= "from interfaces as I, devices as D WHERE `up_admin` = 'up' AND `up` = 'down' AND I.host = D.id AND I.name NOT LIKE 'Test%'";
+$sql .= "AND I.name NOT LIKE '%[eng]%' ORDER BY I.lastchange DESC";
+$query = mysql_query($sql);
+
+echo("<p class=page-header>$type</p>");
+
+if($_GET['format'] == "rows") {
+echo("<table cellspacing=0 border=0 cellpadding=2>");
+echo("<tr class=interface bgcolor=#eeeeee>
+        <td>Last Changed</td>
+        <td width=5></td>
+        <td>Hostname</td>
+        <td width=5></td>
+        <td>Interface</td>
+        <td width=5></td>
+        <td>Description</td>
+        <td width=5></td>
+        <td>Type</td>
+        <td width=5></td>
+        <td>Notes</td>
+        </tr>");
+} else {
+#echo("<table cellspacing=5 cellpadding=3><tr>"); 
+}
+$i = 1;
+
+  while($data = mysql_fetch_array($query)) {
+    unset($class);
+    $iid = $data[iid];
+    $did = $data[did];
+    $hostname = $data[hostname];
+    $lastchange = $data[changed];
+    $up = $data[up];
+    $up_admin = $data[ip_admin];
+    $ifname = fixifname($data[ifname]);
+    $ifnamelong = $ifname;
+    $hostnamelong = $data[hostname]; 
+    $ifalias = $data[ifalias];
+
+    $hostname = str_replace(".enta.net","",$hostname);
+
+unset($colour);
+
+
+     if($ifalias == "") { $ifalias = "* Unlabelled *"; }
+ 
+	$ifalias = str_replace(" [","|",$ifalias);
+        $ifalias = str_replace("] (","|",$ifalias);
+        $ifalias = str_replace(" (","||",$ifalias);
+        $ifalias = str_replace("]","|",$ifalias);
+        $ifalias = str_replace(")","|",$ifalias);
+        list($ifalias,$type,$notes) = explode("|", $ifalias);
+
+     if( strpos($ifalias,': ')) {
+       list($class,$ifalias) = split(": ",$ifalias,2);
+     }
+     if($class == "") { 
+       if($ifalias == "* Unlabelled *") {
+         $class = "unlabelled"; }
+       else { 
+         $class = "unknown"; } 
+     }
+     $class = $class . "cell";
+     $ifname = makeshortif($ifname);
+     $class = strtolower($class);
+
+  if($_GET['format'] == "rows") {
+
+  echo("<tr class=$class>
+        <td>$lastchange</td>
+        <td></td>
+        <td><a href='?page=device&id=$did'>$hostnamelong</a></td>
+        <td></td>
+        <td><a href='?page=interface&id=$iid'>$ifnamelong</a></span></td>
+        <td></td>
+        <td><a href='?page=interface&id=$iid'>$ifalias</a></td>
+        <td></td>
+        <td>$type</td>
+        <td></td>
+        <td>$notes</td>
+        </tr>");
+
+  } else {
+
+
+    echo("<div class=$class>
+            <a href='?page=device&id=$did' class=device-head>$hostname</a><br />
+            <a href='?page=interface&id=$iid' class=syslog>$ifname</a><br />
+            <a href='?page=interface&id=$iid' class=interface-desc>$ifalias</a><br />
+            <span class=interface-desc>$type<br />
+            $notes
+          </div>");
+
+
+#     echo("<td width=150 class=$class align=center valign=middle>
+#		<a class='interface' href='?page=interface&id=$iid'>$ifalias<br /> 
+#		$type $notes</a><br />
+#               <span class=interface-desc><a href='?page=device&id=$did'>$hostname</a><br />
+#                <a href='?page=interface&id=$iid'>$ifname</a></span></td>
+#            ");
+#    if ($i < 6) { 
+#      $i++;
+#    } else { 
+#      $i=1;
+#      echo("</tr><tr>");
+#    }
+  }
+
+  }
+    
+echo("</table>");
+?>
diff --git a/html/pages/eventlog.php b/html/pages/eventlog.php
new file mode 100644
index 0000000000..ddbe8edf3e
--- /dev/null
+++ b/html/pages/eventlog.php
@@ -0,0 +1,15 @@
+<?
+
+$query = "SELECT *,DATE_FORMAT(datetime, '%D %b %Y %T') as humandate  FROM `eventlog` ORDER BY `datetime` DESC LIMIT 0,250";
+$data = mysql_query($query);
+
+
+echo("<table cellspacing=0 cellpadding=1 width=100%>");
+
+while($entry = mysql_fetch_array($data)) {
+  include("includes/print-event.inc");
+}
+
+echo("</table>");
+
+ ?>
diff --git a/html/pages/ifdown.php b/html/pages/ifdown.php
new file mode 100644
index 0000000000..e4684706a8
--- /dev/null
+++ b/html/pages/ifdown.php
@@ -0,0 +1,63 @@
+<meta http-equiv="refresh" content="60">
+<?php
+
+$type = $_GET['id'];
+$sql  = "select *, DATE_FORMAT(I.lastchange, '%l:%i%p %D %M %Y') AS changed, I.id as iid, I.snmpid 
+as snmpid, D.id as did, D.hostname as hostname, I.if as ifname, I.name as ifalias ";
+$sql .= "from interfaces as I, devices as D WHERE `up_admin` = 'up' AND `up` = 'down' AND I.host = D.id AND I.name NOT LIKE 'Test%'";
+$sql .= "AND I.name NOT LIKE '%[eng]%' ORDER BY D.hostname, I.if ";
+$query = mysql_query($sql);
+
+  while($data = mysql_fetch_array($query)) {
+    unset($class);
+    $iid = $data[iid];
+    $did = $data[did];
+    $hostname = $data[hostname];
+    $lastchange = $data[changed];
+    $up = $data[up];
+    $up_admin = $data[ip_admin];
+    $ifname = fixifname($data[ifname]);
+    $ifnamelong = $ifname;
+    $hostnamelong = $data[hostname]; 
+    $ifalias = $data[ifalias];
+
+    unset($colour);
+
+
+     if($ifalias == "") { $ifalias = "*** Unlabeled ***"; }
+ 
+	$ifalias = str_replace(" [","|",$ifalias);
+        $ifalias = str_replace("] (","|",$ifalias);
+        $ifalias = str_replace(" (","||",$ifalias);
+        $ifalias = str_replace("]","|",$ifalias);
+        $ifalias = str_replace(")","|",$ifalias);
+        list($ifalias,$type,$notes) = explode("|", $ifalias);
+
+     if( strpos($ifalias,':')) {
+       list($class,$ifalias) = split(":",$ifalias,2);
+     }
+     if($class == "") { 
+       if($ifalias == "*** Unlabelled ***") {
+         $class = "unlabelled"; }
+       else { 
+         $class = "unknown"; } 
+     }
+     $ifname = makeshortif($ifname);
+     $class = strtolower($class);
+
+     echo("
+     <table border=0 cellpadding=5 cellspacing=2>
+       <tr>
+         <td width=150 class=$class align=center valign=middle>
+  	   <a class='interface' href='?page=interface&id=$iid'>$ifalias<br /> 
+	   $type $notes</a><br />
+           <span class=interface-desc><a href='?page=device&id=$did'>$hostname</a><br />
+           <a href='?page=interface&id=$iid'>$ifname</a></span>
+         </td>
+       </tr>
+     </table>
+            ");
+
+  }
+    
+?>
diff --git a/html/pages/iftype.php b/html/pages/iftype.php
new file mode 100644
index 0000000000..f0fc8917ec
--- /dev/null
+++ b/html/pages/iftype.php
@@ -0,0 +1,43 @@
+<?php
+if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; }
+echo("<table cellpadding=7 cellspacing=0 class=devicetable width=100%>");
+
+if($_GET['id']) {
+  $type = $_GET['id'];
+  $sql  = "select *, I.id as iid, I.ifIndex as ifIndex, D.id as did, D.hostname as hostname, I.if as ifname, I.name as ifalias ";
+  $sql .= "from interfaces as I, devices as D WHERE `name` like '$type: %' AND I.host = D.id ORDER BY I.name";
+  $query = mysql_query($sql);
+  while($data = mysql_fetch_array($query)) {
+    $done = "yes";
+    unset($class);
+    $iid = $data[iid];
+    $ifIndex = $data[ifIndex];
+    $did = $data[did];
+    $hostname = $data[hostname];
+    $up = $data[up];
+    $up_admin = $data[up_admin];
+    $ifname = fixifname($data[ifname]);
+    $ifalias = $data[ifalias];
+    $ifalias = str_replace($type . ": ", "", $ifalias);
+    $ifalias = str_replace("[PNI]", "Private", $ifalias);
+    $ifclass = ifclass($up, $up_admin);
+    if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; }
+    echo("<tr bgcolor='$bg'>
+             <td><span class=interface><a href='?page=interface&id=$iid'>$ifalias</a></span><br /> 
+            <span class=interface-desc><a href='?page=device&id=$did'>$hostname</a> <a href='?page=interface&id=$iid'>$ifname</a></span></td></tr><tr bgcolor='$bg'><td>");
+
+if(file_exists("rrd/" . $hostname . ".". $ifIndex . ".rrd")) {
+
+    $graph_type = "bits";
+    include("includes/print-interface-graphs.php");
+
+}
+      echo("</td></tr>");
+  }
+}
+
+echo("</table>");
+
+if(!$done) { echo("None found."); }
+
+?>
diff --git a/html/pages/interface.php b/html/pages/interface.php
new file mode 100644
index 0000000000..68a636cb9e
--- /dev/null
+++ b/html/pages/interface.php
@@ -0,0 +1,77 @@
+<?
+
+$interface_query = mysql_query("select * from interfaces WHERE id = '$_GET[id]'");
+$interface = mysql_fetch_array($interface_query);
+
+ $device_query = mysql_query("select * from devices where id = '$interface[host]'");
+ $device = mysql_fetch_array($device_query);
+
+ $hostname = $device['hostname'];
+ $hostid   = $device['id'];
+ $ifname   = $interface['if'];
+ $up = $interface['up'];
+ $up_admin = $interface['up_admin'];
+ $ifIndex   = $interface['ifIndex'];
+ $speed = humanspeed($interface['ifSpeed']);
+
+ $ifalias = $interface['name'];
+
+ if($interface['ifPhysAddress']) { $mac = "$interface[ifPhysAddress]"; } 
+
+ $color = "black";
+ if ($up_admin == "down") { $status = "<span class='grey'>Disabled</span>"; }
+ if ($up_admin == "up" && $up == "down") { $status = "<span class='red'>Enabled / Disconnected</span>"; }
+ if ($up_admin == "up" && $up == "up") { $status = "<span class='green'>Enabled / Connected</span>"; }
+
+ $i = 1; 
+ $inf = fixifName($ifname);
+
+# $bg="#ffffff";
+ echo("<table cellpadding=7 cellspacing=0 class=devicetable width=100%>");
+ include("includes/device-header.inc");
+ echo("</table>");
+
+ $show_all = 1;
+
+ echo("<div class=ifcell style='margin: 5px;'><table width=100% cellpadding=10 border=0 cellspacing=0>");
+
+   include("includes/print-interface.inc");
+
+ echo("</table></div>");
+
+ $pos = strpos(strtolower($ifname), "vlan");
+ if( $pos !== false ) {
+  $broke = yes;
+ }
+ $pos = strpos(strtolower($ifname), "loopback");
+ if( $pos !== false ) {
+   $broke = yes;
+ }
+
+if( !$broke)
+{ }
+
+echo("<div style='clear: both;'>");
+
+if(file_exists("rrd/" . $hostname . ".". $ifIndex . ".rrd")) {
+
+  $iid = $id;
+  echo("<div class=graphhead>Interface Traffic</div>");
+  $graph_type = "bits";
+  include("includes/print-interface-graphs.php");
+
+  echo("<div class=graphhead>Interface Packets</div>");
+  $graph_type = "pkts";
+  include("includes/print-interface-graphs.php");
+
+  echo("<div class=graphhead>Interface Non Unicast</div>");
+  $graph_type = "nupkts";
+  include("includes/print-interface-graphs.php");
+
+  echo("<div class=graphhead>Interface Errors</div>");
+  $graph_type = "errors";
+  include("includes/print-interface-graphs.php");
+ 
+}
+
+?>
diff --git a/html/pages/interfaces.php b/html/pages/interfaces.php
new file mode 100644
index 0000000000..ff487b9851
--- /dev/null
+++ b/html/pages/interfaces.php
@@ -0,0 +1,31 @@
+<?php
+
+$sql = "SELECT *, D.id as dev_id, I.id as id FROM `interfaces` AS I, `devices` AS D WHERE I.host = D.id ORDER BY D.hostname, I.if";
+$query = mysql_query($sql);
+
+echo("<table cellspacing=0 cellpadding=2 width=100%>");
+
+echo("<tr class=tablehead><th width=280>Device</a></th><th>Interface</th><th>Speed</th><th>Media</th><th>Description</th></tr>");
+
+$row = 1;
+
+while($iface = mysql_fetch_array($query)) {
+
+  if(is_integer($row/2)) { $row_colour = $list_colour_a; } else { $row_colour = $list_colour_b; }
+
+  $speed = humanspeed($iface['ifSpeed']);
+  $if_link = generateiflink($iface);
+  $dev_link = generatedevicelink($iface);
+  $type = humanmedia($iface['ifType']);
+
+  echo("<tr bgcolor=$row_colour><td><a href='' class=list-bold>$dev_link</a></td><td class=list-bold>$if_link</td><td>$speed</td><td>$type</td><td>$iface[name]</td></tr>\n");
+
+  $row++;
+
+}
+
+echo("</table>");
+
+
+?>
+
diff --git a/html/pages/list.php b/html/pages/list.php
new file mode 100644
index 0000000000..0537c2d461
--- /dev/null
+++ b/html/pages/list.php
@@ -0,0 +1,31 @@
+<?php
+
+if($_GET['ignore']) { mysql_query("UPDATE devices SET `ignore` = '1' WHERE `id` = '$_GET[ignore]'"); }
+if($_GET['unignore']) { mysql_query("UPDATE devices SET `ignore` = '0' WHERE `id` = '$_GET[unignore]'"); }
+
+if($_GET['location']) { $where = "WHERE location = '$_GET[location]'"; }
+if($_GET['location'] == "Unset") { $where = "WHERE location = ''"; }
+if ($_GET['type']) { $where = "WHERE type = '$_GET[type]'"; }
+$sql = "select * from devices $where ORDER BY `ignore`, STATUS, os, hostname";
+$device_query = mysql_query($sql);
+
+echo("<table cellpadding=7 cellspacing=0 class=devicetable width=100%>");
+
+echo("<tr class=interface-desc bgcolor=#e5e5e5 style='font-weight:bold;'>
+<td></td>
+<td>Hostname - Description</td>
+<td>Operating System - Version</td>
+<td>Hardware - Features</td>
+<td>Uptime - Location</td>
+<td></td>
+</tr>");
+
+while($device = mysql_fetch_array($device_query)) {
+
+  include("includes/hostbox.inc");
+
+}
+
+echo("</table>");
+
+?>
diff --git a/html/pages/locations.php b/html/pages/locations.php
new file mode 100644
index 0000000000..dcf0e8f7c9
--- /dev/null
+++ b/html/pages/locations.php
@@ -0,0 +1,37 @@
+<?
+echo("<table cellpadding=7 cellspacing=0 class=devicetable width=100%>");
+
+$device_query = mysql_query("select location from devices GROUP BY location ORDER BY location");
+while($device = mysql_fetch_array($device_query)) {
+
+   if($bg == "#ffffff") { $bg = "#eeeeee"; } else { $bg="#ffffff"; }
+
+   $num = mysql_result(mysql_query("SELECT COUNT(id) FROM devices WHERE location = '$device[location]'"),0);
+   $net = mysql_result(mysql_query("SELECT COUNT(id) FROM devices WHERE location = '$device[location]' AND type = 'network'"),0);
+   $srv = mysql_result(mysql_query("SELECT COUNT(id) FROM devices WHERE location = '$device[location]' AND type = 'server'"),0);
+   $fwl = mysql_result(mysql_query("SELECT COUNT(id) FROM devices WHERE location = '$device[location]' AND type = 'firewall'"),0);
+
+   $hostalerts = mysql_result(mysql_query("SELECT COUNT(id) FROM devices WHERE location = '$device[location]' AND status = '0'"),0);
+   if($hostalerts) { $alert = "<img src='/images/16/flag_red.png'>"; }
+
+   $loc = $device[location];
+
+   if($loc != "") { 
+     echo("<table border=0 cellspacing=0 cellpadding=7 class=devicetable width=100%>
+           <tr bgcolor='$bg'>
+             <td class=interface width=300><a class='list-bold' href='?page=list&location=$device[location]'>$loc</a></td>
+             <td width='100'>$alert</td>
+             <td width='100'>$num devices</td>
+             <td width='100'>$net network</td>
+	     <td width='100'>$srv servers</td>
+             <td width='100'>$fwl firewalls</td>
+           </tr>
+         ");
+
+    $done = "yes";
+  }
+}
+
+echo("</table>");
+
+?>
diff --git a/html/pages/logon.inc b/html/pages/logon.inc
new file mode 100644
index 0000000000..d4d74061e9
--- /dev/null
+++ b/html/pages/logon.inc
@@ -0,0 +1,35 @@
+<?php
+
+    echo("
+  <center><br />
+<table  border='0' cellpadding='20' cellspacing='20' bgcolor='#e8e8e8'>
+    <tr>
+      <td><div align='right'><img src='/images/password.png' width='128' height='128'></div></td>
+      <td>
+        <form action='index.php' method=post>
+          <h3>Please log in:</h3>
+
+          <div style='height: 0px;'></div>
+          <table border=0 align=left>
+            <tr>
+              <td>Username</td>
+              <td><input type='text' name='username'></td>
+            </tr>
+            <tr>
+              <td>Password</td>
+
+              <td><input type='password' name='password'></td>
+            </tr>
+            <tr>
+              <td colspan=2 align='right'><input name='submit' type='submit' value='Login'></td>
+            </tr>
+            <tr>
+              <td colspan=2 align='right'>Demo login : demo/demo</td>
+            </tr>
+          </table>
+      </form></td>
+    </tr>
+  </table>
+</center>");
+
+?>
diff --git a/html/pages/services.php b/html/pages/services.php
new file mode 100644
index 0000000000..56d4abd54e
--- /dev/null
+++ b/html/pages/services.php
@@ -0,0 +1,24 @@
+<?php
+
+if($_GET['status'] == '0') { $where = " AND service_status = '0'"; }
+
+echo("<div style='margin: 5px;'><table cellpadding=7 border=0 cellspacing=0 width=100%>");
+//echo("<tr class=interface-desc bgcolor='#e5e5e5'><td>Device</td><td>Service</td><td>Status</td><td>Changed</td><td>Checked</td><td>Message</td></tr>");
+
+
+  $host_sql = "SELECT D.id, D.hostname FROM devices AS D, services AS S WHERE D.id = S.service_host GROUP BY D.hostname ORDER BY D.hostname";
+  $host_query = mysql_query($host_sql);
+  while($host_data = mysql_fetch_array($host_query)) {
+    $device_id = $host_data[id];
+    $device_hostname = $host_data[hostname];
+    $service_query = mysql_query("SELECT * FROM `services` WHERE `service_host` = '$host_data[id]' $where");
+    while($service = mysql_fetch_array($service_query)) {
+       include("includes/print-service.inc");
+       $samehost = 1;
+    }
+    unset ($samehost);
+  }	
+
+  echo("</table></div>");
+
+?>
diff --git a/html/pages/syslog.php b/html/pages/syslog.php
new file mode 100644
index 0000000000..70c82fb528
--- /dev/null
+++ b/html/pages/syslog.php
@@ -0,0 +1,121 @@
+<meta http-equiv="refresh" content="60">
+<?
+
+$sql = "select *,DATE_FORMAT(datetime, '%D %M %Y %T') as humandate from logs ORDER BY datetime DESC LIMIT 1000";
+
+echo("
+<table cellspacing=0 cellpadding=2>
+  <tr class=interface align=center>
+    <td width=4>
+    </td>
+    <td>
+      Time
+    </td>
+    <td width=5>
+    </td>
+    <td>
+      Hostname
+    </td>
+    <td width=5>
+    </td>
+    <td>
+      Type
+    </td>
+    <td width=5>
+    </td>
+    <td>
+      Message
+    </td>
+    <td width=10>
+    </td>
+  </tr>");
+
+$query = mysql_query($sql);
+while($event = mysql_fetch_array($query)) 
+{
+  unset($class);
+  unset($argh);
+
+  $event[msg] = preg_replace("/.*%/", "", $event[msg]);
+  $event[msg] = preg_replace("/[0-9]+:\ /", "", $event[msg]);
+
+  $prefix = preg_replace ("/(.+):\ .*/", "\\1", $event[msg]);
+
+  $event[msg] = preg_replace ("/.+:\ /", "", $event[msg]);
+
+  if($prefix == $event[msg]) { unset ($prefix); }
+
+  $prefix = str_replace("CRYPTO-4-RECVD_PKT_INV_SPI: decaps", "Crypto Invalid SPI", $prefix);
+  $prefix = str_replace("LINEPROTO-5-UPDOWN", "Lineproto Up/Down", $prefix);
+  $prefix = str_replace("LINK-3-UPDOWN", "Link Up/Down", $prefix);
+  $prefix = str_replace("LINEPROTO-SP-5-UPDOWN", "Lineproto Up/Down", $prefix);
+  $prefix = str_replace("LINK-SP-3-UPDOWN", "Link Up/Down", $prefix);
+
+  $prefix = str_replace("PIM-6-INVALID_RP_JOIN", "PIM Invalid RP Join", $prefix);
+  $prefix = str_replace("BGP-3-NOTIFICATION", "BGP Notification", $prefix);
+  $prefix = str_replace("LINK-3-UPDOWN", "Link Up/Down", $prefix);
+  $prefix = str_replace("DIALER-6-UNBIND", "Dialer Unbound", $prefix);
+  $prefix = str_replace("DIALER-6-BIND", "Dialer Bound", $prefix);
+  $prefix = str_replace("SYS-5-CONFIG_I", "System Configured", $prefix);
+  $prefix = str_replace("VPDN-6-CLOSED", "VPDN Closed", $prefix);
+  $prefix = str_replace("DIALER-6-BIND", "Dialer Bound", $prefix);
+  $prefix = str_replace("PCMCIAFS-5-DIBERR", "PCMCIA FS Error", $prefix);
+  $prefix = str_replace("BGP-5-ADJCHANGE", "BGP Adj Change", $prefix);
+  $prefix = str_replace("MSDP-5-PEER_UPDOWN", "MSDP Peer UP/Down", $prefix);
+  $prefix = str_replace("SYS-5-CONFIG_I", "System Configured", $prefix);
+
+  $prefix = preg_replace("/.*ETHER-3-UNDERFLO/", "Ethernet Underflow", $prefix);
+
+  if(strstr($event[msg], "BGP authentication failure") !== false) { $class = "pinkbg"; }
+  if(strstr($event[msg], "Down BGP Notification received") !== false) { $class = "redbg"; }
+  if(strstr($event[msg], "DOWN on interface") !== false) { $class = "redbg"; }
+  if(strstr($event[msg], "from FULL to DOWN") !== false) { $class = "redbg"; }
+  if(strstr($event[msg], "changed state to down") !== false) { $class = "redbg"; }
+  if(strstr($event[msg], "(cease)") !== false) { $class = "redbg"; }
+  if(strstr($event[msg], "(hold time expired)") !== false) { $class = "redbg"; }
+  if(strstr($event[msg], "Configured from console") !== false) { $class = "bluebg"; }
+  if(strstr($event[msg], "DR change ") !== false) { $class = "bluebg"; }
+  if(strstr($event[msg], "Up") !== false) { $class = "greenbg"; }
+  if(strstr($event[msg], "from LOADING to FULL") !== false) { $class = "greenbg"; }
+  if(strstr($event[msg], "UP on interface ") !== false) { $class = "greenbg"; }  
+  if(strstr($event[msg], "changed state to up") !== false) { $class = "greenbg"; }
+  if(strstr($event[msg], "A format in this router is required") !== false) { $class = "greybg"; }
+  if(strstr($event[msg], "bytes failed from") !== false) { $class = "greybg"; }
+  if($event[msg] == "Attempted to connect to RSHELL from 195.74.96.24" ) { $argh = 1; }
+
+  $event[msg] = str_replace("PCMCIA disk 0 is formatted from a different router or PC. A format in this router is required before an image can be booted from this device", "PCMCIA diak 0 is incorrectly formatted", $event[msg]);
+
+if(!$argh) {
+   echo ("
+  <tr class='$class'>
+<td width=4>
+    </td>
+    <td class=syslog>
+      $event[humandate]     
+    </td>
+    <td width=5>
+    </td>
+    <td class=syslog>
+      $event[host]
+    </td>
+    <td width=5>
+    </td>
+    <td class=syslog>
+      $prefix
+    </td>
+    <td width=5>
+    </td>
+    <td class=syslog>
+      $event[msg]
+    </td>
+<td width=4>
+    </td>
+  </tr>
+
+");
+}
+
+}
+
+?>
+</table>
diff --git a/html/phones/config.php b/html/phones/config.php
new file mode 100644
index 0000000000..64387dd72b
--- /dev/null
+++ b/html/phones/config.php
@@ -0,0 +1,5 @@
+<?php
+
+
+
+?>
diff --git a/html/rrd b/html/rrd
new file mode 120000
index 0000000000..70c6b9ed64
--- /dev/null
+++ b/html/rrd
@@ -0,0 +1 @@
+../rrd/
\ No newline at end of file
diff --git a/html/whois.php b/html/whois.php
new file mode 100644
index 0000000000..bf6b104cf2
--- /dev/null
+++ b/html/whois.php
@@ -0,0 +1,10 @@
+<?php
+
+
+$output = `/usr/bin/whois $_GET[query] | grep -v \%`;
+
+$output = trim($output);
+
+echo("<pre>$output</pre>");
+
+?>
diff --git a/includes/cdp.php b/includes/cdp.php
new file mode 100644
index 0000000000..560867a7e6
--- /dev/null
+++ b/includes/cdp.php
@@ -0,0 +1,180 @@
+<?php
+
+class snmpCDP {
+ 
+    var $community = "public";
+    var $host = "";
+ 
+    /**
+     * Initialises the class.
+     * $snmp = new snmpCDP('device','public');
+     */
+
+    function snmpCDP($host,$community) {
+        $this->host=$host;
+        $this->community=$community;
+    }
+ 
+    /**
+     * Identify
+     * Determines if the queried device is made by Cisco or not.
+     * $type = $snmp->identify();
+     * @return string 
+     */
+    function identify() {
+        $ret=snmpget($this->host,$this->community,"SNMPv2-MIB::sysDescr.0");
+        if (substr_count($ret,"Cisco") > 0) {
+            return "cisco";
+        } else {
+            return "unknown";
+        }
+    }
+ 
+    /**
+     * Location
+     * Returns the location string configured on the device.
+     * $location = $snmp->location();
+     * @return string 
+     */
+    function location() {
+        return snmpget($this->host,$this->community,"SNMPv2-MIB::sysLocation.0");
+    }
+ 
+    /**
+     * Function to determine if port is up or down from returned SNMP string.
+     * @access private
+     */
+    function _isitup($text) {
+        $x = substr($text,9);
+        switch($x) {
+            case "up(1)": return true; break;
+            case "down(2)": return false; break;
+        }
+    }
+ 
+    /**
+     * Returns the type of port depending on the returned SNMP string.
+     * @access private
+     */
+    function _porttype($text) {
+        $x = substr($text,9);
+        switch($x) {
+            case "ethernetCsmacd(6)": return "ethernet"; break;
+            case "propVirtual(53)": return "virtual"; break;
+            case "propPointToPointSerial(22)": return "serial"; break;
+            default: return $text; break;
+        }
+    }
+ 
+    /**
+     * Get Port List
+     * Returns an array forming a list of the ports on the device, including name, alias and type.
+     * The returned array is indexed by the port index in the SNMP tree.
+     *
+     * $snmp->getports();
+     *
+     * An example of the output:
+     * Array
+     * (
+     *     [2] => Array
+     *         (
+     *             [desc] => GigabitEthernet0/1
+     *             [alias] =>
+     *             [type] => ethernet
+     *         )
+     * )
+     * @return array 
+     */
+    function getports() {
+        $nosint = @snmpget($this->host,$this->community,"IF-MIB::ifNumber.0");
+        $ports  = @snmpwalk($this->host,$this->community,"IF-MIB::ifIndex");
+        $results=array();
+        foreach($ports as $port) {
+            $x = substr($port,9);
+            $admin = snmpget($this->host,$this->community,"IF-MIB::ifAdminStatus.$x");
+            if ($this->_isitup($admin)==true) {
+                $desc = substr(snmpget($this->host,$this->community,"IF-MIB::ifDescr.$x"),8);
+                $alias = substr(snmpget($this->host,$this->community,"IF-MIB::ifAlias.$x"),8);
+                $type = $this->_porttype(snmpget($this->host,$this->community,"IF-MIB::ifType.$x"));
+                $results["$x"]=array("desc"=>$desc,"alias"=>$alias,"type"=>$type);
+            }
+        }
+        return $results;
+    }
+ 
+    /**
+     * Port Status
+     * Returns the status of an individual port. Takes the SNMP index as the parameter.
+     * if ($snmp->portstatus(2)==true) {
+     *     echo "Port is up!";
+     * }
+     * @var integer $id 
+     * @return bool 
+     */
+    function portstatus($id) {
+        $adminStatus = @snmpget($this->host,$this->community,"IF-MIB::ifAdminStatus.$id");
+        if ($this->_isitup($adminStatus)==true) {
+            $operStatus = @snmpget($this->host,$this->community,"IF-MIB::ifOperStatus.$id");
+            if ($this->_isitup($operStatus)==true) {
+                return true;
+            } else {
+                return false;
+            }
+        } else {
+            return true;
+        }
+    }
+ 
+    /**
+     * @access private
+     */
+    function _walkget($oid) {
+        $ret = snmpwalk($this->host,$this->community,$oid);
+        if (sizeof($ret) > 0) {
+            return $ret[0];
+        } else {
+            return false;
+        }
+    }
+ 
+    /**
+     * Explore CDP
+     * When supplied with the current port list from the device, it will determine each ports CDP status.
+     * Returns an array containing the device name and port of the remote SNMP device detected via CDP,
+     * assuming that it has the same community string as the initial device. The returned array is indexed
+     * by the SNMP ports of the initial device.
+     *
+     * $ports = $snmp->getports();
+     * $cdp = $snmp->explore_cdp($ports);
+     * 
+     * An example of the output will look like:
+     * Array
+     * (
+     *     [2] => Array
+     *         (
+     *             [host] => second.device.hostname
+     *             [port] => FastEthernet0/1
+     *         )
+     * )
+     * @var array ports
+     * @return array 
+     */
+    function explore_cdp($ports) {
+        $cdpports=array();
+        foreach($ports as $id => $port) {
+            if ($ret = $this->_walkget("SNMPv2-SMI::enterprises.9.9.23.1.2.1.1.6.$id")) {
+                // this port is connected to another cisco!
+                $remote_id = substr($ret,9,strlen($ret)-10);
+                if ($ret = $this->_walkget("SNMPv2-SMI::enterprises.9.9.23.1.2.1.1.7.$id")) {
+                    $remote_port = substr($ret,9,strlen($ret)-10);
+                }
+                #echo "$this->host($port[desc]) is connected to $remote_id($remote_port)\n";
+                $cdpports[$id]=array('host'=>$remote_id,'port'=>$remote_port);
+            }
+        }
+        return $cdpports;
+    }
+ 
+}
+ 
+?>
diff --git a/includes/functions.php b/includes/functions.php
new file mode 100755
index 0000000000..4ad2ae5021
--- /dev/null
+++ b/includes/functions.php
@@ -0,0 +1,1046 @@
+<?
+
+include("generic.php");
+include("ios.php");
+include("unix.php");
+include("windows.php");
+include("procurve.php");
+include("snom.php");
+include("graphing.php");
+
+function print_error($text){
+
+echo("<table class=errorbox cellpadding=3><tr><td><img src='/images/15/exclamation.png' align=absmiddle> $text</td></tr></table>");
+
+}
+
+function print_message($text){
+
+echo("<table class=messagebox cellpadding=3><tr><td><img src='/images/16/tick.png' align=absmiddle> $text</td></tr></table>");
+
+}
+
+function truncate($substring, $max = 50, $rep = '...') {
+  if(strlen($substring) < 1){
+     $string = $rep;
+  }else{
+    $string = $substring;
+  }
+      
+  $leave = $max - strlen ($rep);
+      
+  if(strlen($string) > $max){
+    return substr_replace($string, $rep, $leave);
+  }else{
+    return $string;
+  }      
+}
+
+function geteventicon ($message) {
+  if($message == "Device status changed to Down") { $icon = "server_connect.png"; }
+  if($message == "Device status changed to Up") { $icon = "server_go.png"; }
+  if($message == "Interface went down" || $message == "Interface changed state to Down" ) { $icon = "if-disconnect.png"; }
+  if($message == "Interface went up" || $message == "Interface changed state to Up" ) { $icon = "if-connect.png"; }
+  if($message == "Interface disabled") { $icon = "if-disable.png"; }
+  if($message == "Interface enabled") { $icon = "if-enable.png"; }
+  if($icon) { return $icon; } else { return false; }
+}
+
+
+function generateiflink($iface, $text=0) {
+  global $twoday;
+  global $now;
+  if(!$text) { $text = fixIfName($iface['if']); }
+  $class = ifclass($iface['up'], $iface['up_admin']);
+  $graph_url = "graph.php?if=$iface[id]&from=$twoday&to=$now&width=400&height=120&type=bits";
+  $link = "<a class=$class href='?page=interface&id=$iface[id]'  onmouseover=\"return overlib('<img src=\'$graph_url\'>');\" onmouseout=\"return nd();\">$text</a>";
+  return $link;
+}
+
+function generatedevicelink($device, $text=0) {
+  global $twoday;
+  global $now;
+  if($device['dev_id']) { $id = $device['dev_id']; } else { $id = $device['id']; }
+  $class = devclass($device);
+  if(!$text) { $text = $device[hostname]; }
+  $graph_url = "graph.php?host=$id&from=$twoday&to=$now&width=400&height=120&type=cpu";
+  $link = "<a class=$class href='?page=device&id=$id' onmouseover=\"return overlib('<img src=\'$graph_url\'>');\" onmouseout=\"return nd();\">$text</a>";
+  return $link;
+}
+
+function devclass($device) {
+   if ($device['status'] == '0') { $class = "list-device-down"; } else { $class = "list-device"; }
+   if ($device['ignore'] == '1') {
+     $class = "list-device-ignored";
+     if ($device['status'] == '1') { $class = "list-device-ignored-up"; }
+   }
+  return $class;
+}
+
+
+function getImage($host) {
+
+$sql = "SELECT * FROM `devices` WHERE `id` = '$host'";
+$data = mysql_fetch_array(mysql_query($sql));
+
+$type = strtolower($data['os']);
+
+  if(file_exists("images/os/$type" . ".png")){ $image = "<img src='images/os/$type.png'>";
+  } elseif(file_exists("images/os/$type" . ".gif")){ $image = "<img src='images/os/$type.gif'>"; }
+  if($device['monowall']) {$image = "<img src='images/os/m0n0wall.png'>";}
+
+  if($type == "linux") {
+    $features = strtolower(trim($data[features]));
+    list($distro) = split(" ", $features);
+    if(file_exists("images/os/$distro" . ".png")){ $image = "<img src='images/os/$distro" . ".png'>";
+    } elseif(file_exists("images/os/$distro" . ".gif")){ $image = "<img src='images/os/$distro" . ".gif'>"; }
+  }
+
+  return $image;
+
+}
+
+
+function delHost($id) {
+
+  $host = mysql_result(mysql_query("SELECT hostname FROM devices WHERE id = '$id'"), 0);
+  mysql_query("DELETE FROM `devices` WHERE `id` = '$id'");
+  $int_query = mysql_query("SELECT * FROM `interfaces` WHERE `host` = '$id'");
+  while($int_data = mysql_fetch_array($int_query)) {
+    $int_if = $int_data['if'];
+    $int_id = $int_data['id'];
+    mysql_query("DELETE from `adjacencies` WHERE `interface_id` = '$int_id'");
+    mysql_query("DELETE from `links` WHERE `src_if` = '$int_id'");
+    mysql_query("DELETE from `links` WHERE `dst_if` = '$int_id'");
+    mysql_query("DELETE from `ipaddr` WHERE `interface_id` = '$int_id'");
+    echo("Removed interface $int_id ($int_if)<br />");
+  }
+  mysql_query("DELETE FROM `storage` WHERE `host_id` = '$id'");
+  mysql_query("DELETE FROM `alerts` WHERE `device_id` = '$id'");
+  mysql_query("DELETE FROM `eventlog` WHERE `host` = '$id'");
+  mysql_query("DELETE FROM `interfaces` WHERE `host` = '$id'");
+  mysql_query("DELETE FROM `services` WHERE `service_host` = '$id'");
+  `rm -f rrd/$host-*.rrd`;
+  echo("Removed device $host<br />");
+}
+
+
+function addHost($host, $community, $snmpver) {
+  list($hostshort)      = explode(".", $host);
+  if ( isDomainResolves($host)){
+    if ( isPingable($host)) {
+      if ( mysql_result(mysql_query("SELECT COUNT(*) FROM `devices` WHERE `hostname` = '$host'"), 0) == '0' ) {
+        $snmphost = trim(`snmpwalk -Oqv -$snmpver -c $community $host sysname | sed s/\"//g`);
+        if ($snmphost == $host || $hostshort = $host) {
+          createHost ($host, $community, $snmpver);
+        } else { echo("Given hostname does not match SNMP-read hostname!\n"); }
+      } else { echo("Already got host $host\n"); }
+    } else { echo("Could not ping $host\n"); }
+  } else { echo("Could not resolve $host\n"); }
+}
+
+function overlibprint($text) {
+	return "onmouseover=\"return overlib('" . $text . "');\" onmouseout=\"return nd();\"";
+}
+
+function scanUDP ($host, $port, $timeout) { 
+  $handle = fsockopen($host, $port, &$errno, &$errstr, 2); 
+  if (!$handle) { 
+  } 
+
+  socket_set_timeout ($handle, $timeout); 
+  $write = fwrite($handle,"\x00"); 
+  if (!$write) { 
+    next; 
+  } 
+
+  $startTime = time(); 
+  $header = fread($handle, 1); 
+  $endTime = time(); 
+  $timeDiff = $endTime - $startTime;  
+
+  if ($timeDiff >= $timeout) { 
+    fclose($handle); 
+    return 1; 
+  } else { 
+    fclose($handle); 
+    return 0; 
+  } 
+}
+
+function humanmedia($media) {
+        $media = preg_replace("/^ethernetCsmacd$/", "Ethernet", $media);
+        $media = preg_replace("/^softwareLoopback$/", "Software Loopback", $media);
+        $media = preg_replace("/^tunnel$/", "Tunnel", $media);
+	$media = preg_replace("/^propVirtual$/", "Ethernet VLAN", $media);
+	$media = preg_replace("/^ppp$/", "PPP", $media);
+	$media = preg_replace("/^slip$/", "SLIP", $media);
+        return $media;
+}
+
+
+function humanspeed($speed) {
+        $speed = preg_replace("/^0$/", "-", $speed);
+        $speed = preg_replace("/^9000$/", "9Kbps", $speed);
+	$speed = preg_replace("/^48000$/", "48Kbps", $speed);
+        $speed = preg_replace("/^64000$/", "64Kbps", $speed);
+        $speed = preg_replace("/^128000$/", "128Kbps", $speed);
+        $speed = preg_replace("/^256000$/", "256Kbps", $speed);
+        $speed = preg_replace("/^512000$/", "512Kbps", $speed);
+	$speed = preg_replace("/^768000$/", "768Kbps", $speed);
+        $speed = preg_replace("/^1024000$/", "1Mbps", $speed);
+        $speed = preg_replace("/^2048000$/", "2Mbps", $speed);
+        $speed = preg_replace("/^4192000$/", "4Mbps", $speed);
+	$speed = preg_replace("/^10000000$/", "10Mbps", $speed);
+	$speed = preg_replace("/^34000000$/", "34Mbps", $speed);
+        $speed = preg_replace("/^100000000$/", "100Mbps", $speed);
+ 	$speed = preg_replace("/^155000000$/", "155Mbps", $speed);
+        $speed = preg_replace("/^622000000$/", "622Mbps", $speed);
+        $speed = preg_replace("/^1000000000$/", "1Gbps", $speed);
+        $speed = preg_replace("/^10000000000$/", "10Gbps", $speed);
+	$speed = preg_replace("/^4294967295$/", "", $speed);
+        if($speed == "") { $speed = "-"; }
+	return $speed;
+}
+
+
+function netmask2cidr($netmask) {
+
+ list ($network, $cidr) = explode("/", trim(`ipcalc $address/$mask | grep Network | cut -d" " -f 4`));
+ return $cidr;
+
+}
+
+function cidr2netmask() {
+   return (long2ip(ip2long("255.255.255.255")
+           << (32-$netmask)));
+}
+
+function formatUptime($diff) {
+  $daysDiff = floor($diff/86400);
+  $diff -= $daysDiff*86400;
+  $hrsDiff = floor($diff/60/60);
+  $diff -= $hrsDiff*60*60;
+  $minsDiff = floor($diff/60);
+  $diff -= $minsDiff*60;
+  $secsDiff = $diff;
+  if($daysDiff > '0'){ $uptime .= "$daysDiff days, "; }
+  if($hrsDiff > '0'){ $uptime .= $hrsDiff . "h "; }
+  if($minsDiff > '0'){ $uptime .= $minsDiff . "m "; }
+  if($secsDiff > '0'){ $uptime .= $secsDiff . "s "; }
+  return "$uptime";
+}
+
+function isSNMPable($hostname, $community, $snmpver) {
+     $pos = `snmpget -$snmpver -c $community -t 1 $hostname sysDescr.0`;
+     if($pos == '') {
+       $status='0';
+       $posb = `snmpget -$snmpver -c $community -t 1 $hostname 1.3.6.1.2.1.7526.2.4`;
+       if($posb == '') { } else { $status='1'; }
+     } else {
+       $status='1';
+     }
+     return $status;
+}
+
+function isPingable($hostname) {
+   global $fping;
+   $status = `$fping $hostname | cut -d " " -f 3`;
+   $status = trim($status);
+
+   if($status == "alive") {
+     return TRUE;
+   } else {
+     return FALSE;
+   }
+}
+
+
+function is_odd($number) {
+   return $number & 1; // 0 = even, 1 = odd
+}
+
+function isValidInterface($if) {
+      $if = strtolower($if);
+      $bif = array("null", "virtual-", "unrouted", "eobc", "mpls", "aal5", "-atm layer", "dialer", "-shdsl", "-adsl", "async", "sit0", "sit1");
+      $nullintf = 0;
+      foreach($bif as $bi) {
+         $pos = strpos($if, $bi);
+         if ($pos !== FALSE) {
+            $nullintf = 1;
+            echo("$if matched $bi \n");
+         }
+      }
+      if (preg_match('/serial[0-9]:/', $if)) { $nullintf = '1'; }
+      if ($nullintf != '1') {
+         return 1;
+      }  else { return 0; }
+}
+
+function ifclass($up, $up_admin) {
+        $ifclass = "interface-upup";
+
+        if ($up_admin == "down") { $ifclass = "interface-admindown"; }
+        if ($up_admin == "up" && $up == "down") { $ifclass = "interface-updown"; }
+        if ($up_admin == "up" && $up == "up") { $ifclass = "interface-upup"; }
+	return $ifclass;
+}
+
+function makeshortif($if) {
+	$if = strtolower($if);
+	$if = str_replace("tengigabitethernet","Te", $if);
+	$if = str_replace("gigabitethernet","Gi", $if);
+	$if = str_replace("fastethernet","Fa", $if);
+	$if = str_replace("ethernet","Et", $if);
+        $if = str_replace("serial","Se", $if);
+        $if = str_replace("pos","Pos", $if);
+	$if = str_replace("port-channel","Po", $if);
+        $if = str_replace("atm","Atm", $if);
+	$if = str_replace("loopback","Lo", $if);        
+	$if = str_replace("dialer","Di", $if);
+	$if = str_replace("vlan","Vlan", $if);
+	return $if;
+}
+
+function utime() {
+        $time = explode( " ", microtime());
+        $usec = (double)$time[0];
+        $sec = (double)$time[1];
+        return $sec + $usec;
+}
+
+function fixiftype ($type) {
+
+	$type = str_replace("ethernetCsmacd", "Ethernet", $type);
+        $type = str_replace("tunnel", "Tunnel", $type);
+        $type = str_replace("softwareLoopback", "Software Loopback", $type);
+        $type = str_replace("propVirtual", "Ethernet VLAN", $type);
+        $type = str_replace("ethernetCsmacd", "Ethernet", $type);
+        $type = str_replace("l2vlan", "Ethernet VLAN", $type);
+        
+	return ($type);
+
+}
+
+function fixifName ($inf) {
+        $inf = str_replace("ether", "Ether", $inf);
+        $inf = str_replace("gig", "Gig", $inf);
+        $inf = str_replace("fast", "Fast", $inf);
+        $inf = str_replace("ten", "Ten", $inf);
+        $inf = str_replace("vlan", "Vlan", $inf);
+        $inf = str_replace("ether", "Ether", $inf);
+        $inf = str_replace("loop", "Loop", $inf);
+        $inf = str_replace("-802.1q Vlan subif", "", $inf);
+        $inf = str_replace("serial", "Serial", $inf);
+        $inf = str_replace("-aal5 layer", " aal5", $inf);
+        $inf = str_replace("atm", "ATM", $inf);
+        $inf = str_replace("port-channel", "Port-Channel", $inf);
+        $inf = str_replace("dial", "Dial", $inf);
+        $inf = str_replace("hp procurve switch software Loopback interface", "Loopback Interface", $inf);
+        $inf = str_replace("control plane interface", "Control Plane", $inf);
+	return $inf;
+}
+
+function trafgraph ($rrd, $graph, $from, $to, $width, $height)
+{
+  global $rrdtool; global $installdir;    
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array( "--alt-autoscale-max",
+		 "-E", 
+                 "--start", $from, "--end", $to, 
+                 "--width", $width, "--height", $height, 
+                 "DEF:inoctets=$database:INOCTETS:AVERAGE",
+                 "DEF:outoctets=$database:OUTOCTETS:AVERAGE",
+                 "CDEF:doutoctets=outoctets,-1,*",
+                 "CDEF:inbits=inoctets,8,*",
+                 "CDEF:outbits=outoctets,8,*",
+                 "CDEF:doutbits=doutoctets,8,*",
+		 "VDEF:95thin=inbits,95,PERCENT",
+		 "VDEF:95thout=outbits,95,PERCENT",
+	         "VDEF:d95thout=doutbits,5,PERCENT",
+                 "AREA:inbits#CDEB8B:",
+                 "COMMENT:BPS    Current   Average      Max   95th %\\n",
+                 "LINE1.25:inbits#006600:In ",
+                 "GPRINT:inbits:LAST:%6.2lf%s",
+                 "GPRINT:inbits:AVERAGE:%6.2lf%s",
+                 "GPRINT:inbits:MAX:%6.2lf%s",
+                 "GPRINT:95thin:%6.2lf%s\\n",
+                 "AREA:doutbits#C3D9FF:",
+                 "LINE1.25:doutbits#000099:Out",
+                 "GPRINT:outbits:LAST:%6.2lf%s",
+                 "GPRINT:outbits:AVERAGE:%6.2lf%s",
+                 "GPRINT:outbits:MAX:%6.2lf%s",
+                 "GPRINT:95thout:%6.2lf%s",
+                 "LINE1:95thin#aa0000",
+                 "LINE1:d95thout#aa0000:" );
+  
+
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+
+  if( !is_array($ret) )
+  {
+    $err = rrd_error();
+  #  echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function pktsgraph ($rrd, $graph, $from, $to, $width, $height) {
+  global $rrdtool; global $installdir;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array( "--alt-autoscale-max",
+                 "-l 0",
+                 "-E", 
+                 "--start", $from, "--end", $to,
+                 "--width", $width, "--height", $height,
+                 "DEF:in=$database:INUCASTPKTS:AVERAGE",
+                 "DEF:out=$database:OUTUCASTPKTS:AVERAGE",
+                 "CDEF:dout=out,-1,*",
+                 "AREA:in#aa66aa:",
+                 "COMMENT:Packets    Current     Average      Maximum\\n",
+                 "LINE1.25:in#330033:In  ",
+                 "GPRINT:in:LAST:%6.2lf%spps",
+                 "GPRINT:in:AVERAGE:%6.2lf%spps",
+                 "GPRINT:in:MAX:%6.2lf%spps\\n",
+                 "AREA:dout#FFDD88:",
+                 "LINE1.25:dout#FF6600:Out ",
+		 "GPRINT:out:LAST:%6.2lf%spps",
+                 "GPRINT:out:AVERAGE:%6.2lf%spps",
+                 "GPRINT:out:MAX:%6.2lf%spps\\n");
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+  
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+#    echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function errorgraph ($rrd, $graph, $from, $to, $width, $height)
+{
+    global $rrdtool; global $installdir;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+
+    $optsa = array( 
+                   "--alt-autoscale-max",
+                   "-E", 
+                   "-l 0",
+                   "--start", $from, "--end", $to,
+                   "--width", $width, "--height", $height,
+                   "DEF:in=$database:INERRORS:AVERAGE",
+                   "DEF:out=$database:OUTERRORS:AVERAGE",
+                   "CDEF:dout=out,-1,*",
+		   "AREA:in#ff3300:",
+                   "COMMENT:Errors    Current     Average      Maximum\\n",
+                   "LINE1.25:in#ff0000:In ",
+                   "GPRINT:in:LAST:%6.2lf%spps",
+                   "GPRINT:in:AVERAGE:%6.2lf%spps",
+                   "GPRINT:in:MAX:%6.2lf%spps\\n",
+                   "AREA:dout#ff6633:",
+                   "LINE1.25:out#cc3300:Out",
+                   "GPRINT:out:LAST:%6.2lf%spps",
+                   "GPRINT:out:AVERAGE:%6.2lf%spps",
+                   "GPRINT:out:MAX:%6.2lf%spps\\n",
+                   );
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+    $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+ #   echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+
+}
+
+function nucastgraph ($rrd, $graph, $from, $to, $width, $height)
+{
+    global $rrdtool; global $installdir;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+  $optsa = array( "--start", $from, "--end", $to,
+                 "--width", $width, "--height", $height,
+                 "--alt-autoscale-max",
+                 "-E", 
+                 "-l 0",
+                 "DEF:in=$database:INNUCASTPKTS:AVERAGE",
+                 "DEF:out=$database:OUTNUCASTPKTS:AVERAGE",
+                 "CDEF:dout=out,-1,*",
+                 "AREA:in#aa66aa:",
+                 "COMMENT:Packets     Current     Average      Maximum\\n",
+                 "LINE1.25:in#330033:In   ",
+                 "GPRINT:in:LAST:%6.2lf%spps",
+                 "GPRINT:in:AVERAGE:%6.2lf%spps",
+                 "GPRINT:in:MAX:%6.2lf%spps\\n",
+                 "AREA:dout#FFDD88:",
+                 "LINE1.25:dout#FF6600:Out  ",
+                 "GPRINT:out:LAST:%6.2lf%spps",
+                 "GPRINT:out:AVERAGE:%6.2lf%spps",
+                 "GPRINT:out:MAX:%6.2lf%spps\\n");
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+    echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function cpugraph ($rrd, $graph , $from, $to, $width, $height)
+{
+ global $rrdtool; global $installdir;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+    $optsa = array( "--start", $from, "--width", $width, "--height", $height, "--vertical-label", $vertical, "--alt-autoscale-max",
+                 "-l 0",
+                 "-E", 
+                 "--title", $title,
+                 "DEF:5s=$database:LOAD5S:AVERAGE",
+                 "DEF:5m=$database:LOAD5M:AVERAGE",
+                 "AREA:5s#FAFDCE:5sec",
+                 "LINE1.25:5s#dd8800:",
+                 "GPRINT:5s:LAST:Cur\:%6.2lf",
+                 "GPRINT:5s:AVERAGE:Avg\: %6.2lf",
+		 "GPRINT:5s:MIN:Min\:%6.2lf",
+                 "GPRINT:5s:MAX:Max\:%6.2lf\\n",
+                 "LINE1.25:5m#aa2200:5min",
+                 "GPRINT:5m:LAST:Cur\:%6.2lf",
+                 "GPRINT:5m:AVERAGE:Avg\: %6.2lf",
+                 "GPRINT:5m:MIN:Min\:%6.2lf",
+                 "GPRINT:5m:MAX:Max\:%6.2lf\\n");
+
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+  $opts = array_merge($optsa, $optsb);
+
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+    #echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function tempgraph ($rrd, $graph, $from, $to, $width, $height, $title, $vertical)
+{
+ global $rrdtool; global $installdir;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+
+  $optsa = array( "--start", $from, "--width", $width, "--height", $height, "--vertical-label", $vertical, "--alt-autoscale-max",
+                 "-E",  "-l 0", "--title", $title,
+	    "DEF:in=$database:TEMPIN1:AVERAGE",
+	    "DEF:out=$database:TEMPOUT1:AVERAGE",
+            "LINE1.5:in#cc0000:Inlet ",
+            "GPRINT:in:LAST: Cur\:%6.2lf",
+            "GPRINT:in:AVERAGE:Avg\: %6.2lf",
+            "GPRINT:in:MIN:Min\:%6.2lf",
+            "GPRINT:in:MAX:Max\:%6.2lf\\n",
+            "LINE1.25:out#009900:Outlet ",
+            "GPRINT:out:LAST:Cur\:%6.2lf",
+            "GPRINT:out:AVERAGE:Avg\: %6.2lf",
+            "GPRINT:out:MIN:Min\:%6.2lf",
+            "GPRINT:out:MAX:Max\:%6.2lf\\n");
+
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+  $opts = array_merge($optsa, $optsb);
+
+
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+#    echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function uptimegraph ($rrd, $graph , $from, $to, $width, $height, $title, $vertical)
+{
+ global $rrdtool; global $installdir;
+    $rrd = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+    $optsa = array( "--start", $from, "--width", $width, "--height", $height, "--alt-autoscale-max",
+                   "-E",  "-l 0",
+            "DEF:uptime=$rrd:uptime:AVERAGE",
+            "CDEF:cuptime=uptime,86400,/",
+            "AREA:cuptime#EEEEEE:Uptime",
+            "LINE1.25:cuptime#36393D:",
+            "GPRINT:cuptime:LAST:Cur\:%6.2lf",
+            "GPRINT:cuptime:AVERAGE:Avg\: %6.2lf",
+            "GPRINT:cuptime:MAX:Max\:%6.2lf\\n");
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+ #   echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+
+function memgraph ($rrd, $graph , $from, $to, $width, $height, $title, $vertical)
+{
+ global $rrdtool; global $installdir;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+    $memrrd = $database;
+    $opts = "--start $from \
+            --alt-autoscale-max \
+            --width $width --height $height \
+            -l 0 -E \
+            -b 1024 \
+             DEF:MEMTOTAL=$memrrd:MEMTOTAL:AVERAGE \
+             DEF:IOFREE=$memrrd:IOFREE:AVERAGE \
+             DEF:IOUSED=$memrrd:IOUSED:AVERAGE \
+             DEF:PROCFREE=$memrrd:PROCFREE:AVERAGE \
+             DEF:PROCUSED=$memrrd:PROCUSED:AVERAGE \
+	     CDEF:FREE=IOFREE,PROCFREE,+ \
+             CDEF:USED=IOUSED,PROCUSED,+ \
+             AREA:USED#ee9900:Used \
+             AREA:FREE#FAFDCE:Free:STACK \
+             LINE1.5:MEMTOTAL#cc0000:";
+
+  if($width <= "300") {$opts .= "\
+                                 --font LEGEND:7:$installdir/DejaVuSansMono.ttf \
+                                 --font AXIS:6:$installdir/DejaVuSansMono.ttf \
+                                 --font-render-mode normal";}
+
+
+    `$rrdtool graph $imgfile $opts`;
+    return $imgfile;
+}
+
+function ip_graph ($rrd, $graph, $from, $to, $width, $height) {
+  global $rrdtool; global $installdir;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--alt-autoscale-max", "-E", "-l 0",
+                 "DEF:ipForwDatagrams=$database:ipForwDatagrams:AVERAGE",
+                 "DEF:ipInDelivers=$database:ipInDelivers:AVERAGE",
+                 "DEF:ipInReceives=$database:ipInReceives:AVERAGE",
+                 "DEF:ipOutRequests=$database:ipOutRequests:AVERAGE",
+                 "DEF:ipInDiscards=$database:ipInDiscards:AVERAGE",
+                 "DEF:ipOutDiscards=$database:ipOutDiscards:AVERAGE",
+                 "DEF:ipOutNoRoutes=$database:ipInDiscards:AVERAGE",
+                 "COMMENT:Packets/sec    Current    Average   Maximum\\n",
+                 "LINE1.25:ipForwDatagrams#cc0000:ForwDgrams ",
+                 "GPRINT:ipForwDatagrams:LAST:%6.2lf%s",
+                 "GPRINT:ipForwDatagrams:AVERAGE: %6.2lf%s",
+                 "GPRINT:ipForwDatagrams:MAX: %6.2lf%s\\n",
+                 "LINE1.25:ipInDelivers#00cc00:InDelivers ",
+                 "GPRINT:ipInDelivers:LAST:%6.2lf%s",
+                 "GPRINT:ipInDelivers:AVERAGE: %6.2lf%s",
+                 "GPRINT:ipInDelivers:MAX: %6.2lf%s\\n",
+                 "LINE1.25:ipInReceives#006600:InReceives ",
+                 "GPRINT:ipInReceives:LAST:%6.2lf%s",
+                 "GPRINT:ipInReceives:AVERAGE: %6.2lf%s",
+                 "GPRINT:ipInReceives:MAX: %6.2lf%s\\n",
+                 "LINE1.25:ipOutRequests#0000cc:OutRequests",
+                 "GPRINT:ipOutRequests:LAST:%6.2lf%s",
+                 "GPRINT:ipOutRequests:AVERAGE: %6.2lf%s",
+                 "GPRINT:ipOutRequests:MAX: %6.2lf%s\\n",
+                 "LINE1.25:ipInDiscards#cccc00:InDiscards ",
+                 "GPRINT:ipInDiscards:LAST:%6.2lf%s",
+                 "GPRINT:ipInDiscards:AVERAGE: %6.2lf%s",
+                 "GPRINT:ipInDiscards:MAX: %6.2lf%s\\n",
+                 "LINE1.25:ipOutDiscards#330033:OutDiscards",
+                 "GPRINT:ipOutDiscards:LAST:%6.2lf%s",
+                 "GPRINT:ipOutDiscards:AVERAGE: %6.2lf%s",
+                 "GPRINT:ipOutDiscards:MAX: %6.2lf%s\\n",
+                 "LINE1.25:ipOutNoRoutes#660000:OutNoRoutes",
+                 "GPRINT:ipOutNoRoutes:LAST:%6.2lf%s",
+                 "GPRINT:ipOutNoRoutes:AVERAGE: %6.2lf%s",
+                 "GPRINT:ipOutNoRoutes:MAX: %6.2lf%s\\n"
+		 );
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", "--font-render-mode", "normal");}
+  $opts = array_merge($optsa, $optsb);
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) { 
+    $err = rrd_error(); echo "rrd_graph() ERROR: $err\n"; return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function icmp_graph ($rrd, $graph, $from, $to, $width, $height) {
+  global $rrdtool; global $installdir;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--alt-autoscale-max", "-E", "-l 0",
+                "DEF:icmpInMsgs=$database:icmpInMsgs:AVERAGE",
+                 "DEF:icmpOutMsgs=$database:icmpOutMsgs:AVERAGE",
+                 "DEF:icmpInErrors=$database:icmpInErrors:AVERAGE",
+                 "DEF:icmpOutErrors=$database:icmpOutErrors:AVERAGE",
+                 "DEF:icmpInEchos=$database:icmpInEchos:AVERAGE",
+                 "DEF:icmpOutEchos=$database:icmpOutEchos:AVERAGE",
+                 "DEF:icmpInEchoReps=$database:icmpInEchoReps:AVERAGE",
+                 "DEF:icmpOutEchoReps=$database:icmpOutEchoReps:AVERAGE",
+                 "COMMENT:Packets/sec    Current    Average   Maximum\\n",
+                 "LINE1.25:icmpInMsgs#00cc00:InMsgs     ",
+                 "GPRINT:icmpInMsgs:LAST:%6.2lf%s",
+                 "GPRINT:icmpInMsgs:AVERAGE: %6.2lf%s",
+                 "GPRINT:icmpInMsgs:MAX: %6.2lf%s\\n",
+                 "LINE1.25:icmpOutMsgs#006600:OutMsgs    ",
+                 "GPRINT:icmpOutMsgs:LAST:%6.2lf%s",
+                 "GPRINT:icmpOutMsgs:AVERAGE: %6.2lf%s",
+                 "GPRINT:icmpOutMsgs:MAX: %6.2lf%s\\n",
+                 "LINE1.25:icmpInErrors#cc0000:InErrors   ",
+                 "GPRINT:icmpInErrors:LAST:%6.2lf%s",
+                 "GPRINT:icmpInErrors:AVERAGE: %6.2lf%s",
+                 "GPRINT:icmpInErrors:MAX: %6.2lf%s\\n",
+                 "LINE1.25:icmpOutErrors#660000:OutErrors  ",
+                 "GPRINT:icmpOutErrors:LAST:%6.2lf%s",
+                 "GPRINT:icmpOutErrors:AVERAGE: %6.2lf%s",
+                 "GPRINT:icmpOutErrors:MAX: %6.2lf%s\\n",
+                 "LINE1.25:icmpInEchos#0066cc:InEchos    ",
+                 "GPRINT:icmpInEchos:LAST:%6.2lf%s",
+                 "GPRINT:icmpInEchos:AVERAGE: %6.2lf%s",
+                 "GPRINT:icmpInEchos:MAX: %6.2lf%s\\n",
+                 "LINE1.25:icmpOutEchos#003399:OutEchos   ",
+                 "GPRINT:icmpOutEchos:LAST:%6.2lf%s",
+                 "GPRINT:icmpOutEchos:AVERAGE: %6.2lf%s",
+                 "GPRINT:icmpOutEchos:MAX: %6.2lf%s\\n",
+                 "LINE1.25:icmpInEchoReps#cc00cc:InEchoReps ",
+                 "GPRINT:icmpInEchoReps:LAST:%6.2lf%s",
+                 "GPRINT:icmpInEchoReps:AVERAGE: %6.2lf%s",
+                 "GPRINT:icmpInEchoReps:MAX: %6.2lf%s\\n",
+                 "LINE1.25:icmpOutEchoReps#990099:OutEchoReps",
+                 "GPRINT:icmpOutEchoReps:LAST:%6.2lf%s",
+                 "GPRINT:icmpOutEchoReps:AVERAGE: %6.2lf%s",
+                 "GPRINT:icmpOutEchoReps:MAX: %6.2lf%s\\n"
+                 );
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", "--font-render-mode", "normal");}
+  $opts = array_merge($optsa, $optsb);
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+    $err = rrd_error(); echo "rrd_graph() ERROR: $err\n"; return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function tcp_graph ($rrd, $graph, $from, $to, $width, $height) {
+  global $rrdtool; global $installdir;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--alt-autoscale-max", "-E", "-l 0",
+                 "DEF:tcpActiveOpens=$database:tcpActiveOpens:AVERAGE",
+                 "DEF:tcpPassiveOpens=$database:tcpPassiveOpens:AVERAGE",
+                 "DEF:tcpAttemptFails=$database:tcpAttemptFails:AVERAGE",
+                 "DEF:tcpEstabResets=$database:tcpEstabResets:AVERAGE",
+                 "DEF:tcpInSegs=$database:tcpInSegs:AVERAGE",
+                 "DEF:tcpOutSegs=$database:tcpOutSegs:AVERAGE",
+                 "DEF:tcpRetransSegs=$database:tcpRetransSegs:AVERAGE",
+                 "COMMENT:Packets/sec    Current    Average   Maximum\\n",
+                 "LINE1.25:tcpActiveOpens#00cc00:ActiveOpens ",
+                 "GPRINT:tcpActiveOpens:LAST:%6.2lf%s",
+                 "GPRINT:tcpActiveOpens:AVERAGE: %6.2lf%s",
+                 "GPRINT:tcpActiveOpens:MAX: %6.2lf%s\\n",
+                 "LINE1.25:tcpPassiveOpens#006600:PassiveOpens",
+                 "GPRINT:tcpPassiveOpens:LAST:%6.2lf%s",
+                 "GPRINT:tcpPassiveOpens:AVERAGE: %6.2lf%s",
+                 "GPRINT:tcpPassiveOpens:MAX: %6.2lf%s\\n",
+                 "LINE1.25:tcpAttemptFails#cc0000:AttemptFails",
+                 "GPRINT:tcpAttemptFails:LAST:%6.2lf%s",
+                 "GPRINT:tcpAttemptFails:AVERAGE: %6.2lf%s",
+                 "GPRINT:tcpAttemptFails:MAX: %6.2lf%s\\n",
+                 "LINE1.25:tcpEstabResets#660000:EstabResets ",
+                 "GPRINT:tcpEstabResets:LAST:%6.2lf%s",
+                 "GPRINT:tcpEstabResets:AVERAGE: %6.2lf%s",
+                 "GPRINT:tcpEstabResets:MAX: %6.2lf%s\\n",
+                 "LINE1.25:tcpInSegs#0066cc:InSegs      ",
+                 "GPRINT:tcpInSegs:LAST:%6.2lf%s",
+                 "GPRINT:tcpInSegs:AVERAGE: %6.2lf%s",
+                 "GPRINT:tcpInSegs:MAX: %6.2lf%s\\n",
+                 "LINE1.25:tcpOutSegs#003399:OutSegs     ",
+                 "GPRINT:tcpOutSegs:LAST:%6.2lf%s",
+                 "GPRINT:tcpOutSegs:AVERAGE: %6.2lf%s",
+                 "GPRINT:tcpOutSegs:MAX: %6.2lf%s\\n",
+                 "LINE1.25:tcpRetransSegs#cc00cc:RetransSegs ",
+                 "GPRINT:tcpRetransSegs:LAST:%6.2lf%s",
+                 "GPRINT:tcpRetransSegs:AVERAGE: %6.2lf%s",
+                 "GPRINT:tcpRetransSegs:MAX: %6.2lf%s\\n",
+                 );
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", "--font-render-mode", "normal");}
+  $opts = array_merge($optsa, $optsb);
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+    $err = rrd_error(); echo "rrd_graph() ERROR: $err\n"; return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function udp_graph ($rrd, $graph, $from, $to, $width, $height) {
+  global $rrdtool; global $installdir;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--alt-autoscale-max", "-E", "-l 0",
+                 "DEF:udpInDatagrams=$database:udpInDatagrams:AVERAGE",
+                 "DEF:udpOutDatagrams=$database:udpOutDatagrams:AVERAGE",
+                 "DEF:udpInErrors=$database:udpInErrors:AVERAGE",
+                 "DEF:udpNoPorts=$database:udpNoPorts:AVERAGE",
+                 "COMMENT:Packets/sec    Current    Average   Maximum\\n",
+                 "LINE1.25:udpInDatagrams#00cc00:InDatagrams ",
+                 "GPRINT:udpInDatagrams:LAST:%6.2lf%s",
+                 "GPRINT:udpInDatagrams:AVERAGE: %6.2lf%s",
+                 "GPRINT:udpInDatagrams:MAX: %6.2lf%s\\n",
+                 "LINE1.25:udpOutDatagrams#006600:OutDatagrams",
+                 "GPRINT:udpOutDatagrams:LAST:%6.2lf%s",
+                 "GPRINT:udpOutDatagrams:AVERAGE: %6.2lf%s",
+                 "GPRINT:udpOutDatagrams:MAX: %6.2lf%s\\n",
+                 "LINE1.25:udpInErrors#cc0000:InErrors    ",
+                 "GPRINT:udpInErrors:LAST:%6.2lf%s",
+                 "GPRINT:udpInErrors:AVERAGE: %6.2lf%s",
+                 "GPRINT:udpInErrors:MAX: %6.2lf%s\\n",
+                 "LINE1.25:udpNoPorts#660000:NoPorts     ",
+                 "GPRINT:udpNoPorts:LAST:%6.2lf%s",
+                 "GPRINT:udpNoPorts:AVERAGE: %6.2lf%s",
+                 "GPRINT:udpNoPorts:MAX: %6.2lf%s\\n",
+                 );
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", "--font-render-mode", "normal");}
+  $opts = array_merge($optsa, $optsb);
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+    $err = rrd_error(); echo "rrd_graph() ERROR: $err\n"; return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+
+function fixIOSFeatures($features){
+	$features = str_replace("ADVSECURITYK9", "Advanced Security Crypto", $features);
+        $features = str_replace("K91P", "Provider Crypto", $features);
+	$features = str_replace("K4P", "Provider Crypto", $features);
+        $features = str_replace("ADVIPSERVICESK9_WAN", "Adv IP Services Crypto + WAN", $features);
+        $features = str_replace("ADVIPSERVICESK9", "Adv IP Services Crypto", $features);
+        $features = str_replace("ADVIPSERVICES", "Adv IP Services", $features);
+        $features = str_replace("IK9P", "IP Plus Crypto", $features);
+        $features = str_replace("SPSERVICESK9", "SP Services Crypto", $features);
+        $features = str_replace("PK9SV", "Provider Crypto", $features);
+        $features = str_replace("IS", "IP Plus", $features);
+        $features = str_replace("IPSERVICESK9", "IP Services Crypto", $features);
+        $features = str_replace("BROADBAND", "Broadband", $features);
+        $features = str_replace("IPBASE", "IP Base", $features);
+        $features = str_replace("IPSERVICE", "IP Services", $features);
+        $features = preg_replace("/^P$/", "Service Provider", $features);
+        $features = str_replace("IK9S", "IP Plus Crypto", $features);
+	$features = str_replace("I6Q4L2", "Layer 2", $features);
+        $features = str_replace("I6K2L2Q4", "Layer 2 Crypto", $features);
+	$features = str_replace("C3H2S", "Layer 2 SI/EI", $features);
+	return $features;
+}
+
+function fixIOSHardware($hardware){
+
+        $hardware = preg_replace("/C([0-9]+)/", "Cisco \\1", $hardware);
+        $hardware = str_replace("cat4000","Catalyst 4000", $hardware);
+        $hardware = str_replace("s3223_rp","Cisco Catalyst 6500 SUP32", $hardware);
+        $hardware = str_replace("s222_rp","Cisco Catalyst 6500 SUP2", $hardware);
+        $hardware = str_replace("c6sup2_rp","Cisco Catalyst 6500 SUP2", $hardware);
+        $hardware = str_replace("s72033_rp","Cisco Catalyst 6500 SUP720 ", $hardware);
+        $hardware = str_replace("RSP","Cisco 7500", $hardware);
+	$hardware = str_replace("C3200XL", "Cisco Catalyst 3200XL", $hardware);
+	$hardware = str_replace("C3550", "Cisco Catalyst 3550", $hardware);
+	$hardware = str_replace("C2950", "Cisco Catalyst 2950", $hardware);
+
+	return $hardware;
+
+}
+
+function updateHost ($host, $community, $snmpver)
+{
+#        $soft = `snmpget -O vq -$snmpver -c $community $host sysDescr.0 | grep IOS | sed s/Cisco\ IOS\ Software\,// | sed s/\"\ //g | sed s/IOS\  \(tm\)\ // | sed s/\,\ RELEASE\ SOFTWARE.*// | sed s/.*\ Software\ // | sed s/\,\ /\|\|/ | sed s/\Version\ // | sed s/,\ EARLY\ DEPLOYMENT\ RELEASE\ SOFTWARE\ .*//`;
+        $sysdescr = `snmpget -O vq -$snmpver -c $community $host sysDescr.0`;
+        $sysdecr = str_replace("\"","", $sysdescr);
+	$location = str_replace("\"","", `snmpget -O vq -v2c -c $community $host sysLocation.0`);
+        list ($features, $version) = explode('||', $soft);
+        $features = str_replace("(","", $features);
+        $features = str_replace(")","", $features);
+        $version = str_replace("\n","", $version);
+        $version = trim($version);
+        $location = trim($location);
+        list ($hardware, $features) = explode("-", $features);
+        $hardware = fixIOSHardware($hardware);
+        $features = fixIOSFeatures($features);
+        $sql = "UPDATE `devices` SET `hardware` = '$hardware', `features` = '$features', `version` = '$version', `sysdesc` = '$sysdescr', `location` = '$location' WHERE `hostname` = '$host'";
+#	echo("$sql \n");    
+#        mysql_query($sql);
+}
+
+function getHostOS($host, $community, $snmpver) {
+	$sysDescr = trim(`snmpget -O qv -$snmpver -c $community $host sysDescr.0`);
+        if ($sysDescr == "") {$sysDescr = trim(`snmpget -O qv -$snmpver -c $community $host 1.3.6.1.2.1.7526.2.4`);}
+        echo("\nsnmpget -O qv -$snmpver -c $community $host sysDescr.0\n$sysDescr\n");
+	if (strstr($sysDescr, "IOS") !== false) { $os = "IOS"; }
+        if (strstr($sysDescr, "FreeBSD") !== false) { $os = "FreeBSD"; }
+	if (strstr($sysDescr, "DragonFly")) { $os = "DragonFly"; }
+        if (strstr($sysDescr, "NetBSD") !== false) { $os = "NetBSD"; }
+	if (strstr($sysDescr, "OpenBSD") !== false) { $os = "OpenBSD"; }
+        if (strstr($sysDescr, "Linux") !== false) { $os = "Linux"; }
+	if (strstr($sysDescr, "Windows")) { $os = "Windows"; }
+        if (strstr($sysDescr, "ProCurve")) { $os = "ProCurve"; }
+	if (strstr($sysDescr, "m0n0wall")) { $os = "m0n0wall"; }
+	if (strstr($sysDescr, "Voswall")) { $os = "Voswall"; }
+	if (strstr($sysDescr, "snom")) { $os = "Snom"; }
+	return $os;
+}
+
+
+function createHost ($host, $community, $snmpver){
+        $host = trim(strtolower($host));
+        $host_os = getHostOS($host, $community, $snmpver); 
+	global $valid_os;
+        $nullhost = 1;
+        echo("$host -> $host_os<br />");
+        foreach($valid_os as $os) {
+           if ($os == $host_os) {
+              $nullhost = '0';
+           }
+        }
+        if($nullhost == '0') {
+           $sql = mysql_query("INSERT INTO `devices` (`hostname`, `community`, `os`, `status`) VALUES ('$host', '$community', '$host_os', '1')");
+           echo("Created host : $host\n");
+        } else {
+	   echo("Not added bad host : $host\n");
+	}
+}
+
+function createInterface ($host, $if, $ifIndex, $up,$up_admin,$speed,$duplex,$mac,$name){
+	$sql = "INSERT INTO `interfaces` (`host`,`if`,`ifIndex`, `up`,`up_admin`,`speed`,`duplex`,`mac`,`name`)";
+	$sql = $sql . " VALUES ('$host', '$if','$ifIndex','$up','$up_admin','$speed','$duplex','$mac',\"$name\")";
+	mysql_query($sql);
+}
+
+function updateInterfaceStatus ($id,$ifOperStatus,$ifAdminStatus,$speed,$duplex,$mac,$ifAlias) {
+        $sql = "UPDATE `interfaces` SET `up` = '$ifOperStatus', `up_admin` = '$ifAdminStatus', `speed` = '$speed', ";
+        $sql .= "`duplex` = '$duplex', `mac` = '$mac', `name` = \"$ifAlias\"  WHERE `id` = '$id'";
+        mysql_query($sql);
+	echo("$sql\n");
+}
+
+function updateInterface ($host, $if, $ifIndex, $up, $up_admin, $speed, $duplex, $mac, $name){
+        $sql = "UPDATE `interfaces` SET `up` = '$up',`up_admin` = '$up_admin',`speed` = '$speed',`duplex` = '$duplex',`mac` = '$mac',`name` =  \"$name\"";
+        $sql .= " WHERE `host` = '$host' AND `if` = '$if'";
+        mysql_query($sql);
+}
+
+function isDomainResolves($domain){
+     return gethostbyname($domain) != $domain;
+}
+
+function hoststatus($id) {
+    $sql = mysql_query("SELECT `status` FROM `devices` WHERE `id` = '$id'");
+    $result = @mysql_result($sql, 0);
+    return $result;
+}
+
+function gethostbyid($id) {
+     $sql = mysql_query("SELECT `hostname` FROM `devices` WHERE `id` = '$id'");
+     $result = @mysql_result($sql, 0);
+     return $result;
+}
+
+function getifhost($id) {
+     $sql = mysql_query("SELECT `host` from `interfaces` WHERE `id` = '$id'");
+     $result = @mysql_result($sql, 0);
+     return $result;
+}
+
+function getifindexbyid($id) {
+     $sql = mysql_query("SELECT `ifIndex` FROM `interfaces` WHERE `id` = '$id'");
+     $result = @mysql_result($sql, 0);
+     return $result;
+}
+
+function getifbyid($id) {
+     $sql = mysql_query("SELECT `if` FROM `interfaces` WHERE `id` = '$id'");
+     $result = @mysql_result($sql, 0);
+     return $result;
+}
+
+function getidbyname($domain){
+     $sql = mysql_query("SELECT `id` FROM `devices` WHERE `hostname` = '$domain'");
+     $result = @mysql_result($sql, 0);
+     return $result;
+}
+
+function gethostosbyid($id) {
+     $sql = mysql_query("SELECT `os` FROM `devices` WHERE `id` = '$id'");
+     $result = @mysql_result($sql, 0);
+     return $result;
+}
+
+function match_network ($nets, $ip, $first=false) {
+   $return = false;
+   if (!is_array ($nets)) $nets = array ($nets);
+   foreach ($nets as $net) {
+       $rev = (preg_match ("/^\!/", $net)) ? true : false;
+       $net = preg_replace ("/^\!/", "", $net);
+       $ip_arr  = explode('/', $net);
+       $net_long = ip2long($ip_arr[0]);
+       $x        = ip2long($ip_arr[1]);
+       $mask    = long2ip($x) == $ip_arr[1] ? $x : 0xffffffff << (32 - $ip_arr[1]);
+       $ip_long  = ip2long($ip);
+       if ($rev) {
+           if (($ip_long & $mask) == ($net_long & $mask)) return false;
+       } else {
+           if (($ip_long & $mask) == ($net_long & $mask)) $return = true;
+           if ($first && $return) return true;
+       }
+   }
+   return $return;
+}
+
+?>
diff --git a/includes/generic.php b/includes/generic.php
new file mode 100755
index 0000000000..d03d2a226d
--- /dev/null
+++ b/includes/generic.php
@@ -0,0 +1,48 @@
+<?
+
+function pollDevice() {
+
+   global $device;
+   global $community;
+   $id = $device['id'];
+   $hostname = $device['hostname'];
+   $hardware = $device['hardware'];
+   $version = $device['version'];
+   $features = $device['features'];
+   $location = $device['location'];
+   $os = $device['location'];
+
+   $temprrd  = "rrd/" . $hostname . "-temp.rrd";
+   $tempgraph = "public_html/graphs/" . $hostname . "-temp.png";
+   $cpurrd   = "rrd/" . $hostname . "-cpu.rrd";
+   $cpugraph = "public_html/graphs/" . $hostname . "-cpu.png";   
+   $memrrd   = "rrd/" . $hostname . "-mem.rrd";
+   $memgraph = "public_html/graphs/" . $hostname . "-mem.png";
+   list ($cpu5m, $cpu5s) = explode("\n", `snmpget -O qv -v2c -c $community $hostname 1.3.6.1.4.1.9.2.1.58.0 1.3.6.1.4.1.9.2.1.56.0`);
+   $cpu5m = $cpu5m + 0;
+   $cpu5s = $cpu5s + 0;
+   list ($tempin1, $tempout1) = explode("\n", `snmpget -O qv -v2c -c $community $hostname .1.3.6.1.4.1.9.9.13.1.3.1.3.1 .1.3.6.1.4.1.9.9.13.1.3.1.3.2`);
+   $tempin1 = $tempin1 +0;
+   $tempout1 = $tempout1 + 0;
+   list ($memfreeio, $memfreeproc, $memusedio, $memusedproc) = explode("\n", `snmpget -O qv -v2c -c $community $hostname .1.3.6.1.4.1.9.9.48.1.1.1.6.2 .1.3.6.1.4.1.9.9.48.1.1.1.6.1 .1.3.6.1.4.1.9.9.48.1.1.1.5.2 .1.3.6.1.4.1.9.9.48.1.1.1.5.1`);
+   echo("$hostname\n");
+   $memfreeio = $memfreeio + 0;
+   $memfreeproc = $memfreeproc + 0;
+   $memusedio = $memusedio + 0;
+   $memusedproc = $memusedproc + 0;
+   $memtotal = $memfreeio + $memfreeproc + $memusedio + $memusedproc;
+   if (!is_file($cpurrd)) {
+      $rrdcreate = `rrdtool create $cpurrd --step 300 DS:LOAD5S:GAUGE:600:-1:100 DS:LOAD5M:GAUGE:600:-1:100 RRA:AVERAGE:0.5:1:1200`;
+   }
+   if (!is_file($temprrd)) {
+      $rrdcreate = `rrdtool create $temprrd --step 300 DS:TEMPIN1:GAUGE:600:-1:100 DS:TEMPOUT1:GAUGE:600:-1:100 RRA:AVERAGE:0.5:1:1200`;
+   }
+   if (!is_file($memrrd)) {
+      $rrdcreate = `rrdtool create $memrrd --step 300 DS:IOFREE:GAUGE:600:0:500000000 DS:IOUSED:GAUGE:600:-1:500000000 DS:PROCFREE:GAUGE:600:0:500000000 DS:PROCUSED:GAUGE:600:-1:500000000 DS:MEMTOTAL:GAUGE:600:-1:500000000 RRA:AVERAGE:0.5:1:1200`;
+   }
+   `rrdtool update $temprrd N:$tempin1:$tempout1`;
+   `rrdtool update $cpurrd N:$cpu5s:$cpu5m`;
+   `rrdtool update $memrrd N:$$memfreeio:$memusedio:$memfreeproc:$memusedproc:$memtotal`;
+}
+
+?>
diff --git a/includes/graphing.php b/includes/graphing.php
new file mode 100644
index 0000000000..190ae4fcc5
--- /dev/null
+++ b/includes/graphing.php
@@ -0,0 +1,43 @@
+<?php
+
+function temp_graph ($device, $graph, $from, $to, $width, $height, $title, $vertical) {
+  global $rrdtool; global $installdir;
+  $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--vertical-label", $vertical, "--alt-autoscale-max",
+                 "-l 0",
+                 "-E",
+                 "-b 1024",
+                 "--title", $title);
+  $hostname = gethostbyid($device);
+  $imgfile = "graphs/" . "$graph";
+  $iter = "1";
+  $sql = mysql_query("SELECT * FROM temperature where temp_host = '$device'");
+  $optsa[] = "COMMENT:                                  Cur    Max";
+  while($fs = mysql_fetch_array($sql)) {
+    if($iter=="1") {$colour="CC0000";} elseif($iter=="2") {$colour="008C00";} elseif($iter=="3") {$colour="4096EE";
+    } elseif($iter=="4") {$colour="73880A";} elseif($iter=="5") {$colour="D01F3C";} elseif($iter=="6") {$colour="36393D";
+    } elseif($iter=="7") {$colour="FF0084"; unset($iter); }
+
+    $fs[temp_descr] = str_pad($fs[temp_descr], 28);
+    $fs[temp_descr] = substr($fs[temp_descr],0,28);
+
+    $optsa[] = "DEF:temp$fs[temp_id]=rrd/$hostname-temp$fs[temp_id].rrd:temp:AVERAGE";
+    $optsa[] = "LINE1:temp$fs[temp_id]#" . $colour . ":$fs[temp_descr]";
+    $optsa[] = "GPRINT:temp$fs[temp_id]:LAST:%3.0lf�C";
+    $optsa[] = "GPRINT:temp$fs[temp_id]:MAX:%3.0lf�C\l";
+    $iter++;
+ }
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+  $opts = array_merge($optsa, $optsb);
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+    echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+?>
diff --git a/includes/ios.php b/includes/ios.php
new file mode 100755
index 0000000000..854c5d1ff0
--- /dev/null
+++ b/includes/ios.php
@@ -0,0 +1,88 @@
+<?
+
+function pollDeviceIOS() {
+
+   global $device;
+   global $community;
+   $id = $device['id'];
+   $hostname = $device['hostname'];
+   $hardware = $device['hardware'];
+   $version = $device['version'];
+   $features = $device['features'];
+   $location = $device['location'];
+   $os = $device['location'];
+
+   $temprrd  = "rrd/" . $hostname . "-temp.rrd";
+   $tempgraph = "public_html/graphs/" . $hostname . "-temp.png";
+   $cpurrd   = "rrd/" . $hostname . "-cpu.rrd";
+   $cpugraph = "public_html/graphs/" . $hostname . "-cpu.png";   
+   $memrrd   = "rrd/" . $hostname . "-mem.rrd";
+   $memgraph = "public_html/graphs/" . $hostname . "-mem.png";
+   list ($cpu5m, $cpu5s) = explode("\n", `snmpget -O qv -v2c -c $community $hostname 1.3.6.1.4.1.9.2.1.58.0 1.3.6.1.4.1.9.2.1.56.0`);
+   $cpu5m = $cpu5m + 0;
+   $cpu5s = $cpu5s + 0;
+   list ($tempin1, $tempout1) = explode("\n", `snmpget -O qv -v2c -c $community $hostname .1.3.6.1.4.1.9.9.13.1.3.1.3.1 .1.3.6.1.4.1.9.9.13.1.3.1.3.2`);
+   $tempin1 = $tempin1 +0;
+   $tempout1 = $tempout1 + 0;
+   $mem_get  = ".1.3.6.1.4.1.9.9.48.1.1.1.6.2 .1.3.6.1.4.1.9.9.48.1.1.1.6.1 .1.3.6.1.4.1.9.9.48.1.1.1.6.3";
+   $mem_get .= ".1.3.6.1.4.1.9.9.48.1.1.1.5.2 .1.3.6.1.4.1.9.9.48.1.1.1.5.1 .1.3.6.1.4.1.9.9.48.1.1.1.5.3";
+   $mem_raw  = `snmpget -O qv -v2c -c $community $hostname $mem_get`;
+   $mem_raw  = str_replace("No Such Instance currently exists at this OID", "0", $mem_raw); 
+   list ($memfreeio, $memfreeproc, $memfreeprocb, $memusedio, $memusedproc, $memusedprocb) = explode("\n", $mem_raw); 
+   echo("$hostname\n");
+   $memfreeproc = $memfreeproc + $memfreeprocb;
+   $memusedproc = $memusedproc + $memusedprocb;
+   $memfreeio = $memfreeio + 0;
+   $memfreeproc = $memfreeproc + 0;
+   $memusedio = $memusedio + 0;
+   $memusedproc = $memusedproc + 0;
+   $memtotal = $memfreeio + $memfreeproc + $memusedio + $memusedproc;
+   if (!is_file($cpurrd)) {
+      $rrdcreate = `rrdtool create $cpurrd --step 300 \
+                    DS:LOAD5S:GAUGE:600:-1:100 \
+                    DS:LOAD5M:GAUGE:600:-1:100 \
+                    RRA:AVERAGE:0.5:1:2000 \
+                    RRA:AVERAGE:0.5:6:2000 \
+                    RRA:AVERAGE:0.5:24:2000 \
+                    RRA:AVERAGE:0.5:288:2000 \
+                    RRA:MAX:0.5:1:2000 \
+                    RRA:MAX:0.5:6:2000 \
+                    RRA:MAX:0.5:24:2000 \
+                    RRA:MAX:0.5:288:2000`;
+   }
+   if (!is_file($temprrd)) {
+      $rrdcreate = `rrdtool create $temprrd --step 300 \
+                    DS:TEMPIN1:GAUGE:600:-25:100 \
+                    DS:TEMPOUT1:GAUGE:600:-25:100 \
+                    RRA:AVERAGE:0.5:1:2000 \
+                    RRA:AVERAGE:0.5:6:2000 \
+                    RRA:AVERAGE:0.5:24:2000 \
+                    RRA:AVERAGE:0.5:288:2000 \
+                    RRA:MAX:0.5:1:2000 \
+                    RRA:MAX:0.5:6:2000 \
+                    RRA:MAX:0.5:24:2000 \
+                    RRA:MAX:0.5:288:2000`;
+   }
+   if (!is_file($memrrd)) {
+      $rrdcreate = `rrdtool create $memrrd --step 300 \
+                    DS:IOFREE:GAUGE:600:0:U \
+                    DS:IOUSED:GAUGE:600:-1:U \
+                    DS:PROCFREE:GAUGE:600:0:U \
+                    DS:PROCUSED:GAUGE:600:-1:U \
+                    DS:MEMTOTAL:GAUGE:600:-1:U \
+                    RRA:AVERAGE:0.5:1:2000 \
+                    RRA:AVERAGE:0.5:6:2000 \
+                    RRA:AVERAGE:0.5:24:2000 \
+                    RRA:AVERAGE:0.5:288:2000 \
+                    RRA:MAX:0.5:1:2000 \
+                    RRA:MAX:0.5:6:2000 \
+                    RRA:MAX:0.5:24:2000 \
+                    RRA:MAX:0.5:288:2000`;
+
+   }
+   `rrdtool update $temprrd N:$tempin1:$tempout1`;
+   `rrdtool update $cpurrd N:$cpu5s:$cpu5m`;
+   `rrdtool update $memrrd N:$memfreeio:$memusedio:$memfreeproc:$memusedproc:$memtotal`;
+}
+
+?>
diff --git a/includes/procurve-graphing.php b/includes/procurve-graphing.php
new file mode 100755
index 0000000000..948faeda1c
--- /dev/null
+++ b/includes/procurve-graphing.php
@@ -0,0 +1,64 @@
+<?php
+
+function cpugraphHP ($rrd, $graph , $from, $to, $width, $height)
+{
+ global $rrdtool; global $installdir;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+
+    $optsa = array( "--start", $from, "--width", $width, "--height", $height, "--vertical-label", $vertical, "--alt-autoscale-max",
+                 "-l 0",
+                 "-E",
+                 "--title", $title,
+                 "DEF:load=$database:LOAD:AVERAGE",
+                 "AREA:load#FAFDCE:",
+                 "LINE1.25:load#dd8800:Load",
+                 "GPRINT:load:LAST:Cur\:%3.2lf",
+                 "GPRINT:load:AVERAGE:Avg\:%3.2lf",
+                 "GPRINT:load:MIN:Min\:%3.2lf",
+                 "GPRINT:load:MAX:Max\:%3.2lf\\n");
+
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+  $opts = array_merge($optsa, $optsb);
+
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+    #echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function memgraphHP ($rrd, $graph , $from, $to, $width, $height, $title, $vertical)
+{
+ global $rrdtool; global $installdir;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+    $memrrd = $database;
+    $opts = "--start $from \
+            --alt-autoscale-max \
+            --width $width --height $height \
+            -l 0 -E \
+            -b 1024 \
+             DEF:TOTAL=$memrrd:TOTAL:AVERAGE \
+             DEF:FREE=$memrrd:FREE:AVERAGE \
+             DEF:USED=$memrrd:USED:AVERAGE \
+             AREA:USED#ee9900:Used \
+             AREA:FREE#FAFDCE:Free:STACK \
+             LINE1.5:TOTAL#cc0000:";
+
+  if($width <= "300") {$opts .= "\
+                                 --font LEGEND:7:$installdir/DejaVuSansMono.ttf \
+                                 --font AXIS:6:$installdir/DejaVuSansMono.ttf \
+                                 --font-render-mode normal";}
+
+
+    `$rrdtool graph $imgfile $opts`;
+    return $imgfile;
+}
+
diff --git a/includes/procurve.php b/includes/procurve.php
new file mode 100755
index 0000000000..9e65fb8089
--- /dev/null
+++ b/includes/procurve.php
@@ -0,0 +1,36 @@
+<?
+
+include("procurve-graphing.php");
+
+function pollDeviceHP() {
+
+   global $device;
+   global $community;
+   $id = $device['id'];
+   $hostname = $device['hostname'];
+   $hardware = $device['hardware'];
+   $version = $device['version'];
+   $features = $device['features'];
+   $location = $device['location'];
+   $os = $device['location'];
+   $cpurrd   = "rrd/" . $hostname . "-cpu.rrd";
+   $memrrd   = "rrd/" . $hostname . "-mem.rrd";
+   $cpu = `snmpget -O qv -v2c -c $community $hostname 1.3.6.1.4.1.11.2.14.11.5.1.9.6.1.0`;
+   $meminfo = `snmpget -O qv -v2c -c $community $hostname 1.3.6.1.4.1.11.2.14.11.5.1.1.2.2.1.1.5.1 1.3.6.1.4.1.11.2.14.11.5.1.1.2.2.1.1.6.1 1.3.6.1.4.1.11.2.14.11.5.1.1.2.2.1.1.7.1`;
+   echo("$meminfo");
+   list ($memtotal, $memfree, $memused) = explode("\n", $meminfo);
+   echo("$hostname\n");
+   $memused = $memused + 0;
+   $memfree = $memfree + 0;
+   $memtotal = $memtotal + 0;
+   if (!is_file($cpurrd)) {
+      $rrdcreate = `rrdtool create $cpurrd --step 300 DS:LOAD:GAUGE:600:-1:100 RRA:AVERAGE:0.5:1:1200`;
+   }
+   if (!is_file($memrrd)) {
+      $rrdcreate = `rrdtool create $memrrd --step 300 DS:TOTAL:GAUGE:600:0:500000000 DS:FREE:GAUGE:600:-1:500000000 DS:USED:GAUGE:600:0:500000000 RRA:AVERAGE:0.5:1:1200`;
+   }
+   `rrdtool update $cpurrd N:$cpu`;
+   `rrdtool update $memrrd N:$memtotal:$memfree:$memused`;
+}
+
+?>
diff --git a/includes/services/dns/check.inc b/includes/services/dns/check.inc
new file mode 100644
index 0000000000..04663fafec
--- /dev/null
+++ b/includes/services/dns/check.inc
@@ -0,0 +1,13 @@
+<?php
+
+$check = `checkers/check_dns -H $service[param] -s $service[hostname]`;
+
+list($check, $time) = split("\|", $check);
+
+if(strstr($check, "DNS OK: ")) { 
+  $status = '1'; 
+} else { 
+  $status = '0'; 
+}
+
+?>
diff --git a/includes/services/ftp/check.inc b/includes/services/ftp/check.inc
new file mode 100644
index 0000000000..3d0558c2d7
--- /dev/null
+++ b/includes/services/ftp/check.inc
@@ -0,0 +1,13 @@
+<?php
+
+$check = `checkers/check_ftp -H $service[hostname]`;
+
+list($check, $time) = split("\|", $check);
+
+if(strstr($check, "FTP OK - ")) { 
+  $status = '1'; 
+} else { 
+  $status = '0'; 
+}
+
+?>
diff --git a/includes/services/http/check.inc b/includes/services/http/check.inc
new file mode 100644
index 0000000000..dee474273b
--- /dev/null
+++ b/includes/services/http/check.inc
@@ -0,0 +1,13 @@
+<?php
+
+$check = `checkers/check_http -H $service[hostname]`;
+
+list($check, $time) = split("\|", $check);
+
+if(strstr($check, "HTTP OK")) { 
+  $status = '1'; 
+} else { 
+  $status = '0'; 
+}
+
+?>
diff --git a/includes/services/imap/check.inc b/includes/services/imap/check.inc
new file mode 100644
index 0000000000..9837d7694c
--- /dev/null
+++ b/includes/services/imap/check.inc
@@ -0,0 +1,13 @@
+<?php
+
+$check = `checkers/check_imap -H $service[hostname]`;
+
+list($check, $time) = split("\|", $check);
+
+if(strstr($check, "IMAP OK - ")) { 
+  $status = '1'; 
+} else { 
+  $status = '0'; 
+}
+
+?>
diff --git a/includes/services/mysql/check.inc b/includes/services/mysql/check.inc
new file mode 100644
index 0000000000..44338c5a05
--- /dev/null
+++ b/includes/services/mysql/check.inc
@@ -0,0 +1,15 @@
+<?php
+
+$check = `checkers/check_mysql -H $service[hostname] $service[service_param]`;
+
+echo($check);
+
+list($check, $time) = split("\|", $check);
+
+if(strstr($check, "Uptime:")) { 
+  $status = '1'; 
+} else { 
+  $status = '0'; 
+}
+
+?>
diff --git a/includes/services/pop/check.inc b/includes/services/pop/check.inc
new file mode 100644
index 0000000000..285523d7a3
--- /dev/null
+++ b/includes/services/pop/check.inc
@@ -0,0 +1,13 @@
+<?php
+
+$check = `checkers/check_pop -H $service[hostname]`;
+
+list($check, $time) = split("\|", $check);
+
+if(strstr($check, "POP OK - ")) { 
+  $status = '1'; 
+} else { 
+  $status = '0'; 
+}
+
+?>
diff --git a/includes/services/simap/check.inc b/includes/services/simap/check.inc
new file mode 100644
index 0000000000..baf08d8037
--- /dev/null
+++ b/includes/services/simap/check.inc
@@ -0,0 +1,13 @@
+<?php
+
+$check = `checkers/check_simap -H $service[hostname]`;
+
+list($check, $time) = split("\|", $check);
+
+if(strstr($check, "SIMAP OK")) { 
+  $status = '1'; 
+} else { 
+  $status = '0'; 
+}
+
+?>
diff --git a/includes/services/smtp/check.inc b/includes/services/smtp/check.inc
new file mode 100644
index 0000000000..b5dd39ccae
--- /dev/null
+++ b/includes/services/smtp/check.inc
@@ -0,0 +1,13 @@
+<?php
+
+$check = `checkers/check_smtp -H $service[hostname]`;
+
+list($check, $time) = split("\|", $check);
+
+if(strstr($check, "SMTP OK")) { 
+  $status = '1'; 
+} else { 
+  $status = '0'; 
+}
+
+?>
diff --git a/includes/services/spop/check.inc b/includes/services/spop/check.inc
new file mode 100644
index 0000000000..97dabc7054
--- /dev/null
+++ b/includes/services/spop/check.inc
@@ -0,0 +1,13 @@
+<?php
+
+$check = `checkers/check_spop -H $service[hostname]`;
+
+list($check, $time) = split("\|", $check);
+
+if(strstr($check, "SPOP OK")) { 
+  $status = '1'; 
+} else { 
+  $status = '0'; 
+}
+
+?>
diff --git a/includes/services/ssh/check.inc b/includes/services/ssh/check.inc
new file mode 100644
index 0000000000..9bf618c0e6
--- /dev/null
+++ b/includes/services/ssh/check.inc
@@ -0,0 +1,13 @@
+<?php
+
+$check = `checkers/check_ssh -H $service[hostname]`;
+
+list($check, $time) = split("\|", $check);
+
+if(strstr($check, "SSH OK")) { 
+  $status = '1'; 
+} else { 
+  $status = '0'; 
+}
+
+?>
diff --git a/includes/services/telnet/check.inc b/includes/services/telnet/check.inc
new file mode 100644
index 0000000000..cddba2da96
--- /dev/null
+++ b/includes/services/telnet/check.inc
@@ -0,0 +1,16 @@
+<?php
+
+if($service[service_port]) { $port = $service[service_port]; } else { $port = '23'; }
+
+
+$check = `checkers/check_tcp -H $service[hostname] -p $port`;
+
+list($check, $time) = split("\|", $check);
+
+if(strstr($check, "TCP OK - ")) { 
+  $status = '1'; 
+} else { 
+  $status = '0'; 
+}
+
+?>
diff --git a/includes/snom-graphing.php b/includes/snom-graphing.php
new file mode 100644
index 0000000000..06152a2e7e
--- /dev/null
+++ b/includes/snom-graphing.php
@@ -0,0 +1,36 @@
+<?php
+
+function callsgraphSNOM ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
+  global $rrdtool; global $installdir;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--vertical-label", $vertical ,"--alt-autoscale-max",
+                 "-l 0",
+                 "-E",
+                 "--title", $title,
+                 "DEF:call=$database:CALLS:AVERAGE",
+                 "CDEF:calls=call,360,*",
+                 "LINE1.25:calls#FF9900:Calls",
+                 "GPRINT:calls:LAST:Cu\: %2.0lf/min",
+                 "GPRINT:calls:AVERAGE:Av\: %2.0lf/min",
+                 "GPRINT:calls:MAX:Mx\: %2.0lf/min\\n");
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+    echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+
+
+?>
diff --git a/includes/snom.php b/includes/snom.php
new file mode 100755
index 0000000000..727d1d7a29
--- /dev/null
+++ b/includes/snom.php
@@ -0,0 +1,49 @@
+<?
+
+include("snom-graphing.php");
+
+function pollDeviceSNOM() {
+
+   global $device;
+   global $community;
+   $snmpver = $device['snmpver'];
+   $id = $device['id'];
+   $hostname = $device['hostname'];
+   $hardware = $device['hardware'];
+   $version = $device['version'];
+   $features = $device['features'];
+   $location = $device['location'];   
+    
+   $snmpdata = `snmpget -Ovq -$snmpver -c $community $hostname 1.3.6.1.2.1.7526.2.1.1 1.3.6.1.2.1.7526.2.1.2 1.3.6.1.2.1.7526.2.2.1 1.3.6.1.2.1.7526.2.2.2`;
+   $snmpdatab = `snmpget -Oqv -$snmpver -c $community $hostname 1.3.6.1.2.1.7526.2.5 1.3.6.1.2.1.7526.2.6`;
+   list($rxbytes, $rxpkts, $txbytes, $txpkts) = explode("\n", $snmpdata);
+   list($calls, $registrations) = explode("\n", $snmpdatab);
+   $txbytes = 0 - $txbytes * 8;
+   $rxbytes = 0 - $rxbytes * 8;
+   echo("$rxbytes, $rxpkts, $txbytes, $txpkts, $calls, $registrations");
+
+   $rrdfile = "rrd/" . $hostname . "-data.rrd";
+   if(!is_file($rrdfile)) {
+    $woo = `rrdtool create $rrdfile \
+      DS:INOCTETS:COUNTER:600:U:100000000000 \
+      DS:OUTOCTETS:COUNTER:600:U:10000000000 \
+      DS:INPKTS:COUNTER:600:U:10000000000 \
+      DS:OUTPKTS:COUNTER:600:U:10000000000 \
+      DS:CALLS:COUNTER:600:U:10000000000 \
+      DS:REGISTRATIONS:COUNTER:600:U:10000000000 \
+      RRA:AVERAGE:0.5:1:600 \
+      RRA:AVERAGE:0.5:6:700 \
+      RRA:AVERAGE:0.5:24:775 \
+      RRA:AVERAGE:0.5:288:797 \
+      RRA:MAX:0.5:1:600 \
+      RRA:MAX:0.5:6:700 \
+      RRA:MAX:0.5:24:775 \
+      RRA:MAX:0.5:288:797`;
+   }
+
+   $rrdupdate = "N:$rxbytes:$txbytes:$rxpkts:$rxbytes:$calls:$registrations";
+   $ret = rrd_update("$rrdfile", $rrdupdate);
+
+}
+
+?>
diff --git a/includes/unix-graphing.php b/includes/unix-graphing.php
new file mode 100755
index 0000000000..555badadc6
--- /dev/null
+++ b/includes/unix-graphing.php
@@ -0,0 +1,627 @@
+<?php 
+
+// Start Graphing Functions
+
+function mailerrorgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
+  global $rrdtool; global $installdir;
+  $range = $to - $from;
+  $points_per_sample = 3;
+  $xpoints = '540';
+  $step = $range*$points_per_sample/$xpoints;
+  $rrd_virus = "rrd/" . $rrd . "-mail_virus.rrd";
+  $rrd = "rrd/" . $rrd . "-mail.rrd";
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array(
+    "-E", 
+    "--lower-limit", "0",
+    "--units-exponent", "0",
+    "--title", $title,
+    "--vertical-label", $vertical,
+    "-l 0",
+    "--width", $width, "--height",  $height,
+    "--start", $from, "--end", $to,
+    "DEF:rejected=$rrd:rejected:AVERAGE",
+    "DEF:mrejected=$rrd:rejected:MAX",
+    "CDEF:rrejected=rejected,60,*",
+    "CDEF:drejected=rejected,UN,0,rejected,IF,$step,*",
+    "CDEF:srejected=PREV,UN,drejected,PREV,IF,drejected,+",
+    "CDEF:rmrejected=mrejected,60,*",
+    "DEF:bounced=$rrd:bounced:AVERAGE",
+    "DEF:mbounced=$rrd:bounced:MAX",
+    "CDEF:rbounced=bounced,60,*",
+    "CDEF:dbounced=bounced,UN,0,bounced,IF,$step,*",
+    "CDEF:sbounced=PREV,UN,dbounced,PREV,IF,dbounced,+",
+    "CDEF:rmbounced=mbounced,60,*",
+    "DEF:virus=$rrd_virus:virus:AVERAGE",
+    "DEF:mvirus=$rrd_virus:virus:MAX",
+    "CDEF:rvirus=virus,60,*",
+    "CDEF:dvirus=virus,UN,0,virus,IF,$step,*",
+    "CDEF:svirus=PREV,UN,dvirus,PREV,IF,dvirus,+",
+    "CDEF:rmvirus=mvirus,60,*",
+    "DEF:spam=$rrd_virus:spam:AVERAGE",
+    "DEF:mspam=$rrd_virus:spam:MAX",
+    "CDEF:rspam=spam,60,*",
+    "CDEF:dspam=spam,UN,0,spam,IF,$step,*",
+    "CDEF:sspam=PREV,UN,dspam,PREV,IF,dspam,+",
+    "CDEF:rmspam=mspam,60,*",
+    "LINE2:rrejected#cc0000:reject",
+    'GPRINT:srejected:MAX:tot\: %6.0lf msgs',
+    'GPRINT:rrejected:AVERAGE:avg\: %5.2lf/min',
+    'GPRINT:rmrejected:MAX:max\: %3.0lf/min\l',
+    "AREA:rbounced#0000cc:bounce",
+    'GPRINT:sbounced:MAX:tot\: %6.0lf msgs',
+    'GPRINT:rbounced:AVERAGE:avg\: %5.2lf/min',
+    'GPRINT:rmbounced:MAX:max\: %3.0lf/min\l',
+    "STACK:rvirus#000000:virus ",
+    'GPRINT:svirus:MAX:tot\: %6.0lf msgs',
+    'GPRINT:rvirus:AVERAGE:avg\: %5.2lf/min',
+    'GPRINT:rmvirus:MAX:max\: %3.0lf/min\l',
+    "STACK:rspam#00cc00:spam  ",
+    'GPRINT:sspam:MAX:tot\: %6.0lf msgs',
+    'GPRINT:rspam:AVERAGE:avg\: %5.2lf/min',
+    'GPRINT:rmspam:MAX:max\: %3.0lf/min\l');
+
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+
+    $ret = rrd_graph("$imgfile", $opts, count($opts));
+    if( !is_array($ret) ) {
+       $err = rrd_error();
+#       echo "rrd_graph() ERROR: $err\n";
+       return FALSE;
+    } else {
+       return $imgfile;
+    }
+}
+
+
+
+function mailsgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
+  global $rrdtool; global $installdir;
+  $points_per_sample = 3;
+  $range = $to - $from;
+  $xpoints = '540';
+  $step = $range*$points_per_sample/$xpoints;
+  $rrd = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array(
+    "-E", 
+    "--lower-limit", "0",
+    "--units-exponent", "0",
+    "--title", $title,
+    "--vertical-label", $vertical,
+    "-l 0",
+    "--width", $width, "--height",  $height,
+    "--start",
+    $from, "--end", $to,
+    "DEF:sent=$rrd:sent:AVERAGE",
+    "DEF:msent=$rrd:sent:MAX",
+    "CDEF:rsent=sent,60,*",
+    "CDEF:rmsent=msent,60,*",
+    "CDEF:dsent=sent,UN,0,sent,IF,$step,*",
+    "CDEF:ssent=PREV,UN,dsent,PREV,IF,dsent,+",
+    "DEF:recv=$rrd:recv:AVERAGE",
+    "DEF:mrecv=$rrd:recv:MAX",
+    "CDEF:rrecv=recv,60,*",
+    "CDEF:rmrecv=mrecv,60,*",
+    "CDEF:drecv=recv,UN,0,recv,IF,$step,*",
+    "CDEF:srecv=PREV,UN,drecv,PREV,IF,drecv,+",
+    "AREA:rsent#00c000:sent",
+    "LINE1:rsent#005000:",
+    "GPRINT:ssent:MAX:Tot\: %5.0lf msgs",
+    "GPRINT:rsent:AVERAGE:Avg\: %4.2lf/min",
+    "GPRINT:rmsent:MAX:Max\: %3.0lf/min\l",
+    "LINE1.5:rrecv#cc0000:rcvd",
+    "GPRINT:srecv:MAX:Tot\: %5.0lf msgs",
+    "GPRINT:rrecv:AVERAGE:Avg\: %4.2lf/min",
+    "GPRINT:rmrecv:MAX:Max\: %3.0lf/min\l");
+
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+
+    $ret = rrd_graph("$imgfile", $opts, count($opts));
+    if( !is_array($ret) ) {
+       $err = rrd_error();
+       echo "rrd_graph() ERROR: $err\n";
+       return FALSE;
+    } else {
+       return $imgfile;
+    }
+}
+
+function memgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical)
+{
+ global $rrdtool; global $installdir;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+    $optsa = array ( 
+    "--start", $from, "--end", $to,
+    "-b 1024", 
+    "-E", 
+    "-v", $vertical,
+    "--title", $title,
+    "-l 0",
+    "--width",  $width, "--height", $height,
+    "DEF:atotalswap=$database:totalswap:AVERAGE",
+    "DEF:aavailswap=$database:availswap:AVERAGE",
+    "DEF:atotalreal=$database:totalreal:AVERAGE",
+    "DEF:aavailreal=$database:availreal:AVERAGE",
+    "DEF:atotalfree=$database:totalfree:AVERAGE",
+    "DEF:ashared=$database:shared:AVERAGE",
+    "DEF:abuffered=$database:buffered:AVERAGE",
+    "DEF:acached=$database:cached:AVERAGE",
+    "CDEF:totalswap=atotalswap,1024,*",
+    "CDEF:availswap=aavailswap,1024,*",
+    "CDEF:totalreal=atotalreal,1024,*",
+    "CDEF:availreal=aavailreal,1024,*",
+    "CDEF:totalfree=atotalfree,1024,*",
+    "CDEF:shared=ashared,1024,*",
+    "CDEF:buffered=abuffered,1024,*",
+    "CDEF:cached=acached,1024,*",
+    "CDEF:usedreal=totalreal,availreal,-",
+    "CDEF:usedswap=totalswap,availswap,-",
+    "CDEF:cusedswap=usedswap,-1,*",
+    "CDEF:cdeftot=availreal,shared,buffered,usedreal,cached,usedswap,+,+,+,+,+",
+    "COMMENT:Bytes       Current    Average     Maximum\\n",
+    "LINE1:usedreal#d0b080:",
+    "AREA:usedreal#f0e0a0:used",
+    "GPRINT:usedreal:LAST:   %7.2lf %s",
+    "GPRINT:usedreal:AVERAGE:%7.2lf %s",
+    "GPRINT:usedreal:MAX:%7.2lf %s\\n",
+    "STACK:availreal#e5e5e5:free",
+    "GPRINT:availreal:LAST:   %7.2lf %s",
+    "GPRINT:availreal:AVERAGE:%7.2lf %s",
+    "GPRINT:availreal:MAX:%7.2lf %s\\n",
+    "LINE1:usedreal#d0b080:",
+    "AREA:shared#afeced::",
+    "AREA:buffered#cc0000::STACK",
+    "AREA:cached#ffaa66::STACK",
+    "LINE1.25:shared#008fea:shared",
+    "GPRINT:shared:LAST: %7.2lf %s",
+    "GPRINT:shared:AVERAGE:%7.2lf %s",
+    "GPRINT:shared:MAX:%7.2lf %s\\n",
+    "LINE1.25:buffered#ff1a00:buffers:STACK",
+    "GPRINT:buffered:LAST:%7.2lf %s",
+    "GPRINT:buffered:AVERAGE:%7.2lf %s",
+    "GPRINT:buffered:MAX:%7.2lf %s\\n",
+    "LINE1.25:cached#ea8f00:cached:STACK",
+    "GPRINT:cached:LAST: %7.2lf %s",
+    "GPRINT:cached:AVERAGE:%7.2lf %s",
+    "GPRINT:cached:MAX:%7.2lf %s\\n",
+    "LINE1:totalreal#050505:",
+    "AREA:cusedswap#C3D9FF:swap",
+    "LINE1.25:cusedswap#356AA0:",
+    "GPRINT:usedswap:LAST:   %7.2lf %s",
+    "GPRINT:usedswap:AVERAGE:%7.2lf %s",
+    "GPRINT:usedswap:MAX:%7.2lf %s\\n",
+    "LINE1:totalreal#050505:total",
+    "GPRINT:totalreal:AVERAGE:  %7.2lf %s");
+
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+    echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function loadgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
+    global $rrdtool; global $installdir;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+    $optsa = array(
+    "--title", $title,
+    "--start",
+    $from, "--end", $to,
+    "-E", 
+    "-v", $vertical,
+    "--rigid",
+    "--alt-autoscale-max",
+    "-l 0",
+    "--width", $width, "--height", $height,
+    "DEF:1min=$database:1min:AVERAGE",
+    "DEF:5min=$database:5min:AVERAGE",
+    "DEF:15min=$database:15min:AVERAGE",
+    "CDEF:a=1min,100,/",
+    "CDEF:b=5min,100,/",
+    "CDEF:c=15min,100,/",
+    "CDEF:cdefd=a,b,c,+,+",
+    "COMMENT:Load Average  Current    Average    Maximum\\n",
+    "AREA:a#ffeeaa:1 Min:",
+    "LINE1:a#c5aa00:",
+    "GPRINT:a:LAST:    %7.2lf",
+    "GPRINT:a:AVERAGE:  %7.2lf",
+    "GPRINT:a:MAX:  %7.2lf\\n",
+    "LINE1.25:b#ea8f00:5 Min:",
+    "GPRINT:b:LAST:    %7.2lf",
+    "GPRINT:b:AVERAGE:  %7.2lf",
+    "GPRINT:b:MAX:  %7.2lf\\n",
+    "LINE1.25:c#cc0000:15 Min",
+    "GPRINT:c:LAST:   %7.2lf",
+    "GPRINT:c:AVERAGE:  %7.2lf",
+    "GPRINT:c:MAX:  %7.2lf\\n");
+
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+
+    $ret = rrd_graph("$imgfile", $opts, count($opts));
+    if( !is_array($ret) ) {
+       $err = rrd_error();
+ #      echo "rrd_graph() ERROR: $err\n";
+       return FALSE;
+    } else {
+       return $imgfile;
+    }
+}
+
+
+function usersgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
+  global $rrdtool; global $installdir;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array(
+    "--title", $title,
+    "--start",
+    $from, "--end", $to,
+    "-E",
+    "-v", $vertical,
+    "--rigid",
+    "--alt-autoscale-max",
+    "-l 0",
+    "--width", $width, "--height", $height,
+    "DEF:users=$database:users:AVERAGE",
+    "COMMENT:Users       Cur     Ave      Min     Max\\n",
+    "AREA:users#CDEB8B:",
+    "LINE1.25:users#008C00: ",
+    "GPRINT:users:LAST:    %6.2lf",
+    "GPRINT:users:AVERAGE:%6.2lf",
+    "GPRINT:users:MIN:%6.2lf",
+    "GPRINT:users:MAX:%6.2lf\\n");
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+    $ret = rrd_graph("$imgfile", $opts, count($opts));
+    if( !is_array($ret) ) {
+       $err = rrd_error();
+  #     echo "rrd_graph() ERROR: $err\n";
+       return FALSE;
+    } else {
+       return $imgfile;
+    }
+}
+
+function procsgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
+  global $rrdtool; global $installdir;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array(
+    "--title", $title,
+    "--start", $from, "--end", $to,
+    "-E",
+    "-v", $vertical,
+    "--rigid",
+    "--alt-autoscale-max",
+    "-l 0",
+    "--width", $width, "--height", $height,
+    "DEF:procs=$database:procs:AVERAGE",
+    "DEF:maxprocs=$database:procs:MAX",
+    "COMMENT:Processes   Cur     Ave      Min     Max\\n",
+    "AREA:procs#C3D9FF:",
+    "LINE1.25:procs#356AA0: ",
+    "GPRINT:procs:LAST:    %6.2lf",
+    "GPRINT:procs:AVERAGE:%6.2lf",
+    "GPRINT:procs:MIN:%6.2lf",
+    "GPRINT:procs:MAX:%6.2lf\\n");
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+    $ret = rrd_graph("$imgfile", $opts, count($opts));
+    if( !is_array($ret) ) {
+       $err = rrd_error();
+   #    echo "rrd_graph() ERROR: $err\n";
+       return FALSE;
+    } else {
+       return $imgfile;
+    }
+}
+
+
+
+function cpugraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
+  global $rrdtool; global $installdir;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array(
+    "--title", $title,
+    "--start",
+    $from, "--end", $to,
+    "-E",
+    "-v", $vertical,
+    "--rigid",
+    "--alt-autoscale-max",
+    "-l 0",
+    "--width", $width, "--height", $height,
+    "DEF:user=$database:user:AVERAGE",
+    "DEF:nice=$database:nice:AVERAGE",
+    "DEF:system=$database:system:AVERAGE",
+    "DEF:idle=$database:idle:AVERAGE",
+    "CDEF:total=user,nice,system,idle,+,+,+",
+    "CDEF:user_perc=user,total,/,100,*",
+    "CDEF:nice_perc=nice,total,/,100,*",
+    "CDEF:system_perc=system,total,/,100,*",
+    "CDEF:idle_perc=idle,total,/,100,*",
+    "AREA:user_perc#c02020:user",
+    "GPRINT:user_perc:LAST:  Cur\:%3.0lf%%",
+    "GPRINT:user_perc:AVERAGE: Avg\:%3.0lf%%",
+    "GPRINT:user_perc:MAX: Max\:%3.0lf%%\\n",
+    "AREA:nice_perc#008f00:nice:STACK",
+    "GPRINT:nice_perc:LAST:  Cur\:%3.0lf%%",
+    "GPRINT:nice_perc:AVERAGE: Avg\:%3.0lf%%",
+    "GPRINT:nice_perc:MAX: Max\:%3.0lf%%\\n",
+    "AREA:system_perc#ea8f00:system:STACK",
+    "GPRINT:system_perc:LAST:Cur\:%3.0lf%%",
+    "GPRINT:system_perc:AVERAGE: Avg\:%3.0lf%%",
+    "GPRINT:system_perc:MAX: Max\:%3.0lf%%\\n",
+    "AREA:idle_perc#f5f5e5:idle:STACK",
+    "GPRINT:idle_perc:LAST:  Cur\:%3.0lf%%",
+    "GPRINT:idle_perc:AVERAGE: Avg\:%3.0lf%%",
+    "GPRINT:idle_perc:MAX: Max\:%3.0lf%%\\n");
+
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+#    $err = rrd_error();
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function couriergraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
+  global $rrdtool; global $installdir;
+  $points_per_sample = 3;
+  $range = $to - $from;
+  $rrd = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array(
+    "-E", 
+    "--lower-limit", "0",
+    "--units-exponent", "0",
+    "--title", $title,
+    "--vertical-label", $vertical,
+    "-l 0",
+    "--width", $width, "--height",  $height,
+    "--start", $from, "--end", $to,
+                "DEF:pop3d_login=$rrd:pop3d_login:AVERAGE",
+                "DEF:mpop3d_login=$rrd:pop3d_login:MAX",
+                "DEF:imapd_login=$rrd:imapd_login:AVERAGE",
+                "DEF:mimapd_login=$rrd:imapd_login:MAX",
+                "CDEF:rpop3d_login=pop3d_login,60,*",
+		"CDEF:vpop3d_login=pop3d_login,UN,0,pop3d_login,IF,$range,*",
+                "CDEF:rmpop3d_login=mpop3d_login,60,*",
+                "CDEF:rimapd_login=imapd_login,60,*",
+		"CDEF:vimapd_login=imapd_login,UN,0,imapd_login,IF,$range,*",
+                "CDEF:rmimapd_login=mimapd_login,60,*",
+                "DEF:pop3d_ssl_login=$rrd:pop3d_ssl_login:AVERAGE",
+                "DEF:mpop3d_ssl_login=$rrd:pop3d_ssl_login:MAX",
+                "DEF:imapd_ssl_login=$rrd:imapd_ssl_login:AVERAGE",
+                "DEF:mimapd_ssl_login=$rrd:imapd_ssl_login:MAX",
+                "CDEF:rpop3d_ssl_login=pop3d_ssl_login,60,*",
+		"CDEF:vpop3d_ssl_login=pop3d_ssl_login,UN,0,pop3d_ssl_login,IF,$range,*",
+                "CDEF:rmpop3d_ssl_login=mpop3d_ssl_login,60,*",
+                "CDEF:rimapd_ssl_login=imapd_ssl_login,60,*",
+                "CDEF:rmimapd_ssl_login=mimapd_ssl_login,60,*",
+		"CDEF:vimapd_ssl_login=imapd_ssl_login,UN,0,imapd_ssl_login,IF,$range,*",
+                'LINE1.5:rpop3d_login#BB0000:pop3',
+                'GPRINT:vpop3d_login:AVERAGE:    tot\: %5.0lf',
+                'GPRINT:rpop3d_login:AVERAGE:avg\: %4.0lf/min',
+                'GPRINT:rmpop3d_login:MAX:max\: %4.0lf/min\l',
+                'LINE1.5:rimapd_login#009900:imap',
+                'GPRINT:vimapd_login:AVERAGE:    tot\: %5.0lf',
+		'GPRINT:rimapd_login:AVERAGE:avg\: %4.0lf/min',
+                'GPRINT:rmimapd_login:MAX:max\: %4.0lf/min\l',
+                'LINE1.5:rpop3d_ssl_login#000000:pop3-ssl',
+                'GPRINT:vpop3d_ssl_login:AVERAGE:tot\: %5.0lf',
+  		'GPRINT:rpop3d_ssl_login:AVERAGE:avg\: %4.0lf/min',
+                'GPRINT:rmpop3d_ssl_login:MAX:max\: %4.0lf/min\l',
+                'LINE1.5:rimapd_ssl_login#000099:imap-ssl',
+                'GPRINT:vimapd_ssl_login:AVERAGE:tot\: %5.0lf',
+		'GPRINT:rimapd_ssl_login:AVERAGE:avg\: %4.0lf/min',
+                'GPRINT:rmimapd_ssl_login:MAX:max\: %4.0lf/min\l');
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+
+    $ret = rrd_graph("$imgfile", $opts, count($opts));
+    if( !is_array($ret) ) {
+       $err = rrd_error();
+#       echo "rrd_graph() ERROR: $err\n";
+       return FALSE;
+    } else {
+       return $imgfile;
+    }
+}
+
+function apachehitsgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
+  global $rrdtool; global $installdir;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--vertical-label", $vertical ,"--alt-autoscale-max",
+                 "-l 0",
+                 "-E",
+                 "--title", $title,
+                 "DEF:hits=$database:hits:AVERAGE",
+                 "COMMENT:            Current     Average     Maximum\\n",
+                 "AREA:hits#ff9933:",
+                 "LINE1.25:hits#FF6600:Hits",
+                 "GPRINT:hits:LAST: %6.2lf/sec",
+                 "GPRINT:hits:AVERAGE:%6.2lf/sec",
+                 "GPRINT:hits:MAX:%6.2lf/sec\\n");
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+#    echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function unixfsgraph ($device, $graph, $from, $to, $width, $height, $title, $vertical) {
+  global $rrdtool; global $installdir;
+  $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--vertical-label", $vertical, "--alt-autoscale-max",
+                 "-l 0",
+                 "-E", 
+	         "-b 1024",
+                 "--title", $title);
+  $hostname = gethostbyid($device);
+  $imgfile = "graphs/" . "$graph";
+  $iter = "1";
+  $sql = mysql_query("SELECT * FROM storage where host_id = '$device'");
+  $optsa[] = "COMMENT:                       Size      Used    %age\l";
+  while($fs = mysql_fetch_array($sql)) {
+    if($iter=="1") {$colour="CC0000";} elseif($iter=="2") {$colour="008C00";} elseif($iter=="3") {$colour="4096EE";
+    } elseif($iter=="4") {$colour="73880A";} elseif($iter=="5") {$colour="D01F3C";} elseif($iter=="6") {$colour="36393D";
+    } elseif($iter=="7") {$colour="FF0084"; $iter = "0"; }
+
+    $descr = str_pad($fs[hrStorageDescr], 16);
+    $descr = substr($descr,0,16);
+
+
+    $text = str_replace("/", "_", $fs['hrStorageDescr']);
+    $optsa[] = "DEF:$fs[storage_id]=rrd/$hostname-storage-$text.rrd:used:AVERAGE";
+    $optsa[] = "DEF:$fs[storage_id]s=rrd/$hostname-storage-$text.rrd:size:AVERAGE";
+    $optsa[] = "DEF:$fs[storage_id]p=rrd/$hostname-storage-$text.rrd:perc:AVERAGE";
+    $optsa[] = "LINE1.25:$fs[storage_id]p#" . $colour . ":$descr";
+    $optsa[] = "GPRINT:$fs[storage_id]s:LAST:%6.2lf%SB";
+    $optsa[] = "GPRINT:$fs[storage_id]:LAST:%6.2lf%SB";
+    $optsa[] = "GPRINT:$fs[storage_id]p:LAST:%3.0lf%%\l";
+    $iter++;
+  }
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+  $opts = array_merge($optsa, $optsb);
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+    #echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function apachebitsgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
+  global $rrdtool; global $installdir;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--vertical-label", $vertical,"--alt-autoscale-max",
+                 "-l 0",
+                 "-E", 
+                 "--title", $title,
+                 "DEF:bits=$database:bits:AVERAGE",
+                 "COMMENT:        Current      Average     Maximum\\n",
+                 "AREA:bits#cccc00:",
+                 "LINE1.25:bits#999900:Bits",
+                 "GPRINT:bits:LAST:%6.2lf%sbps",
+                 "GPRINT:bits:AVERAGE:%6.2lf%sbps",
+                 "GPRINT:bits:MAX:%6.2lf%sbps\\n");
+
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+#    echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function tempgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical)
+{
+ global $rrdtool; global $installdir;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+
+  $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--vertical-label", $vertical ,"--alt-autoscale-max",
+                 "-E",  "-l 0", "--title", $title,
+            "DEF:cpu=$database:cputemp:AVERAGE",
+            "DEF:sys=$database:systemp:AVERAGE",
+            "LINE1.25:cpu#cc0000:CPU    ",
+            "GPRINT:cpu:LAST:Cur\:%6.2lf",
+            "GPRINT:cpu:AVERAGE:Avg\: %6.2lf",
+            "GPRINT:cpu:MIN:Min\:%6.2lf",
+            "GPRINT:cpu:MAX:Max\:%6.2lf\\n",
+            "LINE1.25:sys#009900:System ",
+            "GPRINT:sys:LAST:Cur\:%6.2lf",
+            "GPRINT:sys:AVERAGE:Avg\: %6.2lf",
+            "GPRINT:sys:MIN:Min\:%6.2lf",
+            "GPRINT:sys:MAX:Max\:%6.2lf\\n");
+
+  if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf",
+                                      "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf",
+                                      "--font-render-mode", "normal");}
+
+  $opts = array_merge($optsa, $optsb);
+
+
+    $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+#    echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+?>
diff --git a/includes/unix.php b/includes/unix.php
new file mode 100755
index 0000000000..cfa8bb7b1e
--- /dev/null
+++ b/includes/unix.php
@@ -0,0 +1,195 @@
+<?
+
+include("unix-graphing.php");
+
+function pollDeviceUnix() {
+   global $device;
+   global $community;
+   global $rrdtool;
+   $id = $device['id'];
+   $hostname = $device['hostname'];
+   $hardware = $device['hardware'];
+   $version = $device['version'];
+   $features = $device['features'];
+   if($device['apache'] == "1") { $apache = "yes"; }
+   $loadrrd  = "rrd/" . $hostname . "-load.rrd";
+   $loadgraph = "public_html/graphs/" . $hostname . "-load.png";
+   $cpurrd   = "rrd/" . $hostname . "-cpu.rrd";
+   $cpugraph = "public_html/graphs/" . $hostname . "-cpu.png";   
+   $memrrd   = "rrd/" . $hostname . "-mem.rrd";
+   $memgraph = "public_html/graphs/" . $hostname . "-mem.png";
+   $sysrrd   = "rrd/" . $hostname . "-sys.rrd";
+   $sysgraph = "public_html/graphs/" . $hostname . "-sys.png";
+
+   ## Check Disks
+   $dq = mysql_query("SELECT * FROM storage WHERE host_id = '$id'");
+   while ($dr = mysql_fetch_array($dq)) {
+     $hrStorageIndex = $dr['hrStorageIndex'];
+     $hrStorageAllocationUnits = $dr['hrStorageAllocationUnits'];
+     $hrStorageSize = $dr['hrStorageAllocationUnits'] * $dr['hrStorageSize']; 
+     $hrStorageDescr = $dr['hrStorageDescr'];
+     $used = `snmpget -O qv -v2c -c $community $hostname hrStorageUsed.$hrStorageIndex`;
+     $used = $used * $hrStorageAllocationUnits;
+     $perc = $used / $hrStorageSize * 100;
+
+     $filedesc = str_replace("\"", "", str_replace("/", "_", $hrStorageDescr));
+     $storerrd  = "rrd/" . $hostname . "-storage-" . $filedesc . ".rrd";
+     if (!is_file($storerrd)) {
+       `rrdtool create $storerrd \
+        --step 300 \
+        DS:size:GAUGE:600:0:U \
+        DS:used:GAUGE:600:0:U \
+        DS:perc:GAUGE:600:0:U \
+        RRA:AVERAGE:0.5:1:800 \
+        RRA:AVERAGE:0.5:6:800 \
+        RRA:AVERAGE:0.5:24:800 \
+        RRA:AVERAGE:0.5:288:800 \
+        RRA:MAX:0.5:1:800 \
+        RRA:MAX:0.5:6:800 \
+        RRA:MAX:0.5:24:800 \
+        RRA:MAX:0.5:288:800`;
+     }  
+     rrd_update($storerrd, "N:$hrStorageSize:$used:$perc");
+   }
+
+   ## Set OIDs
+   $oid_ssCpuRawUser         = ".1.3.6.1.4.1.2021.11.50.0";
+   $oid_ssCpuRawNice         = ".1.3.6.1.4.1.2021.11.51.0";
+   $oid_ssCpuRawSystem       = ".1.3.6.1.4.1.2021.11.52.0";
+   $oid_ssCpuRawIdle         = ".1.3.6.1.4.1.2021.11.53.0";
+   $oid_hrSystemProcesses    = ".1.3.6.1.2.1.25.1.6.0";
+   $oid_hrSystemNumUsers     = ".1.3.6.1.2.1.25.1.5.0";
+
+   $s = `snmpget -O qv -v2c -c $community $hostname $oid_ssCpuRawUser $oid_ssCpuRawSystem $oid_ssCpuRawNice $oid_ssCpuRawIdle $oid_hrSystemProcesses $oid_hrSystemNumUsers .1.3.6.1.4.1.2021.1.101.1`;
+   list ($cpuUser, $cpuSystem, $cpuNice, $cpuIdle, $procs, $users, $cputemp) = explode("\n", $s);
+
+   ## Create CPU RRD if it doesn't already exist
+   if (!is_file($cpurrd)) {
+      `rrdtool create $cpurrd \
+        --step 300 \
+        DS:user:COUNTER:600:0:U \
+        DS:system:COUNTER:600:0:U \
+        DS:nice:COUNTER:600:0:U \
+        DS:idle:COUNTER:600:0:U \
+        RRA:AVERAGE:0.5:1:800 \
+        RRA:AVERAGE:0.5:6:800 \
+        RRA:AVERAGE:0.5:24:800 \
+        RRA:AVERAGE:0.5:288:800 \
+        RRA:MAX:0.5:1:800 \
+        RRA:MAX:0.5:6:800 \
+        RRA:MAX:0.5:24:800 \
+        RRA:MAX:0.5:288:800`;
+   }
+   rrd_update($cpurrd,  "N:$cpuUser:$cpuSystem:$cpuNice:$cpuIdle");
+
+
+ ## If the device isn't monowall or pfsense, monitor all the pretty things
+ if($device[os] != "m0n0wall" && $device[os] != "Voswall" && $device[os] != "pfSense" ) {
+   if (!is_file($sysrrd)) {
+      `rrdtool create $sysrrd \
+        --step 300 \
+        DS:users:GAUGE:600:0:U \
+        DS:procs:GAUGE:600:0:U \
+        RRA:AVERAGE:0.5:1:800 \
+        RRA:AVERAGE:0.5:6:800 \
+        RRA:AVERAGE:0.5:24:800 \
+        RRA:AVERAGE:0.5:288:800 \
+        RRA:MAX:0.5:1:800 \
+        RRA:MAX:0.5:6:800 \
+        RRA:MAX:0.5:24:800 \
+        RRA:MAX:0.5:288:800`;
+   }
+
+   if (!is_file($memrrd)) {
+      `rrdtool create $memrrd \
+       --step 300 \
+       DS:totalswap:GAUGE:600:0:10000000000 \
+       DS:availswap:GAUGE:600:0:10000000000 \
+       DS:totalreal:GAUGE:600:0:10000000000 \
+       DS:availreal:GAUGE:600:0:10000000000 \
+       DS:totalfree:GAUGE:600:0:10000000000 \
+       DS:shared:GAUGE:600:0:10000000000 \
+       DS:buffered:GAUGE:600:0:10000000000 \
+       DS:cached:GAUGE:600:0:10000000000 \
+       RRA:AVERAGE:0.5:1:800 \
+       RRA:AVERAGE:0.5:6:800 \
+       RRA:AVERAGE:0.5:24:800 \
+       RRA:AVERAGE:0.5:288:800 \
+       RRA:MAX:0.5:1:800 \
+       RRA:MAX:0.5:6:800 \
+       RRA:MAX:0.5:24:800 \
+       RRA:MAX:0.5:288:800`;
+   }
+
+   if(!is_file($loadrrd)) {
+    `$rrdtool create $loadrrd \
+    --step 300 \
+    DS:1min:GAUGE:600:0:5000 \
+    DS:5min:GAUGE:600:0:5000 \
+    DS:15min:GAUGE:600:0:5000 \
+    RRA:AVERAGE:0.5:1:800 \
+    RRA:AVERAGE:0.5:6:800 \
+    RRA:AVERAGE:0.5:24:800 \
+    RRA:AVERAGE:0.5:288:800 \
+    RRA:MAX:0.5:1:800 \
+    RRA:MAX:0.5:6:800 \
+    RRA:MAX:0.5:24:800 \
+    RRA:MAX:0.5:288:800`;
+   }
+
+   $mem_get = "memTotalSwap.0 memAvailSwap.0 memTotalReal.0 memAvailReal.0 memTotalFree.0 memShared.0 memBuffer.0 memCached.0";
+   $mem_raw = `snmpget -O qv -v2c -c $community $hostname $mem_get`;
+   list($memTotalSwap, $memAvailSwap, $memTotalReal, $memAvailReal, $memTotalFree, $memShared, $memBuffer, $memCached) = explode("\n", $mem_raw); 
+
+   $load_get = "laLoadInt.1 laLoadInt.2 laLoadInt.3";
+   $load_raw = `snmpget -O qv -v2c -c $community $hostname $load_get`;
+   list ($load1, $load5, $load10) = explode ("\n", $load_raw);
+
+   rrd_update($sysrrd,  "N:$users:$procs");
+   rrd_update($loadrrd, "N:$load1:$load5:$load10");
+   rrd_update($memrrd,  "N:$memTotalSwap:$memAvailSwap:$memTotalReal:$memAvailReal:$memTotalFree:$memShared:$memBuffer:$memCached");
+
+  if($device['temp'] = 1) {
+    $temprrd = "rrd/" . $hostname . "-temp.rrd";   
+    $cputemp = str_replace("\"", "", $cputemp);
+    if (!is_file($temprrd)) {
+      $rrdcreate = `rrdtool create $temprrd --step 300 \
+                    DS:cputemp:GAUGE:600:-25:125 \
+                    DS:systemp:GAUGE:600:-25:125 \
+                    RRA:AVERAGE:0.5:1:2000 \
+                    RRA:AVERAGE:0.5:6:2000 \
+                    RRA:AVERAGE:0.5:24:2000 \
+                    RRA:AVERAGE:0.5:288:2000 \
+                    RRA:MAX:0.5:1:2000 \
+                    RRA:MAX:0.5:6:2000 \
+                    RRA:MAX:0.5:24:2000 \
+                    RRA:MAX:0.5:288:2000`;
+      }
+    rrd_update($temprrd, "N:$cputemp:0");
+  }
+
+
+  if($apache) {
+   $apacherrd = "rrd/" . $hostname . "-apache.rrd";
+   if(!is_file($apacherrd)) {
+   $woo= `rrdtool create $apacherrd         \
+           DS:bits:COUNTER:600:U:10000000   \
+           DS:hits:COUNTER:600:U:10000000  \
+           RRA:AVERAGE:0.5:1:800      \
+           RRA:AVERAGE:0.5:6:700      \
+           RRA:AVERAGE:0.5:24:775     \
+           RRA:AVERAGE:0.5:288:797    \
+           RRA:MAX:0.5:1:800          \
+           RRA:MAX:0.5:6:700          \
+           RRA:MAX:0.5:24:775         \
+           RRA:MAX:0.5:288:797`;
+  }
+
+  list($ahits,$abits) = explode("\n", `./get-apache.sh $hostname`);  
+  $abits = $abits * 8;
+
+  rrd_update($apacherrd,"N:$abits:$ahits");
+ }
+} // End Monowall Test
+
+}
diff --git a/includes/windows.php b/includes/windows.php
new file mode 100755
index 0000000000..df5d6eb0cb
--- /dev/null
+++ b/includes/windows.php
@@ -0,0 +1,363 @@
+<?
+
+function pollDeviceWin() {
+
+   global $device;
+   global $community;
+   global $rrdtool;
+   $id = $device['id'];
+   $hostname = $device['hostname'];
+   $hardware = $device['hardware'];
+   $version = $device['version'];
+   $features = $device['features'];
+
+   $loadrrd  = "rrd/" . $hostname . "-load.rrd";
+   $cpurrd   = "rrd/" . $hostname . "-cpu.rrd";
+   $memrrd   = "rrd/" . $hostname . "-mem.rrd";
+   $sysrrd   = "rrd/" . $hostname . "-sys.rrd";
+
+   $oid_ssCpuRawUser         = ".1.3.6.1.4.1.2021.11.50.0";
+   $oid_ssCpuRawSystem       = ".1.3.6.1.4.1.2021.11.51.0";
+   $oid_ssCpuRawNice         = ".1.3.6.1.4.1.2021.11.52.0";
+   $oid_ssCpuRawIdle         = ".1.3.6.1.4.1.2021.11.53.0";
+   $oid_hrSystemProcesses    = ".1.3.6.1.2.1.25.1.6.0";
+   $oid_hrSystemNumUsers     = ".1.3.6.1.2.1.25.1.5.0";
+
+   $s = `snmpget -O qv -v2c -c $community $hostname $oid_ssCpuRawUser $oid_ssCpuRawSystem $oid_ssCpuRawNice $oid_ssCpuRawIdle $oid_hrSystemProcesses $oid_hrSystemNumUsers`;
+   list ($cpuUser, $cpuSystem, $cpuNice, $cpuIdle, $procs, $users) = explode("\n", $s);
+
+   if (!is_file($cpurrd)) {
+      `rrdtool create $cpurrd \
+        --step 300 \
+        DS:user:COUNTER:600:0:U \
+        DS:system:COUNTER:600:0:U \
+        DS:nice:COUNTER:600:0:U \
+        DS:idle:COUNTER:600:0:U \
+        RRA:AVERAGE:0.5:1:800 \
+        RRA:AVERAGE:0.5:6:800 \
+        RRA:AVERAGE:0.5:24:800 \
+        RRA:AVERAGE:0.5:288:800 \
+        RRA:MAX:0.5:1:800 \
+        RRA:MAX:0.5:6:800 \
+        RRA:MAX:0.5:24:800 \
+        RRA:MAX:0.5:288:800`;
+   }
+
+   if (!is_file($sysrrd)) {
+      `rrdtool create $sysrrd \
+        --step 300 \
+        DS:users:GAUGE:600:0:U \
+        DS:procs:GAUGE:600:0:U \
+        RRA:AVERAGE:0.5:1:800 \
+        RRA:AVERAGE:0.5:6:800 \
+        RRA:AVERAGE:0.5:24:800 \
+        RRA:AVERAGE:0.5:288:800 \
+        RRA:MAX:0.5:1:800 \
+        RRA:MAX:0.5:6:800 \
+        RRA:MAX:0.5:24:800 \
+        RRA:MAX:0.5:288:800`;
+   }
+
+   if (!is_file($memrrd)) {
+      `rrdtool create $memrrd \
+       --step 300 \
+       DS:totalswap:GAUGE:600:0:10000000000 \
+       DS:availswap:GAUGE:600:0:10000000000 \
+       DS:totalreal:GAUGE:600:0:10000000000 \
+       DS:availreal:GAUGE:600:0:10000000000 \
+       DS:totalfree:GAUGE:600:0:10000000000 \
+       DS:shared:GAUGE:600:0:10000000000 \
+       DS:buffered:GAUGE:600:0:10000000000 \
+       DS:cached:GAUGE:600:0:10000000000 \
+       RRA:AVERAGE:0.5:1:800 \
+       RRA:AVERAGE:0.5:6:800 \
+       RRA:AVERAGE:0.5:24:800 \
+       RRA:AVERAGE:0.5:288:800 \
+       RRA:MAX:0.5:1:800 \
+       RRA:MAX:0.5:6:800 \
+       RRA:MAX:0.5:24:800 \
+       RRA:MAX:0.5:288:800`;
+   }
+
+   if(!is_file($loadrrd)) {
+    `$rrdtool create $loadrrd \
+    --step 300 \
+    DS:1min:GAUGE:600:0:5000 \
+    DS:5min:GAUGE:600:0:5000 \
+    DS:15min:GAUGE:600:0:5000 \
+    RRA:AVERAGE:0.5:1:800 \
+    RRA:AVERAGE:0.5:6:800 \
+    RRA:AVERAGE:0.5:24:800 \
+    RRA:AVERAGE:0.5:288:800 \
+    RRA:MAX:0.5:1:800 \
+    RRA:MAX:0.5:6:800 \
+    RRA:MAX:0.5:24:800 \
+    RRA:MAX:0.5:288:800`;
+   }
+
+   $mem_get = "memTotalSwap.0 memAvailSwap.0 memTotalReal.0 memAvailReal.0 memTotalFree.0 memShared.0 memBuffer.0 memCached.0";
+   $mem_raw = `snmpget -O qv -v2c -c $community $hostname $mem_get`;
+   list($memTotalSwap, $memAvailSwap, $memTotalReal, $memAvailReal, $memTotalFree, $memShared, $memBuffer, $memCached) = explode("\n", $mem_raw); 
+
+   $load_get = "laLoadInt.1 laLoadInt.2 laLoadInt.3";
+   $load_raw = `snmpget -O qv -v2c -c $community $hostname $load_get`;
+   list ($load1, $load5, $load10) = explode ("\n", $load_raw);
+
+   rrd_update($sysrrd, "N:$users:$procs");
+   rrd_update($loadrrd, "N:$load1:$load5:$load10");
+   rrd_update($memrrd, "N:$memTotalSwap:$memAvailSwap:$memTotalReal:$memAvailReal:$memTotalFree:$memShared:$memBuffer:$memCached");
+   rrd_update($cpurrd, "N:$cpuUser:$cpuSystem:$cpuNice:$cpuIdle");
+}
+
+function memgraphWin ($rrd, $graph, $from="-2d")
+{
+ global $rrdtool;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+    $opts = array ( 
+    "--start",
+    $from,
+    "-v MB",
+    "-b 1000", 
+    "--rigid",
+    "--title", "Memory Usage",
+    "--alt-autoscale-max",
+    "-l 0",
+    "--width",  "335", "--height", "100",
+    "DEF:totalswap=$database:totalswap:AVERAGE",
+    "DEF:availswap=$database:availswap:AVERAGE",
+    "DEF:totalreal=$database:totalreal:AVERAGE",
+    "DEF:availreal=$database:availreal:AVERAGE",
+    "DEF:totalfree=$database:totalfree:AVERAGE",
+    "DEF:shared=$database:shared:AVERAGE",
+    "DEF:buffered=$database:buffered:AVERAGE",
+    "DEF:cached=$database:cached:AVERAGE",
+    "CDEF:usedreal=totalreal,availreal,-",
+    "CDEF:usedswap=totalswap,availswap,-",
+    "CDEF:cdeftot=availreal,shared,buffered,usedreal,cached,usedswap,+,+,+,+,+",
+    "AREA:usedreal#ee8000:used",
+    "GPRINT:usedreal:LAST:   Cur\:%8.2lf %s",
+    "GPRINT:usedreal:AVERAGE: Avg\:%8.2lf %s",
+    "GPRINT:usedreal:MAX: Max\:%8.2lf %s\\n",
+    "STACK:shared#ec9900:shared",
+    "GPRINT:shared:LAST: Cur\:%8.2lf %s",
+    "GPRINT:shared:AVERAGE: Avg\:%8.2lf %s",
+    "GPRINT:shared:MAX: Max\:%8.2lf %s\\n",
+    "STACK:availreal#eacc00:free",
+    "GPRINT:availreal:LAST:   Cur\:%8.2lf %s",
+    "GPRINT:availreal:AVERAGE: Avg\:%8.2lf %s",
+    "GPRINT:availreal:MAX: Max\:%8.2lf %s\\n",
+    "STACK:buffered#cc0000:buffers",
+    "GPRINT:buffered:LAST:Cur\:%8.2lf %s",
+    "GPRINT:buffered:AVERAGE: Avg\:%8.2lf %s",
+    "GPRINT:buffered:MAX: Max\:%8.2lf %s\\n",
+    "STACK:cached#9fa4ee:cached",
+    "GPRINT:cached:LAST: Cur\:%8.2lf %s",
+    "GPRINT:cached:AVERAGE: Avg\:%8.2lf %s",
+    "GPRINT:cached:MAX: Max\:%8.2lf %s\\n",
+    "STACK:usedswap#afeced:swap",
+    "GPRINT:usedswap:LAST:   Cur\:%8.2lf %s",
+    "GPRINT:usedswap:AVERAGE: Avg\:%8.2lf %s",
+    "GPRINT:usedswap:MAX: Max\:%8.2lf %s",
+    "LINE1:totalreal#050505:total");
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+    echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function loadgraphWin ($rrd, $graph, $from="-2d") {
+    global $rrdtool;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+    $opts = array(
+    "--title", "Load Averages",
+    "--start",
+    $from,
+    "-v Load",
+    "--rigid",
+    "--alt-autoscale-max",
+    "-l 0",
+    "--width", "335", "--height", "100",
+    "DEF:1min=$database:1min:AVERAGE",
+    "DEF:5min=$database:5min:AVERAGE",
+    "DEF:15min=$database:15min:AVERAGE",
+    "CDEF:a=1min,100,/",
+    "CDEF:b=5min,100,/",
+    "CDEF:c=15min,100,/",
+    "CDEF:cdefd=a,b,c,+,+",
+    "AREA:a#eacc00:1 Minute:",
+    "LINE1:a#c5aa00:",
+    "GPRINT:a:LAST: Cur\:%8.2lf %s",
+    "GPRINT:a:AVERAGE: Ave\:%8.2lf %s",
+    "GPRINT:a:MAX: Max\:%8.2lf %s\\n",
+    "LINE1.5:b#ea8f00:5 Minute:",
+    "GPRINT:b:LAST: Cur\:%8.2lf %s",
+    "GPRINT:b:AVERAGE: Ave\:%8.2lf %s",
+    "GPRINT:b:MAX: Max\:%8.2lf %s\\n",
+    "LINE1.5:c#cc0000:15 Minute",
+    "GPRINT:c:LAST:Cur\:%8.2lf %s",
+    "GPRINT:c:AVERAGE: Ave\:%8.2lf %s",
+    "GPRINT:c:MAX: Max\:%8.2lf %s\\n");
+
+    $ret = rrd_graph("$imgfile", $opts, count($opts));
+    if( !is_array($ret) ) {
+       $err = rrd_error();
+       echo "rrd_graph() ERROR: $err\n";
+       return FALSE;
+    } else {
+       return $imgfile;
+    }
+}
+
+function usersgraphWin ($rrd, $graph, $from="-2d") {
+  global $rrdtool;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $opts = array(
+    "--title", "Logged on Users",
+    "--vertical-label", "Users",
+    "-l 0",
+    "--width", "335", "--height",  "100",
+    "--start",
+    $from,
+    "DEF:users=$database:users:AVERAGE",
+    "AREA:users#eacc00:users",
+    "LINE1.5:users#cc0000:",
+    "GPRINT:users:LAST:  Cur\:%3.0lf %s",
+    "GPRINT:users:AVERAGE: Avg\:%3.0lf %s",
+    "GPRINT:users:MIN: Min\:%3.0lf %s",
+    "GPRINT:users:MAX: Max\:%3.0lf %s\\n");
+
+    $ret = rrd_graph("$imgfile", $opts, count($opts));
+    if( !is_array($ret) ) {
+       $err = rrd_error();
+       echo "rrd_graph() ERROR: $err\n";
+       return FALSE;
+    } else {
+       return $imgfile;
+    }
+}
+
+function procsgraphWin ($rrd, $graph, $from="-2d") {
+  global $rrdtool;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $opts = array(
+    "-v # Processes",
+    "--title", "Running Processes",
+    "--vertical-label", "procs",
+    "-l 0",
+    "--width", "335", "--height",  "100",
+    "--start",
+    $from,
+    "DEF:procs=$database:procs:AVERAGE",
+    "AREA:procs#eacc00:Processes",
+   "LINE1.5:procs#cc0000:",
+    "GPRINT:procs:LAST:  Cur\:%3.0lf %s",
+    "GPRINT:procs:AVERAGE: Avg\:%3.0lf %s",
+    "GPRINT:procs:MIN: Min\:%3.0lf %s",
+    "GPRINT:procs:MAX: Max\:%3.0lf %s\\n");
+
+    $ret = rrd_graph("$imgfile", $opts, count($opts));
+    if( !is_array($ret) ) {
+       $err = rrd_error();
+       echo "rrd_graph() ERROR: $err\n";
+       return FALSE;
+    } else {
+       return $imgfile;
+    }
+}
+
+function cpugraphWin ($rrd, $graph, $from="-2d") {
+  global $rrdtool;
+  $database = "rrd/" . $rrd;
+  $imgfile = "graphs/" . "$graph";
+  $opts = array(
+    "-v CPU Utilization",
+    "--title", "Processor Usage",
+    "-u 100",
+    "--rigid",
+    "--vertical-label", "Load (%)",
+    "-l 0",
+    "--width", "335", "--height",  "100",
+    "--start",
+    $from,
+    "DEF:user=$database:user:AVERAGE",
+    "DEF:nice=$database:nice:AVERAGE",
+    "DEF:system=$database:system:AVERAGE",
+    "DEF:idle=$database:idle:AVERAGE",
+    "CDEF:total=user,nice,system,idle,+,+,+",
+    "CDEF:user_perc=user,total,/,100,*",
+    "CDEF:nice_perc=nice,total,/,100,*",
+    "CDEF:system_perc=system,total,/,100,*",
+    "CDEF:idle_perc=idle,total,/,100,*",
+    "AREA:user_perc#eacc00:user",
+    "GPRINT:user_perc:LAST:  Cur\:%3.0lf%%",
+    "GPRINT:user_perc:AVERAGE: Avg\:%3.0lf%%",
+    "GPRINT:user_perc:MAX: Max\:%3.0lf%%\\n",
+    "AREA:nice_perc#ea8f00:system:STACK",
+    "GPRINT:nice_perc:LAST:Cur\:%3.0lf%%",
+    "GPRINT:nice_perc:AVERAGE: Avg\:%3.0lf%%",
+    "GPRINT:nice_perc:MAX: Max\:%3.0lf%%\\n",
+    "AREA:system_perc#ff3932:nice:STACK",
+    "GPRINT:system_perc:LAST:  Cur\:%3.0lf%%",
+    "GPRINT:system_perc:AVERAGE: Avg\:%3.0lf%%",
+    "GPRINT:system_perc:MAX: Max\:%3.0lf%%\\n",
+    "AREA:idle_perc#fafdce:idle:STACK",
+    "GPRINT:idle_perc:LAST:  Cur\:%3.0lf%%",
+    "GPRINT:idle_perc:AVERAGE: Avg\:%3.0lf%%",
+    "GPRINT:idle_perc:MAX: Max\:%3.0lf%%\\n");
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+function storagegraphWin ($rrd, $graph, $from="-2d", $descr)
+{
+ global $rrdtool;
+    $database = "rrd/" . $rrd;
+    $imgfile = "graphs/" . "$graph";
+    $opts = array (
+    "--start",
+    $from,
+    "-v MB",
+    "-b 1024",
+    "--rigid",
+    "--title", $descr,
+    "--alt-autoscale-max",
+    "-l 0",
+    "--width",  "335", "--height", "100",
+    "DEF:size=$database:size:AVERAGE",
+    "DEF:used=$database:used:AVERAGE",
+    "AREA:size#80ee80:Total",
+    "GPRINT:size:LAST:Cur\:%8.2lf %s",
+    "GPRINT:size:AVERAGE: Avg\:%8.2lf %s",
+    "GPRINT:size:MAX: Max\:%8.2lf %s\\n",
+    "AREA:used#ec9900:Used",
+    "GPRINT:used:LAST: Cur\:%8.2lf %s",
+    "GPRINT:used:AVERAGE: Avg\:%8.2lf %s",
+    "GPRINT:used:MAX: Max\:%8.2lf %s\\n",
+    "LINE1:size#000000:");
+  $ret = rrd_graph("$imgfile", $opts, count($opts));
+  if( !is_array($ret) ) {
+    $err = rrd_error();
+    echo "rrd_graph() ERROR: $err\n";
+    return FALSE;
+  } else {
+    return $imgfile;
+  }
+}
+
+
+
+
+?>
diff --git a/interface-ips.php b/interface-ips.php
new file mode 100755
index 0000000000..324acd5b9c
--- /dev/null
+++ b/interface-ips.php
@@ -0,0 +1,39 @@
+#!/usr/bin/php
+<?php
+include("config.php");
+include("includes/functions.php");
+  
+$sql = "SELECT * FROM devices WHERE hostname LIKE '%$argv[1]%'  order by id ASC";
+$q = mysql_query($sql);
+while ($device = mysql_fetch_array($q)) {
+  $hostname = $device['hostname'];
+  $hostid = $device['id'];
+#  echo("$hostname\n");
+  $oids = `snmpwalk -v2c -Osq -c $community $hostname ipAdEntIfIndex | sed s/ipAdEntIfIndex.//g`;
+  $oids = trim($oids);
+  foreach(explode("\n", $oids) as $data) {
+    $data = trim($data);
+    list($oid,$snmpid) = explode(" ", $data);
+    $temp = `snmpget -O qv -v2c -c $community $hostname ipAdEntNetMask.$oid`;
+    $mask = trim($temp);
+    $address = $oid;
+    $cidr = netmask2cidr($netmask);
+    $network = trim(`$ipcalc $address/$mask | grep Network | cut -d" " -f 4`);
+    if (match_network($nets, $address) && $network != "") {
+      if (mysql_result(mysql_query("SELECT COUNT(*) FROM `networks` WHERE `cidr` = '$network'"), 0) < '1') {
+        $woo = mysql_query("INSERT INTO `networks` (`id`, `cidr`) VALUES ('', '$network')");
+        echo("Create Subnet $network\n");
+      } else {
+        $interface_id = @mysql_result(mysql_query("SELECT I.id FROM `interfaces` AS I, `devices` AS D WHERE I.host = D.id AND `snmpid` = '$snmpid' AND D.hostname = '$hostname'"), 0);
+        $network_id = @mysql_result(mysql_query("SELECT id from `networks` WHERE `cidr` = '$network'"), 0);
+        if (mysql_result(mysql_query("SELECT count(id) FROM `interfaces` WHERE snmpid = '$snmpid' AND host = '$hostid'"),0) == '1') {
+          if (mysql_result(mysql_query("SELECT COUNT(*) FROM `adjacencies` WHERE `network_id` = '$network_id' AND `interface_id` = '$interface_id'"), 0) < '1') {
+            mysql_query("INSERT INTO `adjacencies` (`network_id`, `interface_id`) VALUES ('$network_id', '$interface_id')");
+            echo("Create Adjacency : $hostname $network '$network_id', '$interface_id'\n");
+          }
+	} else { echo("$hostname snmpid $snmpid doesn't exist to link to $network/$cidr\n"); }
+      }
+    } 
+  }
+}
+?>
diff --git a/interface-ips.sh b/interface-ips.sh
new file mode 100755
index 0000000000..5d369ec0e0
--- /dev/null
+++ b/interface-ips.sh
@@ -0,0 +1,11 @@
+./interface-ips.php 1 &
+./interface-ips.php 2 &
+./interface-ips.php 3 &
+./interface-ips.php 4 &
+./interface-ips.php 5 &
+./interface-ips.php 6 &
+./interface-ips.php 7 &
+./interface-ips.php 8 &
+./interface-ips.php 9 &
+./interface-ips.php 0 &
+
diff --git a/ips.php b/ips.php
new file mode 100755
index 0000000000..0e467ef584
--- /dev/null
+++ b/ips.php
@@ -0,0 +1,45 @@
+#!/usr/bin/php
+<?php
+include("config.php");
+include("includes/functions.php");
+  
+$sql = "SELECT * FROM devices WHERE id LIKE '%$argv[1]' AND status = '1' AND os != 'Snom' order by id DESC";
+$q = mysql_query($sql);
+while ($device = mysql_fetch_array($q)) {
+  $hostname = $device['hostname'];
+  $hostid = $device['id'];
+  $community = $device['community'];
+  echo("$hostname\n");
+  $oids = `snmpwalk -v2c -Osq -c $community $hostname ipAdEntIfIndex | sed s/ipAdEntIfIndex.//g`;
+  $oids = trim($oids);
+  foreach(explode("\n", $oids) as $data) {
+    $data = trim($data);
+    list($oid,$ifIndex) = explode(" ", $data);
+    $temp = `snmpget -O qv -v2c -c $community $hostname ipAdEntNetMask.$oid`;
+    $mask = trim($temp);
+    $address = $oid;
+    $network = trim(`$ipcalc $address/$mask | grep Network | cut -d" " -f 4`);
+    list($net,$cidr) = explode("/", $network);
+    $cidr = trim($cidr);
+    if($mask == "255.255.255.255") { $cidr = "32"; $network = "$address/$cidr"; }
+    if (mysql_result(mysql_query("SELECT count(id) FROM `interfaces` WHERE host = '$hostid' AND `ifIndex` = '$ifIndex'"), 0) != '0') {
+      $i_query = "SELECT id FROM `interfaces` WHERE host = '$hostid' AND `ifIndex` = '$ifIndex'";
+      $interface_id = mysql_result(mysql_query($i_query), 0);
+      if (mysql_result(mysql_query("SELECT COUNT(*) FROM `ipaddr` WHERE `addr` = '$address' AND `cidr` = '$cidr' AND `interface_id` = '$interface_id'"), 0) == '0') {
+       mysql_query("INSERT INTO `ipaddr` (`addr`, `cidr`, `network`, `interface_id`) VALUES ('$address', '$cidr', '$net', '$interface_id')");
+       echo("Added $address/$cidr to $interface_id ( $hostname $ifIndex )\n $i_query\n");
+      }
+      if (mysql_result(mysql_query("SELECT COUNT(*) FROM `networks` WHERE `cidr` = '$network'"), 0) < '1') {
+        mysql_query("INSERT INTO `networks` (`id`, `cidr`) VALUES ('', '$network')");
+        echo("Create Subnet $network\n");
+      }
+     $network_id = mysql_result(mysql_query("SELECT id from `networks` WHERE `cidr` = '$network'"), 0);
+      if (match_network($nets, $address) && mysql_result(mysql_query("SELECT COUNT(*) FROM `adjacencies` WHERE `network_id` = '$network_id' AND `interface_id` = '$interface_id'"), 0) < '1') {
+        mysql_query("INSERT INTO `adjacencies` (`network_id`, `interface_id`) VALUES ('$network_id', '$interface_id')");
+        echo("Create Adjacency : $hostname, $interface_id, $network_id, $network, $ifIndex\n");
+      }
+
+    } else { }
+  }
+}
+?>
diff --git a/ips.sh b/ips.sh
new file mode 100755
index 0000000000..6fbbe834ee
--- /dev/null
+++ b/ips.sh
@@ -0,0 +1,11 @@
+./ips.php 1 &
+./ips.php 2 &
+./ips.php 3 &
+./ips.php 4 &
+./ips.php 5 &
+./ips.php 6 &
+./ips.php 7 &
+./ips.php 8 &
+./ips.php 9 &
+./ips.php 0 &
+
diff --git a/map.php b/map.php
new file mode 100755
index 0000000000..209402f8e1
--- /dev/null
+++ b/map.php
@@ -0,0 +1,91 @@
+#!/usr/bin/php
+<?
+
+include("config.php");
+include("includes/functions.php");
+
+echo("digraph G { sep=0.5; size=\"50,50\"; pack=15; bgcolor=transparent;
+     node [ fontname=\"times roman\" fontsize=18 fontstyle=bold ]; edge [ labelfontsize=12 labelfontname=\"times roman\" ];
+     graph [bgcolor=transparent]; ");
+
+$x = 1;
+
+$dev_sql = "SELECT * FROM links AS L, interfaces AS I, interfaces AS X, devices as D 
+            WHERE I.host = D.id AND L.src_if = I.id GROUP BY D.hostname ORDER BY hostname DESC";
+$dev_result = mysql_query($dev_sql);
+while($dev_data = mysql_fetch_array($dev_result)) {
+	$host = $dev_data['hostname'];
+        unset($hostinfo);	
+        if(strpos($host, "cust." . $mydomain)) { $hostinfo = "shape=egg style=filled fillcolor=pink"; }
+	elseif(strpos($host, $mydomain)) { 
+          if(strpos($host, "-sw")) { $hostinfo = "shape=rectangle style=filled fillcolor=skyblue"; } 
+          if(strpos($host, "-gw")) { $hostinfo = "shape=rectangle style=filled fillcolor=yellow"; }
+        } else { $hostinfo = "style=filled shape=rectangle fillcolor=lightgray"; }
+
+        $host = $dev_data[hostname];
+	$host = str_replace("." . $mydomain,"", $host);
+	echo("\"$host\" [$hostinfo]
+");	
+
+}
+
+$linkdone = array();
+
+$links_sql = "SELECT *, X.if AS sif, I.if AS dif FROM links AS L, interfaces AS I, interfaces AS X, devices as D where I.host = D.id AND L.src_if = I.id AND X.id = L.dst_if ORDER BY D.hostname";
+$links_result = mysql_query($links_sql);
+while($link_data = mysql_fetch_array($links_result)) {
+
+	$src_if = $link_data['src_if'];
+	$dst_if = $link_data['dst_if'];
+
+        $sq = mysql_fetch_row(mysql_query("SELECT `hostname`,`ifSpeed` FROM interfaces AS I, devices as D where I.host = D.id and I.id = '$src_if'"));
+        $dq = mysql_fetch_row(mysql_query("SELECT `hostname`,`ifSpeed` FROM interfaces AS I, devices as D where I.host = D.id and I.id = '$dst_if'"));
+
+        $src = $sq[0];
+        $dst = $dq[0];
+
+	$src_speed = $sq[1]; 
+	$dst_speed = $dq[1];
+
+	$src = str_replace("." . $mydomain, "", $src);
+	$dst = str_replace("." . $mydomain, "", $dst);
+
+	$info = "";
+
+#	if($src_speed == "10 Gbps") { 
+#           $info .= "color=red weight=5"; 
+#        } elseif ($src_speed == "1.0 Gbps") {
+#           $info .= "color=blue weight=10";
+#        } elseif ($src_speed == "100 Gbps") {
+#           $info .= "color=green weight=1";
+#        } elseif ($src_speed == "10 mbps") {
+#           $info .= "";
+#        }
+
+	unset($die);
+
+	$i = 0;
+	while ($i < count($linkdone)) {
+	    $thislink = "$dst $link_data[dif] $src $link_data[sif]";
+            if ($linkdone[$i] == $thislink) { $die = "yes"; }
+	    $i++;
+	}
+
+	$sif = makeshortif($link_data[sif]);
+	$dif = makeshortif($link_data[dif]);
+
+#       $sif = $link_data[sif];
+#       $dif = $link_data[dif];
+
+
+	if(!$die){	
+#	echo("\"$src\" -> \"$dst\" [taillabel=\"$dif\"  headlabel=\"$sif\" arrowhead=none arrowtail=none $info];\n");
+        echo("\"$src\" -> \"$dst\" [ arrowhead=none arrowtail=none $info];\n");
+	$linkdone[] = "$src $link_data[sif] $dst $link_data[dif]";
+	$x++;
+        }
+}
+
+echo("}");
+
+?>
diff --git a/mysql-schema.sql b/mysql-schema.sql
new file mode 100644
index 0000000000..786d69c46b
--- /dev/null
+++ b/mysql-schema.sql
@@ -0,0 +1,348 @@
+-- MySQL dump 10.9
+--
+-- Host: localhost    Database: observer-dev
+-- ------------------------------------------------------
+-- Server version	4.1.15-Debian_1ubuntu5-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `adjacencies`
+--
+
+DROP TABLE IF EXISTS `adjacencies`;
+CREATE TABLE `adjacencies` (
+  `adj_id` int(11) NOT NULL auto_increment,
+  `network_id` int(11) NOT NULL default '0',
+  `interface_id` int(11) NOT NULL default '0',
+  PRIMARY KEY  (`adj_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `adjacencies`
+--
+
+
+/*!40000 ALTER TABLE `adjacencies` DISABLE KEYS */;
+LOCK TABLES `adjacencies` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `adjacencies` ENABLE KEYS */;
+
+--
+-- Table structure for table `alerts`
+--
+
+DROP TABLE IF EXISTS `alerts`;
+CREATE TABLE `alerts` (
+  `id` int(11) NOT NULL auto_increment,
+  `importance` int(11) NOT NULL default '0',
+  `device_id` int(11) NOT NULL default '0',
+  `message` text NOT NULL,
+  `time_logged` timestamp NOT NULL default CURRENT_TIMESTAMP,
+  `alerted` smallint(6) NOT NULL default '0',
+  KEY `id` (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `alerts`
+--
+
+
+/*!40000 ALTER TABLE `alerts` DISABLE KEYS */;
+LOCK TABLES `alerts` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `alerts` ENABLE KEYS */;
+
+--
+-- Table structure for table `customers`
+--
+
+DROP TABLE IF EXISTS `customers`;
+CREATE TABLE `customers` (
+  `username` char(64) NOT NULL default '',
+  `password` char(32) NOT NULL default '',
+  `string` char(64) NOT NULL default '',
+  `level` tinyint(4) NOT NULL default '0',
+  UNIQUE KEY `username` (`username`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `customers`
+--
+
+
+/*!40000 ALTER TABLE `customers` DISABLE KEYS */;
+LOCK TABLES `customers` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `customers` ENABLE KEYS */;
+
+--
+-- Table structure for table `devices`
+--
+
+DROP TABLE IF EXISTS `devices`;
+CREATE TABLE `devices` (
+  `id` int(11) NOT NULL auto_increment,
+  `hostname` varchar(64) NOT NULL default '',
+  `ip` varchar(16) NOT NULL default '',
+  `community` varchar(32) NOT NULL default 'public',
+  `snmpver` char(3) NOT NULL default 'v2c',
+  `monowall` tinyint(4) NOT NULL default '0',
+  `version` text NOT NULL,
+  `hardware` text NOT NULL,
+  `features` text NOT NULL,
+  `sysdesc` text,
+  `location` text,
+  `os` varchar(16) NOT NULL default '',
+  `status` tinyint(4) NOT NULL default '0',
+  `ignore` tinyint(4) NOT NULL default '0',
+  `uptime` int(11) NOT NULL default '0',
+  `lastchange` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+  `purpose` text NOT NULL,
+  `apache` tinyint(4) NOT NULL default '0',
+  `courier` tinyint(4) NOT NULL default '0',
+  `postfix` tinyint(4) NOT NULL default '0',
+  `temp` tinyint(4) NOT NULL default '0',
+  `type` varchar(16) default NULL,
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `hostname` (`hostname`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `devices`
+--
+
+
+/*!40000 ALTER TABLE `devices` DISABLE KEYS */;
+LOCK TABLES `devices` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `devices` ENABLE KEYS */;
+
+--
+-- Table structure for table `eventlog`
+--
+
+DROP TABLE IF EXISTS `eventlog`;
+CREATE TABLE `eventlog` (
+  `id` int(11) NOT NULL default '0',
+  `host` int(11) NOT NULL default '0',
+  `interface` int(11) default NULL,
+  `datetime` datetime NOT NULL default '0000-00-00 00:00:00',
+  `message` text NOT NULL,
+  `type` int(11) NOT NULL default '0'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `eventlog`
+--
+
+
+/*!40000 ALTER TABLE `eventlog` DISABLE KEYS */;
+LOCK TABLES `eventlog` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `eventlog` ENABLE KEYS */;
+
+--
+-- Table structure for table `interfaces`
+--
+
+DROP TABLE IF EXISTS `interfaces`;
+CREATE TABLE `interfaces` (
+  `id` int(11) NOT NULL auto_increment,
+  `host` int(11) NOT NULL default '0',
+  `if` varchar(64) NOT NULL default '',
+  `ifIndex` int(11) NOT NULL default '0',
+  `ifSpeed` text,
+  `up` varchar(12) NOT NULL default '',
+  `up_admin` varchar(12) default NULL,
+  `ifDuplex` varchar(12) default NULL,
+  `ifMtu` int(11) default NULL,
+  `ifType` text,
+  `name` text,
+  `ifPhysAddress` text,
+  `lastchange` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+  PRIMARY KEY  (`id`),
+  KEY `host` (`host`),
+  KEY `snmpid` (`ifIndex`),
+  KEY `if_2` (`if`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `interfaces`
+--
+
+
+/*!40000 ALTER TABLE `interfaces` DISABLE KEYS */;
+LOCK TABLES `interfaces` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `interfaces` ENABLE KEYS */;
+
+--
+-- Table structure for table `ipaddr`
+--
+
+DROP TABLE IF EXISTS `ipaddr`;
+CREATE TABLE `ipaddr` (
+  `id` int(11) NOT NULL auto_increment,
+  `addr` varchar(32) NOT NULL default '',
+  `cidr` smallint(6) NOT NULL default '0',
+  `network` varchar(64) NOT NULL default '',
+  `interface_id` int(11) NOT NULL default '0',
+  PRIMARY KEY  (`id`),
+  KEY `addr` (`addr`,`cidr`,`interface_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `ipaddr`
+--
+
+
+/*!40000 ALTER TABLE `ipaddr` DISABLE KEYS */;
+LOCK TABLES `ipaddr` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `ipaddr` ENABLE KEYS */;
+
+--
+-- Table structure for table `links`
+--
+
+DROP TABLE IF EXISTS `links`;
+CREATE TABLE `links` (
+  `id` int(11) NOT NULL auto_increment,
+  `src_if` int(11) default NULL,
+  `dst_if` int(11) default NULL,
+  `active` tinyint(4) NOT NULL default '1',
+  `cdp` int(11) default NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `links`
+--
+
+
+/*!40000 ALTER TABLE `links` DISABLE KEYS */;
+LOCK TABLES `links` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `links` ENABLE KEYS */;
+
+--
+-- Table structure for table `networks`
+--
+
+DROP TABLE IF EXISTS `networks`;
+CREATE TABLE `networks` (
+  `id` int(11) NOT NULL auto_increment,
+  `cidr` varchar(32) NOT NULL default '',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `cidr_2` (`cidr`),
+  FULLTEXT KEY `cidr` (`cidr`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `networks`
+--
+
+
+/*!40000 ALTER TABLE `networks` DISABLE KEYS */;
+LOCK TABLES `networks` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `networks` ENABLE KEYS */;
+
+--
+-- Table structure for table `services`
+--
+
+DROP TABLE IF EXISTS `services`;
+CREATE TABLE `services` (
+  `service_id` int(11) NOT NULL auto_increment,
+  `service_host` int(11) NOT NULL default '0',
+  `service_ip` text,
+  `service_type` text NOT NULL,
+  `service_desc` text NOT NULL,
+  `service_param` text NOT NULL,
+  `service_port` text,
+  `service_hostname` text,
+  `service_status` tinyint(4) NOT NULL default '2',
+  `service_message` text NOT NULL,
+  `service_changed` int(11) NOT NULL default '0',
+  `service_checked` int(11) NOT NULL default '0',
+  `service_ignore` tinyint(4) NOT NULL default '0',
+  PRIMARY KEY  (`service_id`),
+  KEY `service_host` (`service_host`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `services`
+--
+
+
+/*!40000 ALTER TABLE `services` DISABLE KEYS */;
+LOCK TABLES `services` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `services` ENABLE KEYS */;
+
+--
+-- Table structure for table `storage`
+--
+
+DROP TABLE IF EXISTS `storage`;
+CREATE TABLE `storage` (
+  `storage_id` int(11) NOT NULL auto_increment,
+  `host_id` int(11) NOT NULL default '0',
+  `hrStorageIndex` int(11) NOT NULL default '0',
+  `hrStorageDescr` text NOT NULL,
+  `hrStorageSize` int(11) NOT NULL default '0',
+  `hrStorageAllocationUnits` int(11) NOT NULL default '0',
+  PRIMARY KEY  (`storage_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `storage`
+--
+
+
+/*!40000 ALTER TABLE `storage` DISABLE KEYS */;
+LOCK TABLES `storage` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `storage` ENABLE KEYS */;
+
+--
+-- Table structure for table `users`
+--
+
+DROP TABLE IF EXISTS `users`;
+CREATE TABLE `users` (
+  `username` char(30) NOT NULL default '',
+  `password` char(32) NOT NULL default '',
+  `descr` char(30) NOT NULL default '',
+  `level` tinyint(4) NOT NULL default '0',
+  UNIQUE KEY `username` (`username`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `users`
+--
+
+
+/*!40000 ALTER TABLE `users` DISABLE KEYS */;
+LOCK TABLES `users` WRITE;
+INSERT INTO `users` VALUES ('admin','6033c66e583283ac','Default User',10);
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `users` ENABLE KEYS */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
diff --git a/poll-device-netstats.php b/poll-device-netstats.php
new file mode 100755
index 0000000000..67fa7cdeb1
--- /dev/null
+++ b/poll-device-netstats.php
@@ -0,0 +1,40 @@
+<?php
+
+$oids = array ('ipForwDatagrams','ipInDelivers','ipInReceives','ipOutRequests','ipInDiscards','ipOutDiscards','ipOutNoRoutes',
+               'icmpInMsgs','icmpOutMsgs','icmpInErrors','icmpOutErrors','icmpInEchos','icmpOutEchos','icmpInEchoReps',
+               'icmpOutEchoReps','snmpInTotalReqVars','snmpInTotalSetVars','snmpInTraps','snmpOutTraps','snmpInPkts',
+               'snmpOutPkts','snmpOutGetResponses','snmpOutSetRequests','tcpActiveOpens','tcpPassiveOpens','tcpAttemptFails',
+               'tcpEstabResets','tcpInSegs','tcpOutSegs','tcpRetransSegs','udpInDatagrams','udpOutDatagrams','udpInErrors',
+               'udpNoPorts');
+
+$rrdfile = "rrd/" . $hostname . "-netinfo.rrd";
+
+$rrd_create = "rrdtool create $rrdfile ";
+$rrd_create .= "RRA:AVERAGE:0.5:1:600 RRA:AVERAGE:0.5:6:700 RRA:AVERAGE:0.5:24:775 RRA:AVERAGE:0.5:288:797 RRA:MAX:0.5:1:600 \
+                RRA:MAX:0.5:6:700 RRA:MAX:0.5:24:775 RRA:MAX:0.5:288:797";
+
+unset($snmpstring);
+
+foreach($oids as $oid){
+  $rrd_create .= " DS:$oid:COUNTER:600:U:100000000000";
+  $snmpstring .= " $oid.0";
+}
+
+if(!file_exists($rrdfile)) { `$rrd_create`; }
+
+$snmpdata = trim(`snmpget -O qv -$snmpver -c $community $hostname $snmpstring`);
+
+$rrdupdate = "N";
+
+foreach(explode("\n", $snmpdata) as $data) {
+  if(strstr($data, "No")) { $data = ""; }
+  $rrdupdate .= ":$data";
+}
+
+echo("\n$rrdfile $rrdupdate\n");
+
+rrd_update($rrdfile, $rrdupdate);
+
+rrd_error();
+
+?>
diff --git a/poll-device.php b/poll-device.php
new file mode 100755
index 0000000000..98315c28e3
--- /dev/null
+++ b/poll-device.php
@@ -0,0 +1,220 @@
+#!/usr/bin/php
+<?
+
+include("config.php");
+include("includes/functions.php");
+
+$device_query = mysql_query("SELECT * FROM `devices` WHERE `id` like '%$argv[1]' AND `ignore` = '0' ORDER BY `id` ASC");
+while ($device = mysql_fetch_array($device_query)) {
+  $hostname = $device['hostname'];
+  $id = $device['id'];
+  $status = $device['status'];
+  $community = $device['community'];
+  $snmpver = $device['snmpver'];
+  unset($update); unset($update_query); unset($seperator);  unset($newversion); unset($newuptime); unset($newfeatures); 
+  unset($newlocation); unset($newhardware);
+  $pingable = isPingable($hostname);
+  $snmpable = FALSE;
+  if($pingable) {
+    $snmpable = isSNMPable($hostname, $community, $snmpver);
+  }
+  if ($pingable !== FALSE && $snmpable !== FALSE ) {
+    $newstatus = '1';
+    $hardware = $device['hardware'];
+    $version = $device['version'];
+    $old_rebooted = $device['rebooted'];
+    $features = $device['features'];
+    $location = $device['location'];
+    $old_sysDescr = $device['sysDescr'];
+    $uptime = $device['uptime'];
+    $os = $device['os'];
+    if($os == "FreeBSD" || $os == "OpenBSD" || $os == "Linux" || $os == "Windows") { $uptimeoid = ".1.3.6.1.2.1.25.1.1.0"; } else { $uptimeoid = "1.3.6.1.2.1.1.3.0"; }
+    if($device['monowall']) { $uptimeoid = ".1.3.6.1.2.1.1.3.0"; }
+    $snmp = "$uptimeoid sysLocation.0 .1.3.6.1.2.1.47.1.1.1.1.13.1 sysDescr.0";
+    $snmpdata = `snmpget -O qv -$snmpver -c $community $hostname $snmp | grep -v "Cisco Internetwork Operating System Software"`;
+    $snmpdata = preg_replace("/^.*IOS/","", $snmpdata);
+    $snmpdata = trim($snmpdata);
+    list($sysUptime, $sysLocation, $ciscomodel, $sysDescr) = explode("\n", $snmpdata);
+    $sysUptime = str_replace("(", "", $sysUptime);
+    $sysUptime = str_replace(")", "", $sysUptime); 
+    list($days, $hours, $mins, $secs) = explode(":", $sysUptime);
+    list($secs, $microsecs) = explode(".", $secs);
+    $timeticks =  mktime(0, $secs, $mins, $hours, $days, 0);
+    $hours = $hours + ($days * 24);
+    $mins = $mins + ($hours * 60);
+    $secs = $secs + ($mins * 60);
+    $newuptime = $secs;
+
+    include("poll-device-netstats.php");    
+
+    switch ($os) {
+    case "FreeBSD":
+    case "DragonFly":
+    case "OpenBSD":
+    case "Linux":
+    case "m0n0wall":
+    case "Voswall":
+    case "NetBSD":
+    case "pfSense":
+      if($os == "FreeBSD") {
+        $sysDescr = str_replace(" 0 ", " ", $sysDescr);
+        list(,,$newversion) = explode (" ", $sysDescr);
+        $newhardware = "i386";
+        $newfeatures = "GENERIC";
+      } elseif($os == "DragonFly") {
+        list(,,$newversion,,,$newfeatures,,$newhardware) = explode (" ", $sysDescr);
+      } elseif($os == "NetBSD") {
+        list(,,$newversion,,,$newfeatures) = explode (" ", $sysDescr);
+        $newfeatures = str_replace("(", "", $newfeatures);
+        $newfeatures = str_replace(")", "", $newfeatures);
+        list(,,$newhardware) = explode ("$newfeatures", $sysDescr);
+      } elseif($os == "OpenBSD") {
+        list(,,$newversion,$newfeatures,$newhardware) = explode (" ", $sysDescr);
+        $newfeatures = str_replace("(", "", $newfeatures);
+        $newfeatures = str_replace(")", "", $newfeatures);
+      } elseif($os == "m0n0wall" || $os == "Voswall") { 
+	list(,,$newversion,$newhardware,$freebsda, $freebsdb, $arch) = split(" ", $sysDescr);
+	$newfeatures = $freebsda . " " . $freebsdb;
+	$newhardware = "$newhardware ($arch)";	
+        $newhardware = str_replace("\"", "", $newhardware);
+      } elseif ($os == "Linux") {
+        list(,,$newversion) = explode (" ", $sysDescr);
+        if(strstr($sysDescr, "386")|| strstr($sysDescr, "486")||strstr($sysDescr, "586")||strstr($sysDescr, "686")) { $newhardware = "Generic x86"; }
+#        list($newversion,$newfeatures,$newfeaturesb) = explode("-", $newversion);
+        $newfeatures = `snmpget -O qv -$snmpver -c $community $hostname .1.3.6.1.4.1.2021.7890.1.101.1`;
+        $newfeatures = str_replace("No Such Object available on this agent at this OID", "", $newfeatures);
+        $newfeatures = str_replace("\"", "", $newfeatures);
+      } 
+      pollDeviceUnix();
+      break;
+    case "Windows":
+      if($os == "Windows") {
+        if(strstr($sysDescr, "x86")) { $newhardware = "Generic x86"; }
+        if(strstr($sysDescr, "Windows Version 5.2")) { $newversion = "2003 Server"; }
+        if(strstr($sysDescr, "Uniprocessor Free")) { $newfeatures = "Uniprocessor"; }
+        if(strstr($sysDescr, "Multiprocessor Free")) { $newfeatures = "Multiprocessor"; }
+      }
+      pollDeviceWin();
+      break;
+    case "IOS":
+      if ($os == "IOS") {
+        $newversion = str_replace("Cisco IOS Software,", "", $sysDescr);
+        $newversion = str_replace("IOS (tm) ", "", $newversion);
+        $newversion = str_replace(",RELEASE SOFTWARE", "", $newversion);
+        $newversion = str_replace(",MAINTENANCE INTERIM SOFTWARE", "", $newversion);
+        $newversion = str_replace("Version ","", $newversion);
+        $newversion = str_replace("Cisco Internetwork Operating System Software", "", $newversion);
+        $newversion = trim($newversion);
+        list($newversion) = explode("\n", $newversion);
+        $newversion = preg_replace("/^[A-Za-z0-9\ \_]*\(([A-Za-z0-9\-\_]*)\), (.+), .*/", "\\1|\\2", $newversion);
+        $newversion = str_replace("-M|", "|", $newversion);
+        $newversion = str_replace("-", "|", $newversion);
+        list($newhardware, $newfeatures, $newversion) = explode("|", $newversion);
+        $newfeatures = fixIOSFeatures($newfeatures);
+        #$newhardware = fixIOSHardware($newhardware);
+        $ciscomodel = str_replace("\"", "", $ciscomodel);
+        if(strstr($ciscomodel, "OID")){ unset($ciscomodel); }
+        echo("\n|$ciscomodel|$newhardware\n");
+        if(!strstr($ciscomodel, " ") && strlen($ciscomodel) >= '3') {
+          echo("$ciscomodel");
+          $newhardware = $ciscomodel;
+        }
+        
+      }
+      pollDeviceIOS();
+      break;
+    case "ProCurve":
+      $sysDescr = str_replace(", ", ",", $sysDescr);
+      list($newhardware, $newfeatures, $newversion) = explode(",", $sysDescr);
+      list($newversion) = explode("(", $newversion);
+      if(!strstr($ciscomodel, " ")) {
+        echo("$ciscomodel");
+        $newhardware = str_replace("\"", "", $ciscomodel);
+      }
+      pollDeviceHP();
+      break;
+    case "Snom":
+      $sysDescr = `snmpget -Oqv -$snmpver -c $community $hostname 1.3.6.1.2.1.7526.2.4`;
+      $sysDescr = str_replace("-", " ", $sysDescr);
+      $sysDescr = str_replace("\"", "", $sysDescr);
+      list($newhardware, $newfeatures, $newversion) = explode(" ", $sysDescr);
+      pollDeviceSnom();
+      break;
+    default:
+      pollDevice();
+    }   
+    $newlocation = str_replace("\"","", $sysLocation); 
+  } else {
+    $newstatus = '0';
+  }
+
+  $uptimerrd = "rrd/" . $hostname . "-uptime.rrd";
+  if(!is_file($uptimerrd)) {
+    $woo = `rrdtool create $uptimerrd \
+      DS:uptime:GAUGE:600:0:U \
+      RRA:AVERAGE:0.5:1:600 \
+      RRA:AVERAGE:0.5:6:700 \
+      RRA:AVERAGE:0.5:24:775 \
+      RRA:AVERAGE:0.5:288:797`;
+  }
+  rrd_update($uptimerrd, "N:$newuptime");
+
+  if ( $sysDescr && $sysDescr != $old_sysDescr ) {
+    $update = "`sysDescr` = '$sysDescr'";
+    $seperator = ", ";
+    mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'New sysDescr - $sysDescr')");
+  }
+  if ( $newlocation && $location != $newlocation ) {
+    $update = "`location` = '$newlocation'";
+    $seperator = ", ";
+    mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed location from $location to $newlocation')");
+  }
+  if ( $newversion && $version != $newversion ) {
+    $update .= $seperator . "`version` = '$newversion'";
+    $seperator = ", ";
+    mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed version from $version to $newversion')");
+  }
+  if ( $newfeatures && $newfeatures != $features ) {
+    $update .= $seperator . "`features` = '$newfeatures'";
+    $seperator = ", ";
+    mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed features from $features to $newfeatures')");
+  }
+  if ( $newhardware && $newhardware != $hardware ) {
+    $update .= $seperator . "`hardware` = '$newhardware'";
+    $seperator = ", ";
+    mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed hardware from $hardware to $newhardware')");
+  }
+  if ( $newuptime && $uptime != $newuptime ) {
+    $update .= $seperator . "`uptime` = '$newuptime'";
+    $seperator = ", ";
+  }
+  if ( $newuptime && $newuptime < $uptime  ) {
+    $update .= $seperator . "`lastchange` = NOW()";
+    $seperator = ", ";
+  } elseif($status != $newstatus) { 
+    $update .= $seperator . "`lastchange` = NOW()";
+    $seperator = ", ";
+  }
+  if( $status != $newstatus ) {
+    $update .= $seperator . "`status` = '$newstatus'";
+    $seperator = ", ";
+    if ($newstatus == '1') { $stat = "Up"; 
+      mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('0', '$id', 'Device is up\n')");
+    } else { 
+      $stat = "Down"; 
+      mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('9', '$id', 'Device is down\n')");
+    }
+    mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Device status changed to $stat')");
+  }
+  if ($update) {
+    $update_query  = "UPDATE `devices` SET ";
+    $update_query .= $update;
+    $update_query .= " WHERE `id` = '$id'";
+    echo("Updating $hostname\n$update_query\n\n");
+    $update_result = mysql_query($update_query);
+  } else {
+    echo("No Changes to $hostname \n\n");
+  }
+}   
+
+?>
diff --git a/poll-ifstatus.php b/poll-ifstatus.php
new file mode 100755
index 0000000000..dd50f1c7c0
--- /dev/null
+++ b/poll-ifstatus.php
@@ -0,0 +1,75 @@
+#!/usr/local/bin/php
+<?php
+  //
+  // Interface Status Poller
+  //
+  
+  include("config.php");
+  include("functions.php");
+  
+  $interface_query = mysql_query("SELECT *, I.id AS sqlid FROM `interfaces` AS I, `devices` AS D where I.host = D.id AND D.status = '1' AND I.id LIKE '%" . $argv[1] . "' ORDER BY I.id DESC");
+  while ($interface = mysql_fetch_array($interface_query)) {
+      $hostname = $interface['hostname'];
+      $host = $interface['host'];
+      $old_if = $interface['if'];
+      $ifIndex = $interface['ifIndex'];
+      $old_alias = $interface['name'];
+      $id = $interface['sqlid'];
+      $old_up = $interface['up'];
+      $old_speed = $interface['speed'];
+      $os = $interface['os'];
+      $old_duplex = $interface['duplex'];
+      $old_mac = $interface['mac'];
+      $old_up_admin = $interface['up_admin'];
+      $snmpver = $interface['snmpver'];
+      $snmp_cmd = "snmpget -O qv -$snmpver -c $community $hostname ifDescr.$ifIndex ifAdminStatus.$ifIndex ifOperStatus.$ifIndex ";
+      $snmp_cmd .= "ifAlias.$ifIndex 1.3.6.1.2.1.10.7.2.1.$ifIndex ifName.$ifIndex";
+      $snmp_output = `$snmp_cmd`;
+      $snmp_output = trim($snmp_output);
+      list($ifDescr, $ifAdminStatus, $ifOperStatus, $ifAlias, $ifDuplex, $ifName) = explode("\n", $snmp_output);
+
+      $ifDescr = trim(str_replace("\"", "", $ifDescr));
+      $name = $ifDescr;
+      if ($ifDuplex == 3) { $ifDuplex = "half"; } elseif ($ifDuplex == 2) { $ifDuplex = "full"; } else { $ifDuplex = "unknown"; }
+      $ifAlias = str_replace("No Such Object available on this agent at this OID", "", $ifAlias);
+      $name = strtolower($name);
+
+      $ifAlias = str_replace("No Such Object available on this agent at this OID", "", $ifAlias);
+      $name = str_replace("no such object available on this agent at this oid", "", $name);
+#      if ($ifAlias == " ") { $ifAlias = str_replace(" ", "", $ifAlias); }
+      $ifAlias = trim(str_replace("\"", "", $ifAlias));
+      $ifAlias = trim($ifAlias);
+      if ($old_alias != $ifAlias || $old_up != $ifOperStatus || $old_up_admin != $ifAdminStatus || $old_duplex != $ifDuplex || $old_if == $name ) 
+
+      unset($update); 
+      unset($update_query); 
+      unset($seperator);
+      
+      if ( $old_if != $name ) {
+         $update = "`if` = '$name'"; 
+         $seperator = ", "; 
+      }
+      if ( $old_alias != $ifAlias ) {
+         $update .= $seperator . "`name` = \"$ifAlias\"";
+      }
+      if ( $old_up != $ifOperStatus ) {
+         $update .= $seperator . "`up` = '$ifOperStatus'";
+      }
+      if ( $old_up_admin != $ifAdminStatus ) {
+         $update .= $seperator . "`up_admin` = '$ifAdminStatus'";
+      }
+      if ( $old_duplex != $ifDuplex ) {
+         $update .= $seperator . "`duplex` = '$ifDuplex'";
+      }
+
+      if ($update) {
+	 $update_query  = "UPDATE `interfaces` SET ";
+         $update_query .= $update;
+         $update_query .= " WHERE `id` = '$id'";
+         echo("Updating : $hostname $name\n$update_query\n\n");
+         $update_result = mysql_query($update_query);
+      } else {
+         echo("Not Updating : $hostname $name ( $old_if )\n\n");
+      }
+  }
+?>
diff --git a/poll-ifstatus.sh b/poll-ifstatus.sh
new file mode 100755
index 0000000000..b468cfec05
--- /dev/null
+++ b/poll-ifstatus.sh
@@ -0,0 +1,14 @@
+#!/usr/local/bin/bash
+
+cd /usr/local/network
+./poll-ifstatus.php 1 &
+./poll-ifstatus.php 2 &
+./poll-ifstatus.php 3 &
+./poll-ifstatus.php 4 &
+./poll-ifstatus.php 5 &
+./poll-ifstatus.php 6 &
+./poll-ifstatus.php 7 &
+./poll-ifstatus.php 8 &
+./poll-ifstatus.php 9 &
+./poll-ifstatus.php 0 &
+
diff --git a/poll-interface.php b/poll-interface.php
new file mode 100755
index 0000000000..0d2a106add
--- /dev/null
+++ b/poll-interface.php
@@ -0,0 +1,148 @@
+#!/usr/bin/php
+<?
+
+include("config.php");
+include("includes/functions.php");
+
+$interface_query = mysql_query("SELECT *, I.id AS sqlid FROM `interfaces` AS I, `devices` AS D where I.host = D.id AND D.id LIKE '%" . $argv[1]. "' AND D.status = '1'");
+while ($interface = mysql_fetch_array($interface_query)) {
+
+  $hostname = $interface['hostname'];
+  $host = $interface['host'];
+  $old_if = $interface['if'];
+  $ifIndex = $interface['ifIndex'];
+  $old_alias = $interface['name'];
+  $id = $interface['sqlid'];
+  $old_up = $interface['up'];
+  $old_speed = $interface['ifSpeed'];
+  $old_duplex = $interface['ifDuplex'];
+  $old_physaddress = $interface['ifPhysAddress'];
+  $old_type = $interface['ifType'];
+  $old_mtu = $interface['ifMtu'];
+  $old_up_admin = $interface['up_admin'];
+  $community = $interface['community'];  
+  $os = $interface['os'];
+  $snmp_cmd  = "snmpget -O qv -v2c -c $community $hostname ifName.$ifIndex ifDescr.$ifIndex ifAdminStatus.$ifIndex ifOperStatus.$ifIndex ";
+  $snmp_cmd .= "ifAlias.$ifIndex ifSpeed.$ifIndex 1.3.6.1.2.1.10.7.2.1.$ifIndex ifType.$ifIndex ifMtu.$ifIndex ifPhysAddress.$ifIndex";
+  $snmp_output = `$snmp_cmd`;
+  $snmp_output = trim($snmp_output);
+  $snmp_output = str_replace("No Such Object available on this agent at this OID", "", $snmp_output);
+  $snmp_output = str_replace("No Such Instance currently exists at this OID", "", $snmp_output);
+
+  $ifPhysAddress = strtolower(str_replace("\"", "", $ifPhysAddress));
+  $ifPhysAddress = str_replace(" ", ":", $ifPhysAddress);
+  echo("Looking at $old_if on $hostname \n");
+  list($ifName, $ifDescr, $ifAdminStatus, $ifOperStatus, $ifAlias, $ifSpeed, $ifDuplex, $ifType, $ifMtu, $ifPhysAddress) = explode("\n", $snmp_output);
+  $ifDescr = trim(str_replace("\"", "", $ifDescr));
+  if ($ifDuplex == 3) { $ifDuplex = "half"; } elseif ($ifDuplex == 2) { $ifDuplex = "full"; } else { $ifDuplex = "unknown"; }
+  $ifDescr = strtolower($ifDescr);
+  if ($ifAlias == " ") { $ifAlias = str_replace(" ", "", $ifAlias); }
+  $ifAlias = trim(str_replace("\"", "", $ifAlias));
+  $ifAlias = trim($ifAlias);
+
+  $rrdfile = "rrd/" . $hostname . ".". $ifIndex . ".rrd";
+  if(!is_file($rrdfile)) {
+    $woo = `rrdtool create $rrdfile \
+      DS:INOCTETS:COUNTER:600:U:100000000000 \
+      DS:OUTOCTETS:COUNTER:600:U:10000000000 \
+      DS:INERRORS:COUNTER:600:U:10000000000 \
+      DS:OUTERRORS:COUNTER:600:U:10000000000 \
+      DS:INUCASTPKTS:COUNTER:600:U:10000000000 \
+      DS:OUTUCASTPKTS:COUNTER:600:U:10000000000 \
+      DS:INNUCASTPKTS:COUNTER:600:U:10000000000 \
+      DS:OUTNUCASTPKTS:COUNTER:600:U:10000000000 \
+      RRA:AVERAGE:0.5:1:600 \
+      RRA:AVERAGE:0.5:6:700 \
+      RRA:AVERAGE:0.5:24:775 \
+      RRA:AVERAGE:0.5:288:797 \
+      RRA:MAX:0.5:1:600 \
+      RRA:MAX:0.5:6:700 \
+      RRA:MAX:0.5:24:775 \
+      RRA:MAX:0.5:288:797`;
+  }
+
+  unset($update);
+  unset($update_query);
+  unset($seperator);
+
+  if ( $old_if != $ifDescr && $ifDescr != "" ) {
+     $update = "`if` = '$ifDescr'";
+     $seperator = ", ";
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Name: $old_if -> $ifDescr')");
+  }
+
+  if ( $old_alias != $ifAlias ) {
+     $update .= $seperator . "`name` = \"$ifAlias\"";
+     $seperator = ", ";
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Desc: $old_alias -> $ifAlias')");
+  }
+  if ( $old_up != $ifOperStatus && $ifOperStatus != "" ) {
+     $update .= $seperator . "`up` = '$ifOperStatus'";
+     $seperator = ", ";
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Interface went $ifOperStatus')");
+  }
+  if ( $old_up_admin != $ifAdminStatus && $ifAdminStatus != "" ) {
+     $update .= $seperator . "`up_admin` = '$ifAdminStatus'";
+     $seperator = ", ";
+     if($ifAdminStatus == "up") { $admin = "enabled"; } else { $admin = "disabled"; }
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Interface $admin')");
+  }
+  if ( $old_duplex != $ifDuplex && $ifDuplex != "" ) {
+     $update .= $seperator . "`ifDuplex` = '$ifDuplex'";
+     $seperator = ", ";
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Duplex changed to $ifDuplex')");
+  }
+  if ( $old_type != $ifType && $ifType != "" ) {
+     $update .= $seperator . "`ifType` = '$ifType'";
+     $seperator = ", ";
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Type changed to $ifType')");
+  }
+  if ( $old_mtu != $ifMtu && $ifMtu != "" ) {
+     $update .= $seperator . "`ifMtu` = '$ifMtu'";
+     $seperator = ", ";
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'MTU changed to $ifMtu')");
+  }
+  if ( $old_physaddress != $ifPhysAddress && $ifPhysAddress != "" ) {
+     $update .= $seperator . "`ifPhysAddress` = '$ifPhysAddress'";
+     $seperator = ", ";
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'MAC changed to $ifPhysAddress')");
+  }
+
+  if ( $old_speed != $ifSpeed && $ifSpeed != "" ) {
+     $update .= $seperator . "`ifSpeed` = '$ifSpeed'";
+     $seperator = ", ";
+     $prev = humanspeed($old_speed); 
+     $now = humanspeed($ifSpeed);
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Speed changed from $prev -> $now')");
+  }
+
+  if ($update) {
+     $update_query  = "UPDATE `interfaces` SET ";
+     $update_query .= $update;
+     $update_query .= " WHERE `id` = '$id'";
+     echo("Updating : $hostname $ifDescr\n$update_query\n\n");
+     $update_result = mysql_query($update_query);
+  } else {
+     echo("Not Updating : $hostname $ifDescr ( $old_if )\n\n");
+  }
+
+  if($ifOperStatus == "up") {
+    $snmp_data = `snmpget -O qv -v2c -c $community $hostname ifHCInOctets.$ifIndex ifHCOutOctets.$ifIndex ifInErrors.$ifIndex ifOutErrors.$ifIndex \
+                 ifInUcastPkts.$ifIndex ifOutUcastPkts.$ifIndex ifInNUcastPkts.$ifIndex ifOutNUcastPkts.$ifIndex`;
+    $snmp_data = str_replace("Wrong Type (should be Counter32): ","", $snmp_data);
+    $snmp_data = str_replace("No Such Instance currently exists at this OID","", $snmp_data);
+    list($ifHCInOctets, $ifHCOutOctets, $ifInErrors, $ifOutErrors, $ifInUcastPkts, $ifOutUcastPkts, $ifInNUcastPkts, $ifOutNUcastPkts) = explode("\n", $snmp_data);
+    if($ifHCInOctets == "" || strpos($ifHCInOctets, "No") !== FALSE ) {
+      $fixit = `snmpget -O qv -v2c -c $community $hostname ifInOctets.$ifIndex ifOutOctets.$ifIndex`;
+      list ($ifHCInOctets, $ifHCOutOctets) = explode("\n", $fixit);
+    }
+     $woo = "N:$ifHCInOctets:$ifHCOutOctets:$ifInErrors:$ifOutErrors:$ifInUcastPkts:$ifOutUcastPkts:$ifInNUcastPkts:$ifOutNUcastPkts";
+     $ret = rrd_update("$rrdfile", $woo);
+   } else {
+     echo("Interface $hostname $old_if is down\n");
+  }
+}
+
+mysql_query("UPDATE interfaces set ifPhysAddress = '' WHERE ifPhysAddress = 'No Such Instance currently exists at this OID'");
+
+?>
diff --git a/poll-os.php b/poll-os.php
new file mode 100755
index 0000000000..78acabfc7d
--- /dev/null
+++ b/poll-os.php
@@ -0,0 +1,28 @@
+#!/usr/bin/php
+<?
+#
+# Statistics Polling Script
+#
+
+include("config.php");
+include("includes/functions.php");
+
+#
+# Poll Device Statistics
+#
+
+$device_query = mysql_query("SELECT id,hostname,os,community,snmpver FROM `devices` WHERE `id` LIKE '%" . $argv[1] . "' AND status = '1' ORDER BY id DESC");
+while ($device = mysql_fetch_array($device_query)) {
+
+   $id = $device['id'];
+   $hostname = $device['hostname'];
+   $old_os = $device['os'];
+   $community = $device['community'];
+   $host = trim(strtolower($hostname));
+   $host_os = getHostOS($host, $community, $device[snmpver]);
+   if($old_os != $host_os) {
+      $sql = mysql_query("UPDATE `devices` SET `os` = '$host_os' WHERE `id` = '$id'");
+      echo("Updated host : $host ($host_os)\n");
+   } else echo("Not Updated host : $host ($host_os)\n");
+}
+?>
diff --git a/poll-reachability.php b/poll-reachability.php
new file mode 100755
index 0000000000..ac674607c8
--- /dev/null
+++ b/poll-reachability.php
@@ -0,0 +1,53 @@
+#!/usr/bin/php
+<?
+#
+# Test Reachability
+#
+
+include("config.php");
+include("includes/functions.php");
+
+$device_query = mysql_query("SELECT id,hostname,status,community,snmpver FROM `devices` WHERE `id` LIKE '%" . $argv[1] . "' ORDER BY `id` DESC");
+while ($device = mysql_fetch_array($device_query)) {
+
+   $id = $device['id'];
+   $hostname = $device['hostname'];
+   $old_status = $device['status'];
+   $community = $device['community'];
+   $snmpver = $device['snmpver'];
+
+   echo("- > $hostname\n");
+
+   $status = `$fping $hostname | cut -d " " -f 3`;
+   $status = trim($status);
+
+   if($status == "alive") {
+     $pos = `snmpget -$snmpver -c $community -t 1 $hostname sysDescr.0`;
+     if($pos == '') { 
+       $status='0';
+       $posb = `snmpget -$snmpver -c $community -t 1 $hostname 1.3.6.1.2.1.7526.2.4`;
+       if($posb == '') { } else { $status='1'; }
+     } else { 
+       $status='1'; 
+     }
+   } else {
+     $status='0';
+   }
+
+   echo("$old_status => $status \n");
+
+
+   if($status != $old_status) {
+     mysql_query("UPDATE `devices` SET `status`= '$status' WHERE `id` = '$id'");
+     if ($status == '1') { 
+       $stat = "Up"; 
+       mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('0', '$id', 'Device is up\n')");
+     } else {
+       $stat = "Down";
+       mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('9', '$id', 'Device is down\n')");
+     }
+     mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Device status changed to $stat')");
+     echo("Status Changed!\n");
+   }
+}
+?>
diff --git a/poll-temperatures.php b/poll-temperatures.php
new file mode 100755
index 0000000000..494c6742dd
--- /dev/null
+++ b/poll-temperatures.php
@@ -0,0 +1,36 @@
+#!/usr/bin/php
+<?
+
+include("config.php");
+
+$query = "SELECT * FROM temperature AS T, devices AS D WHERE T.temp_host = D.id AND D.status = '1'";
+$data = mysql_query($query);
+while($entry = mysql_fetch_array($data)) {
+
+  $community = $entry[community];
+  $hostname = $entry[hostname];
+  $snmpver = $entry[snmpver];
+
+  $temp = `snmpget -O qv -$snmpver -c $community $hostname $entry[temp_oid]`;
+
+  $temprrd  = "rrd/" . $entry[hostname] . "-temp" . $entry[temp_id] . ".rrd";
+  if (!is_file($temprrd)) {
+    `rrdtool create $temprrd \
+     --step 300 \
+     DS:temp:GAUGE:600:-273:1000 \
+     RRA:AVERAGE:0.5:1:1200 \
+     RRA:MIN:0.5:12:2400 \
+     RRA:MAX:0.5:12:2400 \
+     RRA:AVERAGE:0.5:12:2400`;
+  }
+
+  $temp = str_replace("\"", "", $temp);
+  echo("$temprrd, N:$temp");
+
+  `rrdtool update $temprrd N:$temp`;
+
+  mysql_query("UPDATE temperature SET temp_current = '$temp' WHERE temp_id = '$entry[temp_id]'");
+
+}
+
+?>
diff --git a/process-syslog.php b/process-syslog.php
new file mode 100755
index 0000000000..9dc4185784
--- /dev/null
+++ b/process-syslog.php
@@ -0,0 +1,60 @@
+#!/usr/bin/php
+<?php
+
+include("config.php");
+include("includes/functions.php");
+
+$add = 0;
+$discard = 0;
+$total = 0;
+
+
+$q = mysql_query("SELECT * FROM `logs`");
+while($l = mysql_fetch_array($q)){
+
+  unset($host);
+  unset($maybehost);
+  unset($perhapshost);
+
+  $maybehost = @mysql_result(mysql_query("SELECT D.id as id FROM ipaddr AS A, interfaces AS I, devices AS D WHERE A.addr = '$l[host]' AND I.id = A.interface_id AND D.id = I.host"),0);
+  $perhapshost = @mysql_result(mysql_query("SELECT id FROM devices WHERE `hostname` = '$l[host]'"),0);
+
+  if($maybehost) { 
+    $host = $maybehost;
+  } elseif($perhapshost) {
+    $host = $perhapshost;
+  }
+
+  if($host) {
+
+    if(mysql_result(mysql_query("SELECT os FROM `devices` WHERE `id` = '$host'"),0) == "IOS") {
+      list(,$l[msg]) = split(": %", $l[msg]);
+      $l[msg] = "%" . $l[msg];
+      $l[msg] = preg_replace("/^%(.+):\ /", "\\1||", $l[msg]);
+      list($l[program], $l[msg]) = explode("||", $l[msg]);
+    } else {
+
+      $l[msg] = preg_replace("/^" . $l[program] . ":\ /", "", $l[msg]);
+
+    }
+
+
+
+    $x  = "INSERT INTO syslog (`host` , `facility` , `priority` , `level` , `tag` , `datetime` , `program` , `msg` )";
+    $x .= " VALUES ( '$host', '$l[facility]', '$l[priority]', '$l[level]', '$l[tag]', '$l[datetime]', '$l[program]', '$l[msg]' );";
+
+    mysql_query($x);
+
+    $add++;
+
+  } else { $discard++; }
+
+  mysql_query("DELETE FROM logs WHERE seq = '$l[seq]'");
+
+  $total++;
+
+}
+
+echo("$total records processed: $add added to database, $discard discarded");
+
+?>
diff --git a/scan-snmp.php b/scan-snmp.php
new file mode 100755
index 0000000000..52c9602cf3
--- /dev/null
+++ b/scan-snmp.php
@@ -0,0 +1,21 @@
+#!/usr/bin/php
+<?
+
+include("config.php");
+include("includes/functions.php");
+
+$search = $argv[1] . "$";
+
+$data = trim(`cat ips-scanned.txt | grep alive | cut -d" " -f 1 | egrep $search`);
+
+foreach( explode("\n", $data) as $ip) {
+  $snmp = `snmpget -t 0.1 -v2c -c $community $ip sysName.0`;
+  if(strstr($snmp, "STRING")) {
+    $hostname = trim(str_replace("SNMPv2-MIB::sysName.0 = STRING: ","", $snmp));
+    if(mysql_result(mysql_query("SELECT COUNT(id) FROM devices WHERE hostname = '$hostname'"),0) == '0') {
+      `./add-host.php $hostname $community v2c`;
+      echo("Adding $hostname \n");
+    }
+  }
+}
+?>
diff --git a/scan-snmp.sh b/scan-snmp.sh
new file mode 100755
index 0000000000..e0cd0ec78c
--- /dev/null
+++ b/scan-snmp.sh
@@ -0,0 +1,11 @@
+./scan-snmp.php 0 &
+./scan-snmp.php 1 &
+./scan-snmp.php 2 &
+./scan-snmp.php 3 &
+./scan-snmp.php 4 &
+./scan-snmp.php 5 &
+./scan-snmp.php 6 &
+./scan-snmp.php 7 &
+./scan-snmp.php 8 &
+./scan-snmp.php 9 &
+
diff --git a/scripts/distro b/scripts/distro
new file mode 100755
index 0000000000..5596ed7e3a
--- /dev/null
+++ b/scripts/distro
@@ -0,0 +1,47 @@
+#!/bin/sh
+# Detects which OS and if it is Linux then it will detect which Linux Distribution.
+
+OS=`uname -s`
+REV=`uname -r`
+MACH=`uname -m`
+
+GetVersionFromFile()
+{
+        VERSION=`cat $1 | tr "\n" ' ' | sed s/.*VERSION.*=\ // `
+                }
+
+                if [ "${OS}" = "SunOS" ] ; then
+                        OS=Solaris
+                                ARCH=`uname -p`
+                                OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
+                elif [ "${OS}" = "AIX" ] ; then
+                                OSSTR="${OS} `oslevel` (`oslevel -r`)"
+                elif [ "${OS}" = "Linux" ] ; then
+                                KERNEL=`uname -r`
+                                if [ -f /etc/redhat-release ] ; then
+                                        DIST='RedHat'
+                                        PSUEDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//`
+                                        REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//`
+                                elif [ -f /etc/SuSE-release ] ; then
+                                        DIST=`cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//`
+                                        REV=`cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ //`
+                                elif [ -f /etc/mandrake-release ] ; then
+                                        DIST='Mandrake'
+                                        PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
+                                        REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
+                                elif [ -f /etc/debian_version ] ; then
+                                        DIST="Debian `cat /etc/debian_version`"
+                                        REV=""
+                        fi
+                        if [ -f /etc/UnitedLinux-release ] ; then
+                            DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
+                        fi
+                        if [ -f /etc/lsb-release ] ; then
+                            DIST="`cat /etc/lsb-release | grep DISTRIB_ID | cut -d "=" -f2`"
+                            REV="`cat /etc/lsb-release | grep DISTRIB_RELEASE | cut -d "=" -f2`"
+                        fi
+#                        OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"
+                        OSSTR="${DIST} ${REV}"
+                fi
+        echo ${OSSTR}
+
diff --git a/test.php b/test.php
new file mode 100755
index 0000000000..e798b841bb
--- /dev/null
+++ b/test.php
@@ -0,0 +1,18 @@
+#!/usr/bin/php
+
+<?php
+
+include("config.php");
+
+$srvdir = $installdir . "/includes/services/";
+
+if ($handle = opendir($srvdir)) {
+    while (false !== ($file = readdir($handle))) {
+        if ($file != "." && $file != "..") {
+            echo "$file\n";
+        }
+    }
+    closedir($handle);
+}
+
+?>