diff -ruN 2.2ms2-060817.src/account_edit.php 2.2rc2.src/account_edit.php
--- 2.2ms2-060817.src/account_edit.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/account_edit.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_edit.php,v 1.65 2003/06/09 23:03:52 hpdl Exp $
+  $Id: account_edit.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/account_history_info.php 2.2rc2.src/account_history_info.php
--- 2.2ms2-060817.src/account_history_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/account_history_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: account_history_info.php,v 1.100 2003/06/09 23:03:52 hpdl Exp $
+  $Id: account_history_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -21,7 +21,7 @@
     tep_redirect(tep_href_link(FILENAME_ACCOUNT_HISTORY, '', 'SSL'));
   }
   
-  $customer_info_query = tep_db_query("select customers_id from " . TABLE_ORDERS . " where orders_id = '". (int)$HTTP_GET_VARS['order_id'] . "'");
+  $customer_info_query = tep_db_query("select o.customers_id from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_STATUS . " s where o.orders_id = '". (int)$HTTP_GET_VARS['order_id'] . "' and o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and s.public_flag = '1'");
   $customer_info = tep_db_fetch_array($customer_info_query);
   if ($customer_info['customers_id'] != $customer_id) {
     tep_redirect(tep_href_link(FILENAME_ACCOUNT_HISTORY, '', 'SSL'));
@@ -210,7 +210,7 @@
           <tr class="infoBoxContents">
             <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
 <?php
-  $statuses_query = tep_db_query("select os.orders_status_name, osh.date_added, osh.comments from " . TABLE_ORDERS_STATUS . " os, " . TABLE_ORDERS_STATUS_HISTORY . " osh where osh.orders_id = '" . (int)$HTTP_GET_VARS['order_id'] . "' and osh.orders_status_id = os.orders_status_id and os.language_id = '" . (int)$languages_id . "' order by osh.date_added");
+  $statuses_query = tep_db_query("select os.orders_status_name, osh.date_added, osh.comments from " . TABLE_ORDERS_STATUS . " os, " . TABLE_ORDERS_STATUS_HISTORY . " osh where osh.orders_id = '" . (int)$HTTP_GET_VARS['order_id'] . "' and osh.orders_status_id = os.orders_status_id and os.language_id = '" . (int)$languages_id . "' and os.public_flag = '1' order by osh.date_added");
   while ($statuses = tep_db_fetch_array($statuses_query)) {
     echo '              <tr>' . "\n" .
          '                <td class="main" valign="top" width="70">' . tep_date_short($statuses['date_added']) . '</td>' . "\n" .
diff -ruN 2.2ms2-060817.src/account_history.php 2.2rc2.src/account_history.php
--- 2.2ms2-060817.src/account_history.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/account_history.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: account_history.php,v 1.63 2003/06/09 23:03:52 hpdl Exp $
+  $Id: account_history.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -62,7 +62,7 @@
   $orders_total = tep_count_customer_orders();
 
   if ($orders_total > 0) {
-    $history_query_raw = "select o.orders_id, o.date_purchased, o.delivery_name, o.billing_name, ot.text as order_total, s.orders_status_name from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_TOTAL . " ot, " . TABLE_ORDERS_STATUS . " s where o.customers_id = '" . (int)$customer_id . "' and o.orders_id = ot.orders_id and ot.class = 'ot_total' and o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' order by orders_id DESC";
+    $history_query_raw = "select o.orders_id, o.date_purchased, o.delivery_name, o.billing_name, ot.text as order_total, s.orders_status_name from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_TOTAL . " ot, " . TABLE_ORDERS_STATUS . " s where o.customers_id = '" . (int)$customer_id . "' and o.orders_id = ot.orders_id and ot.class = 'ot_total' and o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and s.public_flag = '1' order by orders_id DESC";
     $history_split = new splitPageResults($history_query_raw, MAX_DISPLAY_ORDER_HISTORY);
     $history_query = tep_db_query($history_split->sql_query);
 
diff -ruN 2.2ms2-060817.src/account_newsletters.php 2.2rc2.src/account_newsletters.php
--- 2.2ms2-060817.src/account_newsletters.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/account_newsletters.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_newsletters.php,v 1.3 2003/06/05 23:23:52 hpdl Exp $
+  $Id: account_newsletters.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/account_notifications.php 2.2rc2.src/account_notifications.php
--- 2.2ms2-060817.src/account_notifications.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/account_notifications.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_notifications.php,v 1.2 2003/05/22 14:24:54 hpdl Exp $
+  $Id: account_notifications.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -38,9 +38,10 @@
       tep_db_query("update " . TABLE_CUSTOMERS_INFO . " set global_product_notifications = '" . (int)$product_global . "' where customers_info_id = '" . (int)$customer_id . "'");
     } elseif (sizeof($products) > 0) {
       $products_parsed = array();
-      for ($i=0, $n=sizeof($products); $i<$n; $i++) {
-        if (is_numeric($products[$i])) {
-          $products_parsed[] = $products[$i];
+      reset($products);
+      while (list(, $value) = each($products)) {
+        if (is_numeric($value)) {
+          $products_parsed[] = $value;
         }
       }
 
diff -ruN 2.2ms2-060817.src/account_password.php 2.2rc2.src/account_password.php
--- 2.2ms2-060817.src/account_password.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/account_password.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_password.php,v 1.1 2003/05/19 19:55:45 hpdl Exp $
+  $Id: account_password.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/account.php 2.2rc2.src/account.php
--- 2.2ms2-060817.src/account.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/account.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: account.php,v 1.61 2003/06/09 23:03:52 hpdl Exp $
+  $Id: account.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -94,7 +94,7 @@
                 <td class="main" align="center" valign="top" width="130"><?php echo '<b>' . OVERVIEW_PREVIOUS_ORDERS . '</b><br>' . tep_image(DIR_WS_IMAGES . 'arrow_south_east.gif'); ?></td>
                 <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
 <?php
-    $orders_query = tep_db_query("select o.orders_id, o.date_purchased, o.delivery_name, o.delivery_country, o.billing_name, o.billing_country, ot.text as order_total, s.orders_status_name from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_TOTAL . " ot, " . TABLE_ORDERS_STATUS . " s where o.customers_id = '" . (int)$customer_id . "' and o.orders_id = ot.orders_id and ot.class = 'ot_total' and o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' order by orders_id desc limit 3");
+    $orders_query = tep_db_query("select o.orders_id, o.date_purchased, o.delivery_name, o.delivery_country, o.billing_name, o.billing_country, ot.text as order_total, s.orders_status_name from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_TOTAL . " ot, " . TABLE_ORDERS_STATUS . " s where o.customers_id = '" . (int)$customer_id . "' and o.orders_id = ot.orders_id and ot.class = 'ot_total' and o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and s.public_flag = '1' order by orders_id desc limit 3");
     while ($orders = tep_db_fetch_array($orders_query)) {
       if (tep_not_null($orders['delivery_name'])) {
         $order_name = $orders['delivery_name'];
diff -ruN 2.2ms2-060817.src/address_book.php 2.2rc2.src/address_book.php
--- 2.2ms2-060817.src/address_book.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/address_book.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: address_book.php,v 1.58 2003/06/09 23:03:52 hpdl Exp $
+  $Id: address_book.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/address_book_process.php 2.2rc2.src/address_book_process.php
--- 2.2ms2-060817.src/address_book_process.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/address_book_process.php	2008-01-03 11:35:06.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: address_book_process.php,v 1.79 2003/06/09 23:03:52 hpdl Exp $
+  $Id: address_book_process.php 1766 2008-01-03 17:35:06Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -102,7 +102,7 @@
       $check = tep_db_fetch_array($check_query);
       $entry_state_has_zones = ($check['total'] > 0);
       if ($entry_state_has_zones == true) {
-        $zone_query = tep_db_query("select distinct zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and (zone_name like '" . tep_db_input($state) . "%' or zone_code like '%" . tep_db_input($state) . "%')");
+        $zone_query = tep_db_query("select distinct zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and (zone_name = '" . tep_db_input($state) . "' or zone_code = '" . tep_db_input($state) . "')");
         if (tep_db_num_rows($zone_query) == 1) {
           $zone = tep_db_fetch_array($zone_query);
           $zone_id = $zone['zone_id'];
@@ -142,48 +142,55 @@
       }
 
       if ($HTTP_POST_VARS['action'] == 'update') {
-        tep_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array, 'update', "address_book_id = '" . (int)$HTTP_GET_VARS['edit'] . "' and customers_id ='" . (int)$customer_id . "'");
+        $check_query = tep_db_query("select address_book_id from " . TABLE_ADDRESS_BOOK . " where address_book_id = '" . (int)$HTTP_GET_VARS['edit'] . "' and customers_id = '" . (int)$customer_id . "' limit 1");
+        if (tep_db_num_rows($check_query) == 1) {
+          tep_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array, 'update', "address_book_id = '" . (int)$HTTP_GET_VARS['edit'] . "' and customers_id ='" . (int)$customer_id . "'");
 
 // reregister session variables
-        if ( (isset($HTTP_POST_VARS['primary']) && ($HTTP_POST_VARS['primary'] == 'on')) || ($HTTP_GET_VARS['edit'] == $customer_default_address_id) ) {
-          $customer_first_name = $firstname;
-          $customer_country_id = $country;
-          $customer_zone_id = (($zone_id > 0) ? (int)$zone_id : '0');
-          $customer_default_address_id = (int)$HTTP_GET_VARS['edit'];
-
-          $sql_data_array = array('customers_firstname' => $firstname,
-                                  'customers_lastname' => $lastname,
-                                  'customers_default_address_id' => (int)$HTTP_GET_VARS['edit']);
+          if ( (isset($HTTP_POST_VARS['primary']) && ($HTTP_POST_VARS['primary'] == 'on')) || ($HTTP_GET_VARS['edit'] == $customer_default_address_id) ) {
+            $customer_first_name = $firstname;
+            $customer_country_id = $country;
+            $customer_zone_id = (($zone_id > 0) ? (int)$zone_id : '0');
+            $customer_default_address_id = (int)$HTTP_GET_VARS['edit'];
+
+            $sql_data_array = array('customers_firstname' => $firstname,
+                                    'customers_lastname' => $lastname,
+                                    'customers_default_address_id' => (int)$HTTP_GET_VARS['edit']);
 
-          if (ACCOUNT_GENDER == 'true') $sql_data_array['customers_gender'] = $gender;
+            if (ACCOUNT_GENDER == 'true') $sql_data_array['customers_gender'] = $gender;
 
-          tep_db_perform(TABLE_CUSTOMERS, $sql_data_array, 'update', "customers_id = '" . (int)$customer_id . "'");
+            tep_db_perform(TABLE_CUSTOMERS, $sql_data_array, 'update', "customers_id = '" . (int)$customer_id . "'");
+          }
+
+          $messageStack->add_session('addressbook', SUCCESS_ADDRESS_BOOK_ENTRY_UPDATED, 'success');
         }
       } else {
-        $sql_data_array['customers_id'] = (int)$customer_id;
-        tep_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array);
+        if (tep_count_customer_address_book_entries() < MAX_ADDRESS_BOOK_ENTRIES) {
+          $sql_data_array['customers_id'] = (int)$customer_id;
+          tep_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array);
 
-        $new_address_book_id = tep_db_insert_id();
+          $new_address_book_id = tep_db_insert_id();
 
 // reregister session variables
-        if (isset($HTTP_POST_VARS['primary']) && ($HTTP_POST_VARS['primary'] == 'on')) {
-          $customer_first_name = $firstname;
-          $customer_country_id = $country;
-          $customer_zone_id = (($zone_id > 0) ? (int)$zone_id : '0');
-          if (isset($HTTP_POST_VARS['primary']) && ($HTTP_POST_VARS['primary'] == 'on')) $customer_default_address_id = $new_address_book_id;
+          if (isset($HTTP_POST_VARS['primary']) && ($HTTP_POST_VARS['primary'] == 'on')) {
+            $customer_first_name = $firstname;
+            $customer_country_id = $country;
+            $customer_zone_id = (($zone_id > 0) ? (int)$zone_id : '0');
+            if (isset($HTTP_POST_VARS['primary']) && ($HTTP_POST_VARS['primary'] == 'on')) $customer_default_address_id = $new_address_book_id;
+
+            $sql_data_array = array('customers_firstname' => $firstname,
+                                    'customers_lastname' => $lastname);
 
-          $sql_data_array = array('customers_firstname' => $firstname,
-                                  'customers_lastname' => $lastname);
+            if (ACCOUNT_GENDER == 'true') $sql_data_array['customers_gender'] = $gender;
+            if (isset($HTTP_POST_VARS['primary']) && ($HTTP_POST_VARS['primary'] == 'on')) $sql_data_array['customers_default_address_id'] = $new_address_book_id;
 
-          if (ACCOUNT_GENDER == 'true') $sql_data_array['customers_gender'] = $gender;
-          if (isset($HTTP_POST_VARS['primary']) && ($HTTP_POST_VARS['primary'] == 'on')) $sql_data_array['customers_default_address_id'] = $new_address_book_id;
+            tep_db_perform(TABLE_CUSTOMERS, $sql_data_array, 'update', "customers_id = '" . (int)$customer_id . "'");
 
-          tep_db_perform(TABLE_CUSTOMERS, $sql_data_array, 'update', "customers_id = '" . (int)$customer_id . "'");
+            $messageStack->add_session('addressbook', SUCCESS_ADDRESS_BOOK_ENTRY_UPDATED, 'success');
+          }
         }
       }
 
-      $messageStack->add_session('addressbook', SUCCESS_ADDRESS_BOOK_ENTRY_UPDATED, 'success');
-
       tep_redirect(tep_href_link(FILENAME_ADDRESS_BOOK, '', 'SSL'));
     }
   }
diff -ruN 2.2ms2-060817.src/admin/administrators.php 2.2rc2.src/admin/administrators.php
--- 2.2ms2-060817.src/admin/administrators.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/administrators.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,199 @@
+<?php
+/*
+  $Id: administrators.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  require('includes/application_top.php');
+
+  $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');
+
+  if (tep_not_null($action)) {
+    switch ($action) {
+      case 'insert':
+        require('includes/functions/password_funcs.php');
+
+        $username = tep_db_prepare_input($HTTP_POST_VARS['username']);
+        $password = tep_db_prepare_input($HTTP_POST_VARS['password']);
+
+        $check_query = tep_db_query("select id from " . TABLE_ADMINISTRATORS . " where user_name = '" . tep_db_input($username) . "' limit 1");
+
+        if (tep_db_num_rows($check_query) < 1) {
+          tep_db_query("insert into " . TABLE_ADMINISTRATORS . " (user_name, user_password) values ('" . tep_db_input($username) . "', '" . tep_db_input(tep_encrypt_password($password)) . "')");
+        } else {
+          $messageStack->add_session(ERROR_ADMINISTRATOR_EXISTS, 'error');
+        }
+
+        tep_redirect(tep_href_link(FILENAME_ADMINISTRATORS));
+        break;
+      case 'save':
+        require('includes/functions/password_funcs.php');
+
+        $username = tep_db_prepare_input($HTTP_POST_VARS['username']);
+        $password = tep_db_prepare_input($HTTP_POST_VARS['password']);
+
+        $check_query = tep_db_query("select id from " . TABLE_ADMINISTRATORS . " where user_name = '" . tep_db_input($admin['username']) . "'");
+        $check = tep_db_fetch_array($check_query);
+
+        if ($admin['id'] == $check['id']) {
+          $admin['username'] = $username;
+        }
+
+        tep_db_query("update " . TABLE_ADMINISTRATORS . " set user_name = '" . tep_db_input($username) . "' where id = '" . (int)$HTTP_GET_VARS['aID'] . "'");
+
+        if (tep_not_null($password)) {
+          tep_db_query("update " . TABLE_ADMINISTRATORS . " set user_password = '" . tep_db_input(tep_encrypt_password($password)) . "' where id = '" . (int)$HTTP_GET_VARS['aID'] . "'");
+        }
+
+        tep_redirect(tep_href_link(FILENAME_ADMINISTRATORS, 'aID=' . (int)$HTTP_GET_VARS['aID']));
+        break;
+      case 'deleteconfirm':
+        $id = tep_db_prepare_input($HTTP_GET_VARS['aID']);
+
+        $check_query = tep_db_query("select id from " . TABLE_ADMINISTRATORS . " where user_name = '" . tep_db_input($admin['username']) . "'");
+        $check = tep_db_fetch_array($check_query);
+
+        if ($id == $check['id']) {
+          tep_session_unregister('admin');
+        }
+
+        tep_db_query("delete from " . TABLE_ADMINISTRATORS . " where id = '" . (int)$id . "'");
+
+        tep_redirect(tep_href_link(FILENAME_ADMINISTRATORS));
+        break;
+    }
+  }
+?>
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html <?php echo HTML_PARAMS; ?>>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
+<title><?php echo TITLE; ?></title>
+<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
+<script language="javascript" src="includes/general.js"></script>
+</head>
+<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF" onload="SetFocus();">
+<!-- header //-->
+<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
+<!-- header_eof //-->
+
+<!-- body //-->
+<table border="0" width="100%" cellspacing="2" cellpadding="2">
+  <tr>
+    <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">
+<!-- left_navigation //-->
+<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
+<!-- left_navigation_eof //-->
+    </table></td>
+<!-- body_text //-->
+    <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
+      <tr>
+        <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
+          <tr>
+            <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
+            <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
+          </tr>
+        </table></td>
+      </tr>
+      <tr>
+        <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
+          <tr>
+            <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
+              <tr class="dataTableHeadingRow">
+                <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_ADMINISTRATORS; ?></td>
+                <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?>&nbsp;</td>
+              </tr>
+<?php
+  $admins_query = tep_db_query("select id, user_name from " . TABLE_ADMINISTRATORS . " order by user_name");
+  while ($admins = tep_db_fetch_array($admins_query)) {
+    if ((!isset($HTTP_GET_VARS['aID']) || (isset($HTTP_GET_VARS['aID']) && ($HTTP_GET_VARS['aID'] == $admins['id']))) && !isset($aInfo) && (substr($action, 0, 3) != 'new')) {
+      $aInfo = new objectInfo($admins);
+    }
+
+    if ( (isset($aInfo) && is_object($aInfo)) && ($admins['id'] == $aInfo->id) ) {
+      echo '                  <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_ADMINISTRATORS, 'aID=' . $aInfo->id . '&action=edit') . '\'">' . "\n";
+    } else {
+      echo '                  <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_ADMINISTRATORS, 'aID=' . $admins['id']) . '\'">' . "\n";
+    }
+?>
+                <td class="dataTableContent"><?php echo $admins['user_name']; ?></td>
+                <td class="dataTableContent" align="right"><?php if ( (isset($aInfo) && is_object($aInfo)) && ($admins['id'] == $aInfo->id) ) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_ADMINISTRATORS, 'aID=' . $admins['id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?>&nbsp;</td>
+              </tr>
+<?php
+  }
+?>
+              <tr>
+                <td colspan="2" align="right"><?php echo '<a href="' . tep_href_link(FILENAME_ADMINISTRATORS, 'action=new') . '">' . tep_image_button('button_insert.gif', IMAGE_INSERT) . '</a>'; ?></td>
+              </tr>
+            </table></td>
+<?php
+  $heading = array();
+  $contents = array();
+
+  switch ($action) {
+    case 'new':
+      $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_NEW_ADMINISTRATOR . '</b>');
+
+      $contents = array('form' => tep_draw_form('administrator', FILENAME_ADMINISTRATORS, 'action=insert'));
+      $contents[] = array('text' => TEXT_INFO_INSERT_INTRO);
+      $contents[] = array('text' => '<br>' . TEXT_INFO_USERNAME . '<br>' . tep_draw_input_field('username'));
+      $contents[] = array('text' => '<br>' . TEXT_INFO_PASSWORD . '<br>' . tep_draw_password_field('password'));
+      $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_save.gif', IMAGE_SAVE) . '&nbsp;<a href="' . tep_href_link(FILENAME_ADMINISTRATORS) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
+      break;
+    case 'edit':
+      $heading[] = array('text' => '<b>' . $aInfo->user_name . '</b>');
+
+      $contents = array('form' => tep_draw_form('administrator', FILENAME_ADMINISTRATORS, 'aID=' . $aInfo->id . '&action=save'));
+      $contents[] = array('text' => TEXT_INFO_EDIT_INTRO);
+      $contents[] = array('text' => '<br>' . TEXT_INFO_USERNAME . '<br>' . tep_draw_input_field('username', $aInfo->user_name));
+      $contents[] = array('text' => '<br>' . TEXT_INFO_NEW_PASSWORD . '<br>' . tep_draw_password_field('password'));
+      $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_update.gif', IMAGE_UPDATE) . '&nbsp;<a href="' . tep_href_link(FILENAME_ADMINISTRATORS, 'aID=' . $aInfo->id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
+      break;
+    case 'delete':
+      $heading[] = array('text' => '<b>' . $aInfo->user_name . '</b>');
+
+      $contents = array('form' => tep_draw_form('administrator', FILENAME_ADMINISTRATORS, 'aID=' . $aInfo->id . '&action=deleteconfirm'));
+      $contents[] = array('text' => TEXT_INFO_DELETE_INTRO);
+      $contents[] = array('text' => '<br><b>' . $aInfo->user_name . '</b>');
+      $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_delete.gif', IMAGE_UPDATE) . '&nbsp;<a href="' . tep_href_link(FILENAME_ADMINISTRATORS, 'aID=' . $aInfo->id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
+      break;
+    default:
+      if (isset($aInfo) && is_object($aInfo)) {
+        $heading[] = array('text' => '<b>' . $aInfo->user_name . '</b>');
+
+        $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_ADMINISTRATORS, 'aID=' . $aInfo->id . '&action=edit') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_ADMINISTRATORS, 'aID=' . $aInfo->id . '&action=delete') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a>');
+      }
+      break;
+  }
+
+  if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {
+    echo '            <td width="25%" valign="top">' . "\n";
+
+    $box = new box;
+    echo $box->infoBox($heading, $contents);
+
+    echo '            </td>' . "\n";
+  }
+?>
+          </tr>
+        </table></td>
+      </tr>
+    </table></td>
+<!-- body_text_eof //-->
+  </tr>
+</table>
+<!-- body_eof //-->
+
+<!-- footer //-->
+<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
+<!-- footer_eof //-->
+<br>
+</body>
+</html>
+<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
diff -ruN 2.2ms2-060817.src/admin/backup.php 2.2rc2.src/admin/backup.php
--- 2.2ms2-060817.src/admin/backup.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/backup.php	2008-01-15 03:58:55.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: backup.php,v 1.60 2003/06/29 22:50:51 hpdl Exp $
+  $Id: backup.php 1821 2008-01-15 09:58:55Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -73,6 +73,7 @@
 
             if (!isset($index[$kname])) {
               $index[$kname] = array('unique' => !$keys['Non_unique'],
+                                     'fulltext' => ($keys['Index_type'] == 'FULLTEXT' ? '1' : '0'),
                                      'columns' => array());
             }
 
@@ -86,6 +87,8 @@
 
             if ($kname == 'PRIMARY') {
               $schema .= '  PRIMARY KEY (' . $columns . ')';
+            } elseif ( $info['fulltext'] == '1' ) {
+              $schema .= '  FULLTEXT ' . $kname . ' (' . $columns . ')';
             } elseif ($info['unique']) {
               $schema .= '  UNIQUE ' . $kname . ' (' . $columns . ')';
             } else {
@@ -97,27 +100,28 @@
           fputs($fp, $schema);
 
 // dump the data
-          $rows_query = tep_db_query("select " . implode(',', $table_list) . " from " . $table);
-          while ($rows = tep_db_fetch_array($rows_query)) {
-            $schema = 'insert into ' . $table . ' (' . implode(', ', $table_list) . ') values (';
-
-            reset($table_list);
-            while (list(,$i) = each($table_list)) {
-              if (!isset($rows[$i])) {
-                $schema .= 'NULL, ';
-              } elseif (tep_not_null($rows[$i])) {
-                $row = addslashes($rows[$i]);
-                $row = ereg_replace("\n#", "\n".'\#', $row);
-
-                $schema .= '\'' . $row . '\', ';
-              } else {
-                $schema .= '\'\', ';
+          if ( ($table != TABLE_SESSIONS ) && ($table != TABLE_WHOS_ONLINE) ) {
+            $rows_query = tep_db_query("select " . implode(',', $table_list) . " from " . $table);
+            while ($rows = tep_db_fetch_array($rows_query)) {
+              $schema = 'insert into ' . $table . ' (' . implode(', ', $table_list) . ') values (';
+
+              reset($table_list);
+              while (list(,$i) = each($table_list)) {
+                if (!isset($rows[$i])) {
+                  $schema .= 'NULL, ';
+                } elseif (tep_not_null($rows[$i])) {
+                  $row = addslashes($rows[$i]);
+                  $row = ereg_replace("\n#", "\n".'\#', $row);
+
+                  $schema .= '\'' . $row . '\', ';
+                } else {
+                  $schema .= '\'\', ';
+                }
               }
-            }
-
-            $schema = ereg_replace(', $', '', $schema) . ');' . "\n";
-            fputs($fp, $schema);
 
+              $schema = ereg_replace(', $', '', $schema) . ');' . "\n";
+              fputs($fp, $schema);
+            }
           }
         }
 
@@ -202,6 +206,7 @@
 
         if (isset($restore_query)) {
           $sql_array = array();
+          $drop_table_names = array();
           $sql_length = strlen($restore_query);
           $pos = strpos($restore_query, ';');
           for ($i=$pos; $i<$sql_length; $i++) {
@@ -235,23 +240,37 @@
                 $next = 'insert';
               }
               if ( (eregi('create', $next)) || (eregi('insert', $next)) || (eregi('drop t', $next)) ) {
+                $query = substr($restore_query, 0, $i);
+
                 $next = '';
-                $sql_array[] = substr($restore_query, 0, $i);
+                $sql_array[] = $query;
                 $restore_query = ltrim(substr($restore_query, $i+1));
                 $sql_length = strlen($restore_query);
                 $i = strpos($restore_query, ';')-1;
+
+                if (eregi('^create*', $query)) {
+                  $table_name = trim(substr($query, stripos($query, 'table ')+6));
+                  $table_name = substr($table_name, 0, strpos($table_name, ' '));
+
+                  $drop_table_names[] = $table_name;
+                }
               }
             }
           }
 
-          tep_db_query("drop table if exists address_book, address_format, banners, banners_history, categories, categories_description, configuration, configuration_group, counter, counter_history, countries, currencies, customers, customers_basket, customers_basket_attributes, customers_info, languages, manufacturers, manufacturers_info, orders, orders_products, orders_status, orders_status_history, orders_products_attributes, orders_products_download, products, products_attributes, products_attributes_download, prodcts_description, products_options, products_options_values, products_options_values_to_products_options, products_to_categories, reviews, reviews_description, sessions, specials, tax_class, tax_rates, geo_zones, whos_online, zones, zones_to_geo_zones");
+          tep_db_query('drop table if exists ' . implode(', ', $drop_table_names));
 
           for ($i=0, $n=sizeof($sql_array); $i<$n; $i++) {
             tep_db_query($sql_array[$i]);
           }
 
+          tep_session_close();
+
+          tep_db_query("delete from " . TABLE_WHOS_ONLINE);
+          tep_db_query("delete from " . TABLE_SESSIONS);
+
           tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'DB_LAST_RESTORE'");
-          tep_db_query("insert into " . TABLE_CONFIGURATION . " values ('', 'Last Database Restore', 'DB_LAST_RESTORE', '" . $read_from . "', 'Last database restore file', '6', '', '', now(), '', '')");
+          tep_db_query("insert into " . TABLE_CONFIGURATION . " values (null, 'Last Database Restore', 'DB_LAST_RESTORE', '" . $read_from . "', 'Last database restore file', '6', '0', null, now(), '', '')");
 
           if (isset($remove_raw) && ($remove_raw == true)) {
             unlink($restore_from);
@@ -353,7 +372,7 @@
     $dir = dir(DIR_FS_BACKUP);
     $contents = array();
     while ($file = $dir->read()) {
-      if (!is_dir(DIR_FS_BACKUP . $file)) {
+      if (!is_dir(DIR_FS_BACKUP . $file) && in_array(substr($file, -3), array('zip', 'sql', '.gz'))) {
         $contents[] = $file;
       }
     }
diff -ruN 2.2ms2-060817.src/admin/backups/.htaccess 2.2rc2.src/admin/backups/.htaccess
--- 2.2ms2-060817.src/admin/backups/.htaccess	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/backups/.htaccess	2008-01-15 03:58:55.000000000 -0600
@@ -0,0 +1,24 @@
+# $Id: .htaccess 1821 2008-01-15 09:58:55Z hpdl $
+#
+# This is used with Apache WebServers
+# The following blocks direct HTTP requests in this directory recursively
+#
+# For this to work, you must include the parameter 'Limit' to the AllowOverride configuration
+#
+# Example:
+#
+#<Directory "/usr/local/apache/htdocs">
+#  AllowOverride Limit
+#
+# 'All' with also work. (This configuration is in your apache/conf/httpd.conf file)
+#
+# This does not affect PHP include/require functions
+#
+# Example: http://server/catalog/admin/backups/backup.sql will not work
+
+Options -Indexes
+
+<Files *>
+Order Deny,Allow
+Deny from all
+</Files>
diff -ruN 2.2ms2-060817.src/admin/banner_manager.php 2.2rc2.src/admin/banner_manager.php
--- 2.2ms2-060817.src/admin/banner_manager.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/banner_manager.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_manager.php,v 1.73 2003/06/29 22:50:51 hpdl Exp $
+  $Id: banner_manager.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/banner_statistics.php 2.2rc2.src/admin/banner_statistics.php
--- 2.2ms2-060817.src/admin/banner_statistics.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/banner_statistics.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_statistics.php,v 1.5 2003/06/20 00:30:15 hpdl Exp $
+  $Id: banner_statistics.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -94,7 +94,7 @@
   }
 ?>
             </td>
-          <?php echo tep_draw_hidden_field('page', $HTTP_GET_VARS['page']) . tep_draw_hidden_field('bID', $HTTP_GET_VARS['bID']); ?></form></tr>
+          <?php echo tep_draw_hidden_field('page', $HTTP_GET_VARS['page']) . tep_draw_hidden_field('bID', $HTTP_GET_VARS['bID']) . tep_hide_session_id(); ?></form></tr>
         </table></td>
       </tr>
       <tr>
diff -ruN 2.2ms2-060817.src/admin/cache.php 2.2rc2.src/admin/cache.php
--- 2.2ms2-060817.src/admin/cache.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/cache.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cache.php,v 1.23 2003/06/29 22:50:51 hpdl Exp $
+  $Id: cache.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/categories.php 2.2rc2.src/admin/categories.php
--- 2.2ms2-060817.src/admin/categories.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/categories.php	2007-12-21 08:02:36.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: categories.php,v 1.146 2003/07/11 14:40:27 hpdl Exp $
+  $Id: categories.php 1755 2007-12-21 14:02:36Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -38,7 +38,7 @@
         if (isset($HTTP_POST_VARS['categories_id'])) $categories_id = tep_db_prepare_input($HTTP_POST_VARS['categories_id']);
         $sort_order = tep_db_prepare_input($HTTP_POST_VARS['sort_order']);
 
-        $sql_data_array = array('sort_order' => $sort_order);
+        $sql_data_array = array('sort_order' => (int)$sort_order);
 
         if ($action == 'insert_category') {
           $insert_sql_data = array('parent_id' => $current_category_id,
@@ -77,7 +77,10 @@
           }
         }
 
-        if ($categories_image = new upload('categories_image', DIR_FS_CATALOG_IMAGES)) {
+        $categories_image = new upload('categories_image');
+        $categories_image->set_destination(DIR_FS_CATALOG_IMAGES);
+
+        if ($categories_image->parse() && $categories_image->save()) {
           tep_db_query("update " . TABLE_CATEGORIES . " set categories_image = '" . tep_db_input($categories_image->filename) . "' where categories_id = '" . (int)$categories_id . "'");
         }
 
@@ -212,14 +215,14 @@
 
           $products_date_available = (date('Y-m-d') < $products_date_available) ? $products_date_available : 'null';
 
-          $sql_data_array = array('products_quantity' => tep_db_prepare_input($HTTP_POST_VARS['products_quantity']),
+          $sql_data_array = array('products_quantity' => (int)tep_db_prepare_input($HTTP_POST_VARS['products_quantity']),
                                   'products_model' => tep_db_prepare_input($HTTP_POST_VARS['products_model']),
                                   'products_price' => tep_db_prepare_input($HTTP_POST_VARS['products_price']),
                                   'products_date_available' => $products_date_available,
-                                  'products_weight' => tep_db_prepare_input($HTTP_POST_VARS['products_weight']),
+                                  'products_weight' => (float)tep_db_prepare_input($HTTP_POST_VARS['products_weight']),
                                   'products_status' => tep_db_prepare_input($HTTP_POST_VARS['products_status']),
                                   'products_tax_class_id' => tep_db_prepare_input($HTTP_POST_VARS['products_tax_class_id']),
-                                  'manufacturers_id' => tep_db_prepare_input($HTTP_POST_VARS['manufacturers_id']));
+                                  'manufacturers_id' => (int)tep_db_prepare_input($HTTP_POST_VARS['manufacturers_id']));
 
           if (isset($HTTP_POST_VARS['products_image']) && tep_not_null($HTTP_POST_VARS['products_image']) && ($HTTP_POST_VARS['products_image'] != 'none')) {
             $sql_data_array['products_image'] = tep_db_prepare_input($HTTP_POST_VARS['products_image']);
@@ -740,7 +743,7 @@
 <?php
     echo tep_draw_form('search', FILENAME_CATEGORIES, '', 'get');
     echo HEADING_TITLE_SEARCH . ' ' . tep_draw_input_field('search');
-    echo '</form>';
+    echo tep_hide_session_id() . '</form>';
 ?>
                 </td>
               </tr>
@@ -749,7 +752,7 @@
 <?php
     echo tep_draw_form('goto', FILENAME_CATEGORIES, '', 'get');
     echo HEADING_TITLE_GOTO . ' ' . tep_draw_pull_down_menu('cPath', tep_get_category_tree(), $current_category_id, 'onChange="this.form.submit();"');
-    echo '</form>';
+    echo tep_hide_session_id() . '</form>';
 ?>
                 </td>
               </tr>
@@ -968,9 +971,16 @@
       default:
         if ($rows > 0) {
           if (isset($cInfo) && is_object($cInfo)) { // category info box contents
+            $category_path_string = '';
+            $category_path = tep_generate_category_path($cInfo->categories_id);
+            for ($i=(sizeof($category_path[0])-1); $i>0; $i--) {
+              $category_path_string .= $category_path[0][$i]['id'] . '_';
+            }
+            $category_path_string = substr($category_path_string, 0, -1);
+
             $heading[] = array('text' => '<b>' . $cInfo->categories_name . '</b>');
 
-            $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id . '&action=edit_category') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id . '&action=delete_category') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id . '&action=move_category') . '">' . tep_image_button('button_move.gif', IMAGE_MOVE) . '</a>');
+            $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=edit_category') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=delete_category') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=move_category') . '">' . tep_image_button('button_move.gif', IMAGE_MOVE) . '</a>');
             $contents[] = array('text' => '<br>' . TEXT_DATE_ADDED . ' ' . tep_date_short($cInfo->date_added));
             if (tep_not_null($cInfo->last_modified)) $contents[] = array('text' => TEXT_LAST_MODIFIED . ' ' . tep_date_short($cInfo->last_modified));
             $contents[] = array('text' => '<br>' . tep_info_image($cInfo->categories_image, $cInfo->categories_name, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT) . '<br>' . $cInfo->categories_image);
diff -ruN 2.2ms2-060817.src/admin/configuration.php 2.2rc2.src/admin/configuration.php
--- 2.2ms2-060817.src/admin/configuration.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/configuration.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: configuration.php,v 1.43 2003/06/29 22:50:51 hpdl Exp $
+  $Id: configuration.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/countries.php 2.2rc2.src/admin/countries.php
--- 2.2ms2-060817.src/admin/countries.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/countries.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: countries.php,v 1.28 2003/06/29 22:50:51 hpdl Exp $
+  $Id: countries.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/currencies.php 2.2rc2.src/admin/currencies.php
--- 2.2ms2-060817.src/admin/currencies.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/currencies.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: currencies.php,v 1.49 2003/06/29 22:50:51 hpdl Exp $
+  $Id: currencies.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/customers.php 2.2rc2.src/admin/customers.php
--- 2.2ms2-060817.src/admin/customers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: customers.php,v 1.82 2003/06/30 13:54:14 dgw_ Exp $
+  $Id: customers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -126,7 +126,7 @@
                 $entry_state_error = true;
               }
             } else {
-              if ($entry_state == false) {
+              if (strlen($entry_state) < ENTRY_STATE_MIN_LENGTH) {
                 $error = true;
                 $entry_state_error = true;
               }
@@ -261,39 +261,39 @@
   }
 <?php } ?>
 
-  if (customers_firstname == "" || customers_firstname.length < <?php echo ENTRY_FIRST_NAME_MIN_LENGTH; ?>) {
+  if (customers_firstname.length < <?php echo ENTRY_FIRST_NAME_MIN_LENGTH; ?>) {
     error_message = error_message + "<?php echo JS_FIRST_NAME; ?>";
     error = 1;
   }
 
-  if (customers_lastname == "" || customers_lastname.length < <?php echo ENTRY_LAST_NAME_MIN_LENGTH; ?>) {
+  if (customers_lastname.length < <?php echo ENTRY_LAST_NAME_MIN_LENGTH; ?>) {
     error_message = error_message + "<?php echo JS_LAST_NAME; ?>";
     error = 1;
   }
 
 <?php if (ACCOUNT_DOB == 'true') { ?>
-  if (customers_dob == "" || customers_dob.length < <?php echo ENTRY_DOB_MIN_LENGTH; ?>) {
+  if (customers_dob.length < <?php echo ENTRY_DOB_MIN_LENGTH; ?>) {
     error_message = error_message + "<?php echo JS_DOB; ?>";
     error = 1;
   }
 <?php } ?>
 
-  if (customers_email_address == "" || customers_email_address.length < <?php echo ENTRY_EMAIL_ADDRESS_MIN_LENGTH; ?>) {
+  if (customers_email_address.length < <?php echo ENTRY_EMAIL_ADDRESS_MIN_LENGTH; ?>) {
     error_message = error_message + "<?php echo JS_EMAIL_ADDRESS; ?>";
     error = 1;
   }
 
-  if (entry_street_address == "" || entry_street_address.length < <?php echo ENTRY_STREET_ADDRESS_MIN_LENGTH; ?>) {
+  if (entry_street_address.length < <?php echo ENTRY_STREET_ADDRESS_MIN_LENGTH; ?>) {
     error_message = error_message + "<?php echo JS_ADDRESS; ?>";
     error = 1;
   }
 
-  if (entry_postcode == "" || entry_postcode.length < <?php echo ENTRY_POSTCODE_MIN_LENGTH; ?>) {
+  if (entry_postcode.length < <?php echo ENTRY_POSTCODE_MIN_LENGTH; ?>) {
     error_message = error_message + "<?php echo JS_POST_CODE; ?>";
     error = 1;
   }
 
-  if (entry_city == "" || entry_city.length < <?php echo ENTRY_CITY_MIN_LENGTH; ?>) {
+  if (entry_city.length < <?php echo ENTRY_CITY_MIN_LENGTH; ?>) {
     error_message = error_message + "<?php echo JS_CITY; ?>";
     error = 1;
   }
@@ -302,7 +302,7 @@
   if (ACCOUNT_STATE == 'true') {
 ?>
   if (document.customers.elements['entry_state'].type != "hidden") {
-    if (document.customers.entry_state.value == '' || document.customers.entry_state.value.length < <?php echo ENTRY_STATE_MIN_LENGTH; ?> ) {
+    if (document.customers.entry_state.value.length < <?php echo ENTRY_STATE_MIN_LENGTH; ?>) {
        error_message = error_message + "<?php echo JS_STATE; ?>";
        error = 1;
     }
@@ -318,7 +318,7 @@
     }
   }
 
-  if (customers_telephone == "" || customers_telephone.length < <?php echo ENTRY_TELEPHONE_MIN_LENGTH; ?>) {
+  if (customers_telephone.length < <?php echo ENTRY_TELEPHONE_MIN_LENGTH; ?>) {
     error_message = error_message + "<?php echo JS_TELEPHONE; ?>";
     error = 1;
   }
@@ -697,7 +697,7 @@
             <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
             <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', 1, HEADING_IMAGE_HEIGHT); ?></td>
             <td class="smallText" align="right"><?php echo HEADING_TITLE_SEARCH . ' ' . tep_draw_input_field('search'); ?></td>
-          </form></tr>
+          <?php echo tep_hide_session_id(); ?></form></tr>
         </table></td>
       </tr>
       <tr>
diff -ruN 2.2ms2-060817.src/admin/define_language.php 2.2rc2.src/admin/define_language.php
--- 2.2ms2-060817.src/admin/define_language.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/define_language.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: define_language.php,v 1.15 2003/07/08 21:51:37 hpdl Exp $
+  $Id: define_language.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -84,7 +84,7 @@
             <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
             <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', '1', HEADING_IMAGE_HEIGHT); ?></td>
             <td class="pageHeading" align="right"><?php echo tep_draw_pull_down_menu('lngdir', $languages_array, $language, 'onChange="this.form.submit();"'); ?></td>
-          </form></tr>
+          <?php echo tep_hide_session_id(); ?></form></tr>
         </table></td>
       </tr>
       <tr>
Binary files 2.2ms2-060817.src/admin/ext/modules/payment/sofortueberweisung/autoinstaller.gif and 2.2rc2.src/admin/ext/modules/payment/sofortueberweisung/autoinstaller.gif differ
diff -ruN 2.2ms2-060817.src/admin/ext/modules/payment/sofortueberweisung/install.php 2.2rc2.src/admin/ext/modules/payment/sofortueberweisung/install.php
--- 2.2ms2-060817.src/admin/ext/modules/payment/sofortueberweisung/install.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/ext/modules/payment/sofortueberweisung/install.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,407 @@
+<?php
+/*
+  $Id: install.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2006 - 2007 Henri Schmidhuber (http://www.in-solution.de)
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  chdir('../../../../');
+  require('includes/application_top.php');
+
+  define('OSC_CATALOG_SESSION_ID', 'osCsid');
+
+  function tep_create_random_value($length, $type = 'mixed') {
+    if ( ($type != 'mixed') && ($type != 'chars') && ($type != 'digits')) return false;
+
+    $rand_value = '';
+    while (strlen($rand_value) < $length) {
+      if ($type == 'digits') {
+        $char = tep_rand(0,9);
+      } else {
+        $char = chr(tep_rand(0,255));
+      }
+      if ($type == 'mixed') {
+        if (eregi('^[a-z0-9]$', $char)) $rand_value .= $char;
+      } elseif ($type == 'chars') {
+        if (eregi('^[a-z]$', $char)) $rand_value .= $char;
+      } elseif ($type == 'digits') {
+        if (ereg('^[0-9]$', $char)) $rand_value .= $char;
+      }
+    }
+
+    return $rand_value;
+  }
+
+  // Module already installed
+  if (defined('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STATUS') && (MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STATUS == 'True')) {
+    die('Modul bereits installiert<br><a href="' . tep_href_link(FILENAME_MODULES, 'set=payment&module=sofortueberweisung_direct', 'SSL') . '">zurck zum ShopAdmin</a>');
+  }
+
+  $parameter = array();
+  $parameter['install'] = 'sofortueberweisung_direct';
+  $parameter['action'] = 'install';
+  $parameter['input_passwort'] = tep_create_random_value(12);
+  $parameter['bna_passwort'] = tep_create_random_value(12);
+  $parameter['cnt_passwort'] = tep_create_random_value(12);
+
+  $get_parameter = '';
+  $x = 0;
+  while(list($key,$value) = each($parameter)) {
+    if (empty($value)) continue;
+    if ($x > 0) $get_parameter .= "&";
+    $get_parameter .= $key . "=" . urlencode($value);
+    $x++;
+  }
+
+  $backlink = tep_href_link('ext/modules/payment/sofortueberweisung/install.php', $get_parameter);
+  $html_abortlink = tep_catalog_href_link('checkout_payment.php', 'payment_error=sofortueberweisung_direct&' . OSC_CATALOG_SESSION_ID . '=-KUNDEN_VAR_2-','SSL', false, false);
+  $header_redir_url = tep_catalog_href_link('checkout_process.php', OSC_CATALOG_SESSION_ID . '=-KUNDEN_VAR_2-&sovar3=-KUNDEN_VAR_3-&sovar4=-KUNDEN_VAR_3_MD5_PASS-&betrag_integer=-BETRAG_INTEGER-','SSL', false, false);
+  $alert_http_url = tep_catalog_href_link('ext/modules/payment/sofortueberweisung/callback.php','' ,'SSL', false, false);
+
+  if (isset($HTTP_GET_VARS['action']) && ($HTTP_GET_VARS['action'] == 'install')) {
+    $file_extension = substr($PHP_SELF, strrpos($PHP_SELF, '.'));
+    $class = 'sofortueberweisung_direct';
+
+    if (file_exists(DIR_FS_CATALOG_MODULES . 'payment/sofortueberweisung_direct' . $file_extension)) {
+      include(DIR_FS_CATALOG_MODULES . 'payment/sofortueberweisung_direct' . $file_extension);
+      $module = new $class;
+      $module->install();
+    }
+
+    tep_redirect(tep_href_link(FILENAME_MODULES, 'set=payment&module=sofortueberweisung_direct', 'SSL'));
+  }
+?>
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="https://www.sofortueberweisung.de/cms/modul/style.css">
+<script type="text/javascript">
+function init() {
+	if(false) {
+		document.getElementById('table1').style.display = '';
+		document.getElementById('table2').style.display = '';
+		document.getElementById('table3').style.display = '';
+		document.getElementById('table4').style.display = '';
+		document.getElementById('table5').style.display = '';
+		document.getElementById('table6').style.display = '';
+	}
+}
+
+function toggleTableById(id) {
+	if(document.getElementById(id).style.display == 'none')
+		document.getElementById(id).style.display = '';
+	else
+		document.getElementById(id).style.display = 'none';
+}
+
+function giveValue(value,name0, name1, name2, name3, name4) {
+	if(name0 != '') document.getElementsByName(name0)[0].value = value;
+	if(name1 != '') document.getElementsByName(name1)[0].value = value;
+	if(name2 != '') document.getElementsByName(name2)[0].value = value;
+	if(name3 != '') document.getElementsByName(name3)[0].value = value;
+	if(name4 != '') document.getElementsByName(name4)[0].value = value;
+}
+
+function checkChar(string, validChars) {
+  for (var pos = 0; pos < string.length; pos++) {
+    if (validChars.indexOf(string.charAt(pos)) == -1) {
+      return false;
+    }
+  }
+  return true;
+}
+
+function submitForm() {
+	var is_error=false;
+	var wert, wert1, wert2;
+
+	wert = document.getElementById('sammel_input_project_name').value;
+	if(!is_error) if(wert == '') {alert('Bitte Projektnamen eintragen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_name').value;
+	if(!is_error) if(wert == '') {alert('Bitte Namen eintragen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_firma').value;
+	if(!is_error) if(wert == '') {alert('Bitte Firma eintragen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_strasse').value;
+	if(!is_error) if(wert == '') {alert('Bitte Strasse eintragen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_plz').value;
+	if(!is_error) if(!checkChar(wert,'0123456789') || wert == '' || (wert.length!=5 && wert.length!=4)) {alert('PLZ muss aus 4 oder 5 Ziffern bestehen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_ort').value;
+	if(!is_error) if(wert == '') {alert('Bitte Ort eintragen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_land').value;
+	if(!is_error) if(wert == '') {alert('Bitte Land eintragen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_konto_inhaber').value;
+	if(!is_error) if(wert == '') {alert('Bitte Kontoinhaber eintragen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_kontonummer').value;
+	if(!is_error) if(!checkChar(wert,'0123456789') || wert == '') {alert('Kontonummer darf nur aus Ziffern bestehen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_blz').value;
+	if(!is_error) if(!checkChar(wert,'0123456789') || wert == '' || wert.length!=8) {alert('BLZ muss aus 8 Ziffern bestehen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_bank').value;
+	if(!is_error) if(wert == '') {alert('Bitte Bankname eintragen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_homepage').value;
+	if(!is_error) if(wert == '') {alert('Bitte Homepage eintragen'); is_error=true;}
+
+	wert = document.getElementById('sammel_input_email').value;
+	if(!is_error) if(wert == '') {alert('Bitte Email-Adresse eintragen'); is_error=true;}
+
+	//if(!is_error) if(document.getElementById('sammel_input_ustid').value == '' && document.getElementById('sammel_input_steuernummer').value == '') {alert('Bitte alle Pflichtfelder ausfllen'); is_error=true;}
+
+	wert1 = document.getElementById('sammel_input_telefon').value;
+	wert2 = document.getElementById('sammel_input_mobil').value;
+	if(!is_error) if(wert1 == '' && wert2 == '') {alert('Es muss mindestens ein telefonischer Kontakt angegeben sein'); is_error=true;}
+
+  // adjust Backlink
+  document.getElementsByName('user[backlink]')[0].value += '&konto_inhaber=' + escape(document.getElementById('sammel_input_konto_inhaber').value);
+  document.getElementsByName('user[backlink]')[0].value += '&konto_nr=' + escape(document.getElementById('sammel_input_kontonummer').value);
+  document.getElementsByName('user[backlink]')[0].value += '&konto_blz=' + escape(document.getElementById('sammel_input_blz').value);
+  document.getElementsByName('user[backlink]')[0].value += '&konto_bank=' + escape(document.getElementById('sammel_input_bank').value);
+
+
+	if(!is_error) document.getElementById('form').submit();
+}
+</script>
+<style>
+input {Font-family:tahoma,arial,verdana; font-size:11px; color:#666666; background-color:#FFFFFF; border:1px solid #808080;}
+select {Font-family:tahoma,arial,verdana; font-size:11px; color:#666666; background-color:#FFFFFF; border:1px solid #808080;}
+</style>
+</head>
+<body background="https://www.sofortueberweisung.de/cms/design/kachel.gif" leftmargin="0" topmargin="5" marginwidth="0" marginheight="0" onload="javascript:init()">
+
+<form method="post" action="https://www.sofort-ueberweisung.de/createnew.php" id="form">
+
+<table align="center" width="970" height="205" border="0" cellpadding="0" cellspacing="0">
+  <tr>
+    <td>
+      <img src="https://www.sofortueberweisung.de/grafik/head_image.gif" />
+    </td>
+  </tr>
+  <tr>
+    <td>
+	  <img src="https://www.sofortueberweisung.de/cms/p.gif" width=5 height=5 alt="" border=0 vspace=0 hspace=0>
+	</td>
+  </tr>
+  <tr>
+    <td>
+      <table align="center" width="970" border="0" cellpadding="0" cellspacing="0">
+	    <tr>
+		  <td><img src="https://www.sofortueberweisung.de/cms/design/content_01.gif" width="190" height="10" alt="" border=0 vspace=0 hspace=0></td>
+		  <td><img src="https://www.sofortueberweisung.de/cms/design/content_02.gif" width="212" height="10" alt="" border=0 vspace=0 hspace=0></td>
+		  <td align="right"><img src="https://www.sofortueberweisung.de/cms/design/content_03.gif" width="568" height="10" alt="" border=0 vspace=0 hspace=0></td>
+	    </tr>
+	  </table>
+	</td>
+  </tr>
+  <tr>
+    <td bgcolor="white">
+	<table width="100%" border="0">
+	  <tr>
+	    <td width="50%">
+            <table border="0" cellpadding="2" cellspacing="0" style="padding-left: 20px;">
+	          <tr><td>Projektname*</td><td><input id="sammel_input_project_name" size="40" type="text" value="<?php echo STORE_NAME; ?>" onkeyup="javascript:giveValue(this.value,'project[projekt_name]', '', '', '', '')"></td></tr>
+	          <tr><td>Projektbeschreibung</td><td><input size="40" type="text" onkeyup="javascript:giveValue(this.value,'project[projekt_beschreibung]', '', '', '', '' )"></td></tr>
+              <tr><td colspan="2"><hr /></td></tr>
+	          <tr><td>Anrede</td><td><input size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[r_anrede]','user[anspr_anrede]','project[anrede]', '', '')"></td></tr>
+	          <tr><td>Name*</td><td><input id="sammel_input_name" value="<?php echo STORE_OWNER; ?>"  size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[r_name]','user[anspr_name]','project[name]', '', '')">
+	          <tr><td>Firma*</td><td><input id="sammel_input_firma" size="40" type="text" value="<?php echo STORE_NAME; ?>" onkeyup="javascript:giveValue(this.value,'user[firma]','user[r_firma]','project[firma]', '', '')"></td></tr>
+	          <tr><td>Rechtsform</td><td>
+				<select onchange="javascript:giveValue(this.value,'user[rechtsform]', '', '', '', '')">
+					<option value="">Bitte auswhlen...</option>
+					<option value="AG" >AG</option>
+					<option value="AG & Co. OHG" >AG & Co. OHG</option>
+					<option value="ARGE" >ARGE</option>
+					<option value="e.G." >e.G.</option>
+					<option value="e.K." >e.K.</option>
+					<option value="e.V." >e.V.</option>
+					<option value="GbR" >GbR</option>
+					<option value="GmbH" >GmbH</option>
+					<option value="GmbH & Co. KG" >GmbH & Co. KG</option>
+					<option value="GmbH & Co. OHG" >GmbH & Co. OHG</option>
+					<option value="KG" >KG</option>
+					<option value="KGaA" >KGaA</option>
+					<option value="OHG" >OHG</option>
+					<option value="Selbststndig" >Selbststndig</option>
+					<option value="VvAG" >VvAG</option>
+					<option value="Sonstige" >Sonstige</option>
+				</select>
+	          <tr><td>Strasse*</td><td><input id="sammel_input_strasse" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[strasse]','user[r_strasse]','project[strasse]', '', '')"></td></tr>
+	          <tr><td>PLZ*</td><td><input maxlength="5" id="sammel_input_plz" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[plz]','user[r_plz]','project[plz]', '', '')"></td></tr>
+	          <tr><td>Ort*</td><td><input id="sammel_input_ort" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[ort]','user[r_ort]','project[ort]', '', '')"></td></tr>
+	          <tr><td>Land*</td><td><input id="sammel_input_land" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[land]','user[r_land]','project[land]', '', '')"></td></tr>
+	          <tr><td>Telefon+</td><td><input id="sammel_input_telefon" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[telefon]','user[anspr_fon]','project[telefon]', '', '')"></td></tr>
+	          <tr><td>Mobil+</td><td><input id="sammel_input_mobil" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[anspr_mobil]', '', '', '', '')"></td></tr>
+	          <tr><td>Telefax</td><td><input size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[anspr_fax]','project[telefax]','user[telefax]', '', '')"></td></tr>
+            <tr><td colspan="2"><hr /></td></tr>
+			      <tr><td colspan="2"><b>Konto auf welches die Zahlungseingnge gutgeschrieben werden:</b></td></tr>
+	          <tr><td>Konto Inhaber*</td><td><input id="sammel_input_konto_inhaber" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[elv_konto_inhaber]', 'project[an_konto_inhaber]', '', '', '')"></td></tr>
+	          <tr><td>Kontonummer*</td><td><input maxlength="15"  id="sammel_input_kontonummer" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[elv_konto_nr]', 'project[an_konto_nr]', '', '', '')"></td></tr>
+	          <tr><td>Bankleitzahl*</td><td><input maxlength="8" id="sammel_input_blz" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[elv_konto_blz]', 'project[an_konto_blz]', '', '', '')"></td></tr>
+	          <tr><td>Name der Bank*</td><td><input id="sammel_input_bank" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[elv_konto_bank]', 'project[an_konto_bank]', '', '', '')"></td></tr>
+            <tr><td colspan="2"><b>Hiermit beauftrage ich Sie, die flligen <a href="https://www.sofortueberweisung.de/cms/index.php?plink=tarife&l=1&fs=" target="_blank">Betrge</a> per Lastschrift von meinem Konto einzuziehen.</b></td></tr>
+	          <tr><td>Ustid</td><td><input id="sammel_input_ustid" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[ustid]', '', '', '', '')"></td></tr>
+	          <tr><td>Steuernr</td><td><input id="sammel_input_steuernummer" size="40" type="text" onkeyup="javascript:giveValue(this.value,'user[steuernr]', '', '', '', '')"></td></tr>
+            <tr><td colspan="2"><hr /></td></tr>
+	          <tr><td>Homepage*</td><td><input id="sammel_input_homepage" size="40" type="text" value="<?php echo tep_catalog_href_link() ;?>" onkeyup="javascript:giveValue(this.value,'project[homepage]','user[homepage]', '', '', '')"></td></tr>
+	          <tr><td>Email*</td><td><input id="sammel_input_email" size="40" type="text" value="<?php echo STORE_OWNER_EMAIL_ADDRESS; ?>" onkeyup="javascript:giveValue(this.value,'user[r_email]','user[anspr_email]','project[email]','user[email]','alert[alert_email_adresse]')"></td></tr>
+			      <tr><td>Email-Benachrichtigungen bei Zahlungseingngen aktivieren:</td>
+			        <td><input type="radio" name="sammel_input_email_flag" value="1" CHECKED onfocus="javascript:giveValue(this.value,'alert[alert_email_status]', '', '', '', '')"> Ja  <input type="radio" name="sammel_input_email_flag" value="0" onfocus="javascript:giveValue(this.value,'alert[alert_email_status]', '', '', '', '')"> Nein</td>
+			      </tr>
+        	  <tr>
+	            <td colspan="2">
+	              <input type="button" name="Absenden" value="Absenden" onclick="javascript:submitForm()"><br><b>Nach der Registrierung des Projekts bei Sofortberweisung, unbedingt dem Link zurck zum Shop folgen!</b>
+		        </td>
+	          </tr>
+	        </table>
+		</td>
+	    <td valign="top" align="left">
+          <table border="0" cellspacing="0">
+		    <tr><td><a href="#" onclick="javascript:toggleTableById('table2')"><u>Alternative Rechnungsanschrift</u></a></td></tr>
+			<tr><td>
+		    <table border="0" cellspacing="0" id="table2" style="display:none">
+              <tr><td>Anrede</td><td><input size="40" type="text" name="user[r_anrede]" value=""></td></tr>
+              <tr><td>Firma</td><td><input size="40" type="text" name="user[r_firma]" value="<?php echo STORE_NAME; ?>"></td></tr>
+              <tr><td>Name</td><td><input size="40" type="text" name="user[r_name]" value=""></td></tr>
+              <tr><td>Strasse</td><td><input size="40" type="text" name="user[r_strasse]" value=""></td></tr>
+              <tr><td>Plz</td><td><input size="40" type="text" name="user[r_plz]" value=""></td></tr>
+              <tr><td>Ort</td><td><input size="40" type="text" name="user[r_ort]" value=""></td></tr>
+              <tr><td>Land</td><td><input size="40" type="text" name="user[r_land]" value=""></td></tr>
+              <tr><td>Email</td><td><input size="40" type="text" name="user[r_email]" value="<?php echo STORE_OWNER_EMAIL_ADDRESS; ?>"></td></tr>
+			</table>
+			</td></tr>
+          </table>
+		  <table border="0" cellspacing="0">
+		    <tr><td><a href="#" onclick="javascript:toggleTableById('table4')"><u>Alternativer Ansprechpartner</u></a></td></tr>
+		    <tr><td>
+              <table border="0" cellspacing="0" id="table4" style="display:none">
+                <tr><td>Anrede</td><td><input size="40" type="text" name="user[anspr_anrede]" value=""></td><td>&nbsp;</td></tr>
+                <tr><td>Name</td><td><input size="40" type="text" name="user[anspr_name]" value=""></td><td>&nbsp;</td></tr>
+                <tr><td>Telefon</td><td><input size="40" type="text" name="user[anspr_fon]" value=""></td><td>&nbsp;</td></tr>
+                <tr><td>Telefax</td><td><input size="40" type="text" name="user[anspr_fax]" value=""></td><td>&nbsp;</td></tr>
+                <tr><td>Mobil</td><td><input size="40" type="text" name="user[anspr_mobil]" value=""></td><td>&nbsp;</td></tr>
+                <tr><td>Email</td><td><input size="40" type="text" name="user[anspr_email]" value="<?php echo STORE_OWNER_EMAIL_ADDRESS; ?>"></td><td>&nbsp;</td></tr>
+              </table>
+		    </td></tr>
+		  </table>
+		</td>
+	  </tr>
+	  <tr><td style="padding-left: 20px;">* zeichnet Pflichtfelder aus<br />+ zeichnet Felder aus, bei denen mindestens eines gefllt sein muss<br />Alle Zahlen sind ohne Leerzeichen einzugeben</td></tr>
+    </table>
+  </td></tr>
+  <tr>
+    <td>
+	  <table width="970" border="0" cellspacing="0" cellpadding="0">
+	    <tr>
+		  <td width="190" valign="top"><img src="https://www.sofortueberweisung.de/cms/design/content_11.gif" width=190 height=10 alt="" border=0 vspace=0 hspace=0></td>
+		  <td bgcolor="white"><img src="https://www.sofortueberweisung.de/cms/p.gif" width=5 height=10 alt="" border=0 vspace=0 hspace=0></td>
+		  <td align="right" width="568"><img src="https://www.sofortueberweisung.de/cms/design/content_13.gif" width=568 height=10 alt="" border=0 vspace=0 hspace=0></td>
+		</tr>
+	  </table>
+	</td>
+  </tr>
+</table>
+
+<table border="1" id="table1" style="display:none;">
+  <tr><td>Benutzername:</td><td><input type="text" name="user[user]" value="<?php echo STORE_OWNER; ?>"></td><td>*</td></tr>
+  <tr><td>Firma</td><td><input type="text" name="user[firma]" value="<?php echo STORE_NAME; ?>"></td><td>*</td></tr>
+  <tr><td>Rechtsform</td><td><input type="text" name="user[rechtsform]" value=""></td><td>&nbsp;</td></tr>
+  <tr><td>Strasse</td><td><input type="text" name="user[strasse]" value=""></td><td>*</td></tr>
+  <tr><td>Plz</td><td><input type="text" name="user[plz]" value=""></td><td>*</td></tr>
+  <tr><td>Ort</td><td><input type="text" name="user[ort]" value=""></td><td>*</td></tr>
+  <tr><td>Land</td><td><input type="text" name="user[land]" value=""></td><td>*</td></tr>
+  </table>
+
+  <table border="1" id="table3" style="display:none">
+  <tr><td>Telefon</td><td><input type="text" name="user[telefon]" value=""></td><td>&nbsp;</td></tr>
+  <tr><td>Telefax</td><td><input type="text" name="user[telefax]" value=""></td><td>&nbsp;</td></tr>
+  <tr><td>Email</td><td><input type="text" name="user[email]" value="<?php echo STORE_OWNER_EMAIL_ADDRESS; ?>"></td><td>*</td></tr>
+  <tr><td>Homepage</td><td><input type="text" name="user[homepage]" value="<?php echo tep_catalog_href_link() ;?>"></td><td>&nbsp;</td></tr>
+  <tr><td>Ustid</td><td><input type="text" name="user[ustid]" value=""></td><td>*</td></tr>
+  <tr><td>Steuernr</td><td><input type="text" name="user[steuernr]" value=""></td><td>*</td></tr>
+  </table>
+
+  <table border="1" id="table5" style="display:none;">
+  <tr><td colspan=3>Konto, von dem die Gebhren von Sofort-berweisung abgebucht werden:</td></tr>
+  <tr><td>Konto Inhaber</td><td><input type="text" name="user[elv_konto_inhaber]" value=""></td><td>*</td></tr>
+  <tr><td>Kontonr</td><td><input type="text" name="user[elv_konto_nr]" value=""></td><td>*</td></tr>
+  <tr><td>Konto BLZ</td><td><input type="text" name="user[elv_konto_blz]" value=""></td><td>*</td></tr>
+  <tr><td>Konto Bank</td><td><input type="text" name="user[elv_konto_bank]" value=""></td><td>*</td></tr>
+  </table>
+
+<table border="0" cellspacing="0" id="table6" style="display:none">
+  <tr><td>Name</td><td><input type="text" name="project[projekt_name]" value="<?php echo STORE_NAME; ?>"></td><td>*</td></tr>
+  <tr><td>Beschreibung</td><td><input type="text" name="project[projekt_beschreibung]" value=""></td><td>&nbsp;</td></tr>
+  <tr><td>Anrede</td><td><input type="text" name="project[anrede]" value=""></td><td>*</td></tr>
+  <tr><td>Firma</td><td><input type="text" name="project[firma]" value="<?php echo STORE_NAME; ?>"></td><td>*</td></tr>
+  <tr><td>Name</td><td><input type="text" name="project[name]" value="<?php echo STORE_OWNER; ?>"></td><td>*</td></tr>
+  <tr><td>Strasse</td><td><input type="text" name="project[strasse]" value=""></td><td>*</td></tr>
+  <tr><td>Plz</td><td><input type="text" name="project[plz]" value=""></td><td>*</td></tr>
+  <tr><td>Ort</td><td><input type="text" name="project[ort]" value=""></td><td>*</td></tr>
+  <tr><td>Land</td><td><input type="text" name="project[land]" value=""></td><td>*</td></tr>
+  <tr><td>Telefon</td><td><input type="text" name="project[telefon]" value=""></td><td>*</td></tr>
+  <tr><td>Telefax</td><td><input type="text" name="project[telefax]" value=""></td><td>*</td></tr>
+  <tr><td>Email</td><td><input type="text" name="project[email]" value="<?php echo STORE_OWNER_EMAIL_ADDRESS; ?>"></td><td>*</td></tr>
+  <tr><td>Homepage</td><td><input type="text" name="project[homepage]" value="<?php echo tep_catalog_href_link() ;?>"></td><td>*</td></tr>
+</table>
+
+<table border="1" id="table7" style="display:none">
+  <tr><td>Email</td><td><input type="text" name="alert[alert_email_adresse]" value="<?php echo STORE_OWNER_EMAIL_ADDRESS; ?>"></td><td>&nbsp;</td></tr>
+  <tr><td>Email Benachrichtigung bei Zahlungseingang aktivieren</td><td><input type="text" name="alert[alert_email_status]" value="1"></td><td>&nbsp;</td></tr>
+</table>
+
+<input type="hidden" name="user[backlink]" value="<?php echo $backlink; ?>">
+<input type="hidden" name="user[vpartner]" value="21">
+<input type="hidden" name="project[html_abortlink]" value="<?php echo $html_abortlink; ?>">
+<input type="hidden" name="project[header_redir_do]" value="1">
+<input type="hidden" name="project[header_redir_url]" value="<?php echo $header_redir_url; ?>">
+<input type="hidden" name="project[const_betrag]" value="1">
+<input type="hidden" name="project[const_v_zweck_1]" value="1">
+<input type="hidden" name="project[const_v_zweck_2]" value="1">
+<input type="hidden" name="project[use_input_passwort]" value="1">
+<input type="hidden" name="project[an_konto_inhaber]" value="">
+<input type="hidden" name="project[an_konto_nr]" value="">
+<input type="hidden" name="project[an_konto_blz]" value="">
+<input type="hidden" name="project[an_konto_bank]" value="">
+<input type="hidden" name="project[input_passwort]" value="<?php echo $parameter['input_passwort']; ?>">
+<input type="hidden" name="project[content_passwort]" value="<?php echo $parameter['cnt_passwort']; ?>">
+<input type="hidden" name="project[shopsystem]" value="<?php echo PROJECT_VERSION; ?>">
+<input type="hidden" name="alert[alert_passwort]" value="<?php echo $parameter['bna_passwort']; ?>">
+<input type="hidden" name="alert[alert_email_text_custom]" value="0">
+<?php
+if (ENABLE_SSL_CATALOG == 'true') {
+?>
+<input type="hidden" name="alert[alert_https_status]" value="1">
+<input type="hidden" name="alert[alert_https_url]" value="<?php echo $alert_http_url; ?>">
+<input type="hidden" name="alert[alert_https_method]" value="post">
+<input type="hidden" name="alert[alert_https_var_text]" value="text">
+<input type="hidden" name="alert[alert_https_var_pass]" value="pw">
+<?php
+} else {
+?>
+<input type="hidden" name="alert[alert_http_status]" value="1">
+<input type="hidden" name="alert[alert_http_url]" value="<?php echo $alert_http_url; ?>">
+<input type="hidden" name="alert[alert_http_method]" value="post">
+<input type="hidden" name="alert[alert_http_var_text]" value="text">
+<input type="hidden" name="alert[alert_http_var_pass]" value="pw">
+<?php
+}
+?>
+
+<input type="hidden" name="debug" value="1">
+</form>
+
+</body>
+</html>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/admin/file_manager.php 2.2rc2.src/admin/file_manager.php
--- 2.2ms2-060817.src/admin/file_manager.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/file_manager.php	2007-12-20 20:22:21.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: file_manager.php,v 1.42 2003/06/29 22:50:52 hpdl Exp $
+  $Id: file_manager.php 1744 2007-12-21 02:22:21Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -43,20 +43,26 @@
         if (!$tep_remove_error) tep_redirect(tep_href_link(FILENAME_FILE_MANAGER));
         break;
       case 'insert':
-        if (mkdir($current_path . '/' . $HTTP_POST_VARS['folder_name'], 0777)) {
+        if (isset($HTTP_POST_VARS['folder_name']) && tep_not_null(basename($HTTP_POST_VARS['folder_name'])) && mkdir($current_path . '/' . basename($HTTP_POST_VARS['folder_name']), 0777)) {
           tep_redirect(tep_href_link(FILENAME_FILE_MANAGER, 'info=' . urlencode($HTTP_POST_VARS['folder_name'])));
         }
         break;
       case 'save':
-        if ($fp = fopen($current_path . '/' . $HTTP_POST_VARS['filename'], 'w+')) {
-          fputs($fp, stripslashes($HTTP_POST_VARS['file_contents']));
-          fclose($fp);
-          tep_redirect(tep_href_link(FILENAME_FILE_MANAGER, 'info=' . urlencode($HTTP_POST_VARS['filename'])));
+        if (isset($HTTP_POST_VARS['filename']) && tep_not_null(basename($HTTP_POST_VARS['filename']))) {
+          if (is_writeable($current_path) && ($fp = fopen($current_path . '/' . basename($HTTP_POST_VARS['filename']), 'w+'))) {
+            fputs($fp, stripslashes($HTTP_POST_VARS['file_contents']));
+            fclose($fp);
+            tep_redirect(tep_href_link(FILENAME_FILE_MANAGER, 'info=' . urlencode(basename($HTTP_POST_VARS['filename']))));
+          }
+        } else {
+          $action = 'new_file';
+          $directory_writeable = true;
+          $messageStack->add(ERROR_FILENAME_EMPTY, 'error');
         }
         break;
       case 'processuploads':
         for ($i=1; $i<6; $i++) {
-          if (isset($GLOBALS['file_' . $i]) && tep_not_null($GLOBALS['file_' . $i])) {
+          if (is_uploaded_file($HTTP_POST_FILES['file_' . $i]['tmp_name'])) {
             new upload('file_' . $i, $current_path);
           }
         }
@@ -132,7 +138,7 @@
             <td class="pageHeading"><?php echo HEADING_TITLE . '<br><span class="smallText">' . $current_path . '</span>'; ?></td>
             <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', '1', HEADING_IMAGE_HEIGHT); ?></td>
             <td class="pageHeading" align="right"><?php echo tep_draw_pull_down_menu('goto', $goto_array, $current_path, 'onChange="this.form.submit();"'); ?></td>
-          </form></tr>
+          <?php echo tep_hide_session_id(); ?></form></tr>
         </table></td>
       </tr>
 <?php
@@ -145,7 +151,7 @@
       $filename_input_field = tep_draw_input_field('filename');
     } elseif ($action == 'edit') {
       if ($file_array = file($current_path . '/' . $HTTP_GET_VARS['info'])) {
-        $file_contents = addslashes(implode('', $file_array));
+        $file_contents = implode('', $file_array);
       }
       $filename_input_field = $HTTP_GET_VARS['info'] . tep_draw_hidden_field('filename', $HTTP_GET_VARS['info']);
     }
diff -ruN 2.2ms2-060817.src/admin/geo_zones.php 2.2rc2.src/admin/geo_zones.php
--- 2.2ms2-060817.src/admin/geo_zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/geo_zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: geo_zones.php,v 1.29 2003/06/29 22:50:52 hpdl Exp $
+  $Id: geo_zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/.htaccess 2.2rc2.src/admin/.htaccess
--- 2.2ms2-060817.src/admin/.htaccess	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/.htaccess	2007-12-19 18:52:16.000000000 -0600
@@ -1,4 +1,4 @@
-# $Id: .htaccess,v 1.1 2003/06/20 00:18:30 hpdl Exp $
+# $Id: .htaccess 1739 2007-12-20 00:52:16Z hpdl $
 #
 # This is used with Apache WebServers
 #
@@ -17,24 +17,22 @@
 # The following makes adjustments to the SSL protocol for Internet
 # Explorer browsers
 
-<IfModule mod_setenvif.c>
-  <IfDefine SSL>
-    SetEnvIf User-Agent ".*MSIE.*" \
-             nokeepalive ssl-unclean-shutdown \
-             downgrade-1.0 force-response-1.0
-  </IfDefine>
-</IfModule>
+#<IfModule mod_setenvif.c>
+#  <IfDefine SSL>
+#    SetEnvIf User-Agent ".*MSIE.*" \
+#             nokeepalive ssl-unclean-shutdown \
+#             downgrade-1.0 force-response-1.0
+#  </IfDefine>
+#</IfModule>
 
 # If Search Engine Friendly URLs do not work, try enabling the
 # following Apache configuration parameter
-#
+
 # AcceptPathInfo On
 
 # Fix certain PHP values
 # (commented out by default to prevent errors occuring on certain
 # servers)
-#
-#<IfModule mod_php4.c>
-#  php_value session.use_trans_sid 0
-#  php_value register_globals 1
-#</IfModule>
+
+# php_value session.use_trans_sid 0
+# php_value register_globals 1
diff -ruN 2.2ms2-060817.src/admin/images/graphs/.cvsignore 2.2rc2.src/admin/images/graphs/.cvsignore
--- 2.2ms2-060817.src/admin/images/graphs/.cvsignore	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/images/graphs/.cvsignore	1969-12-31 18:00:00.000000000 -0600
@@ -1,12 +0,0 @@
-banner_infobox-*.png
-banner_daily-*.png
-banner_monthly-*.png
-banner_yearly-*.png
-banner_infobox-*.jpg
-banner_daily-*.jpg
-banner_monthly-*.jpg
-banner_yearly-*.jpg
-banner_infobox-*.gif
-banner_daily-*.gif
-banner_monthly-*.gif
-banner_yearly-*.gif
Binary files 2.2ms2-060817.src/admin/images/oscommerce.gif and 2.2rc2.src/admin/images/oscommerce.gif differ
Binary files 2.2ms2-060817.src/admin/images/oscommerce.png and 2.2rc2.src/admin/images/oscommerce.png differ
diff -ruN 2.2ms2-060817.src/admin/includes/application_bottom.php 2.2rc2.src/admin/includes/application_bottom.php
--- 2.2ms2-060817.src/admin/includes/application_bottom.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/application_bottom.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: application_bottom.php,v 1.8 2002/03/15 02:40:38 hpdl Exp $
+  $Id: application_bottom.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/application_top.php 2.2rc2.src/admin/includes/application_top.php
--- 2.2ms2-060817.src/admin/includes/application_top.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/application_top.php	2008-01-10 09:07:07.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: application_top.php,v 1.162 2003/07/12 09:39:03 hpdl Exp $
+  $Id: application_top.php 1785 2008-01-10 15:07:07Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -16,10 +16,9 @@
 // Set the level of error reporting
   error_reporting(E_ALL & ~E_NOTICE);
 
-// Check if register_globals is enabled.
-// Since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.
-  if (function_exists('ini_get')) {
-    ini_get('register_globals') or exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory.');
+// check support for register_globals
+  if (function_exists('ini_get') && (ini_get('register_globals') == false) && (PHP_VERSION < 4.3) ) {
+    exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory. Please use PHP 4.3+ if register_globals cannot be enabled on the server.');
   }
 
 // Set the local configuration parameters - mainly for developers
@@ -29,7 +28,10 @@
   require('includes/configure.php');
 
 // Define the project version
-  define('PROJECT_VERSION', 'osCommerce 2.2-MS2');
+  define('PROJECT_VERSION', 'osCommerce Online Merchant v2.2 RC2');
+
+// some code to solve compatibility issues
+  require(DIR_WS_FUNCTIONS . 'compatibility.php');
 
 // set php_self in the local scope
   $PHP_SELF = (isset($HTTP_SERVER_VARS['PHP_SELF']) ? $HTTP_SERVER_VARS['PHP_SELF'] : $HTTP_SERVER_VARS['SCRIPT_NAME']);
@@ -76,9 +78,6 @@
 // include shopping cart class
   require(DIR_WS_CLASSES . 'shopping_cart.php');
 
-// some code to solve compatibility issues
-  require(DIR_WS_FUNCTIONS . 'compatibility.php');
-
 // check to see if php implemented session management functions - if not, include php3/php4 compatible session class
   if (!function_exists('session_start')) {
     define('PHP_SESSION_NAME', 'osCAdminID');
@@ -106,6 +105,10 @@
 // lets start our session
   tep_session_start();
 
+  if ( (PHP_VERSION >= 4.3) && function_exists('ini_get') && (ini_get('register_globals') == false) ) {
+    extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS);
+  }
+
 // set the language
   if (!tep_session_is_registered('language') || isset($HTTP_GET_VARS['language'])) {
     if (!tep_session_is_registered('language')) {
@@ -126,6 +129,30 @@
     $languages_id = $lng->language['id'];
   }
 
+// redirect to login page if administrator is not yet logged in
+  if (!tep_session_is_registered('admin')) {
+    $redirect = false;
+
+    $current_page = basename($PHP_SELF);
+
+    if ($current_page != FILENAME_LOGIN) {
+      if (!tep_session_is_registered('redirect_origin')) {
+        tep_session_register('redirect_origin');
+
+        $redirect_origin = array('page' => $current_page,
+                                 'get' => $HTTP_GET_VARS);
+      }
+
+      $redirect = true;
+    }
+
+    if ($redirect == true) {
+      tep_redirect(tep_href_link(FILENAME_LOGIN));
+    }
+
+    unset($redirect);
+  }
+
 // include the language translations
   require(DIR_WS_LANGUAGES . $language . '.php');
   $current_page = basename($PHP_SELF);
diff -ruN 2.2ms2-060817.src/admin/includes/boxes/catalog.php 2.2rc2.src/admin/includes/boxes/catalog.php
--- 2.2ms2-060817.src/admin/includes/boxes/catalog.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/boxes/catalog.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: catalog.php,v 1.21 2003/07/09 01:18:53 hpdl Exp $
+  $Id: catalog.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/boxes/configuration.php 2.2rc2.src/admin/includes/boxes/configuration.php
--- 2.2ms2-060817.src/admin/includes/boxes/configuration.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/boxes/configuration.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: configuration.php,v 1.17 2003/07/09 01:18:53 hpdl Exp $
+  $Id: configuration.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -21,7 +21,7 @@
                      'link'  => tep_href_link(FILENAME_CONFIGURATION, 'gID=1&selected_box=configuration'));
 
   if ($selected_box == 'configuration') {
-    $cfg_groups = '';
+    $cfg_groups = '<a href="' . tep_href_link(FILENAME_ADMINISTRATORS, '', 'NONSSL') . '" class="menuBoxContentLink">' . BOX_CONFIGURATION_ADMINISTRATORS . '</a><br>';
     $configuration_groups_query = tep_db_query("select configuration_group_id as cgID, configuration_group_title as cgTitle from " . TABLE_CONFIGURATION_GROUP . " where visible = '1' order by sort_order");
     while ($configuration_groups = tep_db_fetch_array($configuration_groups_query)) {
       $cfg_groups .= '<a href="' . tep_href_link(FILENAME_CONFIGURATION, 'gID=' . $configuration_groups['cgID'], 'NONSSL') . '" class="menuBoxContentLink">' . $configuration_groups['cgTitle'] . '</a><br>';
diff -ruN 2.2ms2-060817.src/admin/includes/boxes/customers.php 2.2rc2.src/admin/includes/boxes/customers.php
--- 2.2ms2-060817.src/admin/includes/boxes/customers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/boxes/customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: customers.php,v 1.16 2003/07/09 01:18:53 hpdl Exp $
+  $Id: customers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/boxes/localization.php 2.2rc2.src/admin/includes/boxes/localization.php
--- 2.2ms2-060817.src/admin/includes/boxes/localization.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/boxes/localization.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: localization.php,v 1.16 2003/07/09 01:18:53 hpdl Exp $
+  $Id: localization.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/boxes/modules.php 2.2rc2.src/admin/includes/boxes/modules.php
--- 2.2ms2-060817.src/admin/includes/boxes/modules.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/boxes/modules.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: modules.php,v 1.16 2003/07/09 01:18:53 hpdl Exp $
+  $Id: modules.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/boxes/reports.php 2.2rc2.src/admin/includes/boxes/reports.php
--- 2.2ms2-060817.src/admin/includes/boxes/reports.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/boxes/reports.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: reports.php,v 1.5 2003/07/09 01:18:53 hpdl Exp $
+  $Id: reports.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/boxes/taxes.php 2.2rc2.src/admin/includes/boxes/taxes.php
--- 2.2ms2-060817.src/admin/includes/boxes/taxes.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/boxes/taxes.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: taxes.php,v 1.17 2003/07/09 01:18:53 hpdl Exp $
+  $Id: taxes.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/boxes/tools.php 2.2rc2.src/admin/includes/boxes/tools.php
--- 2.2ms2-060817.src/admin/includes/boxes/tools.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/boxes/tools.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tools.php,v 1.21 2003/07/09 01:18:53 hpdl Exp $
+  $Id: tools.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/box.php 2.2rc2.src/admin/includes/classes/box.php
--- 2.2ms2-060817.src/admin/includes/classes/box.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/box.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: box.php,v 1.7 2003/06/20 16:23:08 hpdl Exp $
+  $Id: box.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/currencies.php 2.2rc2.src/admin/includes/classes/currencies.php
--- 2.2ms2-060817.src/admin/includes/classes/currencies.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/currencies.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: currencies.php,v 1.3 2003/06/20 16:23:08 hpdl Exp $
+  $Id: currencies.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -52,8 +52,8 @@
       return $this->currencies[$code]['value'];
     }
 
-    function display_price($products_price, $products_tax, $quantity = 1) {
-      return $this->format(tep_add_tax($products_price, $products_tax) * $quantity);
+    function display_price($products_price, $products_tax, $quantity = 1, $currency_type = DEFAULT_CURRENCY) {
+      return $this->format(tep_round(tep_add_tax($products_price, $products_tax), $this->currencies[$currency_type]['decimal_places']) * $quantity);
     }
   }
 ?>
diff -ruN 2.2ms2-060817.src/admin/includes/classes/email.php 2.2rc2.src/admin/includes/classes/email.php
--- 2.2ms2-060817.src/admin/includes/classes/email.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/email.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: email.php,v 1.8 2003/06/11 22:24:34 dgw_ Exp $
+  $Id: email.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/language.php 2.2rc2.src/admin/includes/classes/language.php
--- 2.2ms2-060817.src/admin/includes/classes/language.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/language.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: language.php,v 1.1 2003/06/20 00:18:30 hpdl Exp $
+  $Id: language.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/logger.php 2.2rc2.src/admin/includes/classes/logger.php
--- 2.2ms2-060817.src/admin/includes/classes/logger.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/logger.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: logger.php,v 1.3 2003/06/20 16:23:08 hpdl Exp $
+  $Id: logger.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/message_stack.php 2.2rc2.src/admin/includes/classes/message_stack.php
--- 2.2ms2-060817.src/admin/includes/classes/message_stack.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/message_stack.php	2007-12-20 08:57:13.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: message_stack.php,v 1.6 2003/06/20 16:23:08 hpdl Exp $
+  $Id: message_stack.php 1740 2007-12-20 14:57:13Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/mime.php 2.2rc2.src/admin/includes/classes/mime.php
--- 2.2ms2-060817.src/admin/includes/classes/mime.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/mime.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: mime.php,v 1.4 2003/06/11 22:24:34 dgw_ Exp $
+  $Id: mime.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/object_info.php 2.2rc2.src/admin/includes/classes/object_info.php
--- 2.2ms2-060817.src/admin/includes/classes/object_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/object_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: object_info.php,v 1.6 2003/06/20 16:23:08 hpdl Exp $
+  $Id: object_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/order.php 2.2rc2.src/admin/includes/classes/order.php
--- 2.2ms2-060817.src/admin/includes/classes/order.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/order.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: order.php,v 1.7 2003/06/20 16:23:08 hpdl Exp $
+  $Id: order.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/phplot.php 2.2rc2.src/admin/includes/classes/phplot.php
--- 2.2ms2-060817.src/admin/includes/classes/phplot.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/phplot.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: phplot.php,v 1.2 2003/06/20 16:23:08 hpdl Exp $
+  $Id: phplot.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/sessions.php 2.2rc2.src/admin/includes/classes/sessions.php
--- 2.2ms2-060817.src/admin/includes/classes/sessions.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/sessions.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: sessions.php,v 1.11 2003/06/20 16:23:08 hpdl Exp $
+  $Id: sessions.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/shopping_cart.php 2.2rc2.src/admin/includes/classes/shopping_cart.php
--- 2.2ms2-060817.src/admin/includes/classes/shopping_cart.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/shopping_cart.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: shopping_cart.php,v 1.10 2003/06/23 01:18:56 hpdl Exp $
+  $Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/classes/split_page_results.php 2.2rc2.src/admin/includes/classes/split_page_results.php
--- 2.2ms2-060817.src/admin/includes/classes/split_page_results.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/split_page_results.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: split_page_results.php,v 1.13 2003/05/05 17:56:50 dgw_ Exp $
+  $Id: split_page_results.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -77,9 +77,7 @@
           }
         }
 
-        if (SID) $display_links .= tep_draw_hidden_field(tep_session_name(), tep_session_id());
-
-        $display_links .= '</form>';
+        $display_links .= tep_hide_session_id() . '</form>';
       } else {
         $display_links = sprintf(TEXT_RESULT_PAGE, $num_pages, $num_pages);
       }
diff -ruN 2.2ms2-060817.src/admin/includes/classes/table_block.php 2.2rc2.src/admin/includes/classes/table_block.php
--- 2.2ms2-060817.src/admin/includes/classes/table_block.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/table_block.php	2007-12-20 20:29:49.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: table_block.php,v 1.8 2003/06/20 15:51:18 hpdl Exp $
+  $Id: table_block.php 1745 2007-12-21 02:29:49Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -41,10 +41,10 @@
 
         if (isset($contents[$i][0]) && is_array($contents[$i][0])) {
           for ($x=0, $y=sizeof($contents[$i]); $x<$y; $x++) {
-            if (isset($contents[$i][$x]['text']) && tep_not_null(isset($contents[$i][$x]['text']))) {
+            if (isset($contents[$i][$x]['text']) && tep_not_null($contents[$i][$x]['text'])) {
               $tableBox_string .= '    <td';
               if (isset($contents[$i][$x]['align']) && tep_not_null($contents[$i][$x]['align'])) $tableBox_string .= ' align="' . $contents[$i][$x]['align'] . '"';
-              if (isset($contents[$i][$x]['params']) && tep_not_null(isset($contents[$i][$x]['params']))) {
+              if (isset($contents[$i][$x]['params']) && tep_not_null($contents[$i][$x]['params'])) {
                 $tableBox_string .= ' ' . $contents[$i][$x]['params'];
               } elseif (tep_not_null($this->table_data_parameters)) {
                 $tableBox_string .= ' ' . $this->table_data_parameters;
diff -ruN 2.2ms2-060817.src/admin/includes/classes/upload.php 2.2rc2.src/admin/includes/classes/upload.php
--- 2.2ms2-060817.src/admin/includes/classes/upload.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/classes/upload.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: upload.php,v 1.2 2003/06/20 00:18:30 hpdl Exp $
+  $Id: upload.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -33,25 +33,20 @@
     }
 
     function parse() {
-      global $messageStack;
+      global $HTTP_POST_FILES, $messageStack;
+
+      $file = array();
 
       if (isset($_FILES[$this->file])) {
         $file = array('name' => $_FILES[$this->file]['name'],
                       'type' => $_FILES[$this->file]['type'],
                       'size' => $_FILES[$this->file]['size'],
                       'tmp_name' => $_FILES[$this->file]['tmp_name']);
-      } elseif (isset($GLOBALS['HTTP_POST_FILES'][$this->file])) {
-        global $HTTP_POST_FILES;
-
+      } elseif (isset($HTTP_POST_FILES[$this->file])) {
         $file = array('name' => $HTTP_POST_FILES[$this->file]['name'],
                       'type' => $HTTP_POST_FILES[$this->file]['type'],
                       'size' => $HTTP_POST_FILES[$this->file]['size'],
                       'tmp_name' => $HTTP_POST_FILES[$this->file]['tmp_name']);
-      } else {
-        $file = array('name' => (isset($GLOBALS[$this->file . '_name']) ? $GLOBALS[$this->file . '_name'] : ''),
-                      'type' => (isset($GLOBALS[$this->file . '_type']) ? $GLOBALS[$this->file . '_type'] : ''),
-                      'size' => (isset($GLOBALS[$this->file . '_size']) ? $GLOBALS[$this->file . '_size'] : ''),
-                      'tmp_name' => (isset($GLOBALS[$this->file]) ? $GLOBALS[$this->file] : ''));
       }
 
       if ( tep_not_null($file['tmp_name']) && ($file['tmp_name'] != 'none') && is_uploaded_file($file['tmp_name']) ) {
diff -ruN 2.2ms2-060817.src/admin/includes/column_left.php 2.2rc2.src/admin/includes/column_left.php
--- 2.2ms2-060817.src/admin/includes/column_left.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/column_left.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: column_left.php,v 1.15 2002/01/11 05:03:25 hpdl Exp $
+  $Id: column_left.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/configure.php 2.2rc2.src/admin/includes/configure.php
--- 2.2ms2-060817.src/admin/includes/configure.php	2006-08-18 15:52:55.000000000 -0500
+++ 2.2rc2.src/admin/includes/configure.php	2008-01-22 11:55:40.000000000 -0600
@@ -1,27 +1,13 @@
 <?php
-/*
-  $Id: configure.php,v 1.14 2003/02/21 16:55:24 dgw_ Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2002 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-// define our webserver variables
-// FS = Filesystem (physical)
-// WS = Webserver (virtual)
-  define('HTTP_SERVER', '[% url_to_install_without_trailing_slash %]'); // eg, http://localhost - should not be empty for productive servers
+  define('HTTP_SERVER', 'http://[% installed_on_domain %]');
   define('HTTP_CATALOG_SERVER', 'http://[% installed_on_domain %]');
-  define('HTTPS_CATALOG_SERVER', 'https://[% installed_on_domain %]/[% installpath %]');
-  define('ENABLE_SSL_CATALOG', 'false'); // secure webserver for catalog module
-  define('DIR_FS_DOCUMENT_ROOT', $DOCUMENT_ROOT); // where your pages are located on the server. if $DOCUMENT_ROOT doesnt suit you, replace with your local path. (eg, /usr/local/apache/htdocs)
-  define('DIR_WS_ADMIN', '/admin/');
-  define('DIR_FS_ADMIN', DIR_FS_DOCUMENT_ROOT . DIR_WS_ADMIN);
+  define('HTTPS_CATALOG_SERVER', 'http://[% installed_on_domain %]');
+  define('ENABLE_SSL_CATALOG', 'false');
+  define('DIR_FS_DOCUMENT_ROOT', '[% installdir %]');
+  define('DIR_WS_ADMIN', '/[% installpath %]/admin/');
+  define('DIR_FS_ADMIN', '[% installdir %]/admin/');
   define('DIR_WS_CATALOG', '/[% installpath %]/');
-  define('DIR_FS_CATALOG', DIR_FS_DOCUMENT_ROOT . DIR_WS_CATALOG);
+  define('DIR_FS_CATALOG', '[% installdir %]/');
   define('DIR_WS_IMAGES', 'images/');
   define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/');
   define('DIR_WS_CATALOG_IMAGES', DIR_WS_CATALOG . 'images/');
@@ -37,12 +23,10 @@
   define('DIR_FS_CATALOG_MODULES', DIR_FS_CATALOG . 'includes/modules/');
   define('DIR_FS_BACKUP', DIR_FS_ADMIN . 'backups/');
 
-// define our database connection
-  define('DB_SERVER', '[% mysql.osc.sqlhost %]'); // eg, localhost - should not be empty for productive servers
+  define('DB_SERVER', '[% mysql.osc.sqlhost %]');
   define('DB_SERVER_USERNAME', '[% mysql_user %]');
   define('DB_SERVER_PASSWORD', '[% mysql_pass %]');
   define('DB_DATABASE', '[% osc %]');
-  define('DB_TABLE_PREFIX', '[% table_prefix %]_');
-  define('USE_PCONNECT', 'false'); // use persistent connections?
-  define('STORE_SESSIONS', ''); // leave empty '' for default handler or set to 'mysql'
+  define('USE_PCONNECT', 'false');
+  define('STORE_SESSIONS', '');
 ?>
diff -ruN 2.2ms2-060817.src/admin/includes/database_tables.php 2.2rc2.src/admin/includes/database_tables.php
--- 2.2ms2-060817.src/admin/includes/database_tables.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/database_tables.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: database_tables.php,v 1.1 2003/06/20 00:18:30 hpdl Exp $
+  $Id: database_tables.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -13,6 +13,7 @@
 // define the database table names used in the project
   define('TABLE_ADDRESS_BOOK', 'address_book');
   define('TABLE_ADDRESS_FORMAT', 'address_format');
+  define('TABLE_ADMINISTRATORS', 'administrators');
   define('TABLE_BANNERS', 'banners');
   define('TABLE_BANNERS_HISTORY', 'banners_history');
   define('TABLE_CATEGORIES', 'categories');
diff -ruN 2.2ms2-060817.src/admin/includes/filenames.php 2.2rc2.src/admin/includes/filenames.php
--- 2.2ms2-060817.src/admin/includes/filenames.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/filenames.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,16 +1,17 @@
 <?php
 /*
-  $Id: filenames.php,v 1.1 2003/06/20 00:18:30 hpdl Exp $
+  $Id: filenames.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
 
 // define the filenames used in the project
+  define('FILENAME_ADMINISTRATORS', 'administrators.php');
   define('FILENAME_BACKUP', 'backup.php');
   define('FILENAME_BANNER_MANAGER', 'banner_manager.php');
   define('FILENAME_BANNER_STATISTICS', 'banner_statistics.php');
@@ -26,6 +27,7 @@
   define('FILENAME_FILE_MANAGER', 'file_manager.php');
   define('FILENAME_GEO_ZONES', 'geo_zones.php');
   define('FILENAME_LANGUAGES', 'languages.php');
+  define('FILENAME_LOGIN', 'login.php');
   define('FILENAME_MAIL', 'mail.php');
   define('FILENAME_MANUFACTURERS', 'manufacturers.php');
   define('FILENAME_MODULES', 'modules.php');
diff -ruN 2.2ms2-060817.src/admin/includes/footer.php 2.2rc2.src/admin/includes/footer.php
--- 2.2ms2-060817.src/admin/includes/footer.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/footer.php	2008-01-10 09:07:07.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: footer.php,v 1.12 2003/02/17 16:54:12 hpdl Exp $
+  $Id: footer.php 1785 2008-01-10 15:07:07Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -18,19 +18,19 @@
 /*
   The following copyright announcement is in compliance
   to section 2c of the GNU General Public License, and
-  thus can not be removed, or can only be modified
-  appropriately.
+  can not be removed, or can only be modified
+  appropriately with additional copyright notices.
 
   For more information please read the osCommerce
   Copyright Policy at:
 
   http://www.oscommerce.com/about/copyright
 
-  Please leave this comment intact together with the
-  following copyright announcement.
+  This comment must be left intact together with the
+  copyright announcement.
 */
 ?>
-E-Commerce Engine Copyright &copy; 2005 <a href="http://www.oscommerce.com" target="_blank">osCommerce</a><br>
+osCommerce Online Merchant Copyright &copy; 2008 <a href="http://www.oscommerce.com" target="_blank">osCommerce</a><br>
 osCommerce provides no warranty and is redistributable under the <a href="http://www.fsf.org/licenses/gpl.txt" target="_blank">GNU General Public License</a>
     </td>
   </tr>
diff -ruN 2.2ms2-060817.src/admin/includes/functions/compatibility.php 2.2rc2.src/admin/includes/functions/compatibility.php
--- 2.2ms2-060817.src/admin/includes/functions/compatibility.php	2006-08-16 16:48:23.000000000 -0500
+++ 2.2rc2.src/admin/includes/functions/compatibility.php	2007-12-20 22:00:47.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: compatibility.php,v 1.10 2003/06/23 01:20:05 hpdl Exp $
+  $Id: compatibility.php 1748 2007-12-21 04:00:47Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2006 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -18,6 +18,7 @@
   function do_magic_quotes_gpc(&$ar) {
     if (!is_array($ar)) return false;
 
+    reset($ar);
     while (list($key, $value) = each($ar)) {
       if (is_array($ar[$key])) {
         do_magic_quotes_gpc($ar[$key]);
@@ -25,12 +26,21 @@
         $ar[$key] = addslashes($value);
       }
     }
+    reset($ar);
   }
 
-// $HTTP_xxx_VARS are always set on php4
-  if (!is_array($HTTP_GET_VARS)) $HTTP_GET_VARS = array();
-  if (!is_array($HTTP_POST_VARS)) $HTTP_POST_VARS = array();
-  if (!is_array($HTTP_COOKIE_VARS)) $HTTP_COOKIE_VARS = array();
+  if (PHP_VERSION >= 4.1) {
+    $HTTP_GET_VARS =& $_GET;
+    $HTTP_POST_VARS =& $_POST;
+    $HTTP_COOKIE_VARS =& $_COOKIE;
+    $HTTP_SESSION_VARS =& $_SESSION;
+    $HTTP_POST_FILES =& $_FILES;
+    $HTTP_SERVER_VARS =& $_SERVER;
+  } else {
+    if (!is_array($HTTP_GET_VARS)) $HTTP_GET_VARS = array();
+    if (!is_array($HTTP_POST_VARS)) $HTTP_POST_VARS = array();
+    if (!is_array($HTTP_COOKIE_VARS)) $HTTP_COOKIE_VARS = array();
+  }
 
 // handle magic_quotes_gpc turned off.
   if (!get_magic_quotes_gpc()) {
@@ -153,4 +163,78 @@
       return $new_array;
     }
   }
+
+/*
+ * http_build_query() natively supported from PHP 5.0
+ * From Pear::PHP_Compat
+ */
+
+  if ( !function_exists('http_build_query') && (PHP_VERSION >= 4)) {
+    function http_build_query($formdata, $numeric_prefix = null, $arg_separator = null) {
+// If $formdata is an object, convert it to an array
+      if ( is_object($formdata) ) {
+        $formdata = get_object_vars($formdata);
+      }
+
+// Check we have an array to work with
+      if ( !is_array($formdata) || !empty($formdata) ) {
+        return false;
+      }
+
+// Argument seperator
+      if ( empty($arg_separator) ) {
+        $arg_separator = ini_get('arg_separator.output');
+
+        if ( empty($arg_separator) ) {
+          $arg_separator = '&';
+        }
+      }
+
+// Start building the query
+      $tmp = array();
+
+      foreach ( $formdata as $key => $val ) {
+        if ( is_null($val) ) {
+          continue;
+        }
+
+        if ( is_integer($key) && ( $numeric_prefix != null ) ) {
+          $key = $numeric_prefix . $key;
+        }
+
+        if ( is_scalar($val) ) {
+          array_push($tmp, urlencode($key) . '=' . urlencode($val));
+          continue;
+        }
+
+// If the value is an array, recursively parse it
+        if ( is_array($val) || is_object($val) ) {
+          array_push($tmp, http_build_query_helper($val, urlencode($key), $arg_separator));
+          continue;
+        }
+
+// The value is a resource
+        return null;
+      }
+
+      return implode($arg_separator, $tmp);
+    }
+
+// Helper function
+    function http_build_query_helper($array, $name, $arg_separator) {
+      $tmp = array();
+
+      foreach ( $array as $key => $value ) {
+        if ( is_array($value) ) {
+          array_push($tmp, http_build_query_helper($value, sprintf('%s[%s]', $name, $key), $arg_separator));
+        } elseif ( is_scalar($value) ) {
+          array_push($tmp, sprintf('%s[%s]=%s', $name, urlencode($key), urlencode($value)));
+        } elseif ( is_object($value) ) {
+          array_push($tmp, http_build_query_helper(get_object_vars($value), sprintf('%s[%s]', $name, $key), $arg_separator));
+        }
+      }
+
+      return implode($arg_separator, $tmp);
+    }
+  }
 ?>
diff -ruN 2.2ms2-060817.src/admin/includes/functions/database.php 2.2rc2.src/admin/includes/functions/database.php
--- 2.2ms2-060817.src/admin/includes/functions/database.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/functions/database.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: database.php,v 1.23 2003/06/20 00:18:30 hpdl Exp $
+  $Id: database.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -111,8 +111,10 @@
     return mysql_data_seek($db_query, $row_number);
   }
 
-  function tep_db_insert_id() {
-    return mysql_insert_id();
+  function tep_db_insert_id($link = 'db_link') {
+    global $$link;
+
+    return mysql_insert_id($$link);
   }
 
   function tep_db_free_result($db_query) {
diff -ruN 2.2ms2-060817.src/admin/includes/functions/general.php 2.2rc2.src/admin/includes/functions/general.php
--- 2.2ms2-060817.src/admin/includes/functions/general.php	2006-08-17 16:47:00.000000000 -0500
+++ 2.2rc2.src/admin/includes/functions/general.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: general.php,v 1.160 2003/07/12 08:32:47 hpdl Exp $
+  $Id: general.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -1133,21 +1133,17 @@
 
 ////
 // Add tax to a products price
-  function tep_add_tax($price, $tax) {
-    global $currencies;
-
-    if (DISPLAY_PRICE_WITH_TAX == 'true') {
-      return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']) + tep_calculate_tax($price, $tax);
+  function tep_add_tax($price, $tax, $override = false) {
+    if ( ( (DISPLAY_PRICE_WITH_TAX == 'true') || ($override == true) ) && ($tax > 0) ) {
+      return $price + tep_calculate_tax($price, $tax);
     } else {
-      return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']);
+      return $price;
     }
   }
 
 // Calculates Tax rounding the result
   function tep_calculate_tax($price, $tax) {
-    global $currencies;
-
-    return tep_round($price * $tax / 100, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']);
+    return $price * $tax / 100;
   }
 
 ////
diff -ruN 2.2ms2-060817.src/admin/includes/functions/html_graphs.php 2.2rc2.src/admin/includes/functions/html_graphs.php
--- 2.2ms2-060817.src/admin/includes/functions/html_graphs.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/functions/html_graphs.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: html_graphs.php,v 1.7 2003/06/20 00:18:31 hpdl Exp $
+  $Id: html_graphs.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/functions/html_output.php 2.2rc2.src/admin/includes/functions/html_output.php
--- 2.2ms2-060817.src/admin/includes/functions/html_output.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/functions/html_output.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: html_output.php,v 1.29 2003/06/25 20:32:44 hpdl Exp $
+  $Id: html_output.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -170,11 +170,19 @@
 ////
 // Output a form input field
   function tep_draw_input_field($name, $value = '', $parameters = '', $required = false, $type = 'text', $reinsert_value = true) {
+    global $HTTP_GET_VARS, $HTTP_POST_VARS;
+
     $field = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"';
 
-    if (isset($GLOBALS[$name]) && ($reinsert_value == true) && is_string($GLOBALS[$name])) {
-      $field .= ' value="' . tep_output_string(stripslashes($GLOBALS[$name])) . '"';
-    } elseif (tep_not_null($value)) {
+    if ( ($reinsert_value == true) && ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) ) {
+      if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) {
+        $value = stripslashes($HTTP_GET_VARS[$name]);
+      } elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) {
+        $value = stripslashes($HTTP_POST_VARS[$name]);
+      }
+    }
+
+    if (tep_not_null($value)) {
       $field .= ' value="' . tep_output_string($value) . '"';
     }
 
@@ -206,11 +214,13 @@
 ////
 // Output a selection field - alias function for tep_draw_checkbox_field() and tep_draw_radio_field()
   function tep_draw_selection_field($name, $type, $value = '', $checked = false, $compare = '') {
+    global $HTTP_GET_VARS, $HTTP_POST_VARS;
+
     $selection = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"';
 
     if (tep_not_null($value)) $selection .= ' value="' . tep_output_string($value) . '"';
 
-    if ( ($checked == true) || (isset($GLOBALS[$name]) && is_string($GLOBALS[$name]) && ($GLOBALS[$name] == 'on')) || (isset($value) && isset($GLOBALS[$name]) && (stripslashes($GLOBALS[$name]) == $value)) || (tep_not_null($value) && tep_not_null($compare) && ($value == $compare)) ) {
+    if ( ($checked == true) || (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name]) && (($HTTP_GET_VARS[$name] == 'on') || (stripslashes($HTTP_GET_VARS[$name]) == $value))) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name]) && (($HTTP_POST_VARS[$name] == 'on') || (stripslashes($HTTP_POST_VARS[$name]) == $value))) || (tep_not_null($compare) && ($value == $compare)) ) {
       $selection .= ' CHECKED';
     }
 
@@ -234,14 +244,20 @@
 ////
 // Output a form textarea field
   function tep_draw_textarea_field($name, $wrap, $width, $height, $text = '', $parameters = '', $reinsert_value = true) {
+    global $HTTP_GET_VARS, $HTTP_POST_VARS;
+
     $field = '<textarea name="' . tep_output_string($name) . '" wrap="' . tep_output_string($wrap) . '" cols="' . tep_output_string($width) . '" rows="' . tep_output_string($height) . '"';
 
     if (tep_not_null($parameters)) $field .= ' ' . $parameters;
 
     $field .= '>';
 
-    if ( (isset($GLOBALS[$name])) && ($reinsert_value == true) ) {
-      $field .= tep_output_string_protected(stripslashes($GLOBALS[$name]));
+    if ( ($reinsert_value == true) && ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) ) {
+      if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) {
+        $field .= tep_output_string_protected(stripslashes($HTTP_GET_VARS[$name]));
+      } elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) {
+        $field .= tep_output_string_protected(stripslashes($HTTP_POST_VARS[$name]));
+      }
     } elseif (tep_not_null($text)) {
       $field .= tep_output_string_protected($text);
     }
@@ -254,12 +270,18 @@
 ////
 // Output a form hidden field
   function tep_draw_hidden_field($name, $value = '', $parameters = '') {
+    global $HTTP_GET_VARS, $HTTP_POST_VARS;
+
     $field = '<input type="hidden" name="' . tep_output_string($name) . '"';
 
     if (tep_not_null($value)) {
       $field .= ' value="' . tep_output_string($value) . '"';
-    } elseif (isset($GLOBALS[$name]) && is_string($GLOBALS[$name])) {
-      $field .= ' value="' . tep_output_string(stripslashes($GLOBALS[$name])) . '"';
+    } elseif ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) {
+      if ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) ) {
+        $field .= ' value="' . tep_output_string(stripslashes($HTTP_GET_VARS[$name])) . '"';
+      } elseif ( (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) {
+        $field .= ' value="' . tep_output_string(stripslashes($HTTP_POST_VARS[$name])) . '"';
+      }
     }
 
     if (tep_not_null($parameters)) $field .= ' ' . $parameters;
@@ -270,15 +292,35 @@
   }
 
 ////
+// Hide form elements
+  function tep_hide_session_id() {
+    $string = '';
+
+    if (defined('SID') && tep_not_null(SID)) {
+      $string = tep_draw_hidden_field(tep_session_name(), tep_session_id());
+    }
+
+    return $string;
+  }
+
+////
 // Output a form pull down menu
   function tep_draw_pull_down_menu($name, $values, $default = '', $parameters = '', $required = false) {
+    global $HTTP_GET_VARS, $HTTP_POST_VARS;
+
     $field = '<select name="' . tep_output_string($name) . '"';
 
     if (tep_not_null($parameters)) $field .= ' ' . $parameters;
 
     $field .= '>';
 
-    if (empty($default) && isset($GLOBALS[$name])) $default = stripslashes($GLOBALS[$name]);
+    if (empty($default) && ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) ) {
+      if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) {
+        $default = stripslashes($HTTP_GET_VARS[$name]);
+      } elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) {
+        $default = stripslashes($HTTP_POST_VARS[$name]);
+      }
+    }
 
     for ($i=0, $n=sizeof($values); $i<$n; $i++) {
       $field .= '<option value="' . tep_output_string($values[$i]['id']) . '"';
diff -ruN 2.2ms2-060817.src/admin/includes/functions/languages.php 2.2rc2.src/admin/includes/functions/languages.php
--- 2.2ms2-060817.src/admin/includes/functions/languages.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/functions/languages.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: languages.php,v 1.6 2003/06/20 16:23:08 hpdl Exp $
+  $Id: languages.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/functions/localization.php 2.2rc2.src/admin/includes/functions/localization.php
--- 2.2ms2-060817.src/admin/includes/functions/localization.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/functions/localization.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: localization.php,v 1.12 2003/06/25 20:36:48 hpdl Exp $
+  $Id: localization.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/functions/password_funcs.php 2.2rc2.src/admin/includes/functions/password_funcs.php
--- 2.2ms2-060817.src/admin/includes/functions/password_funcs.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/functions/password_funcs.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,46 @@
+<?php
+/*
+  $Id: password_funcs.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2003 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+////
+// This funstion validates a plain text password with an
+// encrpyted password
+  function tep_validate_password($plain, $encrypted) {
+    if (tep_not_null($plain) && tep_not_null($encrypted)) {
+// split apart the hash / salt
+      $stack = explode(':', $encrypted);
+
+      if (sizeof($stack) != 2) return false;
+
+      if (md5($stack[1] . $plain) == $stack[0]) {
+        return true;
+      }
+    }
+
+    return false;
+  }
+
+////
+// This function makes a new password from a plaintext password. 
+  function tep_encrypt_password($plain) {
+    $password = '';
+
+    for ($i=0; $i<10; $i++) {
+      $password .= tep_rand();
+    }
+
+    $salt = substr(md5($password), 0, 2);
+
+    $password = md5($salt . $plain) . ':' . $salt;
+
+    return $password;
+  }
+?>
diff -ruN 2.2ms2-060817.src/admin/includes/functions/sessions.php 2.2rc2.src/admin/includes/functions/sessions.php
--- 2.2ms2-060817.src/admin/includes/functions/sessions.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/functions/sessions.php	2007-12-20 23:59:30.000000000 -0600
@@ -1,15 +1,20 @@
 <?php
 /*
-  $Id: sessions.php,v 1.9 2003/06/23 01:20:05 hpdl Exp $
+  $Id: sessions.php 1752 2007-12-21 05:59:30Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
 
+  if ( (PHP_VERSION >= 4.3) && ((bool)ini_get('register_globals') == false) ) {
+    @ini_set('session.bug_compat_42', 1);
+    @ini_set('session.bug_compat_warn', 0);
+  }
+
   if (STORE_SESSIONS == 'mysql') {
     if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) {
       $SESS_LIFE = 1440;
@@ -24,14 +29,14 @@
     }
 
     function _sess_read($key) {
-      $qid = tep_db_query("select value from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "' and expiry > '" . time() . "'");
+      $value_query = tep_db_query("select value from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "' and expiry > '" . time() . "'");
+      $value = tep_db_fetch_array($value_query);
 
-      $value = tep_db_fetch_array($qid);
-      if ($value['value']) {
+      if (isset($value['value'])) {
         return $value['value'];
       }
 
-      return false;
+      return '';
     }
 
     function _sess_write($key, $val) {
@@ -40,10 +45,10 @@
       $expiry = time() + $SESS_LIFE;
       $value = $val;
 
-      $qid = tep_db_query("select count(*) as total from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "'");
-      $total = tep_db_fetch_array($qid);
+      $check_query = tep_db_query("select count(*) as total from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "'");
+      $check = tep_db_fetch_array($check_query);
 
-      if ($total['total'] > 0) {
+      if ($check['total'] > 0) {
         return tep_db_query("update " . TABLE_SESSIONS . " set expiry = '" . tep_db_input($expiry) . "', value = '" . tep_db_input($value) . "' where sesskey = '" . tep_db_input($key) . "'");
       } else {
         return tep_db_query("insert into " . TABLE_SESSIONS . " values ('" . tep_db_input($key) . "', '" . tep_db_input($expiry) . "', '" . tep_db_input($value) . "')");
@@ -64,19 +69,67 @@
   }
 
   function tep_session_start() {
+    global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS;
+
+    $sane_session_id = true;
+
+    if (isset($HTTP_GET_VARS[tep_session_name()])) {
+      if (preg_match('/^[a-zA-Z0-9]+$/', $HTTP_GET_VARS[tep_session_name()]) == false) {
+        unset($HTTP_GET_VARS[tep_session_name()]);
+
+        $sane_session_id = false;
+      }
+    } elseif (isset($HTTP_POST_VARS[tep_session_name()])) {
+      if (preg_match('/^[a-zA-Z0-9]+$/', $HTTP_POST_VARS[tep_session_name()]) == false) {
+        unset($HTTP_POST_VARS[tep_session_name()]);
+
+        $sane_session_id = false;
+      }
+    } elseif (isset($HTTP_COOKIE_VARS[tep_session_name()])) {
+      if (preg_match('/^[a-zA-Z0-9]+$/', $HTTP_COOKIE_VARS[tep_session_name()]) == false) {
+        $session_data = session_get_cookie_params();
+
+        setcookie(tep_session_name(), '', time()-42000, $session_data['path'], $session_data['domain']);
+
+        $sane_session_id = false;
+      }
+    }
+
+    if ($sane_session_id == false) {
+      tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false));
+    }
+
     return session_start();
   }
 
   function tep_session_register($variable) {
-    return session_register($variable);
+    if (PHP_VERSION < 4.3) {
+      return session_register($variable);
+    } else {
+      if (isset($GLOBALS[$variable])) {
+        $_SESSION[$variable] =& $GLOBALS[$variable];
+      } else {
+        $_SESSION[$variable] = null;
+      }
+    }
+
+    return false;
   }
 
   function tep_session_is_registered($variable) {
-    return session_is_registered($variable);
+    if (PHP_VERSION < 4.3) {
+      return session_is_registered($variable);
+    } else {
+      return array_key_exists($variable, $_SESSION);
+    }
   }
 
   function tep_session_unregister($variable) {
-    return session_unregister($variable);
+    if (PHP_VERSION < 4.3) {
+      return session_unregister($variable);
+    } else {
+      unset($_SESSION[$variable]);
+    }
   }
 
   function tep_session_id($sessid = '') {
@@ -96,7 +149,9 @@
   }
 
   function tep_session_close() {
-    if (function_exists('session_close')) {
+    if (PHP_VERSION >= '4.0.4') {
+      return session_write_close();
+    } elseif (function_exists('session_close')) {
       return session_close();
     }
   }
diff -ruN 2.2ms2-060817.src/admin/includes/functions/validations.php 2.2rc2.src/admin/includes/functions/validations.php
--- 2.2ms2-060817.src/admin/includes/functions/validations.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/functions/validations.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: validations.php,v 1.1 2003/03/15 14:38:38 project3000 Exp $
+  $Id: validations.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/general.js 2.2rc2.src/admin/includes/general.js
--- 2.2ms2-060817.src/admin/includes/general.js	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/general.js	2007-12-19 18:52:16.000000000 -0600
@@ -1,19 +1,24 @@
 function SetFocus() {
   if (document.forms.length > 0) {
-    var field = document.forms[0];
-    for (i=0; i<field.length; i++) {
-      if ( (field.elements[i].type != "image") &&
-           (field.elements[i].type != "hidden") &&
-           (field.elements[i].type != "reset") &&
-           (field.elements[i].type != "submit") ) {
-
-        document.forms[0].elements[i].focus();
-
-        if ( (field.elements[i].type == "text") ||
-             (field.elements[i].type == "password") )
-          document.forms[0].elements[i].select();
+    isNotAdminLanguage:
+    for (f=0; f<document.forms.length; f++) {
+      if (document.forms[f].name != "adminlanguage") {
+        var field = document.forms[f];
+        for (i=0; i<field.length; i++) {
+          if ( (field.elements[i].type != "image") &&
+               (field.elements[i].type != "hidden") &&
+               (field.elements[i].type != "reset") &&
+               (field.elements[i].type != "submit") ) {
 
-        break;
+            document.forms[f].elements[i].focus();
+
+            if ( (field.elements[i].type == "text") ||
+                 (field.elements[i].type == "password") )
+              document.forms[f].elements[i].select();
+
+            break isNotAdminLanguage;
+          }
+        }
       }
     }
   }
@@ -26,3 +31,21 @@
 function rowOutEffect(object) {
   if (object.className == 'dataTableRowOver') object.className = 'dataTableRow';
 }
+
+function toggleDivBlock(id) {
+  if (document.getElementById) {
+    itm = document.getElementById(id);
+  } else if (document.all){
+    itm = document.all[id];
+  } else if (document.layers){
+    itm = document.layers[id];
+  }
+
+  if (itm) {
+    if (itm.style.display != "none") {
+      itm.style.display = "none";
+    } else {
+      itm.style.display = "block";
+    }
+  }
+}
diff -ruN 2.2ms2-060817.src/admin/includes/graphs/banner_daily.php 2.2rc2.src/admin/includes/graphs/banner_daily.php
--- 2.2ms2-060817.src/admin/includes/graphs/banner_daily.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/graphs/banner_daily.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_daily.php,v 1.2 2002/05/09 14:09:38 hpdl Exp $
+  $Id: banner_daily.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/graphs/banner_infobox.php 2.2rc2.src/admin/includes/graphs/banner_infobox.php
--- 2.2ms2-060817.src/admin/includes/graphs/banner_infobox.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/graphs/banner_infobox.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_infobox.php,v 1.3 2003/07/11 18:15:42 project3000 Exp $
+  $Id: banner_infobox.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/graphs/banner_monthly.php 2.2rc2.src/admin/includes/graphs/banner_monthly.php
--- 2.2ms2-060817.src/admin/includes/graphs/banner_monthly.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/graphs/banner_monthly.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_monthly.php,v 1.3 2002/05/09 18:28:46 dgw_ Exp $
+  $Id: banner_monthly.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/graphs/banner_yearly.php 2.2rc2.src/admin/includes/graphs/banner_yearly.php
--- 2.2ms2-060817.src/admin/includes/graphs/banner_yearly.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/graphs/banner_yearly.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_yearly.php,v 1.3 2002/05/09 18:28:46 dgw_ Exp $
+  $Id: banner_yearly.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/header.php 2.2rc2.src/admin/includes/header.php
--- 2.2ms2-060817.src/admin/includes/header.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/header.php	2008-01-10 09:07:07.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: header.php,v 1.19 2002/04/13 16:11:52 hpdl Exp $
+  $Id: header.php 1785 2008-01-10 15:07:07Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -16,11 +16,10 @@
 ?>
 <table border="0" width="100%" cellspacing="0" cellpadding="0">
   <tr>
-    <td><?php echo tep_image(DIR_WS_IMAGES . 'oscommerce.gif', 'osCommerce', '204', '50'); ?></td>
-    <td align="right"><?php echo '<a href="http://www.oscommerce.com" target="_blank">' . tep_image(DIR_WS_IMAGES . 'header_support.gif', HEADER_TITLE_SUPPORT_SITE, '50', '50') . '</a>&nbsp;&nbsp;<a href="' . tep_catalog_href_link() . '">' . tep_image(DIR_WS_IMAGES . 'header_checkout.gif', HEADER_TITLE_ONLINE_CATALOG, '53', '50') . '</a>&nbsp;&nbsp;<a href="' . tep_href_link(FILENAME_DEFAULT, '', 'NONSSL') . '">' . tep_image(DIR_WS_IMAGES . 'header_administration.gif', HEADER_TITLE_ADMINISTRATION, '50', '50') . '</a>'; ?>&nbsp;&nbsp;</td>
+    <td colspan="2"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT, '', 'NONSSL') . '">' . tep_image(DIR_WS_IMAGES . 'oscommerce.png', PROJECT_VERSION) . '</a>'; ?></td>
   </tr>
   <tr class="headerBar">
-    <td class="headerBarContent">&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT, '', 'NONSSL') . '" class="headerLink">' . HEADER_TITLE_TOP . '</a>'; ?></td>
-    <td class="headerBarContent" align="right"><?php echo '<a href="http://www.oscommerce.com" class="headerLink">' . HEADER_TITLE_SUPPORT_SITE . '</a> &nbsp;|&nbsp; <a href="' . tep_catalog_href_link() . '" class="headerLink">' . HEADER_TITLE_ONLINE_CATALOG . '</a> &nbsp;|&nbsp; <a href="' . tep_href_link(FILENAME_DEFAULT, '', 'NONSSL') . '" class="headerLink">' . HEADER_TITLE_ADMINISTRATION . '</a>'; ?>&nbsp;&nbsp;</td>
+    <td class="headerBarContent">&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT, '', 'NONSSL') . '" class="headerLink">' . HEADER_TITLE_ADMINISTRATION . '</a> &nbsp;|&nbsp; <a href="' . tep_catalog_href_link() . '" class="headerLink">' . HEADER_TITLE_ONLINE_CATALOG . '</a> &nbsp;|&nbsp; <a href="http://www.oscommerce.com" class="headerLink">' . HEADER_TITLE_SUPPORT_SITE . '</a>'; ?></td>
+    <td class="headerBarContent" align="right"><?php echo (tep_session_is_registered('admin') ? 'Logged in as: ' . $admin['username']  . ' (<a href="' . tep_href_link(FILENAME_LOGIN, 'action=logoff') . '" class="headerLink">Logoff</a>)' : ''); ?>&nbsp;&nbsp;</td>
   </tr>
 </table>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/admin/includes/.htaccess 2.2rc2.src/admin/includes/.htaccess
--- 2.2ms2-060817.src/admin/includes/.htaccess	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/.htaccess	2008-01-09 13:26:55.000000000 -0600
@@ -0,0 +1,22 @@
+# $Id: .htaccess 1775 2008-01-09 19:26:55Z hpdl $
+#
+# This is used with Apache WebServers
+# The following blocks direct HTTP requests in this directory recursively
+#
+# For this to work, you must include the parameter 'Limit' to the AllowOverride configuration
+#
+# Example:
+#
+#<Directory "/usr/local/apache/htdocs">
+#  AllowOverride Limit
+#
+# 'All' with also work. (This configuration is in your apache/conf/httpd.conf file)
+#
+# This does not affect PHP include/require functions
+#
+# Example: http://server/catalog/admin/includes/application_top.php will not work
+
+<Files *.php>
+Order Deny,Allow
+Deny from all
+</Files>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/administrators.php 2.2rc2.src/admin/includes/languages/english/administrators.php
--- 2.2ms2-060817.src/admin/includes/languages/english/administrators.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/administrators.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,27 @@
+<?php
+/*
+  $Id: administrators.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define('HEADING_TITLE', 'Administrators');
+
+define('TABLE_HEADING_ADMINISTRATORS', 'Administrators');
+define('TABLE_HEADING_ACTION', 'Action');
+
+define('TEXT_INFO_INSERT_INTRO', 'Please enter the new administrator with its related data');
+define('TEXT_INFO_EDIT_INTRO', 'Please make any necessary changes');
+define('TEXT_INFO_DELETE_INTRO', 'Are you sure you want to delete this administrator?');
+define('TEXT_INFO_HEADING_NEW_ADMINISTRATOR', 'New Administrator');
+define('TEXT_INFO_USERNAME', 'Username:');
+define('TEXT_INFO_NEW_PASSWORD', 'New Password:');
+define('TEXT_INFO_PASSWORD', 'Password:');
+
+define('ERROR_ADMINISTRATOR_EXISTS', 'Error: Administrator already exists.');
+?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/backup.php 2.2rc2.src/admin/includes/languages/english/backup.php
--- 2.2ms2-060817.src/admin/includes/languages/english/backup.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/backup.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: backup.php,v 1.16 2002/03/16 21:30:02 hpdl Exp $
+  $Id: backup.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/banner_manager.php 2.2rc2.src/admin/includes/languages/english/banner_manager.php
--- 2.2ms2-060817.src/admin/includes/languages/english/banner_manager.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/banner_manager.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_manager.php,v 1.17 2002/08/18 18:54:47 hpdl Exp $
+  $Id: banner_manager.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/banner_statistics.php 2.2rc2.src/admin/includes/languages/english/banner_statistics.php
--- 2.2ms2-060817.src/admin/includes/languages/english/banner_statistics.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/banner_statistics.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_statistics.php,v 1.1 2002/05/07 23:07:11 hpdl Exp $
+  $Id: banner_statistics.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/cache.php 2.2rc2.src/admin/includes/languages/english/cache.php
--- 2.2ms2-060817.src/admin/includes/languages/english/cache.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/cache.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cache.php,v 1.10 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: cache.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/categories.php 2.2rc2.src/admin/includes/languages/english/categories.php
--- 2.2ms2-060817.src/admin/includes/languages/english/categories.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/categories.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: categories.php,v 1.26 2003/07/11 14:40:28 hpdl Exp $
+  $Id: categories.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/configuration.php 2.2rc2.src/admin/includes/languages/english/configuration.php
--- 2.2ms2-060817.src/admin/includes/languages/english/configuration.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/configuration.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: configuration.php,v 1.7 2002/01/04 03:51:40 hpdl Exp $
+  $Id: configuration.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/countries.php 2.2rc2.src/admin/includes/languages/english/countries.php
--- 2.2ms2-060817.src/admin/includes/languages/english/countries.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/countries.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: countries.php,v 1.4 2002/01/12 17:02:18 hpdl Exp $
+  $Id: countries.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/currencies.php 2.2rc2.src/admin/includes/languages/english/currencies.php
--- 2.2ms2-060817.src/admin/includes/languages/english/currencies.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/currencies.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: currencies.php,v 1.12 2003/06/25 20:36:48 hpdl Exp $
+  $Id: currencies.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/customers.php 2.2rc2.src/admin/includes/languages/english/customers.php
--- 2.2ms2-060817.src/admin/includes/languages/english/customers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: customers.php,v 1.12 2002/01/12 18:46:27 hpdl Exp $
+  $Id: customers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/define_language.php 2.2rc2.src/admin/includes/languages/english/define_language.php
--- 2.2ms2-060817.src/admin/includes/languages/english/define_language.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/define_language.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: define_language.php,v 1.3 2002/01/05 12:19:50 hpdl Exp $
+  $Id: define_language.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/file_manager.php 2.2rc2.src/admin/includes/languages/english/file_manager.php
--- 2.2ms2-060817.src/admin/includes/languages/english/file_manager.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/file_manager.php	2007-12-20 20:22:21.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: file_manager.php,v 1.13 2002/08/19 01:45:58 hpdl Exp $
+  $Id: file_manager.php 1744 2007-12-21 02:22:21Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -35,4 +35,5 @@
 define('ERROR_DIRECTORY_NOT_REMOVEABLE', 'Error: I can not remove this directory. Please set the right user permissions on: %s');
 define('ERROR_FILE_NOT_REMOVEABLE', 'Error: I can not remove this file. Please set the right user permissions on: %s');
 define('ERROR_DIRECTORY_DOES_NOT_EXIST', 'Error: Directory does not exist: %s');
+define('ERROR_FILENAME_EMPTY', 'Error: Please enter a filename to store the contents in.');
 ?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/geo_zones.php 2.2rc2.src/admin/includes/languages/english/geo_zones.php
--- 2.2ms2-060817.src/admin/includes/languages/english/geo_zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/geo_zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: geo_zones.php,v 1.7 2003/05/05 20:45:15 dgw_ Exp $
+  $Id: geo_zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
Binary files 2.2ms2-060817.src/admin/includes/languages/english/images/buttons/button_template_admin.psd and 2.2rc2.src/admin/includes/languages/english/images/buttons/button_template_admin.psd differ
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/index.php 2.2rc2.src/admin/includes/languages/english/index.php
--- 2.2ms2-060817.src/admin/includes/languages/english/index.php	2006-08-16 18:06:35.000000000 -0500
+++ 2.2rc2.src/admin/includes/languages/english/index.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: index.php,v 1.2 2002/03/30 11:10:39 hpdl Exp $
+  $Id: index.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/invoice.php 2.2rc2.src/admin/includes/languages/english/invoice.php
--- 2.2ms2-060817.src/admin/includes/languages/english/invoice.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/invoice.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: invoice.php,v 1.1 2002/06/11 18:17:59 dgw_ Exp $
+  $Id: invoice.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/languages.php 2.2rc2.src/admin/includes/languages/english/languages.php
--- 2.2ms2-060817.src/admin/includes/languages/english/languages.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/languages.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: languages.php,v 1.5 2002/01/18 00:46:42 hpdl Exp $
+  $Id: languages.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/login.php 2.2rc2.src/admin/includes/languages/english/login.php
--- 2.2ms2-060817.src/admin/includes/languages/english/login.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/login.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,24 @@
+<?php
+/*
+  $Id: login.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define('HEADING_TITLE', 'Administrator Login');
+
+define('TEXT_USERNAME', 'Username:');
+define('TEXT_PASSWORD', 'Password:');
+
+define('TEXT_CREATE_FIRST_ADMINISTRATOR', 'No administrators exist in the database table. Please fill in the following information to create the first administrator. (A manual login is still required after this step)');
+
+define('ERROR_INVALID_ADMINISTRATOR', 'Error: Invalid administrator login attempt.');
+
+define('BUTTON_LOGIN', 'Login');
+define('BUTTON_CREATE_ADMINISTRATOR', 'Create Administrator');
+?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/mail.php 2.2rc2.src/admin/includes/languages/english/mail.php
--- 2.2ms2-060817.src/admin/includes/languages/english/mail.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/mail.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: mail.php,v 1.8 2002/01/18 17:28:53 hpdl Exp $
+  $Id: mail.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/manufacturers.php 2.2rc2.src/admin/includes/languages/english/manufacturers.php
--- 2.2ms2-060817.src/admin/includes/languages/english/manufacturers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/manufacturers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: manufacturers.php,v 1.10 2002/08/19 01:58:58 hpdl Exp $
+  $Id: manufacturers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/modules/index/customers.php 2.2rc2.src/admin/includes/languages/english/modules/index/customers.php
--- 2.2ms2-060817.src/admin/includes/languages/english/modules/index/customers.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/modules/index/customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,15 @@
+<?php
+/*
+  $Id: customers.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define(ADMIN_INDEX_CUSTOMERS_TITLE, 'Customers');
+define(ADMIN_INDEX_CUSTOMERS_DATE, 'Date');
+?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/modules/index/orders.php 2.2rc2.src/admin/includes/languages/english/modules/index/orders.php
--- 2.2ms2-060817.src/admin/includes/languages/english/modules/index/orders.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/modules/index/orders.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,17 @@
+<?php
+/*
+  $Id: orders.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define('ADMIN_INDEX_ORDERS_TITLE', 'Orders');
+define('ADMIN_INDEX_ORDERS_TOTAL', 'Total');
+define('ADMIN_INDEX_ORDERS_DATE', 'Date');
+define('ADMIN_INDEX_ORDERS_STATUS', 'Status');
+?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/modules/newsletters/newsletter.php 2.2rc2.src/admin/includes/languages/english/modules/newsletters/newsletter.php
--- 2.2ms2-060817.src/admin/includes/languages/english/modules/newsletters/newsletter.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/modules/newsletters/newsletter.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: newsletter.php,v 1.3 2002/03/08 18:38:18 hpdl Exp $
+  $Id: newsletter.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/modules/newsletters/product_notification.php 2.2rc2.src/admin/includes/languages/english/modules/newsletters/product_notification.php
--- 2.2ms2-060817.src/admin/includes/languages/english/modules/newsletters/product_notification.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/modules/newsletters/product_notification.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_notification.php,v 1.3 2002/03/10 01:34:25 hpdl Exp $
+  $Id: product_notification.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/modules.php 2.2rc2.src/admin/includes/languages/english/modules.php
--- 2.2ms2-060817.src/admin/includes/languages/english/modules.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/modules.php	2008-01-11 10:59:17.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: modules.php,v 1.6 2003/05/28 14:07:36 hpdl Exp $
+  $Id: modules.php 1802 2008-01-11 16:59:17Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -18,5 +18,8 @@
 define('TABLE_HEADING_SORT_ORDER', 'Sort Order');
 define('TABLE_HEADING_ACTION', 'Action');
 
+define('TEXT_INFO_VERSION', 'Version:');
+define('TEXT_INFO_ONLINE_STATUS', 'online status');
+
 define('TEXT_MODULE_DIRECTORY', 'Module Directory:');
 ?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/newsletters.php 2.2rc2.src/admin/includes/languages/english/newsletters.php
--- 2.2ms2-060817.src/admin/includes/languages/english/newsletters.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/newsletters.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: newsletters.php,v 1.5 2002/03/08 22:10:08 hpdl Exp $
+  $Id: newsletters.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/orders.php 2.2rc2.src/admin/includes/languages/english/orders.php
--- 2.2ms2-060817.src/admin/includes/languages/english/orders.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/orders.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: orders.php,v 1.25 2003/06/20 00:28:44 hpdl Exp $
+  $Id: orders.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/orders_status.php 2.2rc2.src/admin/includes/languages/english/orders_status.php
--- 2.2ms2-060817.src/admin/includes/languages/english/orders_status.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/orders_status.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: orders_status.php,v 1.5 2002/01/29 14:43:00 hpdl Exp $
+  $Id: orders_status.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -13,6 +13,8 @@
 define('HEADING_TITLE', 'Orders Status');
 
 define('TABLE_HEADING_ORDERS_STATUS', 'Orders Status');
+define('TABLE_HEADING_PUBLIC_STATUS', 'Public Status');
+define('TABLE_HEADING_DOWNLOADS_STATUS', 'Downloads Status');
 define('TABLE_HEADING_ACTION', 'Action');
 
 define('TEXT_INFO_EDIT_INTRO', 'Please make any necessary changes');
@@ -23,6 +25,9 @@
 define('TEXT_INFO_HEADING_EDIT_ORDERS_STATUS', 'Edit Orders Status');
 define('TEXT_INFO_HEADING_DELETE_ORDERS_STATUS', 'Delete Orders Status');
 
+define('TEXT_SET_PUBLIC_STATUS', 'Show the order to the customer at this order status level');
+define('TEXT_SET_DOWNLOADS_STATUS', 'Allow downloads of virtual products at this order status level');
+
 define('ERROR_REMOVE_DEFAULT_ORDER_STATUS', 'Error: The default order status can not be removed. Please set another order status as default, and try again.');
 define('ERROR_STATUS_USED_IN_ORDERS', 'Error: This order status is currently used in orders.');
 define('ERROR_STATUS_USED_IN_HISTORY', 'Error: This order status is currently used in the order status history.');
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/packingslip.php 2.2rc2.src/admin/includes/languages/english/packingslip.php
--- 2.2ms2-060817.src/admin/includes/languages/english/packingslip.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/packingslip.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: packingslip.php,v 1.1 2002/06/11 17:41:55 dgw_ Exp $
+  $Id: packingslip.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/products_attributes.php 2.2rc2.src/admin/includes/languages/english/products_attributes.php
--- 2.2ms2-060817.src/admin/includes/languages/english/products_attributes.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/products_attributes.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: products_attributes.php,v 1.6 2002/03/30 16:01:04 harley_vb Exp $
+  $Id: products_attributes.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/products_expected.php 2.2rc2.src/admin/includes/languages/english/products_expected.php
--- 2.2ms2-060817.src/admin/includes/languages/english/products_expected.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/products_expected.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: products_expected.php,v 1.7 2002/01/30 01:23:42 hpdl Exp $
+  $Id: products_expected.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/reviews.php 2.2rc2.src/admin/includes/languages/english/reviews.php
--- 2.2ms2-060817.src/admin/includes/languages/english/reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: reviews.php,v 1.6 2002/01/30 16:24:23 harley_vb Exp $
+  $Id: reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/server_info.php 2.2rc2.src/admin/includes/languages/english/server_info.php
--- 2.2ms2-060817.src/admin/includes/languages/english/server_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/server_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: server_info.php,v 1.1 2002/01/05 10:06:08 hpdl Exp $
+  $Id: server_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/specials.php 2.2rc2.src/admin/includes/languages/english/specials.php
--- 2.2ms2-060817.src/admin/includes/languages/english/specials.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/specials.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: specials.php,v 1.10 2002/03/16 15:07:21 project3000 Exp $
+  $Id: specials.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/stats_customers.php 2.2rc2.src/admin/includes/languages/english/stats_customers.php
--- 2.2ms2-060817.src/admin/includes/languages/english/stats_customers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/stats_customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_customers.php,v 1.6 2002/03/30 15:54:15 harley_vb Exp $
+  $Id: stats_customers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/stats_products_purchased.php 2.2rc2.src/admin/includes/languages/english/stats_products_purchased.php
--- 2.2ms2-060817.src/admin/includes/languages/english/stats_products_purchased.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/stats_products_purchased.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_products_purchased.php,v 1.5 2002/03/30 15:52:31 harley_vb Exp $
+  $Id: stats_products_purchased.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/stats_products_viewed.php 2.2rc2.src/admin/includes/languages/english/stats_products_viewed.php
--- 2.2ms2-060817.src/admin/includes/languages/english/stats_products_viewed.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/stats_products_viewed.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_products_viewed.php,v 1.5 2002/03/30 15:51:03 harley_vb Exp $
+  $Id: stats_products_viewed.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/tax_classes.php 2.2rc2.src/admin/includes/languages/english/tax_classes.php
--- 2.2ms2-060817.src/admin/includes/languages/english/tax_classes.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/tax_classes.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tax_classes.php,v 1.4 2002/01/28 00:48:43 harley_vb Exp $
+  $Id: tax_classes.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/tax_rates.php 2.2rc2.src/admin/includes/languages/english/tax_rates.php
--- 2.2ms2-060817.src/admin/includes/languages/english/tax_rates.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/tax_rates.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tax_rates.php,v 1.7 2003/03/13 03:14:01 thomasamoulton Exp $
+  $Id: tax_rates.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/whos_online.php 2.2rc2.src/admin/includes/languages/english/whos_online.php
--- 2.2ms2-060817.src/admin/includes/languages/english/whos_online.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/whos_online.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: whos_online.php,v 1.5 2002/03/30 15:48:55 harley_vb Exp $
+  $Id: whos_online.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english/zones.php 2.2rc2.src/admin/includes/languages/english/zones.php
--- 2.2ms2-060817.src/admin/includes/languages/english/zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english/zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: zones.php,v 1.4 2002/01/28 00:23:17 harley_vb Exp $
+  $Id: zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/english.php 2.2rc2.src/admin/includes/languages/english.php
--- 2.2ms2-060817.src/admin/includes/languages/english.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/english.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: english.php,v 1.106 2003/06/20 00:18:31 hpdl Exp $
+  $Id: english.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -40,7 +40,7 @@
 define('CHARSET', 'iso-8859-1');
 
 // page title
-define('TITLE', 'osCommerce');
+define('TITLE', 'osCommerce Online Merchant Administration Tool');
 
 // header text in includes/header.php
 define('HEADER_TITLE_TOP', 'Administration');
@@ -60,6 +60,7 @@
 define('BOX_CONFIGURATION_MYSTORE', 'My Store');
 define('BOX_CONFIGURATION_LOGGING', 'Logging');
 define('BOX_CONFIGURATION_CACHE', 'Cache');
+define('BOX_CONFIGURATION_ADMINISTRATORS', 'Administrators');
 
 // modules box text in includes/boxes/modules.php
 define('BOX_HEADING_MODULES', 'Modules');
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/administrators.php 2.2rc2.src/admin/includes/languages/espanol/administrators.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/administrators.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/administrators.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,27 @@
+<?php
+/*
+  $Id: administrators.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define('HEADING_TITLE', 'Administrators');
+
+define('TABLE_HEADING_ADMINISTRATORS', 'Administrators');
+define('TABLE_HEADING_ACTION', 'Action');
+
+define('TEXT_INFO_INSERT_INTRO', 'Please enter the new administrator with its related data');
+define('TEXT_INFO_EDIT_INTRO', 'Please make any necessary changes');
+define('TEXT_INFO_DELETE_INTRO', 'Are you sure you want to delete this administrator?');
+define('TEXT_INFO_HEADING_NEW_ADMINISTRATOR', 'New Administrator');
+define('TEXT_INFO_USERNAME', 'Username:');
+define('TEXT_INFO_NEW_PASSWORD', 'New Password:');
+define('TEXT_INFO_PASSWORD', 'Password:');
+
+define('ERROR_ADMINISTRATOR_EXISTS', 'Error: Administrator already exists.');
+?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/backup.php 2.2rc2.src/admin/includes/languages/espanol/backup.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/backup.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/backup.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: backup.php,v 1.22 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: backup.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/banner_manager.php 2.2rc2.src/admin/includes/languages/espanol/banner_manager.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/banner_manager.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/banner_manager.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_manager.php,v 1.21 2003/07/07 09:23:06 dgw_ Exp $
+  $Id: banner_manager.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/banner_statistics.php 2.2rc2.src/admin/includes/languages/espanol/banner_statistics.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/banner_statistics.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/banner_statistics.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_statistics.php,v 1.2 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: banner_statistics.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/cache.php 2.2rc2.src/admin/includes/languages/espanol/cache.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/cache.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/cache.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cache.php,v 1.13 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: cache.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/categories.php 2.2rc2.src/admin/includes/languages/espanol/categories.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/categories.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/categories.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: categories.php,v 1.22 2003/07/11 14:40:28 hpdl Exp $
+  $Id: categories.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/configuration.php 2.2rc2.src/admin/includes/languages/espanol/configuration.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/configuration.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/configuration.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: configuration.php,v 1.8 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: configuration.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/countries.php 2.2rc2.src/admin/includes/languages/espanol/countries.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/countries.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/countries.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: countries.php,v 1.7 2003/07/07 09:23:06 dgw_ Exp $
+  $Id: countries.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/currencies.php 2.2rc2.src/admin/includes/languages/espanol/currencies.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/currencies.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/currencies.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: currencies.php,v 1.15 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: currencies.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/customers.php 2.2rc2.src/admin/includes/languages/espanol/customers.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/customers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: customers.php,v 1.10 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: customers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/define_language.php 2.2rc2.src/admin/includes/languages/espanol/define_language.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/define_language.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/define_language.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: define_language.php,v 1.5 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: define_language.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/file_manager.php 2.2rc2.src/admin/includes/languages/espanol/file_manager.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/file_manager.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/file_manager.php	2007-12-20 20:22:21.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: file_manager.php,v 1.15 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: file_manager.php 1744 2007-12-21 02:22:21Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -35,4 +35,5 @@
 define('ERROR_DIRECTORY_NOT_REMOVEABLE', 'Error: No puedo eliminar el directorio. Asigne los permisos adecuados a: %s');
 define('ERROR_FILE_NOT_REMOVEABLE', 'Error: No puedo eliminar este fichero. Asigne los permisos adecuados a: %s');
 define('ERROR_DIRECTORY_DOES_NOT_EXIST', 'Error: No existe el directorio: %s');
+define('ERROR_FILENAME_EMPTY', 'Error: Please enter a filename to store the contents in.');
 ?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/geo_zones.php 2.2rc2.src/admin/includes/languages/espanol/geo_zones.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/geo_zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/geo_zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: geo_zones.php,v 1.10 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: geo_zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/index.php 2.2rc2.src/admin/includes/languages/espanol/index.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/index.php	2006-08-16 18:06:35.000000000 -0500
+++ 2.2rc2.src/admin/includes/languages/espanol/index.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: index.php,v 1.4 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: index.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/invoice.php 2.2rc2.src/admin/includes/languages/espanol/invoice.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/invoice.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/invoice.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: invoice.php,v 1.2 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: invoice.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/languages.php 2.2rc2.src/admin/includes/languages/espanol/languages.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/languages.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/languages.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: languages.php,v 1.9 2003/07/07 09:23:06 dgw_ Exp $
+  $Id: languages.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/login.php 2.2rc2.src/admin/includes/languages/espanol/login.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/login.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/login.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,24 @@
+<?php
+/*
+  $Id: login.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define('HEADING_TITLE', 'Administrator Login');
+
+define('TEXT_USERNAME', 'Username:');
+define('TEXT_PASSWORD', 'Password:');
+
+define('TEXT_CREATE_FIRST_ADMINISTRATOR', 'No administrators exist in the database table. Please fill in the following information to create the first administrator. (A manual login is still required after this step)');
+
+define('ERROR_INVALID_ADMINISTRATOR', 'Error: Invalid administrator login attempt.');
+
+define('BUTTON_LOGIN', 'Login');
+define('BUTTON_CREATE_ADMINISTRATOR', 'Create Administrator');
+?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/mail.php 2.2rc2.src/admin/includes/languages/espanol/mail.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/mail.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/mail.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: mail.php,v 1.10 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: mail.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/manufacturers.php 2.2rc2.src/admin/includes/languages/espanol/manufacturers.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/manufacturers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/manufacturers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: manufacturers.php,v 1.14 2003/07/07 09:23:06 dgw_ Exp $
+  $Id: manufacturers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/modules/index/customers.php 2.2rc2.src/admin/includes/languages/espanol/modules/index/customers.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/modules/index/customers.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/modules/index/customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,15 @@
+<?php
+/*
+  $Id: customers.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define(ADMIN_INDEX_CUSTOMERS_TITLE, 'Customers');
+define(ADMIN_INDEX_CUSTOMERS_DATE, 'Date');
+?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/modules/index/orders.php 2.2rc2.src/admin/includes/languages/espanol/modules/index/orders.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/modules/index/orders.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/modules/index/orders.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,17 @@
+<?php
+/*
+  $Id: orders.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define('ADMIN_INDEX_ORDERS_TITLE', 'Orders');
+define('ADMIN_INDEX_ORDERS_TOTAL', 'Total');
+define('ADMIN_INDEX_ORDERS_DATE', 'Date');
+define('ADMIN_INDEX_ORDERS_STATUS', 'Status');
+?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/modules/newsletters/newsletter.php 2.2rc2.src/admin/includes/languages/espanol/modules/newsletters/newsletter.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/modules/newsletters/newsletter.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/modules/newsletters/newsletter.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: newsletter.php,v 1.2 2003/07/06 20:33:02 dgw_ Exp $
+  $Id: newsletter.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/modules/newsletters/product_notification.php 2.2rc2.src/admin/includes/languages/espanol/modules/newsletters/product_notification.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/modules/newsletters/product_notification.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/modules/newsletters/product_notification.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_notification.php,v 1.2 2003/07/06 20:33:02 dgw_ Exp $
+  $Id: product_notification.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/modules.php 2.2rc2.src/admin/includes/languages/espanol/modules.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/modules.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/modules.php	2008-01-11 10:59:17.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: modules.php,v 1.8 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: modules.php 1802 2008-01-11 16:59:17Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -18,5 +18,8 @@
 define('TABLE_HEADING_SORT_ORDER', 'Orden');
 define('TABLE_HEADING_ACTION', 'Acci&oacute;n');
 
+define('TEXT_INFO_VERSION', 'Versi&oacute;n:');
+define('TEXT_INFO_ONLINE_STATUS', 'online status');
+
 define('TEXT_MODULE_DIRECTORY', 'Directorio de m&oacute;dulos:');
 ?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/newsletters.php 2.2rc2.src/admin/includes/languages/espanol/newsletters.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/newsletters.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/newsletters.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: newsletters.php,v 1.8 2003/07/07 09:23:06 dgw_ Exp $
+  $Id: newsletters.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/orders.php 2.2rc2.src/admin/includes/languages/espanol/orders.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/orders.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/orders.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: orders.php,v 1.26 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: orders.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/orders_status.php 2.2rc2.src/admin/includes/languages/espanol/orders_status.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/orders_status.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/orders_status.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: orders_status.php,v 1.8 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: orders_status.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -13,6 +13,8 @@
 define('HEADING_TITLE', 'Estado Pedidos');
 
 define('TABLE_HEADING_ORDERS_STATUS', 'Estado Pedidos');
+define('TABLE_HEADING_PUBLIC_STATUS', 'Public Status');
+define('TABLE_HEADING_DOWNLOADS_STATUS', 'Downloads Status');
 define('TABLE_HEADING_ACTION', 'Acci&oacute;n');
 
 define('TEXT_INFO_EDIT_INTRO', 'Haga los cambios necesarios');
@@ -23,6 +25,9 @@
 define('TEXT_INFO_HEADING_EDIT_ORDERS_STATUS', 'Editar Estado Pedido');
 define('TEXT_INFO_HEADING_DELETE_ORDERS_STATUS', 'Eliminar Estado Pedido');
 
+define('TEXT_SET_PUBLIC_STATUS', 'Show the order to the customer at this order status level');
+define('TEXT_SET_DOWNLOADS_STATUS', 'Allow downloads of virtual products at this order status level');
+
 define('ERROR_REMOVE_DEFAULT_ORDER_STATUS', 'Error: El estado de pedido por defecto no se puede eliminar. Establezca otro estado de pedido predeterminado y pruebe de nuevo.');
 define('ERROR_STATUS_USED_IN_ORDERS', 'Error: Este estado de pedido esta siendo usado actualmente.');
 define('ERROR_STATUS_USED_IN_HISTORY', 'Error: Este estado de pedido se esta usando en algun hist&oacute;rico de algun pedido.');
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/packingslip.php 2.2rc2.src/admin/includes/languages/espanol/packingslip.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/packingslip.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/packingslip.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: packingslip.php,v 1.2 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: packingslip.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/products_attributes.php 2.2rc2.src/admin/includes/languages/espanol/products_attributes.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/products_attributes.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/products_attributes.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: products_attributes.php,v 1.9 2003/07/07 09:23:06 dgw_ Exp $
+  $Id: products_attributes.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/products_expected.php 2.2rc2.src/admin/includes/languages/espanol/products_expected.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/products_expected.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/products_expected.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: products_expected.php,v 1.6 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: products_expected.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/reviews.php 2.2rc2.src/admin/includes/languages/espanol/reviews.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: reviews.php,v 1.5 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/server_info.php 2.2rc2.src/admin/includes/languages/espanol/server_info.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/server_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/server_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: server_info.php,v 1.3 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: server_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/specials.php 2.2rc2.src/admin/includes/languages/espanol/specials.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/specials.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/specials.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: specials.php,v 1.11 2003/07/06 20:33:01 dgw_ Exp $
+  $Id: specials.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/stats_customers.php 2.2rc2.src/admin/includes/languages/espanol/stats_customers.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/stats_customers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/stats_customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_customers.php,v 1.8 2003/07/06 20:33:02 dgw_ Exp $
+  $Id: stats_customers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/stats_products_purchased.php 2.2rc2.src/admin/includes/languages/espanol/stats_products_purchased.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/stats_products_purchased.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/stats_products_purchased.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_products_purchased.php,v 1.5 2003/07/06 20:33:02 dgw_ Exp $
+  $Id: stats_products_purchased.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/stats_products_viewed.php 2.2rc2.src/admin/includes/languages/espanol/stats_products_viewed.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/stats_products_viewed.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/stats_products_viewed.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_products_viewed.php,v 1.5 2003/07/06 20:33:02 dgw_ Exp $
+  $Id: stats_products_viewed.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/tax_classes.php 2.2rc2.src/admin/includes/languages/espanol/tax_classes.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/tax_classes.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/tax_classes.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tax_classes.php,v 1.5 2003/07/06 20:33:02 dgw_ Exp $
+  $Id: tax_classes.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/tax_rates.php 2.2rc2.src/admin/includes/languages/espanol/tax_rates.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/tax_rates.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/tax_rates.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tax_rates.php,v 1.10 2003/07/06 20:33:02 dgw_ Exp $
+  $Id: tax_rates.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/whos_online.php 2.2rc2.src/admin/includes/languages/espanol/whos_online.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/whos_online.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/whos_online.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: whos_online.php,v 1.6 2003/07/06 20:33:02 dgw_ Exp $
+  $Id: whos_online.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol/zones.php 2.2rc2.src/admin/includes/languages/espanol/zones.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol/zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol/zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: zones.php,v 1.5 2003/07/06 20:33:02 dgw_ Exp $
+  $Id: zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/espanol.php 2.2rc2.src/admin/includes/languages/espanol.php
--- 2.2ms2-060817.src/admin/includes/languages/espanol.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/espanol.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: espanol.php,v 1.101 2003/07/07 09:23:06 dgw_ Exp $
+  $Id: espanol.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -40,7 +40,7 @@
 define('CHARSET', 'iso-8859-1');
 
 // page title
-define('TITLE', 'osCommerce');
+define('TITLE', 'osCommerce Online Merchant Administration Tool');
 
 // header text in includes/header.php
 define('HEADER_TITLE_TOP', 'Administraci&oacute;n');
@@ -60,6 +60,7 @@
 define('BOX_CONFIGURATION_MYSTORE', 'Mi Tienda');
 define('BOX_CONFIGURATION_LOGGING', 'Registro');
 define('BOX_CONFIGURATION_CACHE', 'Cach&eacute;');
+define('BOX_CONFIGURATION_ADMINISTRATORS', 'Administrators');
 
 // modules box text in includes/boxes/modules.php
 define('BOX_HEADING_MODULES', 'M&oacute;dulos');
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/administrators.php 2.2rc2.src/admin/includes/languages/german/administrators.php
--- 2.2ms2-060817.src/admin/includes/languages/german/administrators.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/administrators.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,27 @@
+<?php
+/*
+  $Id: administrators.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define('HEADING_TITLE', 'Administrators');
+
+define('TABLE_HEADING_ADMINISTRATORS', 'Administrators');
+define('TABLE_HEADING_ACTION', 'Action');
+
+define('TEXT_INFO_INSERT_INTRO', 'Please enter the new administrator with its related data');
+define('TEXT_INFO_EDIT_INTRO', 'Please make any necessary changes');
+define('TEXT_INFO_DELETE_INTRO', 'Are you sure you want to delete this administrator?');
+define('TEXT_INFO_HEADING_NEW_ADMINISTRATOR', 'New Administrator');
+define('TEXT_INFO_USERNAME', 'Username:');
+define('TEXT_INFO_NEW_PASSWORD', 'New Password:');
+define('TEXT_INFO_PASSWORD', 'Password:');
+
+define('ERROR_ADMINISTRATOR_EXISTS', 'Error: Administrator already exists.');
+?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/backup.php 2.2rc2.src/admin/includes/languages/german/backup.php
--- 2.2ms2-060817.src/admin/includes/languages/german/backup.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/backup.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: backup.php,v 1.21 2002/06/15 11:02:56 harley_vb Exp $
+  $Id: backup.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/banner_manager.php 2.2rc2.src/admin/includes/languages/german/banner_manager.php
--- 2.2ms2-060817.src/admin/includes/languages/german/banner_manager.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/banner_manager.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_manager.php,v 1.25 2003/02/16 02:09:20 harley_vb Exp $
+  $Id: banner_manager.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/banner_statistics.php 2.2rc2.src/admin/includes/languages/german/banner_statistics.php
--- 2.2ms2-060817.src/admin/includes/languages/german/banner_statistics.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/banner_statistics.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner_statistics.php,v 1.3 2003/02/16 02:09:20 harley_vb Exp $
+  $Id: banner_statistics.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/cache.php 2.2rc2.src/admin/includes/languages/german/cache.php
--- 2.2ms2-060817.src/admin/includes/languages/german/cache.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/cache.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cache.php,v 1.13 2003/05/03 20:52:25 project3000 Exp $
+  $Id: cache.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/categories.php 2.2rc2.src/admin/includes/languages/german/categories.php
--- 2.2ms2-060817.src/admin/includes/languages/german/categories.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/categories.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: categories.php,v 1.24 2003/07/11 14:40:28 hpdl Exp $
+  $Id: categories.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/configuration.php 2.2rc2.src/admin/includes/languages/german/configuration.php
--- 2.2ms2-060817.src/admin/includes/languages/german/configuration.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/configuration.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: configuration.php,v 1.8 2002/01/04 03:51:40 hpdl Exp $
+  $Id: configuration.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/countries.php 2.2rc2.src/admin/includes/languages/german/countries.php
--- 2.2ms2-060817.src/admin/includes/languages/german/countries.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/countries.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: countries.php,v 1.8 2002/01/19 23:00:00 harley_vb Exp $
+  $Id: countries.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/currencies.php 2.2rc2.src/admin/includes/languages/german/currencies.php
--- 2.2ms2-060817.src/admin/includes/languages/german/currencies.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/currencies.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: currencies.php,v 1.16 2003/06/25 20:36:48 hpdl Exp $
+  $Id: currencies.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/customers.php 2.2rc2.src/admin/includes/languages/german/customers.php
--- 2.2ms2-060817.src/admin/includes/languages/german/customers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: customers.php,v 1.13 2002/06/15 12:19:14 harley_vb Exp $
+  $Id: customers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/define_language.php 2.2rc2.src/admin/includes/languages/german/define_language.php
--- 2.2ms2-060817.src/admin/includes/languages/german/define_language.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/define_language.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: define_language.php,v 1.6 2002/01/17 11:41:26 jan0815 Exp $
+  $Id: define_language.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/file_manager.php 2.2rc2.src/admin/includes/languages/german/file_manager.php
--- 2.2ms2-060817.src/admin/includes/languages/german/file_manager.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/file_manager.php	2008-01-14 07:44:39.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: file_manager.php,v 1.17 2003/02/16 02:09:20 harley_vb Exp $
+  $Id: file_manager.php 1817 2008-01-14 13:44:39Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -35,4 +35,5 @@
 define('ERROR_DIRECTORY_NOT_REMOVEABLE', 'Fehler: Das Verzeichnis kann nicht gel&ouml;scht werden. Bitte korrigieren Sie die Zugriffsrechte f&uuml;r: %s !');
 define('ERROR_FILE_NOT_REMOVEABLE', 'Fehler: Die Datei kann nicht gel&ouml;scht werden. Bitte korrigieren Sie die Zugriffsrechte f&uuml;r: %s !');
 define('ERROR_DIRECTORY_DOES_NOT_EXIST', 'Fehler: Das Verzeichnis %s existiert nicht!');
+define('ERROR_FILENAME_EMPTY', 'Fehler: Bitte geben Sie einen Dateinamen an.');
 ?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/geo_zones.php 2.2rc2.src/admin/includes/languages/german/geo_zones.php
--- 2.2ms2-060817.src/admin/includes/languages/german/geo_zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/geo_zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: geo_zones.php,v 1.11 2003/05/07 08:59:29 dgw_ Exp $
+  $Id: geo_zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/index.php 2.2rc2.src/admin/includes/languages/german/index.php
--- 2.2ms2-060817.src/admin/includes/languages/german/index.php	2006-08-16 18:06:35.000000000 -0500
+++ 2.2rc2.src/admin/includes/languages/german/index.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: index.php,v 1.5 2002/03/30 14:32:08 harley_vb Exp $
+  $Id: index.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/invoice.php 2.2rc2.src/admin/includes/languages/german/invoice.php
--- 2.2ms2-060817.src/admin/includes/languages/german/invoice.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/invoice.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: invoice.php,v 1.2 2002/06/15 12:45:05 harley_vb Exp $
+  $Id: invoice.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/languages.php 2.2rc2.src/admin/includes/languages/german/languages.php
--- 2.2ms2-060817.src/admin/includes/languages/german/languages.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/languages.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: languages.php,v 1.10 2002/01/19 22:58:16 harley_vb Exp $
+  $Id: languages.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/login.php 2.2rc2.src/admin/includes/languages/german/login.php
--- 2.2ms2-060817.src/admin/includes/languages/german/login.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/login.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,24 @@
+<?php
+/*
+  $Id: login.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define('HEADING_TITLE', 'Administrator Login');
+
+define('TEXT_USERNAME', 'Username:');
+define('TEXT_PASSWORD', 'Password:');
+
+define('TEXT_CREATE_FIRST_ADMINISTRATOR', 'No administrators exist in the database table. Please fill in the following information to create the first administrator. (A manual login is still required after this step)');
+
+define('ERROR_INVALID_ADMINISTRATOR', 'Error: Invalid administrator login attempt.');
+
+define('BUTTON_LOGIN', 'Login');
+define('BUTTON_CREATE_ADMINISTRATOR', 'Create Administrator');
+?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/mail.php 2.2rc2.src/admin/includes/languages/german/mail.php
--- 2.2ms2-060817.src/admin/includes/languages/german/mail.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/mail.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: mail.php,v 1.9 2002/01/19 22:44:34 harley_vb Exp $
+  $Id: mail.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/manufacturers.php 2.2rc2.src/admin/includes/languages/german/manufacturers.php
--- 2.2ms2-060817.src/admin/includes/languages/german/manufacturers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/manufacturers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: manufacturers.php,v 1.14 2003/02/16 02:09:20 harley_vb Exp $
+  $Id: manufacturers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/modules/index/customers.php 2.2rc2.src/admin/includes/languages/german/modules/index/customers.php
--- 2.2ms2-060817.src/admin/includes/languages/german/modules/index/customers.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/modules/index/customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,15 @@
+<?php
+/*
+  $Id: customers.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define(ADMIN_INDEX_CUSTOMERS_TITLE, 'Customers');
+define(ADMIN_INDEX_CUSTOMERS_DATE, 'Date');
+?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/modules/index/orders.php 2.2rc2.src/admin/includes/languages/german/modules/index/orders.php
--- 2.2ms2-060817.src/admin/includes/languages/german/modules/index/orders.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/modules/index/orders.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,17 @@
+<?php
+/*
+  $Id: orders.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+define('ADMIN_INDEX_ORDERS_TITLE', 'Orders');
+define('ADMIN_INDEX_ORDERS_TOTAL', 'Total');
+define('ADMIN_INDEX_ORDERS_DATE', 'Date');
+define('ADMIN_INDEX_ORDERS_STATUS', 'Status');
+?>
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/modules/newsletters/newsletter.php 2.2rc2.src/admin/includes/languages/german/modules/newsletters/newsletter.php
--- 2.2ms2-060817.src/admin/includes/languages/german/modules/newsletters/newsletter.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/modules/newsletters/newsletter.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: newsletter.php,v 1.2 2002/03/11 14:15:04 harley_vb Exp $
+  $Id: newsletter.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/modules/newsletters/product_notification.php 2.2rc2.src/admin/includes/languages/german/modules/newsletters/product_notification.php
--- 2.2ms2-060817.src/admin/includes/languages/german/modules/newsletters/product_notification.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/modules/newsletters/product_notification.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_notification.php,v 1.2 2002/03/11 14:15:44 harley_vb Exp $
+  $Id: product_notification.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/modules.php 2.2rc2.src/admin/includes/languages/german/modules.php
--- 2.2ms2-060817.src/admin/includes/languages/german/modules.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/modules.php	2008-01-11 10:59:17.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: modules.php,v 1.9 2003/05/28 14:07:38 hpdl Exp $
+  $Id: modules.php 1802 2008-01-11 16:59:17Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -18,5 +18,8 @@
 define('TABLE_HEADING_SORT_ORDER', 'Reihenfolge');
 define('TABLE_HEADING_ACTION', 'Aktion');
 
+define('TEXT_INFO_VERSION', 'Version:');
+define('TEXT_INFO_ONLINE_STATUS', 'online status');
+
 define('TEXT_MODULE_DIRECTORY', 'Modul Verzeichnis:');
 ?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/newsletters.php 2.2rc2.src/admin/includes/languages/german/newsletters.php
--- 2.2ms2-060817.src/admin/includes/languages/german/newsletters.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/newsletters.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: newsletters.php,v 1.7 2002/03/11 14:13:05 harley_vb Exp $
+  $Id: newsletters.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/orders.php 2.2rc2.src/admin/includes/languages/german/orders.php
--- 2.2ms2-060817.src/admin/includes/languages/german/orders.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/orders.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: orders.php,v 1.28 2003/06/20 00:28:44 hpdl Exp $
+  $Id: orders.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/orders_status.php 2.2rc2.src/admin/includes/languages/german/orders_status.php
--- 2.2ms2-060817.src/admin/includes/languages/german/orders_status.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/orders_status.php	2008-01-14 06:31:48.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: orders_status.php,v 1.7 2002/01/30 11:10:08 harley_vb Exp $
+  $Id: orders_status.php 1816 2008-01-14 12:31:48Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -13,6 +13,8 @@
 define('HEADING_TITLE', 'Bestellstatus');
 
 define('TABLE_HEADING_ORDERS_STATUS', 'Bestellstatus');
+define('TABLE_HEADING_PUBLIC_STATUS', 'sichtbar f&uuml;r Kunde');
+define('TABLE_HEADING_DOWNLOADS_STATUS', 'Downloads freigegeben');
 define('TABLE_HEADING_ACTION', 'Aktion');
 
 define('TEXT_INFO_EDIT_INTRO', 'Bitte f&uuml;hren Sie alle notwendigen &Auml;nderungen durch');
@@ -23,6 +25,9 @@
 define('TEXT_INFO_HEADING_EDIT_ORDERS_STATUS', 'Bestellstatus bearbeiten');
 define('TEXT_INFO_HEADING_DELETE_ORDERS_STATUS', 'Bestellstatus l&ouml;schen');
 
+define('TEXT_SET_PUBLIC_STATUS', 'Bestellung wird dem Kunden bei diesem Bestellstatus angezeigt');
+define('TEXT_SET_DOWNLOADS_STATUS', 'Virtuelle Produkte k&ouml;nnen bei diesem Status heruntergeladen werden');
+
 define('ERROR_REMOVE_DEFAULT_ORDER_STATUS', 'Fehler: Der Standard-Bestellstatus kann nicht gel&ouml;scht werden. Bitte definieren Sie einen neuen Standard-Bestellstatus und wiederholen Sie den Vorgang.');
 define('ERROR_STATUS_USED_IN_ORDERS', 'Fehler: Dieser Bestellstatus wird zur Zeit noch bei den Bestellungen verwendet.');
 define('ERROR_STATUS_USED_IN_HISTORY', 'Fehler: Dieser Bestellstatus wird zur Zeit noch in der Bestellhistorie verwendet.');
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/packingslip.php 2.2rc2.src/admin/includes/languages/german/packingslip.php
--- 2.2ms2-060817.src/admin/includes/languages/german/packingslip.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/packingslip.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: packingslip.php,v 1.2 2002/06/15 13:01:56 harley_vb Exp $
+  $Id: packingslip.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/products_attributes.php 2.2rc2.src/admin/includes/languages/german/products_attributes.php
--- 2.2ms2-060817.src/admin/includes/languages/german/products_attributes.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/products_attributes.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: products_attributes.php,v 1.9 2002/03/30 15:11:25 harley_vb Exp $
+  $Id: products_attributes.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/products_expected.php 2.2rc2.src/admin/includes/languages/german/products_expected.php
--- 2.2ms2-060817.src/admin/includes/languages/german/products_expected.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/products_expected.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: products_expected.php,v 1.8 2002/03/30 15:09:07 harley_vb Exp $
+  $Id: products_expected.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/reviews.php 2.2rc2.src/admin/includes/languages/german/reviews.php
--- 2.2ms2-060817.src/admin/includes/languages/german/reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: reviews.php,v 1.6 2002/02/06 22:59:17 harley_vb Exp $
+  $Id: reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/server_info.php 2.2rc2.src/admin/includes/languages/german/server_info.php
--- 2.2ms2-060817.src/admin/includes/languages/german/server_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/server_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: server_info.php,v 1.4 2002/03/30 15:06:44 harley_vb Exp $
+  $Id: server_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/specials.php 2.2rc2.src/admin/includes/languages/german/specials.php
--- 2.2ms2-060817.src/admin/includes/languages/german/specials.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/specials.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: specials.php,v 1.10 2002/01/31 01:17:51 harley_vb Exp $
+  $Id: specials.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/stats_customers.php 2.2rc2.src/admin/includes/languages/german/stats_customers.php
--- 2.2ms2-060817.src/admin/includes/languages/german/stats_customers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/stats_customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_customers.php,v 1.9 2002/03/30 15:03:59 harley_vb Exp $
+  $Id: stats_customers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/stats_products_purchased.php 2.2rc2.src/admin/includes/languages/german/stats_products_purchased.php
--- 2.2ms2-060817.src/admin/includes/languages/german/stats_products_purchased.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/stats_products_purchased.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_products_purchased.php,v 1.7 2002/03/30 14:59:36 harley_vb Exp $
+  $Id: stats_products_purchased.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/stats_products_viewed.php 2.2rc2.src/admin/includes/languages/german/stats_products_viewed.php
--- 2.2ms2-060817.src/admin/includes/languages/german/stats_products_viewed.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/stats_products_viewed.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_products_viewed.php,v 1.6 2002/03/30 14:58:28 harley_vb Exp $
+  $Id: stats_products_viewed.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/tax_classes.php 2.2rc2.src/admin/includes/languages/german/tax_classes.php
--- 2.2ms2-060817.src/admin/includes/languages/german/tax_classes.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/tax_classes.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tax_classes.php,v 1.5 2002/01/28 00:48:18 harley_vb Exp $
+  $Id: tax_classes.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/tax_rates.php 2.2rc2.src/admin/includes/languages/german/tax_rates.php
--- 2.2ms2-060817.src/admin/includes/languages/german/tax_rates.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/tax_rates.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tax_rates.php,v 1.9 2003/03/13 03:14:01 thomasamoulton Exp $
+  $Id: tax_rates.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/whos_online.php 2.2rc2.src/admin/includes/languages/german/whos_online.php
--- 2.2ms2-060817.src/admin/includes/languages/german/whos_online.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/whos_online.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: whos_online.php,v 1.7 2002/03/30 14:56:01 harley_vb Exp $
+  $Id: whos_online.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german/zones.php 2.2rc2.src/admin/includes/languages/german/zones.php
--- 2.2ms2-060817.src/admin/includes/languages/german/zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german/zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: zones.php,v 1.6 2002/01/28 00:22:42 harley_vb Exp $
+  $Id: zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/languages/german.php 2.2rc2.src/admin/includes/languages/german.php
--- 2.2ms2-060817.src/admin/includes/languages/german.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/languages/german.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: german.php,v 1.100 2003/06/20 00:18:31 hpdl Exp $
+  $Id: german.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -40,7 +40,7 @@
 define('CHARSET', 'iso-8859-1');
 
 // page title
-define('TITLE', 'osCommerce');
+define('TITLE', 'osCommerce Online Merchant Administration Tool');
 
 // header text in includes/header.php
 define('HEADER_TITLE_TOP', 'Administration');
@@ -60,6 +60,7 @@
 define('BOX_CONFIGURATION_MYSTORE', 'My Store');
 define('BOX_CONFIGURATION_LOGGING', 'Logging');
 define('BOX_CONFIGURATION_CACHE', 'Cache');
+define('BOX_CONFIGURATION_ADMINISTRATORS', 'Administratoren');
 
 // modules box text in includes/boxes/modules.php
 define('BOX_HEADING_MODULES', 'Module');
@@ -114,22 +115,22 @@
 define('BOX_LOCALIZATION_ORDERS_STATUS', 'Bestellstatus');
 
 // javascript messages
-define('JS_ERROR', 'Whrend der Eingabe sind Fehler aufgetreten!\nBitte korrigieren Sie folgendes:\n\n');
+define('JS_ERROR', 'Während der Eingabe sind Fehler aufgetreten!\nBitte korrigieren Sie folgendes:\n\n');
 
-define('JS_OPTIONS_VALUE_PRICE', '* Sie mssen diesem Wert einen Preis zuordnen\n');
-define('JS_OPTIONS_VALUE_PRICE_PREFIX', '* Sie mssen ein Vorzeichen fr den Preis angeben (+/-)\n');
+define('JS_OPTIONS_VALUE_PRICE', '* Sie müssen diesem Wert einen Preis zuordnen\n');
+define('JS_OPTIONS_VALUE_PRICE_PREFIX', '* Sie müssen ein Vorzeichen für den Preis angeben (+/-)\n');
 
 define('JS_PRODUCTS_NAME', '* Der neue Artikel muss einen Namen haben\n');
 define('JS_PRODUCTS_DESCRIPTION', '* Der neue Artikel muss eine Beschreibung haben\n');
 define('JS_PRODUCTS_PRICE', '* Der neue Artikel muss einen Preis haben\n');
 define('JS_PRODUCTS_WEIGHT', '* Der neue Artikel muss eine Gewichtsangabe haben\n');
-define('JS_PRODUCTS_QUANTITY', '* Sie mssen dem neuen Artikel eine verfgbare Anzahl zuordnen\n');
-define('JS_PRODUCTS_MODEL', '* Sie mssen dem neuen Artikel eine Artikel-Nr. zuordnen\n');
-define('JS_PRODUCTS_IMAGE', '* Sie mssen dem Artikel ein Bild zuordnen\n');
+define('JS_PRODUCTS_QUANTITY', '* Sie müssen dem neuen Artikel eine verfügbare Anzahl zuordnen\n');
+define('JS_PRODUCTS_MODEL', '* Sie müssen dem neuen Artikel eine Artikel-Nr. zuordnen\n');
+define('JS_PRODUCTS_IMAGE', '* Sie müssen dem Artikel ein Bild zuordnen\n');
 
-define('JS_SPECIALS_PRODUCTS_PRICE', '* Es muss ein neuer Preis fr diesen Artikel festgelegt werden\n');
+define('JS_SPECIALS_PRODUCTS_PRICE', '* Es muss ein neuer Preis für diesen Artikel festgelegt werden\n');
 
-define('JS_GENDER', '* Die \'Anrede\' muss ausgewhlt werden.\n');
+define('JS_GENDER', '* Die \'Anrede\' muss ausgewählt werden.\n');
 define('JS_FIRST_NAME', '* Der \'Vorname\' muss mindestens aus ' . ENTRY_FIRST_NAME_MIN_LENGTH . ' Zeichen bestehen.\n');
 define('JS_LAST_NAME', '* Der \'Nachname\' muss mindestens aus ' . ENTRY_LAST_NAME_MIN_LENGTH . ' Zeichen bestehen.\n');
 define('JS_DOB', '* Das \'Geburtsdatum\' muss folgendes Format haben: xx.xx.xxxx (Tag/Jahr/Monat).\n');
@@ -137,12 +138,12 @@
 define('JS_ADDRESS', '* Die \'Strasse\' muss mindestens aus ' . ENTRY_STREET_ADDRESS_MIN_LENGTH . ' Zeichen bestehen.\n');
 define('JS_POST_CODE', '* Die \'Postleitzahl\' muss mindestens aus ' . ENTRY_POSTCODE_MIN_LENGTH . ' Zeichen bestehen.\n');
 define('JS_CITY', '* Die \'Stadt\' muss mindestens aus ' . ENTRY_CITY_MIN_LENGTH . ' Zeichen bestehen.\n');
-define('JS_STATE', '* Das \'Bundesland\' muss ausgewhlt werden.\n');
-define('JS_STATE_SELECT', '-- Whlen Sie oberhalb --');
-define('JS_ZONE', '* Das \'Bundesland\' muss aus der Liste fr dieses Land ausgewhlt werden.');
-define('JS_COUNTRY', '* Das \'Land\' muss ausgewhlt werden.\n');
+define('JS_STATE', '* Das \'Bundesland\' muss ausgewählt werden.\n');
+define('JS_STATE_SELECT', '-- Wählen Sie oberhalb --');
+define('JS_ZONE', '* Das \'Bundesland\' muss aus der Liste für dieses Land ausgewählt werden.');
+define('JS_COUNTRY', '* Das \'Land\' muss ausgewählt werden.\n');
 define('JS_TELEPHONE', '* Die \'Telefonnummer\' muss aus mindestens ' . ENTRY_TELEPHONE_MIN_LENGTH . ' Zeichen bestehen.\n');
-define('JS_PASSWORD', '* Das \'Passwort\' sowie die \'Passwortbesttigung\' mssen bereinstimmen und aus mindestens ' . ENTRY_PASSWORD_MIN_LENGTH . ' Zeichen bestehen.\n');
+define('JS_PASSWORD', '* Das \'Passwort\' sowie die \'Passwortbestätigung\' müssen übereinstimmen und aus mindestens ' . ENTRY_PASSWORD_MIN_LENGTH . ' Zeichen bestehen.\n');
 
 define('JS_ORDER_DOES_NOT_EXIST', 'Auftragsnummer %s existiert nicht!');
 
diff -ruN 2.2ms2-060817.src/admin/includes/local/.cvsignore 2.2rc2.src/admin/includes/local/.cvsignore
--- 2.2ms2-060817.src/admin/includes/local/.cvsignore	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/local/.cvsignore	1969-12-31 18:00:00.000000000 -0600
@@ -1 +0,0 @@
-configure.php
diff -ruN 2.2ms2-060817.src/admin/includes/modules/index/customers.php 2.2rc2.src/admin/includes/modules/index/customers.php
--- 2.2ms2-060817.src/admin/includes/modules/index/customers.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/modules/index/customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,28 @@
+<?php
+/*
+  $Id: customers.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+?>
+
+<table border="0" width="100%" cellspacing="0" cellpadding="4">
+  <tr class="dataTableHeadingRow">
+    <td class="dataTableHeadingContent"><?php echo ADMIN_INDEX_CUSTOMERS_TITLE; ?></td>
+    <td class="dataTableHeadingContent"><?php echo ADMIN_INDEX_CUSTOMERS_DATE; ?></td>
+  </tr>
+<?php
+  $customers_query = tep_db_query("select c.customers_id, c.customers_lastname, c.customers_firstname, ci.customers_info_date_account_created from " . TABLE_CUSTOMERS . " c, " . TABLE_CUSTOMERS_INFO . " ci where c.customers_id = ci.customers_info_id order by ci.customers_info_date_account_created desc limit 6");
+  while ($customers = tep_db_fetch_array($customers_query)) {
+    echo '  <tr class="dataTableRow" onmouseover="rowOverEffect(this);" onmouseout="rowOutEffect(this);">' .
+         '    <td class="dataTableContent"><a href="' . tep_href_link(FILENAME_CUSTOMERS, 'cID=' . (int)$customers['customers_id'] . '&action=edit') . '">' . tep_output_string_protected($customers['customers_firstname'] . ' ' . $customers['customers_lastname']) . '</td>' .
+         '    <td class="dataTableContent">' . $customers['customers_info_date_account_created'] . '</td>' .
+         '  </tr>';
+  }
+?>
+</table>
diff -ruN 2.2ms2-060817.src/admin/includes/modules/index/orders.php 2.2rc2.src/admin/includes/modules/index/orders.php
--- 2.2ms2-060817.src/admin/includes/modules/index/orders.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/includes/modules/index/orders.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,32 @@
+<?php
+/*
+  $Id: orders.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+?>
+
+<table border="0" width="100%" cellspacing="0" cellpadding="4">
+  <tr class="dataTableHeadingRow">
+    <td class="dataTableHeadingContent"><?php echo ADMIN_INDEX_ORDERS_TITLE; ?></td>
+    <td class="dataTableHeadingContent"><?php echo ADMIN_INDEX_ORDERS_TOTAL; ?></td>
+    <td class="dataTableHeadingContent"><?php echo ADMIN_INDEX_ORDERS_DATE; ?></td>
+    <td class="dataTableHeadingContent"><?php echo ADMIN_INDEX_ORDERS_STATUS; ?></td>
+  </tr>
+<?php
+  $orders_query = tep_db_query("select o.orders_id, o.customers_name, greatest(o.date_purchased, ifnull(o.last_modified, 0)) as date_last_modified, s.orders_status_name, ot.text as order_total from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_TOTAL . " ot, " . TABLE_ORDERS_STATUS . " s where o.orders_id = ot.orders_id and ot.class = 'ot_total' and o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' order by date_last_modified desc limit 6");
+  while ($orders = tep_db_fetch_array($orders_query)) {
+    echo '  <tr class="dataTableRow" onmouseover="rowOverEffect(this);" onmouseout="rowOutEffect(this);">' .
+         '    <td class="dataTableContent"><a href="' . tep_href_link(FILENAME_ORDERS, 'oID=' . (int)$orders['orders_id'] . '&action=edit') . '">' . tep_output_string_protected($orders['customers_name']) . '</td>' .
+         '    <td class="dataTableContent">' . strip_tags($orders['order_total']) . '</td>' .
+         '    <td class="dataTableContent">' . $orders['date_last_modified'] . '</td>' .
+         '    <td class="dataTableContent">' . $orders['orders_status_name'] . '</td>' .
+         '  </tr>';
+  }
+?>
+</table>
diff -ruN 2.2ms2-060817.src/admin/includes/modules/newsletters/newsletter.php 2.2rc2.src/admin/includes/modules/newsletters/newsletter.php
--- 2.2ms2-060817.src/admin/includes/modules/newsletters/newsletter.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/modules/newsletters/newsletter.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: newsletter.php,v 1.1 2002/03/08 18:38:18 hpdl Exp $
+  $Id: newsletter.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/modules/newsletters/product_notification.php 2.2rc2.src/admin/includes/modules/newsletters/product_notification.php
--- 2.2ms2-060817.src/admin/includes/modules/newsletters/product_notification.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/modules/newsletters/product_notification.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_notification.php,v 1.7 2003/06/30 11:02:48 hpdl Exp $
+  $Id: product_notification.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/stylesheet.css 2.2rc2.src/admin/includes/stylesheet.css
--- 2.2ms2-060817.src/admin/includes/stylesheet.css	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/stylesheet.css	2007-12-19 18:52:16.000000000 -0600
@@ -1,5 +1,5 @@
 /*
-  $Id: stylesheet.css,v 1.26 2003/06/30 20:03:50 hpdl Exp $
+  $Id: stylesheet.css 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/includes/tld.txt 2.2rc2.src/admin/includes/tld.txt
--- 2.2ms2-060817.src/admin/includes/tld.txt	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/includes/tld.txt	2007-12-19 18:52:16.000000000 -0600
@@ -1,4 +1,4 @@
-# $Id: tld.txt,v 1.1 2003/03/15 14:38:38 project3000 Exp $
+# $Id: tld.txt 1739 2007-12-20 00:52:16Z hpdl $
 #
 # osCommerce, Open Source E-Commerce Solutions
 # http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/index.php 2.2rc2.src/admin/index.php
--- 2.2ms2-060817.src/admin/index.php	2006-08-16 18:06:35.000000000 -0500
+++ 2.2rc2.src/admin/index.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,60 +1,17 @@
 <?php
 /*
-  $Id: index.php,v 1.19 2003/06/27 09:38:31 dgw_ Exp $
+  $Id: index.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2006 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
 
   require('includes/application_top.php');
 
-  $cat = array(array('title' => BOX_HEADING_CONFIGURATION,
-                     'image' => 'configuration.gif',
-                     'href' => tep_href_link(FILENAME_CONFIGURATION, 'selected_box=configuration&gID=1'),
-                     'children' => array(array('title' => BOX_CONFIGURATION_MYSTORE, 'link' => tep_href_link(FILENAME_CONFIGURATION, 'selected_box=configuration&gID=1')),
-                                         array('title' => BOX_CONFIGURATION_LOGGING, 'link' => tep_href_link(FILENAME_CONFIGURATION, 'selected_box=configuration&gID=10')),
-                                         array('title' => BOX_CONFIGURATION_CACHE, 'link' => tep_href_link(FILENAME_CONFIGURATION, 'selected_box=configuration&gID=11')))),
-               array('title' => BOX_HEADING_MODULES,
-                     'image' => 'modules.gif',
-                     'href' => tep_href_link(FILENAME_MODULES, 'selected_box=modules&set=payment'),
-                     'children' => array(array('title' => BOX_MODULES_PAYMENT, 'link' => tep_href_link(FILENAME_MODULES, 'selected_box=modules&set=payment')),
-                                         array('title' => BOX_MODULES_SHIPPING, 'link' => tep_href_link(FILENAME_MODULES, 'selected_box=modules&set=shipping')))),
-               array('title' => BOX_HEADING_CATALOG,
-                     'image' => 'catalog.gif',
-                     'href' => tep_href_link(FILENAME_CATEGORIES, 'selected_box=catalog'),
-                     'children' => array(array('title' => CATALOG_CONTENTS, 'link' => tep_href_link(FILENAME_CATEGORIES, 'selected_box=catalog')),
-                                         array('title' => BOX_CATALOG_MANUFACTURERS, 'link' => tep_href_link(FILENAME_MANUFACTURERS, 'selected_box=catalog')))),
-               array('title' => BOX_HEADING_LOCATION_AND_TAXES,
-                     'image' => 'location.gif',
-                     'href' => tep_href_link(FILENAME_COUNTRIES, 'selected_box=taxes'),
-                     'children' => array(array('title' => BOX_TAXES_COUNTRIES, 'link' => tep_href_link(FILENAME_COUNTRIES, 'selected_box=taxes')),
-                                         array('title' => BOX_TAXES_GEO_ZONES, 'link' => tep_href_link(FILENAME_GEO_ZONES, 'selected_box=taxes')))),
-               array('title' => BOX_HEADING_CUSTOMERS,
-                     'image' => 'customers.gif',
-                     'href' => tep_href_link(FILENAME_CUSTOMERS, 'selected_box=customers'),
-                     'children' => array(array('title' => BOX_CUSTOMERS_CUSTOMERS, 'link' => tep_href_link(FILENAME_CUSTOMERS, 'selected_box=customers')),
-                                         array('title' => BOX_CUSTOMERS_ORDERS, 'link' => tep_href_link(FILENAME_ORDERS, 'selected_box=customers')))),
-               array('title' => BOX_HEADING_LOCALIZATION,
-                     'image' => 'localization.gif',
-                     'href' => tep_href_link(FILENAME_CURRENCIES, 'selected_box=localization'),
-                     'children' => array(array('title' => BOX_LOCALIZATION_CURRENCIES, 'link' => tep_href_link(FILENAME_CURRENCIES, 'selected_box=localization')),
-                                         array('title' => BOX_LOCALIZATION_LANGUAGES, 'link' => tep_href_link(FILENAME_LANGUAGES, 'selected_box=localization')))),
-               array('title' => BOX_HEADING_REPORTS,
-                     'image' => 'reports.gif',
-                     'href' => tep_href_link(FILENAME_STATS_PRODUCTS_PURCHASED, 'selected_box=reports'),
-                     'children' => array(array('title' => REPORTS_PRODUCTS, 'link' => tep_href_link(FILENAME_STATS_PRODUCTS_PURCHASED, 'selected_box=reports')),
-                                         array('title' => REPORTS_ORDERS, 'link' => tep_href_link(FILENAME_STATS_CUSTOMERS, 'selected_box=reports')))),
-               array('title' => BOX_HEADING_TOOLS,
-                     'image' => 'tools.gif',
-                     'href' => tep_href_link(FILENAME_BACKUP, 'selected_box=tools'),
-                     'children' => array(array('title' => TOOLS_BACKUP, 'link' => tep_href_link(FILENAME_BACKUP, 'selected_box=tools')),
-                                         array('title' => TOOLS_BANNERS, 'link' => tep_href_link(FILENAME_BANNER_MANAGER, 'selected_box=tools')),
-                                         array('title' => TOOLS_FILES, 'link' => tep_href_link(FILENAME_FILE_MANAGER, 'selected_box=tools')))));
-
   $languages = tep_get_languages();
   $languages_array = array();
   $languages_selected = DEFAULT_LANGUAGE;
@@ -70,181 +27,96 @@
 <html <?php echo HTML_PARAMS; ?>>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
+<meta name="robots" content="noindex,nofollow">
 <title><?php echo TITLE; ?></title>
-<style type="text/css"><!--
-a { color:#080381; text-decoration:none; }
-a:hover { color:#aabbdd; text-decoration:underline; }
-a.text:link, a.text:visited { color: #000000; text-decoration: none; }
-a:text:hover { color: #000000; text-decoration: underline; }
-a.main:link, a.main:visited { color: #ffffff; text-decoration: none; }
-A.main:hover { color: #ffffff; text-decoration: underline; }
-a.sub:link, a.sub:visited { color: #dddddd; text-decoration: none; }
-A.sub:hover { color: #dddddd; text-decoration: underline; }
-.heading { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 20px; font-weight: bold; line-height: 1.5; color: #D3DBFF; }
-.main { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 17px; font-weight: bold; line-height: 1.5; color: #ffffff; }
-.sub { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; line-height: 1.5; color: #dddddd; }
-.text { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: bold; line-height: 1.5; color: #000000; }
-.menuBoxHeading { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: #ffffff; font-weight: bold; background-color: #7187bb; border-color: #7187bb; border-style: solid; border-width: 1px; }
-.infoBox { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color: #080381; background-color: #f2f4ff; border-color: #7187bb; border-style: solid; border-width: 1px; }
-.smallText { font-family: Verdana, Arial, sans-serif; font-size: 10px; }
-//--></style>
+<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
+<script language="javascript" src="includes/general.js"></script>
 </head>
-<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF">
+<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF" onload="SetFocus();">
+<!-- header //-->
+<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
+<!-- header_eof //-->
 
-<table border="0" width="600" height="100%" cellspacing="0" cellpadding="0" align="center" valign="middle">
+<!-- body //-->
+<table border="0" width="100%" cellspacing="2" cellpadding="2">
   <tr>
-    <td><table border="0" width="600" height="440" cellspacing="0" cellpadding="1" align="center" valign="middle">
-      <tr bgcolor="#000000">
-        <td><table border="0" width="600" height="440" cellspacing="0" cellpadding="0">
-          <tr bgcolor="#ffffff" height="50">
-            <td height="50"><?php echo tep_image(DIR_WS_IMAGES . 'oscommerce.gif', 'osCommerce', '204', '50'); ?></td>
-            <td align="right" class="text" nowrap><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . HEADER_TITLE_ADMINISTRATION . '</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="' . tep_catalog_href_link() . '">' . HEADER_TITLE_ONLINE_CATALOG . '</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="http://www.oscommerce.com" target="_blank">' . HEADER_TITLE_SUPPORT_SITE . '</a>'; ?>&nbsp;&nbsp;</td>
+    <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">
+<!-- left_navigation //-->
+<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
+<!-- left_navigation_eof //-->
+    </table></td>
+<!-- body_text //-->
+    <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
+      <tr>
+        <td><table border="0" width="100%" cellspacing="0" cellpadding="2" height="40">
+          <tr>
+            <td class="pageHeading"><?php echo STORE_NAME; ?></td>
+            <td class="pageHeading" align="right"><?php echo tep_draw_form('adminlanguage', FILENAME_DEFAULT, '', 'get') . tep_draw_pull_down_menu('language', $languages_array, $languages_selected, 'onChange="this.form.submit();"') . tep_hide_session_id() . '</form>'; ?></td>
           </tr>
-          <tr bgcolor="#080381">
-            <td colspan="2"><table border="0" width="460" height="390" cellspacing="0" cellpadding="2">
-              <tr valign="top">
-                <td width="140" valign="top"><table border="0" width="140" height="390" cellspacing="0" cellpadding="2">
-                  <tr>
-                    <td valign="top"><br>
+        </table></td>
+      </tr>
+      <tr>
+        <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
 <?php
-  $heading = array();
-  $contents = array();
-
-  $heading[] = array('params' => 'class="menuBoxHeading"',
-                     'text'  => 'osCommerce');
-
-  $contents[] = array('params' => 'class="infoBox"',
-                      'text'  => '<a href="http://www.oscommerce.com" target="_blank">' . BOX_ENTRY_SUPPORT_SITE . '</a><br>' .
-                                 '<a href="http://forums.oscommerce.com" target="_blank">' . BOX_ENTRY_SUPPORT_FORUMS . '</a><br>' .
-                                 '<a href="http://www.oscommerce.com/community/contributions" target="_blank">' . BOX_ENTRY_CONTRIBUTIONS . '</a>');
-
-  $box = new box;
-  echo $box->menuBox($heading, $contents);
-
-  echo '<br>';
-
-  $orders_contents = '';
-  $orders_status_query = tep_db_query("select orders_status_name, orders_status_id from " . TABLE_ORDERS_STATUS . " where language_id = '" . $languages_id . "'");
-  while ($orders_status = tep_db_fetch_array($orders_status_query)) {
-    $orders_pending_query = tep_db_query("select count(*) as count from " . TABLE_ORDERS . " where orders_status = '" . $orders_status['orders_status_id'] . "'");
-    $orders_pending = tep_db_fetch_array($orders_pending_query);
-    $orders_contents .= '<a href="' . tep_href_link(FILENAME_ORDERS, 'selected_box=customers&status=' . $orders_status['orders_status_id']) . '">' . $orders_status['orders_status_name'] . '</a>: ' . $orders_pending['count'] . '<br>';
+  $file_extension = substr($PHP_SELF, strrpos($PHP_SELF, '.'));
+  $files = array();
+  if ($dir = @dir(DIR_FS_ADMIN . 'includes/modules/index')) {
+    while ($file = $dir->read()) {
+      if (!is_dir($module_directory . $file)) {
+        if (substr($file, strrpos($file, '.')) == $file_extension) {
+          $files[] = $file;
+        }
+      }
+    }
+    sort($files);
+    $dir->close();
   }
-  $orders_contents = substr($orders_contents, 0, -4);
-
-  $heading = array();
-  $contents = array();
-
-  $heading[] = array('params' => 'class="menuBoxHeading"',
-                     'text'  => BOX_TITLE_ORDERS);
-
-  $contents[] = array('params' => 'class="infoBox"',
-                      'text'  => $orders_contents);
 
-  $box = new box;
-  echo $box->menuBox($heading, $contents);
+  $col = 0;
 
-  echo '<br>';
-
-  $customers_query = tep_db_query("select count(*) as count from " . TABLE_CUSTOMERS);
-  $customers = tep_db_fetch_array($customers_query);
-  $products_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS . " where products_status = '1'");
-  $products = tep_db_fetch_array($products_query);
-  $reviews_query = tep_db_query("select count(*) as count from " . TABLE_REVIEWS);
-  $reviews = tep_db_fetch_array($reviews_query);
+  for ($i=0, $n=sizeof($files); $i<$n; $i++) {
+    if (file_exists(DIR_WS_LANGUAGES . $language . '/modules/index/' . $files[$i])) {
+      include(DIR_WS_LANGUAGES . $language . '/modules/index/' . $files[$i]);
+    }
 
-  $heading = array();
-  $contents = array();
+    if ($col < 1) {
+      echo '          <tr>' . "\n";
+    }
 
-  $heading[] = array('params' => 'class="menuBoxHeading"',
-                     'text'  => BOX_TITLE_STATISTICS);
+    $col++;
 
-  $contents[] = array('params' => 'class="infoBox"',
-                      'text'  => BOX_ENTRY_CUSTOMERS . ' ' . $customers['count'] . '<br>' .
-                                 BOX_ENTRY_PRODUCTS . ' ' . $products['count'] . '<br>' .
-                                 BOX_ENTRY_REVIEWS . ' ' . $reviews['count']);
+    if ($col <= 2) {
+      echo '            <td width="50%" valign="top">' . "\n";
+    }
 
-  $box = new box;
-  echo $box->menuBox($heading, $contents);
+    include('includes/modules/index/' . $files[$i]);
 
-  echo '<br>';
+    if ($col <= 2) {
+      echo '            </td>' . "\n";
+    }
 
-  $contents = array();
+    if ( !isset($files[$i+1]) || ($col == 2) ) {
+      if ( !isset($files[$i+1]) && ($col == 1) ) {
+        echo '            <td width="50%" valign="top">&nbsp;</td>' . "\n";
+      }
 
-  if (getenv('HTTPS') == 'on') {
-    $size = ((getenv('SSL_CIPHER_ALGKEYSIZE')) ? getenv('SSL_CIPHER_ALGKEYSIZE') . '-bit' : '<i>' . BOX_CONNECTION_UNKNOWN . '</i>');
-    $contents[] = array('params' => 'class="infoBox"',
-                        'text' => tep_image(DIR_WS_ICONS . 'locked.gif', ICON_LOCKED, '', '', 'align="right"') . sprintf(BOX_CONNECTION_PROTECTED, $size));
-  } else {
-    $contents[] = array('params' => 'class="infoBox"',
-                        'text' => tep_image(DIR_WS_ICONS . 'unlocked.gif', ICON_UNLOCKED, '', '', 'align="right"') . BOX_CONNECTION_UNPROTECTED);
-  }
+      $col = 0;
 
-  $box = new box;
-  echo $box->tableBlock($contents);
-?>
-                    </td>
-                  </tr>
-                </table></td>
-                <td width="460"><table border="0" width="460" height="390" cellspacing="0" cellpadding="2">
-                  <tr>
-                    <td colspan="2"><table border="0" width="100%" cellspacing="0" cellpadding="2">
-                      <tr><?php echo tep_draw_form('languages', 'index.php', '', 'get'); ?>
-                        <td class="heading"><?php echo HEADING_TITLE; ?></td>
-                        <td align="right"><?php echo tep_draw_pull_down_menu('language', $languages_array, $languages_selected, 'onChange="this.form.submit();"'); ?></td>
-                      </form></tr>
-                    </table></td>
-                  </tr>
-<?php
-  $col = 2;
-  $counter = 0;
-  for ($i = 0, $n = sizeof($cat); $i < $n; $i++) {
-    $counter++;
-    if ($counter < $col) {
-      echo '                  <tr>' . "\n";
-    }
-
-    echo '                    <td><table border="0" cellspacing="0" cellpadding="2">' . "\n" .
-         '                      <tr>' . "\n" .
-         '                        <td><a href="' . $cat[$i]['href'] . '">' . tep_image(DIR_WS_IMAGES . 'categories/' . $cat[$i]['image'], $cat[$i]['title'], '32', '32') . '</a></td>' . "\n" .
-         '                        <td><table border="0" cellspacing="0" cellpadding="2">' . "\n" .
-         '                          <tr>' . "\n" .
-         '                            <td class="main"><a href="' . $cat[$i]['href'] . '" class="main">' . $cat[$i]['title'] . '</a></td>' . "\n" .
-         '                          </tr>' . "\n" .
-         '                          <tr>' . "\n" .
-         '                            <td class="sub">';
-
-    $children = '';
-    for ($j = 0, $k = sizeof($cat[$i]['children']); $j < $k; $j++) {
-      $children .= '<a href="' . $cat[$i]['children'][$j]['link'] . '" class="sub">' . $cat[$i]['children'][$j]['title'] . '</a>, ';
-    }
-    echo substr($children, 0, -2);
-
-    echo '</td> ' . "\n" .
-         '                          </tr>' . "\n" .
-         '                        </table></td>' . "\n" .
-         '                      </tr>' . "\n" .
-         '                    </table></td>' . "\n";
-
-    if ($counter >= $col) {
-      echo '                  </tr>' . "\n";
-      $counter = 0;
+      echo '  </tr>' . "\n";
     }
   }
 ?>
-                </table></td>
-              </tr>
-            </table></td>
-          </tr>
         </table></td>
       </tr>
-      <tr>
-        <td><?php require(DIR_WS_INCLUDES . 'footer.php'); ?></td>
-      </tr>
     </table></td>
   </tr>
 </table>
+<!-- body_eof //-->
 
+<!-- footer //-->
+<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
+<!-- footer_eof //-->
+<br>
 </body>
-
 </html>
+<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
diff -ruN 2.2ms2-060817.src/admin/invoice.php 2.2rc2.src/admin/invoice.php
--- 2.2ms2-060817.src/admin/invoice.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/invoice.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: invoice.php,v 1.6 2003/06/20 00:37:30 hpdl Exp $
+  $Id: invoice.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -36,7 +36,7 @@
     <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
       <tr>
         <td class="pageHeading"><?php echo nl2br(STORE_NAME_ADDRESS); ?></td>
-        <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'oscommerce.gif', 'osCommerce', '204', '50'); ?></td>
+        <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_CATALOG_IMAGES . 'store_logo.png', STORE_NAME); ?></td>
       </tr>
     </table></td>
   </tr>
@@ -51,7 +51,7 @@
             <td class="main"><b><?php echo ENTRY_SOLD_TO; ?></b></td>
           </tr>
           <tr>
-            <td class="main"><?php echo tep_address_format($order->customer['format_id'], $order->customer, 1, '', '<br>'); ?></td>
+            <td class="main"><?php echo tep_address_format($order->customer['format_id'], $order->billing, 1, '', '<br>'); ?></td>
           </tr>
           <tr>
             <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '5'); ?></td>
@@ -117,9 +117,9 @@
            '        <td class="dataTableContent" valign="top">' . $order->products[$i]['model'] . '</td>' . "\n";
       echo '        <td class="dataTableContent" align="right" valign="top">' . tep_display_tax_value($order->products[$i]['tax']) . '%</td>' . "\n" .
            '        <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format($order->products[$i]['final_price'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .
-           '        <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax']), true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .
+           '        <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax'], true), true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .
            '        <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format($order->products[$i]['final_price'] * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .
-           '        <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax']) * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n";
+           '        <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax'], true) * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n";
       echo '      </tr>' . "\n";
     }
 ?>
diff -ruN 2.2ms2-060817.src/admin/languages.php 2.2rc2.src/admin/languages.php
--- 2.2ms2-060817.src/admin/languages.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/languages.php	2007-12-21 08:02:36.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: languages.php,v 1.35 2003/06/29 22:50:52 hpdl Exp $
+  $Id: languages.php 1755 2007-12-21 14:02:36Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -18,10 +18,10 @@
     switch ($action) {
       case 'insert':
         $name = tep_db_prepare_input($HTTP_POST_VARS['name']);
-        $code = tep_db_prepare_input($HTTP_POST_VARS['code']);
+        $code = tep_db_prepare_input(substr($HTTP_POST_VARS['code'], 0, 2));
         $image = tep_db_prepare_input($HTTP_POST_VARS['image']);
         $directory = tep_db_prepare_input($HTTP_POST_VARS['directory']);
-        $sort_order = tep_db_prepare_input($HTTP_POST_VARS['sort_order']);
+        $sort_order = (int)tep_db_prepare_input($HTTP_POST_VARS['sort_order']);
 
         tep_db_query("insert into " . TABLE_LANGUAGES . " (name, code, image, directory, sort_order) values ('" . tep_db_input($name) . "', '" . tep_db_input($code) . "', '" . tep_db_input($image) . "', '" . tep_db_input($directory) . "', '" . tep_db_input($sort_order) . "')");
         $insert_id = tep_db_insert_id();
@@ -71,10 +71,10 @@
       case 'save':
         $lID = tep_db_prepare_input($HTTP_GET_VARS['lID']);
         $name = tep_db_prepare_input($HTTP_POST_VARS['name']);
-        $code = tep_db_prepare_input($HTTP_POST_VARS['code']);
+        $code = tep_db_prepare_input(substr($HTTP_POST_VARS['code'], 0, 2));
         $image = tep_db_prepare_input($HTTP_POST_VARS['image']);
         $directory = tep_db_prepare_input($HTTP_POST_VARS['directory']);
-        $sort_order = tep_db_prepare_input($HTTP_POST_VARS['sort_order']);
+        $sort_order = (int)tep_db_prepare_input($HTTP_POST_VARS['sort_order']);
 
         tep_db_query("update " . TABLE_LANGUAGES . " set name = '" . tep_db_input($name) . "', code = '" . tep_db_input($code) . "', image = '" . tep_db_input($image) . "', directory = '" . tep_db_input($directory) . "', sort_order = '" . tep_db_input($sort_order) . "' where languages_id = '" . (int)$lID . "'");
 
diff -ruN 2.2ms2-060817.src/admin/login.php 2.2rc2.src/admin/login.php
--- 2.2ms2-060817.src/admin/login.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/admin/login.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,158 @@
+<?php
+/*
+  $Id: login.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  require('includes/application_top.php');
+  require('includes/functions/password_funcs.php');
+
+  $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');
+
+  if (tep_not_null($action)) {
+    switch ($action) {
+      case 'process':
+        $username = tep_db_prepare_input($HTTP_POST_VARS['username']);
+        $password = tep_db_prepare_input($HTTP_POST_VARS['password']);
+
+        $check_query = tep_db_query("select id, user_name, user_password from " . TABLE_ADMINISTRATORS . " where user_name = '" . tep_db_input($username) . "'");
+
+        if (tep_db_num_rows($check_query) == 1) {
+          $check = tep_db_fetch_array($check_query);
+
+          if (tep_validate_password($password, $check['user_password'])) {
+            tep_session_register('admin');
+
+            $admin = array('id' => $check['id'],
+                           'username' => $check['user_name']);
+
+            if (tep_session_is_registered('redirect_origin')) {
+              $page = $redirect_origin['page'];
+              $get_string = '';
+
+              if (function_exists('http_build_query')) {
+                $get_string = http_build_query($redirect_origin['get']);
+              }
+
+              tep_session_unregister('redirect_origin');
+
+              tep_redirect(tep_href_link($page, $get_string));
+            } else {
+              tep_redirect(tep_href_link(FILENAME_DEFAULT));
+            }
+          }
+        }
+
+        $messageStack->add(ERROR_INVALID_ADMINISTRATOR, 'error');
+
+        break;
+
+      case 'logoff':
+        tep_session_unregister('selected_box');
+        tep_session_unregister('admin');
+        tep_redirect(tep_href_link(FILENAME_DEFAULT));
+
+        break;
+
+      case 'create':
+        $check_query = tep_db_query("select id from " . TABLE_ADMINISTRATORS . " limit 1");
+
+        if (tep_db_num_rows($check_query) == 0) {
+          $username = tep_db_prepare_input($HTTP_POST_VARS['username']);
+          $password = tep_db_prepare_input($HTTP_POST_VARS['password']);
+
+          tep_db_query('insert into ' . TABLE_ADMINISTRATORS . ' (user_name, user_password) values ("' . $username . '", "' . tep_encrypt_password($password) . '")');
+        }
+
+        tep_redirect(tep_href_link(FILENAME_LOGIN));
+
+        break;
+    }
+  }
+
+  $languages = tep_get_languages();
+  $languages_array = array();
+  $languages_selected = DEFAULT_LANGUAGE;
+  for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
+    $languages_array[] = array('id' => $languages[$i]['code'],
+                               'text' => $languages[$i]['name']);
+    if ($languages[$i]['directory'] == $language) {
+      $languages_selected = $languages[$i]['code'];
+    }
+  }
+
+  $admins_check_query = tep_db_query("select id from " . TABLE_ADMINISTRATORS . " limit 1");
+  if (tep_db_num_rows($admins_check_query) < 1) {
+    $messageStack->add(TEXT_CREATE_FIRST_ADMINISTRATOR, 'warning');
+  }
+?>
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html <?php echo HTML_PARAMS; ?>>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
+<meta name="robots" content="noindex,nofollow">
+<title><?php echo TITLE; ?></title>
+<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
+<script language="javascript" src="includes/general.js"></script>
+</head>
+<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF" onload="SetFocus();">
+<!-- header //-->
+<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
+<!-- header_eof //-->
+
+<!-- body //-->
+<table border="0" width="100%" cellspacing="2" cellpadding="2">
+  <tr>
+    <td><table border="0" width="100%" cellspacing="0" cellpadding="0" height="40">
+      <tr>
+        <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
+        <td class="pageHeading" align="right"><?php echo tep_draw_form('adminlanguage', FILENAME_DEFAULT, '', 'get') . tep_draw_pull_down_menu('language', $languages_array, $languages_selected, 'onChange="this.form.submit();"') . tep_hide_session_id() . '</form>'; ?></td>
+      </tr>
+    </table></td>
+  </tr>
+  <tr>
+    <td>
+
+<?php
+  $heading = array();
+  $contents = array();
+
+  if (tep_db_num_rows($admins_check_query) > 0) {
+    $heading[] = array('text' => '<b>' . HEADING_TITLE . '</b>');
+
+    $contents = array('form' => tep_draw_form('login', FILENAME_LOGIN, 'action=process'));
+    $contents[] = array('text' => TEXT_USERNAME . '<br>' . tep_draw_input_field('username'));
+    $contents[] = array('text' => '<br>' . TEXT_PASSWORD . '<br>' . tep_draw_password_field('password'));
+    $contents[] = array('align' => 'center', 'text' => '<br><input type="submit" value="' . BUTTON_LOGIN . '" />');
+  } else {
+    $heading[] = array('text' => '<b>' . HEADING_TITLE . '</b>');
+
+    $contents = array('form' => tep_draw_form('login', FILENAME_LOGIN, 'action=create'));
+    $contents[] = array('text' => TEXT_CREATE_FIRST_ADMINISTRATOR);
+    $contents[] = array('text' => '<br>' . TEXT_USERNAME . '<br>' . tep_draw_input_field('username'));
+    $contents[] = array('text' => '<br>' . TEXT_PASSWORD . '<br>' . tep_draw_password_field('password'));
+    $contents[] = array('align' => 'center', 'text' => '<br><input type="submit" value="' . BUTTON_CREATE_ADMINISTRATOR . '" />');
+  }
+
+  $box = new box;
+  echo $box->infoBox($heading, $contents);
+?>
+
+    </td>
+  </tr>
+</table>
+<!-- body_eof //-->
+
+<!-- footer //-->
+<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
+<!-- footer_eof //-->
+<br>
+</body>
+</html>
+<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
diff -ruN 2.2ms2-060817.src/admin/mail.php 2.2rc2.src/admin/mail.php
--- 2.2ms2-060817.src/admin/mail.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/mail.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: mail.php,v 1.31 2003/06/20 00:37:51 hpdl Exp $
+  $Id: mail.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/manufacturers.php 2.2rc2.src/admin/manufacturers.php
--- 2.2ms2-060817.src/admin/manufacturers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/manufacturers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: manufacturers.php,v 1.55 2003/06/29 22:50:52 hpdl Exp $
+  $Id: manufacturers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/modules.php 2.2rc2.src/admin/modules.php
--- 2.2ms2-060817.src/admin/modules.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/modules.php	2008-01-11 10:59:17.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: modules.php,v 1.47 2003/06/29 22:50:52 hpdl Exp $
+  $Id: modules.php 1802 2008-01-11 16:59:17Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -143,7 +143,8 @@
         $module_info = array('code' => $module->code,
                              'title' => $module->title,
                              'description' => $module->description,
-                             'status' => $module->check());
+                             'status' => $module->check(),
+                             'signature' => (isset($module->signature) ? $module->signature : null));
 
         $module_keys = $module->keys();
 
@@ -251,10 +252,20 @@
         $keys = substr($keys, 0, strrpos($keys, '<br><br>'));
 
         $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $mInfo->code . '&action=remove') . '">' . tep_image_button('button_module_remove.gif', IMAGE_MODULE_REMOVE) . '</a> <a href="' . tep_href_link(FILENAME_MODULES, 'set=' . $set . (isset($HTTP_GET_VARS['module']) ? '&module=' . $HTTP_GET_VARS['module'] : '') . '&action=edit') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a>');
+
+        if (isset($mInfo->signature) && (list($scode, $smodule, $sversion, $soscversion) = explode('|', $mInfo->signature))) {
+          $contents[] = array('text' => '<br>' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '&nbsp;<b>' . TEXT_INFO_VERSION . '</b> ' . $sversion . ' (<a href="http://sig.oscommerce.com/' . $mInfo->signature . '" target="_blank">' . TEXT_INFO_ONLINE_STATUS . '</a>)');
+        }
+
         $contents[] = array('text' => '<br>' . $mInfo->description);
         $contents[] = array('text' => '<br>' . $keys);
       } else {
         $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $mInfo->code . '&action=install') . '">' . tep_image_button('button_module_install.gif', IMAGE_MODULE_INSTALL) . '</a>');
+
+        if (isset($mInfo->signature) && (list($scode, $smodule, $sversion, $soscversion) = explode('|', $mInfo->signature))) {
+          $contents[] = array('text' => '<br>' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '&nbsp;<b>' . TEXT_INFO_VERSION . '</b> ' . $sversion . ' (<a href="http://sig.oscommerce.com/' . $mInfo->signature . '" target="_blank">' . TEXT_INFO_ONLINE_STATUS . '</a>)');
+        }
+
         $contents[] = array('text' => '<br>' . $mInfo->description);
       }
       break;
diff -ruN 2.2ms2-060817.src/admin/newsletters.php 2.2rc2.src/admin/newsletters.php
--- 2.2ms2-060817.src/admin/newsletters.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/newsletters.php	2007-12-20 23:26:09.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: newsletters.php,v 1.17 2003/06/29 22:50:52 hpdl Exp $
+  $Id: newsletters.php 1751 2007-12-21 05:26:09Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -38,7 +38,7 @@
           $newsletter_error = true;
         }
 
-        if (empty($module)) {
+        if (empty($newsletter_module)) {
           $messageStack->add(ERROR_NEWSLETTER_MODULE, 'error');
           $newsletter_error = true;
         }
diff -ruN 2.2ms2-060817.src/admin/orders.php 2.2rc2.src/admin/orders.php
--- 2.2ms2-060817.src/admin/orders.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/orders.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: orders.php,v 1.112 2003/06/29 22:50:52 hpdl Exp $
+  $Id: orders.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -234,9 +234,9 @@
            '            <td class="dataTableContent" valign="top">' . $order->products[$i]['model'] . '</td>' . "\n" .
            '            <td class="dataTableContent" align="right" valign="top">' . tep_display_tax_value($order->products[$i]['tax']) . '%</td>' . "\n" .
            '            <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format($order->products[$i]['final_price'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .
-           '            <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax']), true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .
+           '            <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax'], true), true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .
            '            <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format($order->products[$i]['final_price'] * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .
-           '            <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax']) * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n";
+           '            <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax'], true) * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n";
       echo '          </tr>' . "\n";
     }
 ?>
@@ -331,10 +331,10 @@
             <td align="right"><table border="0" width="100%" cellspacing="0" cellpadding="0">
               <tr><?php echo tep_draw_form('orders', FILENAME_ORDERS, '', 'get'); ?>
                 <td class="smallText" align="right"><?php echo HEADING_TITLE_SEARCH . ' ' . tep_draw_input_field('oID', '', 'size="12"') . tep_draw_hidden_field('action', 'edit'); ?></td>
-              </form></tr>
+              <?php echo tep_hide_session_id(); ?></form></tr>
               <tr><?php echo tep_draw_form('status', FILENAME_ORDERS, '', 'get'); ?>
                 <td class="smallText" align="right"><?php echo HEADING_TITLE_STATUS . ' ' . tep_draw_pull_down_menu('status', array_merge(array(array('id' => '', 'text' => TEXT_ALL_ORDERS)), $orders_statuses), '', 'onChange="this.form.submit();"'); ?></td>
-              </form></tr>
+              <?php echo tep_hide_session_id(); ?></form></tr>
             </table></td>
           </tr>
         </table></td>
diff -ruN 2.2ms2-060817.src/admin/orders_status.php 2.2rc2.src/admin/orders_status.php
--- 2.2ms2-060817.src/admin/orders_status.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/orders_status.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: orders_status.php,v 1.22 2003/06/29 22:50:52 hpdl Exp $
+  $Id: orders_status.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -25,7 +25,9 @@
           $orders_status_name_array = $HTTP_POST_VARS['orders_status_name'];
           $language_id = $languages[$i]['id'];
 
-          $sql_data_array = array('orders_status_name' => tep_db_prepare_input($orders_status_name_array[$language_id]));
+          $sql_data_array = array('orders_status_name' => tep_db_prepare_input($orders_status_name_array[$language_id]),
+                                  'public_flag' => ((isset($HTTP_POST_VARS['public_flag']) && ($HTTP_POST_VARS['public_flag'] == '1')) ? '1' : '0'),
+                                  'downloads_flag' => ((isset($HTTP_POST_VARS['downloads_flag']) && ($HTTP_POST_VARS['downloads_flag'] == '1')) ? '1' : '0'));
 
           if ($action == 'insert') {
             if (empty($orders_status_id)) {
@@ -127,10 +129,12 @@
             <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
               <tr class="dataTableHeadingRow">
                 <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_ORDERS_STATUS; ?></td>
+                <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_PUBLIC_STATUS; ?></td>
+                <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_DOWNLOADS_STATUS; ?></td>
                 <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?>&nbsp;</td>
               </tr>
 <?php
-  $orders_status_query_raw = "select orders_status_id, orders_status_name from " . TABLE_ORDERS_STATUS . " where language_id = '" . (int)$languages_id . "' order by orders_status_id";
+  $orders_status_query_raw = "select * from " . TABLE_ORDERS_STATUS . " where language_id = '" . (int)$languages_id . "' order by orders_status_id";
   $orders_status_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS, $orders_status_query_raw, $orders_status_query_numrows);
   $orders_status_query = tep_db_query($orders_status_query_raw);
   while ($orders_status = tep_db_fetch_array($orders_status_query)) {
@@ -150,13 +154,15 @@
       echo '                <td class="dataTableContent">' . $orders_status['orders_status_name'] . '</td>' . "\n";
     }
 ?>
+                <td class="dataTableContent" align="center"><?php echo tep_image(DIR_WS_IMAGES . 'icons/' . (($orders_status['public_flag'] == '1') ? 'tick.gif' : 'cross.gif')); ?></td>
+                <td class="dataTableContent" align="center"><?php echo tep_image(DIR_WS_IMAGES . 'icons/' . (($orders_status['downloads_flag'] == '1') ? 'tick.gif' : 'cross.gif')); ?></td>
                 <td class="dataTableContent" align="right"><?php if (isset($oInfo) && is_object($oInfo) && ($orders_status['orders_status_id'] == $oInfo->orders_status_id)) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_ORDERS_STATUS, 'page=' . $HTTP_GET_VARS['page'] . '&oID=' . $orders_status['orders_status_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?>&nbsp;</td>
               </tr>
 <?php
   }
 ?>
               <tr>
-                <td colspan="2"><table border="0" width="100%" cellspacing="0" cellpadding="2">
+                <td colspan="4"><table border="0" width="100%" cellspacing="0" cellpadding="2">
                   <tr>
                     <td class="smallText" valign="top"><?php echo $orders_status_split->display_count($orders_status_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $HTTP_GET_VARS['page'], TEXT_DISPLAY_NUMBER_OF_ORDERS_STATUS); ?></td>
                     <td class="smallText" align="right"><?php echo $orders_status_split->display_links($orders_status_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $HTTP_GET_VARS['page']); ?></td>
@@ -191,6 +197,8 @@
       }
 
       $contents[] = array('text' => '<br>' . TEXT_INFO_ORDERS_STATUS_NAME . $orders_status_inputs_string);
+      $contents[] = array('text' => '<br>' . tep_draw_checkbox_field('public_flag', '1') . ' ' . TEXT_SET_PUBLIC_STATUS);
+      $contents[] = array('text' => tep_draw_checkbox_field('downloads_flag', '1') . ' ' . TEXT_SET_DOWNLOADS_STATUS);
       $contents[] = array('text' => '<br>' . tep_draw_checkbox_field('default') . ' ' . TEXT_SET_DEFAULT);
       $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_insert.gif', IMAGE_INSERT) . ' <a href="' . tep_href_link(FILENAME_ORDERS_STATUS, 'page=' . $HTTP_GET_VARS['page']) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
@@ -207,6 +215,8 @@
       }
 
       $contents[] = array('text' => '<br>' . TEXT_INFO_ORDERS_STATUS_NAME . $orders_status_inputs_string);
+      $contents[] = array('text' => '<br>' . tep_draw_checkbox_field('public_flag', '1', $oInfo->public_flag) . ' ' . TEXT_SET_PUBLIC_STATUS);
+      $contents[] = array('text' => tep_draw_checkbox_field('downloads_flag', '1', $oInfo->downloads_flag) . ' ' . TEXT_SET_DOWNLOADS_STATUS);
       if (DEFAULT_ORDERS_STATUS_ID != $oInfo->orders_status_id) $contents[] = array('text' => '<br>' . tep_draw_checkbox_field('default') . ' ' . TEXT_SET_DEFAULT);
       $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_update.gif', IMAGE_UPDATE) . ' <a href="' . tep_href_link(FILENAME_ORDERS_STATUS, 'page=' . $HTTP_GET_VARS['page'] . '&oID=' . $oInfo->orders_status_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
diff -ruN 2.2ms2-060817.src/admin/packingslip.php 2.2rc2.src/admin/packingslip.php
--- 2.2ms2-060817.src/admin/packingslip.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/packingslip.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: packingslip.php,v 1.7 2003/06/20 00:40:10 hpdl Exp $
+  $Id: packingslip.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -35,7 +35,7 @@
     <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
       <tr>
         <td class="pageHeading"><?php echo nl2br(STORE_NAME_ADDRESS); ?></td>
-        <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'oscommerce.gif', 'osCommerce', '204', '50'); ?></td>
+        <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_CATALOG_IMAGES . 'store_logo.png', STORE_NAME); ?></td>
       </tr>
     </table></td>
   </tr>
@@ -50,7 +50,7 @@
             <td class="main"><b><?php echo ENTRY_SOLD_TO; ?></b></td>
           </tr>
           <tr>
-            <td class="main"><?php echo tep_address_format($order->customer['format_id'], $order->customer, 1, '', '<br>'); ?></td>
+            <td class="main"><?php echo tep_address_format($order->customer['format_id'], $order->billing, 1, '', '<br>'); ?></td>
           </tr>
           <tr>
             <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '5'); ?></td>
diff -ruN 2.2ms2-060817.src/admin/popup_image.php 2.2rc2.src/admin/popup_image.php
--- 2.2ms2-060817.src/admin/popup_image.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/popup_image.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: popup_image.php,v 1.7 2003/06/20 00:40:23 hpdl Exp $
+  $Id: popup_image.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/products_attributes.php 2.2rc2.src/admin/products_attributes.php
--- 2.2ms2-060817.src/admin/products_attributes.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/products_attributes.php	2008-01-09 14:41:00.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: products_attributes.php,v 1.52 2003/07/10 20:46:01 dgw_ Exp $
+  $Id: products_attributes.php 1776 2008-01-09 20:41:00Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -15,15 +15,13 @@
 
   $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');
 
-  if (tep_not_null($action)) {
-    $page_info = '';
-    if (isset($HTTP_GET_VARS['option_page'])) $page_info .= 'option_page=' . $HTTP_GET_VARS['option_page'] . '&';
-    if (isset($HTTP_GET_VARS['value_page'])) $page_info .= 'value_page=' . $HTTP_GET_VARS['value_page'] . '&';
-    if (isset($HTTP_GET_VARS['attribute_page'])) $page_info .= 'attribute_page=' . $HTTP_GET_VARS['attribute_page'] . '&';
-    if (tep_not_null($page_info)) {
-      $page_info = substr($page_info, 0, -1);
-    }
+  $option_page = (isset($HTTP_GET_VARS['option_page']) && is_numeric($HTTP_GET_VARS['option_page'])) ? $HTTP_GET_VARS['option_page'] : 1;
+  $value_page = (isset($HTTP_GET_VARS['value_page']) && is_numeric($HTTP_GET_VARS['value_page'])) ? $HTTP_GET_VARS['value_page'] : 1;
+  $attribute_page = (isset($HTTP_GET_VARS['attribute_page']) && is_numeric($HTTP_GET_VARS['attribute_page'])) ? $HTTP_GET_VARS['attribute_page'] : 1;
 
+  $page_info = 'option_page=' . $option_page . '&value_page=' . $value_page . '&attribute_page=' . $attribute_page;
+
+  if (tep_not_null($action)) {
     switch ($action) {
       case 'add_product_options':
         $products_options_id = tep_db_prepare_input($HTTP_POST_VARS['products_options_id']);
@@ -58,7 +56,7 @@
         $value_price = tep_db_prepare_input($HTTP_POST_VARS['value_price']);
         $price_prefix = tep_db_prepare_input($HTTP_POST_VARS['price_prefix']);
 
-        tep_db_query("insert into " . TABLE_PRODUCTS_ATTRIBUTES . " values ('', '" . (int)$products_id . "', '" . (int)$options_id . "', '" . (int)$values_id . "', '" . tep_db_input($value_price) . "', '" . tep_db_input($price_prefix) . "')");
+        tep_db_query("insert into " . TABLE_PRODUCTS_ATTRIBUTES . " values (null, '" . (int)$products_id . "', '" . (int)$options_id . "', '" . (int)$values_id . "', '" . (float)tep_db_input($value_price) . "', '" . tep_db_input($price_prefix) . "')");
 
         if (DOWNLOAD_ENABLED == 'true') {
           $products_attributes_id = tep_db_insert_id();
@@ -109,7 +107,7 @@
         $price_prefix = tep_db_prepare_input($HTTP_POST_VARS['price_prefix']);
         $attribute_id = tep_db_prepare_input($HTTP_POST_VARS['attribute_id']);
 
-        tep_db_query("update " . TABLE_PRODUCTS_ATTRIBUTES . " set products_id = '" . (int)$products_id . "', options_id = '" . (int)$options_id . "', options_values_id = '" . (int)$values_id . "', options_values_price = '" . tep_db_input($value_price) . "', price_prefix = '" . tep_db_input($price_prefix) . "' where products_attributes_id = '" . (int)$attribute_id . "'");
+        tep_db_query("update " . TABLE_PRODUCTS_ATTRIBUTES . " set products_id = '" . (int)$products_id . "', options_id = '" . (int)$options_id . "', options_values_id = '" . (int)$values_id . "', options_values_price = '" . (float)tep_db_input($value_price) . "', price_prefix = '" . tep_db_input($price_prefix) . "' where products_attributes_id = '" . (int)$attribute_id . "'");
 
         if (DOWNLOAD_ENABLED == 'true') {
           $products_attributes_filename = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_filename']);
@@ -158,13 +156,6 @@
 <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
 <title><?php echo TITLE; ?></title>
 <link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
-<script language="javascript"><!--
-function go_option() {
-  if (document.option_order_by.selected.options[document.option_order_by.selected.selectedIndex].value != "none") {
-    location = "<?php echo tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'option_page=' . ($HTTP_GET_VARS['option_page'] ? $HTTP_GET_VARS['option_page'] : 1)); ?>&option_order_by="+document.option_order_by.selected.options[document.option_order_by.selected.selectedIndex].value;
-  }
-}
-//--></script>
 </head>
 <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF">
 <!-- header //-->
@@ -194,7 +185,6 @@
 ?>
               <tr>
                 <td class="pageHeading">&nbsp;<?php echo $options_values['products_options_name']; ?>&nbsp;</td>
-                <td>&nbsp;<?php echo tep_image(DIR_WS_IMAGES . 'pixel_trans.gif', '', '1', '53'); ?>&nbsp;</td>
               </tr>
               <tr>
                 <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
@@ -233,7 +223,7 @@
                     <td colspan="3" class="main"><br><?php echo TEXT_WARNING_OF_DELETE; ?></td>
                   </tr>
                   <tr>
-                    <td align="right" colspan="3" class="main"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, (isset($HTTP_GET_VARS['value_page']) ? 'value_page=' . $HTTP_GET_VARS['value_page'] . '&' : '') . (isset($HTTP_GET_VARS['attribute_page']) ? 'attribute_page=' . $HTTP_GET_VARS['attribute_page'] : ''), 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
+                    <td align="right" colspan="3" class="main"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
                   </tr>
 <?php
     } else {
@@ -242,7 +232,7 @@
                     <td class="main" colspan="3"><br><?php echo TEXT_OK_TO_DELETE; ?></td>
                   </tr>
                   <tr>
-                    <td class="main" align="right" colspan="3"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_option&option_id=' . $HTTP_GET_VARS['option_id'], 'NONSSL') . '">'; ?><?php echo tep_image_button('button_delete.gif', ' delete '); ?></a>&nbsp;&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, (isset($HTTP_GET_VARS['order_by']) ? 'order_by=' . $HTTP_GET_VARS['order_by'] . '&' : '') . (isset($HTTP_GET_VARS['page']) ? 'page=' . $HTTP_GET_VARS['page'] : ''), 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
+                    <td class="main" align="right" colspan="3"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_option&option_id=' . $HTTP_GET_VARS['option_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_delete.gif', ' delete '); ?></a>&nbsp;&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
                   </tr>
 <?php
     }
@@ -251,60 +241,17 @@
               </tr>
 <?php
   } else {
-    if (isset($HTTP_GET_VARS['option_order_by'])) {
-      $option_order_by = $HTTP_GET_VARS['option_order_by'];
-    } else {
-      $option_order_by = 'products_options_id';
-    }
 ?>
               <tr>
-                <td colspan="2" class="pageHeading">&nbsp;<?php echo HEADING_TITLE_OPT; ?>&nbsp;</td>
-                <td align="right"><br><form name="option_order_by" action="<?php echo FILENAME_PRODUCTS_ATTRIBUTES; ?>"><select name="selected" onChange="go_option()"><option value="products_options_id"<?php if ($option_order_by == 'products_options_id') { echo ' SELECTED'; } ?>><?php echo TEXT_OPTION_ID; ?></option><option value="products_options_name"<?php if ($option_order_by == 'products_options_name') { echo ' SELECTED'; } ?>><?php echo TEXT_OPTION_NAME; ?></option></select></form></td>
+                <td colspan="3" class="pageHeading">&nbsp;<?php echo HEADING_TITLE_OPT; ?>&nbsp;</td>
               </tr>
               <tr>
-                <td colspan="3" class="smallText">
+                <td colspan="3" class="smallText" align="right">
 <?php
-    $per_page = MAX_ROW_LISTS_OPTIONS;
-    $options = "select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$languages_id . "' order by " . $option_order_by;
-    if (!isset($option_page)) {
-      $option_page = 1;
-    }
-    $prev_option_page = $option_page - 1;
-    $next_option_page = $option_page + 1;
-
-    $option_query = tep_db_query($options);
-
-    $option_page_start = ($per_page * $option_page) - $per_page;
-    $num_rows = tep_db_num_rows($option_query);
-
-    if ($num_rows <= $per_page) {
-      $num_pages = 1;
-    } else if (($num_rows % $per_page) == 0) {
-      $num_pages = ($num_rows / $per_page);
-    } else {
-      $num_pages = ($num_rows / $per_page) + 1;
-    }
-    $num_pages = (int) $num_pages;
+    $options = "select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$languages_id . "' order by products_options_id";
+    $options_split = new splitPageResults($option_page, MAX_ROW_LISTS_OPTIONS, $options, $options_query_numrows);
 
-    $options = $options . " LIMIT $option_page_start, $per_page";
-
-    // Previous
-    if ($prev_option_page)  {
-      echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'option_page=' . $prev_option_page) . '"> &lt;&lt; </a> | ';
-    }
-
-    for ($i = 1; $i <= $num_pages; $i++) {
-      if ($i != $option_page) {
-        echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'option_page=' . $i) . '">' . $i . '</a> | ';
-      } else {
-        echo '<b><font color=red>' . $i . '</font></b> | ';
-      }
-    }
-
-    // Next
-    if ($option_page != $num_pages) {
-      echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'option_page=' . $next_option_page) . '"> &gt;&gt; </a>';
-    }
+    echo $options_split->display_links($options_query_numrows, MAX_ROW_LISTS_OPTIONS, MAX_DISPLAY_PAGE_LINKS, $option_page, 'value_page=' . $value_page . '&attribute_page=' . $attribute_page, 'option_page');
 ?>
                 </td>
               </tr>
@@ -329,7 +276,7 @@
               <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
 <?php
       if (($action == 'update_option') && ($HTTP_GET_VARS['option_id'] == $options_values['products_options_id'])) {
-        echo '<form name="option" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option_name', 'NONSSL') . '" method="post">';
+        echo '<form name="option" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option_name&' . $page_info, 'NONSSL') . '" method="post">';
         $inputs = '';
         for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
           $option_name = tep_db_query("select products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . $options_values['products_options_id'] . "' and language_id = '" . $languages[$i]['id'] . "'");
@@ -339,14 +286,14 @@
 ?>
                 <td align="center" class="smallText">&nbsp;<?php echo $options_values['products_options_id']; ?><input type="hidden" name="option_id" value="<?php echo $options_values['products_options_id']; ?>">&nbsp;</td>
                 <td class="smallText"><?php echo $inputs; ?></td>
-                <td align="center" class="smallText">&nbsp;<?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, '', 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a>&nbsp;</td>
+                <td align="center" class="smallText">&nbsp;<?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a>&nbsp;</td>
 <?php
         echo '</form>' . "\n";
       } else {
 ?>
                 <td align="center" class="smallText">&nbsp;<?php echo $options_values["products_options_id"]; ?>&nbsp;</td>
                 <td class="smallText">&nbsp;<?php echo $options_values["products_options_name"]; ?>&nbsp;</td>
-                <td align="center" class="smallText">&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option&option_id=' . $options_values['products_options_id'] . '&option_order_by=' . $option_order_by . '&option_page=' . $option_page, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?></a>&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_product_option&option_id=' . $options_values['products_options_id'], 'NONSSL') , '">'; ?><?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?></a>&nbsp;</td>
+                <td align="center" class="smallText">&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option&option_id=' . $options_values['products_options_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?></a>&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_product_option&option_id=' . $options_values['products_options_id'] . '&' . $page_info, 'NONSSL') , '">'; ?><?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?></a>&nbsp;</td>
 <?php
       }
 ?>
@@ -365,7 +312,7 @@
 ?>
               <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
 <?php
-      echo '<form name="options" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=add_product_options&option_page=' . $option_page, 'NONSSL') . '" method="post"><input type="hidden" name="products_options_id" value="' . $next_id . '">';
+      echo '<form name="options" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=add_product_options&' . $page_info, 'NONSSL') . '" method="post"><input type="hidden" name="products_options_id" value="' . $next_id . '">';
       $inputs = '';
       for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
         $inputs .= $languages[$i]['code'] . ':&nbsp;<input type="text" name="option_name[' . $languages[$i]['id'] . ']" size="20">&nbsp;<br>';
@@ -396,7 +343,6 @@
 ?>
               <tr>
                 <td colspan="3" class="pageHeading">&nbsp;<?php echo $values_values['products_options_values_name']; ?>&nbsp;</td>
-                <td>&nbsp;<?php echo tep_image(DIR_WS_IMAGES . 'pixel_trans.gif', '', '1', '53'); ?>&nbsp;</td>
               </tr>
               <tr>
                 <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
@@ -434,7 +380,7 @@
                     <td class="main" colspan="3"><br><?php echo TEXT_WARNING_OF_DELETE; ?></td>
                   </tr>
                   <tr>
-                    <td class="main" align="right" colspan="3"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, (isset($HTTP_GET_VARS['value_page']) ? 'value_page=' . $HTTP_GET_VARS['value_page'] . '&' : '') . (isset($HTTP_GET_VARS['attribute_page']) ? 'attribute_page=' . $attribute_page : ''), 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
+                    <td class="main" align="right" colspan="3"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
                   </tr>
 <?php
     } else {
@@ -443,7 +389,7 @@
                     <td class="main" colspan="3"><br><?php echo TEXT_OK_TO_DELETE; ?></td>
                   </tr>
                   <tr>
-                    <td class="main" align="right" colspan="3"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_value&value_id=' . $HTTP_GET_VARS['value_id'], 'NONSSL') . '">'; ?><?php echo tep_image_button('button_delete.gif', ' delete '); ?></a>&nbsp;&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, '&option_page=' . $option_page . (isset($HTTP_GET_VARS['value_page']) ? '&value_page=' . $value_page : '') . (isset($HTTP_GET_VARS['attribute_page']) ? '&attribute_page=' . $attribute_page : ''), 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
+                    <td class="main" align="right" colspan="3"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_value&value_id=' . $HTTP_GET_VARS['value_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_delete.gif', ' delete '); ?></a>&nbsp;&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
                   </tr>
 <?php
     }
@@ -454,53 +400,15 @@
   } else {
 ?>
               <tr>
-                <td colspan="3" class="pageHeading">&nbsp;<?php echo HEADING_TITLE_VAL; ?>&nbsp;</td>
-                <td>&nbsp;<?php echo tep_image(DIR_WS_IMAGES . 'pixel_trans.gif', '', '1', '53'); ?>&nbsp;</td>
+                <td colspan="4" class="pageHeading">&nbsp;<?php echo HEADING_TITLE_VAL; ?>&nbsp;</td>
               </tr>
               <tr>
-                <td colspan="4" class="smallText">
+                <td colspan="4" class="smallText" align="right">
 <?php
-    $per_page = MAX_ROW_LISTS_OPTIONS;
     $values = "select pov.products_options_values_id, pov.products_options_values_name, pov2po.products_options_id from " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov left join " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " pov2po on pov.products_options_values_id = pov2po.products_options_values_id where pov.language_id = '" . (int)$languages_id . "' order by pov.products_options_values_id";
-    if (!isset($value_page)) {
-      $value_page = 1;
-    }
-    $prev_value_page = $value_page - 1;
-    $next_value_page = $value_page + 1;
-
-    $value_query = tep_db_query($values);
+    $values_split = new splitPageResults($value_page, MAX_ROW_LISTS_OPTIONS, $values, $values_query_numrows);
 
-    $value_page_start = ($per_page * $value_page) - $per_page;
-    $num_rows = tep_db_num_rows($value_query);
-
-    if ($num_rows <= $per_page) {
-      $num_pages = 1;
-    } else if (($num_rows % $per_page) == 0) {
-      $num_pages = ($num_rows / $per_page);
-    } else {
-      $num_pages = ($num_rows / $per_page) + 1;
-    }
-    $num_pages = (int) $num_pages;
-
-    $values = $values . " LIMIT $value_page_start, $per_page";
-
-    // Previous
-    if ($prev_value_page)  {
-      echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'option_order_by=' . $option_order_by . '&value_page=' . $prev_value_page) . '"> &lt;&lt; </a> | ';
-    }
-
-    for ($i = 1; $i <= $num_pages; $i++) {
-      if ($i != $value_page) {
-         echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, (isset($option_order_by) ? 'option_order_by=' . $option_order_by . '&' : '') . 'value_page=' . $i) . '">' . $i . '</a> | ';
-      } else {
-         echo '<b><font color=red>' . $i . '</font></b> | ';
-      }
-    }
-
-    // Next
-    if ($value_page != $num_pages) {
-      echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, (isset($option_order_by) ? 'option_order_by=' . $option_order_by . '&' : '') . 'value_page=' . $next_value_page) . '"> &gt;&gt;</a> ';
-    }
+    echo $values_split->display_links($values_query_numrows, MAX_ROW_LISTS_OPTIONS, MAX_DISPLAY_PAGE_LINKS, $value_page, 'option_page=' . $option_page . '&attribute_page=' . $attribute_page, 'value_page');
 ?>
                 </td>
               </tr>
@@ -528,7 +436,7 @@
               <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
 <?php
       if (($action == 'update_option_value') && ($HTTP_GET_VARS['value_id'] == $values_values['products_options_values_id'])) {
-        echo '<form name="values" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_value', 'NONSSL') . '" method="post">';
+        echo '<form name="values" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_value&' . $page_info, 'NONSSL') . '" method="post">';
         $inputs = '';
         for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
           $value_name = tep_db_query("select products_options_values_name from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$values_values['products_options_values_id'] . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
@@ -550,7 +458,7 @@
 ?>
                 </select>&nbsp;</td>
                 <td class="smallText"><?php echo $inputs; ?></td>
-                <td align="center" class="smallText">&nbsp;<?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, '', 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a>&nbsp;</td>
+                <td align="center" class="smallText">&nbsp;<?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a>&nbsp;</td>
 <?php
         echo '</form>';
       } else {
@@ -558,7 +466,7 @@
                 <td align="center" class="smallText">&nbsp;<?php echo $values_values["products_options_values_id"]; ?>&nbsp;</td>
                 <td align="center" class="smallText">&nbsp;<?php echo $options_name; ?>&nbsp;</td>
                 <td class="smallText">&nbsp;<?php echo $values_name; ?>&nbsp;</td>
-                <td align="center" class="smallText">&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option_value&value_id=' . $values_values['products_options_values_id'] . (isset($HTTP_GET_VARS['value_page']) ? '&value_page=' . $HTTP_GET_VARS['value_page'] : ''), 'NONSSL') . '">'; ?><?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?></a>&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_option_value&value_id=' . $values_values['products_options_values_id'], 'NONSSL') , '">'; ?><?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?></a>&nbsp;</td>
+                <td align="center" class="smallText">&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option_value&value_id=' . $values_values['products_options_values_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?></a>&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_option_value&value_id=' . $values_values['products_options_values_id'] . '&' . $page_info, 'NONSSL') , '">'; ?><?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?></a>&nbsp;</td>
 <?php
       }
       $max_values_id_query = tep_db_query("select max(products_options_values_id) + 1 as next_id from " . TABLE_PRODUCTS_OPTIONS_VALUES);
@@ -575,7 +483,7 @@
 ?>
               <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
 <?php
-      echo '<form name="values" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=add_product_option_values&value_page=' . $value_page, 'NONSSL') . '" method="post">';
+      echo '<form name="values" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=add_product_option_values&' . $page_info, 'NONSSL') . '" method="post">';
 ?>
                 <td align="center" class="smallText">&nbsp;<?php echo $next_id; ?>&nbsp;</td>
                 <td align="center" class="smallText">&nbsp;<select name="option_id">
@@ -611,10 +519,12 @@
       </tr> 
 <!-- products_attributes //-->  
       <tr>
+        <td class="smallText">&nbsp;</td>
+      </tr>
+      <tr>
         <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
           <tr>
             <td class="pageHeading">&nbsp;<?php echo HEADING_TITLE_ATRIB; ?>&nbsp;</td>
-            <td>&nbsp;<?php echo tep_image(DIR_WS_IMAGES . 'pixel_trans.gif', '', '1', '53'); ?>&nbsp;</td>
           </tr>
         </table></td>
       </tr>
@@ -625,55 +535,20 @@
   } else {
     $form_action = 'add_product_attributes';
   }
-
-  if (!isset($attribute_page)) {
-    $attribute_page = 1;
-  }
-  $prev_attribute_page = $attribute_page - 1;
-  $next_attribute_page = $attribute_page + 1;
 ?>
-        <td><form name="attributes" action="<?php echo tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=' . $form_action . '&option_page=' . $option_page . '&value_page=' . $value_page . '&attribute_page=' . $attribute_page); ?>" method="post"><table border="0" width="100%" cellspacing="0" cellpadding="2">
+        <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
           <tr>
-            <td colspan="7" class="smallText">
+            <td class="smallText" align="right">
 <?php
-  $per_page = MAX_ROW_LISTS_OPTIONS;
   $attributes = "select pa.* from " . TABLE_PRODUCTS_ATTRIBUTES . " pa left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on pa.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by pd.products_name";
-  $attribute_query = tep_db_query($attributes);
+  $attributes_split = new splitPageResults($attribute_page, MAX_ROW_LISTS_OPTIONS, $attributes, $attributes_query_numrows);
 
-  $attribute_page_start = ($per_page * $attribute_page) - $per_page;
-  $num_rows = tep_db_num_rows($attribute_query);
-
-  if ($num_rows <= $per_page) {
-     $num_pages = 1;
-  } else if (($num_rows % $per_page) == 0) {
-     $num_pages = ($num_rows / $per_page);
-  } else {
-     $num_pages = ($num_rows / $per_page) + 1;
-  }
-  $num_pages = (int) $num_pages;
-
-  $attributes = $attributes . " LIMIT $attribute_page_start, $per_page";
-
-  // Previous
-  if ($prev_attribute_page) {
-    echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'attribute_page=' . $prev_attribute_page) . '"> &lt;&lt; </a> | ';
-  }
-
-  for ($i = 1; $i <= $num_pages; $i++) {
-    if ($i != $attribute_page) {
-      echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'attribute_page=' . $i) . '">' . $i . '</a> | ';
-    } else {
-      echo '<b><font color="red">' . $i . '</font></b> | ';
-    }
-  }
-
-  // Next
-  if ($attribute_page != $num_pages) {
-    echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'attribute_page=' . $next_attribute_page) . '"> &gt;&gt; </a>';
-  }
+  echo $attributes_split->display_links($attributes_query_numrows, MAX_ROW_LISTS_OPTIONS, MAX_DISPLAY_PAGE_LINKS, $attribute_page, 'option_page=' . $option_page . '&value_page=' . $value_page, 'attribute_page');
 ?>
             </td>
           </tr>
+        </table>
+        <form name="attributes" action="<?php echo tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=' . $form_action . '&' . $page_info); ?>" method="post"><table border="0" width="100%" cellspacing="0" cellpadding="2">
           <tr>
             <td colspan="7"><?php echo tep_black_line(); ?></td>
           </tr>
@@ -741,7 +616,7 @@
             </select>&nbsp;</td>
             <td align="right" class="smallText">&nbsp;<input type="text" name="value_price" value="<?php echo $attributes_values['options_values_price']; ?>" size="6">&nbsp;</td>
             <td align="center" class="smallText">&nbsp;<input type="text" name="price_prefix" value="<?php echo $attributes_values['price_prefix']; ?>" size="2">&nbsp;</td>
-            <td align="center" class="smallText">&nbsp;<?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, '&attribute_page=' . $attribute_page, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a>&nbsp;</td>
+            <td align="center" class="smallText">&nbsp;<?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a>&nbsp;</td>
 <?php
       if (DOWNLOAD_ENABLED == 'true') {
         $download_query_raw ="select products_attributes_filename, products_attributes_maxdays, products_attributes_maxcount 
@@ -784,7 +659,7 @@
             <td class="smallText">&nbsp;<b><?php echo $values_name; ?></b>&nbsp;</td>
             <td align="right" class="smallText">&nbsp;<b><?php echo $attributes_values["options_values_price"]; ?></b>&nbsp;</td>
             <td align="center" class="smallText">&nbsp;<b><?php echo $attributes_values["price_prefix"]; ?></b>&nbsp;</td>
-            <td align="center" class="smallText">&nbsp;<b><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_attribute&attribute_id=' . $HTTP_GET_VARS['attribute_id']) . '">'; ?><?php echo tep_image_button('button_confirm.gif', IMAGE_CONFIRM); ?></a>&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, '&option_page=' . $option_page . '&value_page=' . $value_page . '&attribute_page=' . $attribute_page, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a>&nbsp;</b></td>
+            <td align="center" class="smallText">&nbsp;<b><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_attribute&attribute_id=' . $HTTP_GET_VARS['attribute_id'] . '&' . $page_info) . '">'; ?><?php echo tep_image_button('button_confirm.gif', IMAGE_CONFIRM); ?></a>&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a>&nbsp;</b></td>
 <?php
     } else {
 ?>
@@ -794,7 +669,7 @@
             <td class="smallText">&nbsp;<?php echo $values_name; ?>&nbsp;</td>
             <td align="right" class="smallText">&nbsp;<?php echo $attributes_values["options_values_price"]; ?>&nbsp;</td>
             <td align="center" class="smallText">&nbsp;<?php echo $attributes_values["price_prefix"]; ?>&nbsp;</td>
-            <td align="center" class="smallText">&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_attribute&attribute_id=' . $attributes_values['products_attributes_id'] . '&attribute_page=' . $attribute_page, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?></a>&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_product_attribute&attribute_id=' . $attributes_values['products_attributes_id'] . '&attribute_page=' . $attribute_page, 'NONSSL') , '">'; ?><?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?></a>&nbsp;</td>
+            <td align="center" class="smallText">&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_attribute&attribute_id=' . $attributes_values['products_attributes_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?></a>&nbsp;&nbsp;<?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_product_attribute&attribute_id=' . $attributes_values['products_attributes_id'] . '&' . $page_info, 'NONSSL') , '">'; ?><?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?></a>&nbsp;</td>
 <?php
     }
     $max_attributes_id_query = tep_db_query("select max(products_attributes_id) + 1 as next_id from " . TABLE_PRODUCTS_ATTRIBUTES);
diff -ruN 2.2ms2-060817.src/admin/products_expected.php 2.2rc2.src/admin/products_expected.php
--- 2.2ms2-060817.src/admin/products_expected.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/products_expected.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: products_expected.php,v 1.31 2003/06/29 22:50:52 hpdl Exp $
+  $Id: products_expected.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/reviews.php 2.2rc2.src/admin/reviews.php
--- 2.2ms2-060817.src/admin/reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: reviews.php,v 1.43 2003/06/29 22:50:52 hpdl Exp $
+  $Id: reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -162,7 +162,7 @@
     if (tep_not_null($HTTP_POST_VARS)) {
 /* Re-Post all POST'ed variables */
       reset($HTTP_POST_VARS);
-      while(list($key, $value) = each($HTTP_POST_VARS)) echo tep_draw_hidden_field($key, $value);
+      while (list($key, $value) = each($HTTP_POST_VARS)) echo tep_draw_hidden_field($key, htmlspecialchars(stripslashes($value)));
 ?>
       <tr>
         <td align="right" class="smallText"><?php echo '<a href="' . tep_href_link(FILENAME_REVIEWS, 'page=' . $HTTP_GET_VARS['page'] . '&rID=' . $rInfo->reviews_id . '&action=edit') . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a> ' . tep_image_submit('button_update.gif', IMAGE_UPDATE) . ' <a href="' . tep_href_link(FILENAME_REVIEWS, 'page=' . $HTTP_GET_VARS['page'] . '&rID=' . $rInfo->reviews_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>'; ?></td>
diff -ruN 2.2ms2-060817.src/admin/server_info.php 2.2rc2.src/admin/server_info.php
--- 2.2ms2-060817.src/admin/server_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/server_info.php	2008-01-10 09:07:07.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: server_info.php,v 1.6 2003/06/30 13:13:49 dgw_ Exp $
+  $Id: server_info.php 1785 2008-01-10 15:07:07Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -111,7 +111,7 @@
     $phpinfo = str_replace('border: 1px', '', $phpinfo);
     ereg('<body>(.*)</body>', $phpinfo, $regs);
     echo '<table border="1" cellpadding="3" width="600" style="border: 0px; border-color: #000000;">' .
-         '  <tr><td><a href="http://www.oscommerce.com"><img border="0" src="images/oscommerce.gif" alt=" osCommerce " /></a><h1 class="p"> ' . PROJECT_VERSION . '</h1></td>' . 
+         '  <tr><td><a href="http://www.oscommerce.com"><img border="0" src="images/oscommerce.png" title="' . PROJECT_VERSION . '" /></a><h1 class="p"> ' . PROJECT_VERSION . '</h1></td>' . 
          '  </tr>' .
          '</table>';
     echo $regs[1];
diff -ruN 2.2ms2-060817.src/admin/specials.php 2.2rc2.src/admin/specials.php
--- 2.2ms2-060817.src/admin/specials.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/specials.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: specials.php,v 1.41 2003/06/29 22:50:52 hpdl Exp $
+  $Id: specials.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/stats_customers.php 2.2rc2.src/admin/stats_customers.php
--- 2.2ms2-060817.src/admin/stats_customers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/stats_customers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_customers.php,v 1.31 2003/06/29 22:50:52 hpdl Exp $
+  $Id: stats_customers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/stats_products_purchased.php 2.2rc2.src/admin/stats_products_purchased.php
--- 2.2ms2-060817.src/admin/stats_products_purchased.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/stats_products_purchased.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_products_purchased.php,v 1.29 2003/06/29 22:50:52 hpdl Exp $
+  $Id: stats_products_purchased.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/stats_products_viewed.php 2.2rc2.src/admin/stats_products_viewed.php
--- 2.2ms2-060817.src/admin/stats_products_viewed.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/stats_products_viewed.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: stats_products_viewed.php,v 1.29 2003/06/29 22:50:52 hpdl Exp $
+  $Id: stats_products_viewed.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/tax_classes.php 2.2rc2.src/admin/tax_classes.php
--- 2.2ms2-060817.src/admin/tax_classes.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/tax_classes.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tax_classes.php,v 1.21 2003/06/29 22:50:52 hpdl Exp $
+  $Id: tax_classes.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/tax_rates.php 2.2rc2.src/admin/tax_rates.php
--- 2.2ms2-060817.src/admin/tax_rates.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/tax_rates.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tax_rates.php,v 1.30 2003/06/29 22:50:52 hpdl Exp $
+  $Id: tax_rates.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/whos_online.php 2.2rc2.src/admin/whos_online.php
--- 2.2ms2-060817.src/admin/whos_online.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/whos_online.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: whos_online.php,v 1.32 2003/06/29 22:50:52 hpdl Exp $
+  $Id: whos_online.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/admin/zones.php 2.2rc2.src/admin/zones.php
--- 2.2ms2-060817.src/admin/zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/admin/zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: zones.php,v 1.23 2003/06/29 22:50:52 hpdl Exp $
+  $Id: zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/advanced_search.php 2.2rc2.src/advanced_search.php
--- 2.2ms2-060817.src/advanced_search.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/advanced_search.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: advanced_search.php,v 1.50 2003/06/05 23:25:46 hpdl Exp $
+  $Id: advanced_search.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/advanced_search_result.php 2.2rc2.src/advanced_search_result.php
--- 2.2ms2-060817.src/advanced_search_result.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/advanced_search_result.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: advanced_search_result.php,v 1.72 2003/06/23 06:50:11 project3000 Exp $
+  $Id: advanced_search_result.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/checkout_confirmation.php 2.2rc2.src/checkout_confirmation.php
--- 2.2ms2-060817.src/checkout_confirmation.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/checkout_confirmation.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_confirmation.php,v 1.139 2003/06/11 17:34:53 hpdl Exp $
+  $Id: checkout_confirmation.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -66,6 +66,7 @@
 
   require(DIR_WS_CLASSES . 'order_total.php');
   $order_total_modules = new order_total;
+  $order_total_modules->process();
 
 // Stock Check
   $any_out_of_stock = false;
@@ -110,7 +111,17 @@
 <!-- body_text //-->
     <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
       <tr>
-        <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
+        <td>
+<?php
+  if (isset($$payment->form_action_url)) {
+    $form_action_url = $$payment->form_action_url;
+  } else {
+    $form_action_url = tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL');
+  }
+
+  echo tep_draw_form('checkout_confirmation', $form_action_url, 'post');
+?>
+        <table border="0" width="100%" cellspacing="0" cellpadding="0">
           <tr>
             <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
             <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_confirmation.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
@@ -227,7 +238,6 @@
             <td width="70%" valign="top" align="right"><table border="0" cellspacing="0" cellpadding="2">
 <?php
   if (MODULE_ORDER_TOTAL_INSTALLED) {
-    $order_total_modules->process();
     echo $order_total_modules->output();
   }
 ?>
@@ -309,19 +319,11 @@
           <tr>
             <td align="right" class="main">
 <?php
-  if (isset($$payment->form_action_url)) {
-    $form_action_url = $$payment->form_action_url;
-  } else {
-    $form_action_url = tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL');
-  }
-
-  echo tep_draw_form('checkout_confirmation', $form_action_url, 'post');
-
   if (is_array($payment_modules->modules)) {
     echo $payment_modules->process_button();
   }
 
-  echo tep_image_submit('button_confirm_order.gif', IMAGE_BUTTON_CONFIRM_ORDER) . '</form>' . "\n";
+  echo tep_image_submit('button_confirm_order.gif', IMAGE_BUTTON_CONFIRM_ORDER) . "\n";
 ?>
             </td>
           </tr>
@@ -362,7 +364,7 @@
           </tr>
         </table></td>
       </tr>
-    </table></td>
+    </table></form></td>
 <!-- body_text_eof //-->
     <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
 <!-- right_navigation //-->
diff -ruN 2.2ms2-060817.src/checkout_payment_address.php 2.2rc2.src/checkout_payment_address.php
--- 2.2ms2-060817.src/checkout_payment_address.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/checkout_payment_address.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_payment_address.php,v 1.14 2003/06/09 23:03:53 hpdl Exp $
+  $Id: checkout_payment_address.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -95,7 +95,7 @@
         $check = tep_db_fetch_array($check_query);
         $entry_state_has_zones = ($check['total'] > 0);
         if ($entry_state_has_zones == true) {
-          $zone_query = tep_db_query("select distinct zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and (zone_name like '" . tep_db_input($state) . "%' or zone_code like '%" . tep_db_input($state) . "%')");
+          $zone_query = tep_db_query("select distinct zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and (zone_name = '" . tep_db_input($state) . "' or zone_code = '" . tep_db_input($state) . "')");
           if (tep_db_num_rows($zone_query) == 1) {
             $zone = tep_db_fetch_array($zone_query);
             $zone_id = $zone['zone_id'];
diff -ruN 2.2ms2-060817.src/checkout_payment.php 2.2rc2.src/checkout_payment.php
--- 2.2ms2-060817.src/checkout_payment.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/checkout_payment.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: checkout_payment.php,v 1.113 2003/06/29 23:03:27 hpdl Exp $
+  $Id: checkout_payment.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -52,12 +52,14 @@
     $billto = $customer_default_address_id;
   } else {
 // verify the selected billing address
-    $check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$billto . "'");
-    $check_address = tep_db_fetch_array($check_address_query);
-
-    if ($check_address['total'] != '1') {
-      $billto = $customer_default_address_id;
-      if (tep_session_is_registered('payment')) tep_session_unregister('payment');
+    if ( (is_array($billto) && empty($billto)) || is_numeric($billto) ) {
+      $check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$billto . "'");
+      $check_address = tep_db_fetch_array($check_address_query);
+
+      if ($check_address['total'] != '1') {
+        $billto = $customer_default_address_id;
+        if (tep_session_is_registered('payment')) tep_session_unregister('payment');
+      }
     }
   }
 
@@ -65,6 +67,9 @@
   $order = new order;
 
   if (!tep_session_is_registered('comments')) tep_session_register('comments');
+  if (isset($HTTP_POST_VARS['comments']) && tep_not_null($HTTP_POST_VARS['comments'])) {
+    $comments = tep_db_prepare_input($HTTP_POST_VARS['comments']);
+  }
 
   $total_weight = $cart->show_weight();
   $total_count = $cart->count_contents();
@@ -255,7 +260,7 @@
                     <td class="main" align="right">
 <?php
     if (sizeof($selection) > 1) {
-      echo tep_draw_radio_field('payment', $selection[$i]['id']);
+      echo tep_draw_radio_field('payment', $selection[$i]['id'], ($selection[$i]['id'] == $payment));
     } else {
       echo tep_draw_hidden_field('payment', $selection[$i]['id']);
     }
@@ -322,7 +327,7 @@
           <tr class="infoBoxContents">
             <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
               <tr>
-                <td><?php echo tep_draw_textarea_field('comments', 'soft', '60', '5'); ?></td>
+                <td><?php echo tep_draw_textarea_field('comments', 'soft', '60', '5', $comments); ?></td>
               </tr>
             </table></td>
           </tr>
diff -ruN 2.2ms2-060817.src/checkout_process.php 2.2rc2.src/checkout_process.php
--- 2.2ms2-060817.src/checkout_process.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/checkout_process.php	2007-12-20 23:20:28.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: checkout_process.php,v 1.128 2003/05/28 18:00:29 hpdl Exp $
+  $Id: checkout_process.php 1750 2007-12-21 05:20:28Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -17,9 +17,15 @@
     $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));
     tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
   }
-  
-  if (!tep_session_is_registered('sendto')) {
-    tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
+
+// if there is nothing in the customers cart, redirect them to the shopping cart page
+  if ($cart->count_contents() < 1) {
+    tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
+  }
+
+// if no shipping method has been selected, redirect the customer to the shipping method selection page
+  if (!tep_session_is_registered('shipping') || !tep_session_is_registered('sendto')) {
+    tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
   }
 
   if ( (tep_not_null(MODULE_PAYMENT_INSTALLED)) && (!tep_session_is_registered('payment')) ) {
@@ -46,14 +52,34 @@
   require(DIR_WS_CLASSES . 'order.php');
   $order = new order;
 
-// load the before_process function from the payment modules
-  $payment_modules->before_process();
+// Stock Check
+  $any_out_of_stock = false;
+  if (STOCK_CHECK == 'true') {
+    for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+      if (tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty'])) {
+        $any_out_of_stock = true;
+      }
+    }
+    // Out of Stock
+    if ( (STOCK_ALLOW_CHECKOUT != 'true') && ($any_out_of_stock == true) ) {
+      tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
+    }
+  }
+
+  $payment_modules->update_status();
+
+  if ( ( is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && !is_object($$payment) ) || (is_object($$payment) && ($$payment->enabled == false)) ) {
+    tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED), 'SSL'));
+  }
 
   require(DIR_WS_CLASSES . 'order_total.php');
   $order_total_modules = new order_total;
 
   $order_totals = $order_total_modules->process();
 
+// load the before_process function from the payment modules
+  $payment_modules->before_process();
+
   $sql_data_array = array('customers_id' => $customer_id,
                           'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
                           'customers_company' => $order->customer['company'],
@@ -66,7 +92,7 @@
                           'customers_telephone' => $order->customer['telephone'], 
                           'customers_email_address' => $order->customer['email_address'],
                           'customers_address_format_id' => $order->customer['format_id'], 
-                          'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'], 
+                          'delivery_name' => trim($order->delivery['firstname'] . ' ' . $order->delivery['lastname']),
                           'delivery_company' => $order->delivery['company'],
                           'delivery_street_address' => $order->delivery['street_address'], 
                           'delivery_suburb' => $order->delivery['suburb'], 
@@ -250,7 +276,7 @@
     $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" . 
                     EMAIL_SEPARATOR . "\n";
     $payment_class = $$payment;
-    $email_order .= $payment_class->title . "\n\n";
+    $email_order .= $order->info['payment_method'] . "\n\n";
     if ($payment_class->email_footer) { 
       $email_order .= $payment_class->email_footer . "\n\n";
     }
diff -ruN 2.2ms2-060817.src/checkout_shipping_address.php 2.2rc2.src/checkout_shipping_address.php
--- 2.2ms2-060817.src/checkout_shipping_address.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/checkout_shipping_address.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_shipping_address.php,v 1.15 2003/06/09 23:03:53 hpdl Exp $
+  $Id: checkout_shipping_address.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -108,7 +108,7 @@
         $check = tep_db_fetch_array($check_query);
         $entry_state_has_zones = ($check['total'] > 0);
         if ($entry_state_has_zones == true) {
-          $zone_query = tep_db_query("select distinct zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and (zone_name like '" . tep_db_input($state) . "%' or zone_code like '%" . tep_db_input($state) . "%')");
+          $zone_query = tep_db_query("select distinct zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and (zone_name = '" . tep_db_input($state) . "' or zone_code = '" . tep_db_input($state) . "')");
           if (tep_db_num_rows($zone_query) == 1) {
             $zone = tep_db_fetch_array($zone_query);
             $zone_id = $zone['zone_id'];
diff -ruN 2.2ms2-060817.src/checkout_shipping.php 2.2rc2.src/checkout_shipping.php
--- 2.2ms2-060817.src/checkout_shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/checkout_shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_shipping.php,v 1.16 2003/06/09 23:03:53 hpdl Exp $
+  $Id: checkout_shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -30,12 +30,14 @@
     $sendto = $customer_default_address_id;
   } else {
 // verify the selected shipping address
-    $check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$sendto . "'");
-    $check_address = tep_db_fetch_array($check_address_query);
-
-    if ($check_address['total'] != '1') {
-      $sendto = $customer_default_address_id;
-      if (tep_session_is_registered('shipping')) tep_session_unregister('shipping');
+    if ( (is_array($sendto) && empty($sendto)) || is_numeric($sendto) ) {
+      $check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$sendto . "'");
+      $check_address = tep_db_fetch_array($check_address_query);
+
+      if ($check_address['total'] != '1') {
+        $sendto = $customer_default_address_id;
+        if (tep_session_is_registered('shipping')) tep_session_unregister('shipping');
+      }
     }
   }
 
diff -ruN 2.2ms2-060817.src/checkout_success.php 2.2rc2.src/checkout_success.php
--- 2.2ms2-060817.src/checkout_success.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/checkout_success.php	2007-12-20 22:23:36.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: checkout_success.php,v 1.49 2003/06/09 23:03:53 hpdl Exp $
+  $Id: checkout_success.php 1749 2007-12-21 04:23:36Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -18,13 +18,25 @@
   }
 
   if (isset($HTTP_GET_VARS['action']) && ($HTTP_GET_VARS['action'] == 'update')) {
-    $notify_string = 'action=notify&';
-    $notify = $HTTP_POST_VARS['notify'];
-    if (!is_array($notify)) $notify = array($notify);
-    for ($i=0, $n=sizeof($notify); $i<$n; $i++) {
-      $notify_string .= 'notify[]=' . $notify[$i] . '&';
+    $notify_string = '';
+
+    if (isset($HTTP_POST_VARS['notify']) && !empty($HTTP_POST_VARS['notify'])) {
+      $notify = $HTTP_POST_VARS['notify'];
+
+      if (!is_array($notify)) {
+        $notify = array($notify);
+      }
+
+      for ($i=0, $n=sizeof($notify); $i<$n; $i++) {
+        if (is_numeric($notify[$i])) {
+          $notify_string .= 'notify[]=' . $notify[$i] . '&';
+        }
+      }
+
+      if (!empty($notify_string)) {
+        $notify_string = 'action=notify&' . substr($notify_string, 0, -1);
+      }
     }
-    if (strlen($notify_string) > 0) $notify_string = substr($notify_string, 0, -1);
 
     tep_redirect(tep_href_link(FILENAME_DEFAULT, $notify_string));
   }
diff -ruN 2.2ms2-060817.src/conditions.php 2.2rc2.src/conditions.php
--- 2.2ms2-060817.src/conditions.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/conditions.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: conditions.php,v 1.22 2003/06/05 23:26:22 hpdl Exp $
+  $Id: conditions.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/contact_us.php 2.2rc2.src/contact_us.php
--- 2.2ms2-060817.src/contact_us.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/contact_us.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: contact_us.php,v 1.42 2003/06/12 12:17:07 hpdl Exp $
+  $Id: contact_us.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/cookie_usage.php 2.2rc2.src/cookie_usage.php
--- 2.2ms2-060817.src/cookie_usage.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/cookie_usage.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cookie_usage.php,v 1.2 2003/06/05 23:26:23 hpdl Exp $
+  $Id: cookie_usage.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/create_account.php 2.2rc2.src/create_account.php
--- 2.2ms2-060817.src/create_account.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/create_account.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: create_account.php,v 1.65 2003/06/09 23:03:54 hpdl Exp $
+  $Id: create_account.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -132,7 +132,7 @@
       $check = tep_db_fetch_array($check_query);
       $entry_state_has_zones = ($check['total'] > 0);
       if ($entry_state_has_zones == true) {
-        $zone_query = tep_db_query("select distinct zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and (zone_name like '" . tep_db_input($state) . "%' or zone_code like '%" . tep_db_input($state) . "%')");
+        $zone_query = tep_db_query("select distinct zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and (zone_name = '" . tep_db_input($state) . "' or zone_code = '" . tep_db_input($state) . "')");
         if (tep_db_num_rows($zone_query) == 1) {
           $zone = tep_db_fetch_array($zone_query);
           $zone_id = $zone['zone_id'];
diff -ruN 2.2ms2-060817.src/create_account_success.php 2.2rc2.src/create_account_success.php
--- 2.2ms2-060817.src/create_account_success.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/create_account_success.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: create_account_success.php,v 1.30 2003/06/05 23:27:00 hpdl Exp $
+  $Id: create_account_success.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/download.php 2.2rc2.src/download.php
--- 2.2ms2-060817.src/download.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/download.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: download.php,v 1.9 2003/02/13 03:01:48 hpdl Exp $
+  $Id: download.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -20,7 +20,7 @@
   }
   
 // Check that order_id, customer_id and filename match
-  $downloads_query = tep_db_query("select date_format(o.date_purchased, '%Y-%m-%d') as date_purchased_day, opd.download_maxdays, opd.download_count, opd.download_maxdays, opd.orders_products_filename from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_PRODUCTS . " op, " . TABLE_ORDERS_PRODUCTS_DOWNLOAD . " opd where o.customers_id = '" . $customer_id . "' and o.orders_id = '" . (int)$HTTP_GET_VARS['order'] . "' and o.orders_id = op.orders_id and op.orders_products_id = opd.orders_products_id and opd.orders_products_download_id = '" . (int)$HTTP_GET_VARS['id'] . "' and opd.orders_products_filename != ''");
+  $downloads_query = tep_db_query("select date_format(o.date_purchased, '%Y-%m-%d') as date_purchased_day, opd.download_maxdays, opd.download_count, opd.download_maxdays, opd.orders_products_filename from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_PRODUCTS . " op, " . TABLE_ORDERS_PRODUCTS_DOWNLOAD . " opd, " . TABLE_ORDERS_STATUS . " os where o.customers_id = '" . $customer_id . "' and o.orders_id = '" . (int)$HTTP_GET_VARS['order'] . "' and o.orders_id = op.orders_id and op.orders_products_id = opd.orders_products_id and opd.orders_products_download_id = '" . (int)$HTTP_GET_VARS['id'] . "' and opd.orders_products_filename != '' and o.orders_status = os.orders_status_id and os.downloads_flag = '1' and os.language_id = '" . (int)$languages_id . "'");
   if (!tep_db_num_rows($downloads_query)) die;
   $downloads = tep_db_fetch_array($downloads_query);
 // MySQL 3.22 does not have INTERVAL
@@ -90,10 +90,11 @@
     umask(0000);
     mkdir(DIR_FS_DOWNLOAD_PUBLIC . $tempdir, 0777);
     symlink(DIR_FS_DOWNLOAD . $downloads['orders_products_filename'], DIR_FS_DOWNLOAD_PUBLIC . $tempdir . '/' . $downloads['orders_products_filename']);
-    tep_redirect(DIR_WS_DOWNLOAD_PUBLIC . $tempdir . '/' . $downloads['orders_products_filename']);
-  } else {
-// This will work on all systems, but will need considerable resources
-// We could also loop with fread($fp, 4096) to save memory
-    readfile(DIR_FS_DOWNLOAD . $downloads['orders_products_filename']);
+    if (file_exists(DIR_FS_DOWNLOAD_PUBLIC . $tempdir . '/' . $downloads['orders_products_filename'])) {
+      tep_redirect(tep_href_link(DIR_WS_DOWNLOAD_PUBLIC . $tempdir . '/' . $downloads['orders_products_filename']));
+    }
   }
+
+// Fallback to readfile() delivery method. This will work on all systems, but will need considerable resources
+  readfile(DIR_FS_DOWNLOAD . $downloads['orders_products_filename']);
 ?>
diff -ruN 2.2ms2-060817.src/ext/modules/payment/chronopay/callback.php 2.2rc2.src/ext/modules/payment/chronopay/callback.php
--- 2.2ms2-060817.src/ext/modules/payment/chronopay/callback.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/ext/modules/payment/chronopay/callback.php	2008-01-12 21:56:36.000000000 -0600
@@ -0,0 +1,50 @@
+<?php
+/*
+  $Id: callback.php 1808 2008-01-13 03:56:36Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  chdir('../../../../');
+  require('includes/application_top.php');
+
+  $ip_address = tep_get_ip_address();
+
+  if ( ($ip_address == '69.20.58.35') || ($ip_address == '207.97.201.192') ) {
+    if (isset($HTTP_POST_VARS['cs1']) && is_numeric($HTTP_POST_VARS['cs1']) && isset($HTTP_POST_VARS['cs2']) && is_numeric($HTTP_POST_VARS['cs2']) && isset($HTTP_POST_VARS['cs3']) && !empty($HTTP_POST_VARS['cs3']) && isset($HTTP_POST_VARS['product_id']) && ($HTTP_POST_VARS['product_id'] == MODULE_PAYMENT_CHRONOPAY_PRODUCT_ID) && isset($HTTP_POST_VARS['total']) && !empty($HTTP_POST_VARS['total']) && isset($HTTP_POST_VARS['transaction_type']) && !empty($HTTP_POST_VARS['transaction_type'])) {
+      if ($HTTP_POST_VARS['cs3'] == md5(MODULE_PAYMENT_CHRONOPAY_PRODUCT_ID . $HTTP_POST_VARS['cs2'] . $HTTP_POST_VARS['cs1'] . $HTTP_POST_VARS['total'] . MODULE_PAYMENT_CHRONOPAY_MD5_HASH)) {
+        $order_query = tep_db_query("select order_status, currency, currency_value from " . TABLE_ORDERS . " where orders_id = '" . (int)$HTTP_POST_VARS['cs2'] . "' and customers_id = '" . (int)$HTTP_POST_VARS['cs1'] . "'");
+
+        if (tep_db_num_rows($order_query) > 0) {
+          $order = tep_db_fetch_array($order_query);
+
+          if ($order['order_status'] == MODULE_PAYMENT_CHRONOPAY_PREPARE_ORDER_STATUS_ID) {
+            $total_query = tep_db_query("select value from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . (int)$HTTP_POST_VARS['cs2'] . "' and class = 'ot_total' limit 1");
+            $total = tep_db_fetch_array($total_query);
+
+            $comment_status = $HTTP_POST_VARS['transaction_type'] . ' (' . $HTTP_POST_VARS['transaction_id'] . '; ' . $currencies->format($HTTP_POST_VARS['total'], false, $HTTP_POST_VARS['currency']) . ')';
+
+            $order_status_id = (MODULE_PAYMENT_CHRONOPAY_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_CHRONOPAY_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID);
+
+            tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . $order_status_id . "', last_modified = now() where orders_id = '" . (int)$HTTP_POST_VARS['cs2'] . "'");
+
+            $sql_data_array = array('orders_id' => $HTTP_POST_VARS['cs2'],
+                                    'orders_status_id' => $order_status_id,
+                                    'date_added' => 'now()',
+                                    'customer_notified' => '0',
+                                    'comments' => 'ChronoPay Verified [' . $comment_status . ']');
+
+            tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+          }
+        }
+      }
+    }
+  }
+
+  require('includes/application_bottom.php');
+?>
diff -ruN 2.2ms2-060817.src/ext/modules/payment/paypal/express.php 2.2rc2.src/ext/modules/payment/paypal/express.php
--- 2.2ms2-060817.src/ext/modules/payment/paypal/express.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/ext/modules/payment/paypal/express.php	2008-01-11 12:16:37.000000000 -0600
@@ -0,0 +1,276 @@
+<?php
+/*
+  $Id: express.php 1803 2008-01-11 18:16:37Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  chdir('../../../../');
+  require('includes/application_top.php');
+
+// if the customer is not logged on, redirect them to the login page
+  if (!tep_session_is_registered('customer_id')) {
+    $snapshot = array('page' => 'ext/modules/payment/paypal/express.php',
+                      'mode' => $request_type,
+                      'get' => $HTTP_GET_VARS,
+                      'post' => $HTTP_POST_VARS);
+
+    $navigation->set_snapshot($snapshot);
+
+    tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
+  }
+
+// if there is nothing in the customers cart, redirect them to the shopping cart page
+  if ($cart->count_contents() < 1) {
+    tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
+  }
+
+  require('includes/modules/payment/paypal_express.php');
+
+  $paypal_express = new paypal_express();
+
+  if (!$paypal_express->check() || !$paypal_express->enabled) {
+    tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
+  }
+
+  if (MODULE_PAYMENT_PAYPAL_EXPRESS_TRANSACTION_SERVER == 'Live') {
+    $api_url = 'https://api-3t.paypal.com/nvp';
+    $paypal_url = 'https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout';
+  } else {
+    $api_url = 'https://api-3t.sandbox.paypal.com/nvp';
+    $paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout';
+  }
+
+  if (!tep_session_is_registered('sendto')) {
+    tep_session_register('sendto');
+    $sendto = $customer_default_address_id;
+  }
+
+  if (!tep_session_is_registered('billto')) {
+    tep_session_register('billto');
+    $billto = $customer_default_address_id;
+  }
+
+// register a random ID in the session to check throughout the checkout procedure
+// against alterations in the shopping cart contents
+  if (!tep_session_is_registered('cartID')) tep_session_register('cartID');
+  $cartID = $cart->cartID;
+
+  $params = array('USER' => MODULE_PAYMENT_PAYPAL_EXPRESS_API_USERNAME,
+                  'PWD' => MODULE_PAYMENT_PAYPAL_EXPRESS_API_PASSWORD,
+                  'VERSION' => '3.2',
+                  'SIGNATURE' => MODULE_PAYMENT_PAYPAL_EXPRESS_API_SIGNATURE);
+
+  switch ($HTTP_GET_VARS['osC_Action']) {
+    case 'retrieve':
+      $params['METHOD'] = 'GetExpressCheckoutDetails';
+      $params['TOKEN'] = $HTTP_GET_VARS['token'];
+
+      $post_string = '';
+
+      foreach ($params as $key => $value) {
+        $post_string .= $key . '=' . urlencode(trim($value)) . '&';
+      }
+
+      $post_string = substr($post_string, 0, -1);
+
+      $response = $paypal_express->sendTransactionToGateway($api_url, $post_string);
+      $response_array = array();
+      parse_str($response, $response_array);
+
+      if (($response_array['ACK'] == 'Success') || ($response_array['ACK'] == 'SuccessWithWarning')) {
+        include(DIR_WS_CLASSES . 'order.php');
+
+        if ($cart->get_content_type() != 'virtual') {
+          $country_iso_code_2 = tep_db_prepare_input($response_array['SHIPTOCOUNTRYCODE']);
+          $zone_code = tep_db_prepare_input($response_array['SHIPTOSTATE']);
+
+          $country_query = tep_db_query("select countries_id, countries_name, countries_iso_code_2, countries_iso_code_3, address_format_id from " . TABLE_COUNTRIES . " where countries_iso_code_2 = '" . tep_db_input($country_iso_code_2) . "'");
+          $country = tep_db_fetch_array($country_query);
+
+          $zone_name = $response_array['SHIPTOSTATE'];
+          $zone_id = 0;
+
+          $zone_query = tep_db_query("select zone_id, zone_name from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country['countries_id'] . "' and zone_code = '" . tep_db_input($zone_code) . "'");
+          if (tep_db_num_rows($zone_query)) {
+            $zone = tep_db_fetch_array($zone_query);
+
+            $zone_name = $zone['zone_name'];
+            $zone_id = $zone['zone_id'];
+          }
+
+          $sendto = array('firstname' => substr($response_array['SHIPTONAME'], 0, strpos($response_array['SHIPTONAME'], ' ')),
+                          'lastname' => substr($response_array['SHIPTONAME'], strpos($response_array['SHIPTONAME'], ' ')+1),
+                          'company' => '',
+                          'street_address' => $response_array['SHIPTOSTREET'],
+                          'suburb' => '',
+                          'postcode' => $response_array['SHIPTOZIP'],
+                          'city' => $response_array['SHIPTOCITY'],
+                          'zone_id' => $zone_id,
+                          'zone_name' => $zone_name,
+                          'country_id' => $country['countries_id'],
+                          'country_name' => $country['countries_name'],
+                          'country_iso_code_2' => $country['countries_iso_code_2'],
+                          'country_iso_code_3' => $country['countries_iso_code_3'],
+                          'address_format_id' => ($country['address_format_id'] > 0 ? $country['address_format_id'] : '1'));
+
+          $billto = $sendto;
+
+          $order = new order;
+
+          $total_weight = $cart->show_weight();
+          $total_count = $cart->count_contents();
+
+// load all enabled shipping modules
+          include(DIR_WS_CLASSES . 'shipping.php');
+          $shipping_modules = new shipping;
+
+          $free_shipping = false;
+
+          if ( defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') ) {
+            $pass = false;
+
+            switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
+              case 'national':
+                if ($order->delivery['country_id'] == STORE_COUNTRY) {
+                  $pass = true;
+                }
+                break;
+
+              case 'international':
+                if ($order->delivery['country_id'] != STORE_COUNTRY) {
+                  $pass = true;
+                }
+                break;
+
+              case 'both':
+                $pass = true;
+                break;
+            }
+
+            if ( ($pass == true) && ($order->info['total'] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) {
+              $free_shipping = true;
+
+              include(DIR_WS_LANGUAGES . $language . '/modules/order_total/ot_shipping.php');
+            }
+          }
+
+          if (!tep_session_is_registered('shipping')) tep_session_register('shipping');
+          $shipping = false;
+
+          if ( (tep_count_shipping_modules() > 0) || ($free_shipping == true) ) {
+            if ($free_shipping == true) {
+              $shipping = 'free_free';
+            } else {
+// get all available shipping quotes
+              $quotes = $shipping_modules->quote();
+
+// select cheapest shipping method
+              $shipping = $shipping_modules->cheapest();
+              $shipping = $shipping['id'];
+            }
+          }
+
+          if (strpos($shipping, '_')) {
+            list($module, $method) = explode('_', $shipping);
+
+            if ( is_object($$module) || ($shipping == 'free_free') ) {
+              if ($shipping == 'free_free') {
+                $quote[0]['methods'][0]['title'] = FREE_SHIPPING_TITLE;
+                $quote[0]['methods'][0]['cost'] = '0';
+              } else {
+                $quote = $shipping_modules->quote($method, $module);
+              }
+
+              if (isset($quote['error'])) {
+                tep_session_unregister('shipping');
+
+                tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
+              } else {
+                if ( (isset($quote[0]['methods'][0]['title'])) && (isset($quote[0]['methods'][0]['cost'])) ) {
+                  $shipping = array('id' => $shipping,
+                                    'title' => (($free_shipping == true) ?  $quote[0]['methods'][0]['title'] : $quote[0]['module'] . ' (' . $quote[0]['methods'][0]['title'] . ')'),
+                                    'cost' => $quote[0]['methods'][0]['cost']);
+                }
+              }
+            }
+          }
+
+          if (!tep_session_is_registered('payment')) tep_session_register('payment');
+          $payment = $paypal_express->code;
+
+          if (!tep_session_is_registered('ppe_token')) tep_session_register('ppe_token');
+          $ppe_token = $response_array['TOKEN'];
+
+          if (!tep_session_is_registered('ppe_payerid')) tep_session_register('ppe_payerid');
+          $ppe_payerid = $response_array['PAYERID'];
+
+          tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'));
+        } else {
+          if (!tep_session_is_registered('shipping')) tep_session_register('shipping');
+          $shipping = false;
+
+          $sendto = false;
+
+          if (!tep_session_is_registered('payment')) tep_session_register('payment');
+          $payment = $paypal_express->code;
+
+          if (!tep_session_is_registered('ppe_token')) tep_session_register('ppe_token');
+          $ppe_token = $response_array['TOKEN'];
+
+          if (!tep_session_is_registered('ppe_payerid')) tep_session_register('ppe_payerid');
+          $ppe_payerid = $response_array['PAYERID'];
+
+          tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'));
+        }
+      } else {
+        tep_redirect(tep_href_link(FILENAME_SHOPPING_CART, 'error_message=' . stripslashes($response_array['L_LONGMESSAGE0']), 'SSL'));
+      }
+
+      break;
+
+    default:
+      include(DIR_WS_CLASSES . 'order.php');
+      $order = new order;
+
+      $params['METHOD'] = 'SetExpressCheckout';
+      $params['PAYMENTACTION'] = ((MODULE_PAYMENT_PAYPAL_EXPRESS_TRANSACTION_METHOD == 'Sale') ? 'Sale' : 'Authorization');
+      $params['RETURNURL'] = tep_href_link('ext/modules/payment/paypal/express.php', 'osC_Action=retrieve', 'SSL', true, false);
+      $params['CANCELURL'] = tep_href_link(FILENAME_SHOPPING_CART, '', 'SSL', true, false);
+      $params['AMT'] = $paypal_express->format_raw($order->info['total']);
+      $params['CURRENCYCODE'] = $order->info['currency'];
+
+      if ($order->content_type == 'virtual') {
+        $params['NOSHIPPING'] = '1';
+      }
+
+      $post_string = '';
+
+      foreach ($params as $key => $value) {
+        $post_string .= $key . '=' . urlencode(trim($value)) . '&';
+      }
+
+      $post_string = substr($post_string, 0, -1);
+
+      $response = $paypal_express->sendTransactionToGateway($api_url, $post_string);
+      $response_array = array();
+      parse_str($response, $response_array);
+
+      if (($response_array['ACK'] == 'Success') || ($response_array['ACK'] == 'SuccessWithWarning')) {
+        tep_redirect($paypal_url . '&token=' . $response_array['TOKEN']);
+      } else {
+        tep_redirect(tep_href_link(FILENAME_SHOPPING_CART, 'error_message=' . stripslashes($response_array['L_LONGMESSAGE0']), 'SSL'));
+      }
+
+      break;
+  }
+
+  tep_redirect(tep_href_link(FILENAME_SHOPPING_CART, '', 'SSL'));
+
+  require(DIR_WS_INCLUDES . 'application_bottom.php');
+?>
diff -ruN 2.2ms2-060817.src/ext/modules/payment/paypal/express_uk.php 2.2rc2.src/ext/modules/payment/paypal/express_uk.php
--- 2.2ms2-060817.src/ext/modules/payment/paypal/express_uk.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/ext/modules/payment/paypal/express_uk.php	2008-01-11 12:16:37.000000000 -0600
@@ -0,0 +1,317 @@
+<?php
+/*
+  $Id: express_uk.php 1803 2008-01-11 18:16:37Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  chdir('../../../../');
+  require('includes/application_top.php');
+
+// if the customer is not logged on, redirect them to the login page
+  if (!tep_session_is_registered('customer_id')) {
+    $snapshot = array('page' => 'ext/modules/payment/paypal/express_uk.php',
+                      'mode' => $request_type,
+                      'get' => $HTTP_GET_VARS,
+                      'post' => $HTTP_POST_VARS);
+
+    $navigation->set_snapshot($snapshot);
+
+    tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
+  }
+
+// if there is nothing in the customers cart, redirect them to the shopping cart page
+  if ($cart->count_contents() < 1) {
+    tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
+  }
+
+  require(DIR_WS_LANGUAGES . $language . '/modules/payment/paypal_uk_express.php');
+  require('includes/modules/payment/paypal_uk_express.php');
+
+  $paypal_uk_express = new paypal_uk_express();
+
+  if (!$paypal_uk_express->check() || !$paypal_uk_express->enabled) {
+    tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
+  }
+
+  if (MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TRANSACTION_SERVER == 'Live') {
+    $api_url = 'https://payflowpro.verisign.com/transaction';
+    $paypal_url = 'https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout';
+  } else {
+    $api_url = 'https://pilot-payflowpro.verisign.com/transaction';
+    $paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout';
+  }
+
+  if (!tep_session_is_registered('sendto')) {
+    tep_session_register('sendto');
+    $sendto = $customer_default_address_id;
+  }
+
+  if (!tep_session_is_registered('billto')) {
+    tep_session_register('billto');
+    $billto = $customer_default_address_id;
+  }
+
+// register a random ID in the session to check throughout the checkout procedure
+// against alterations in the shopping cart contents
+  if (!tep_session_is_registered('cartID')) tep_session_register('cartID');
+  $cartID = $cart->cartID;
+
+  $params = array('USER' => (tep_not_null(MODULE_PAYMENT_PAYPAL_UK_EXPRESS_USERNAME) ? MODULE_PAYMENT_PAYPAL_UK_EXPRESS_USERNAME : MODULE_PAYMENT_PAYPAL_UK_EXPRESS_VENDOR),
+                  'VENDOR' => MODULE_PAYMENT_PAYPAL_UK_EXPRESS_VENDOR,
+                  'PARTNER' => MODULE_PAYMENT_PAYPAL_UK_EXPRESS_PARTNER,
+                  'PWD' => MODULE_PAYMENT_PAYPAL_UK_EXPRESS_PASSWORD,
+                  'TENDER' => 'P',
+                  'TRXTYPE' => ((MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TRANSACTION_METHOD == 'Sale') ? 'S' : 'A'));
+
+  switch ($HTTP_GET_VARS['osC_Action']) {
+    case 'retrieve':
+      $params['ACTION'] = 'G';
+      $params['TOKEN'] = $HTTP_GET_VARS['token'];
+
+      $post_string = '';
+
+      foreach ($params as $key => $value) {
+        $post_string .= $key . '[' . strlen(trim($value)) . ']=' . trim($value) . '&';
+      }
+
+      $post_string = substr($post_string, 0, -1);
+
+      $response = $paypal_uk_express->sendTransactionToGateway($api_url, $post_string, array('X-VPS-REQUEST-ID: ' . md5($cartID . tep_session_id() . rand())));
+      $response_array = array();
+      parse_str($response, $response_array);
+
+      if ($response_array['RESULT'] == '0') {
+        include(DIR_WS_CLASSES . 'order.php');
+
+        if ($cart->get_content_type() != 'virtual') {
+          $country_iso_code_2 = tep_db_prepare_input($response_array['SHIPTOCOUNTRY']);
+          $zone_code = tep_db_prepare_input($response_array['SHIPTOSTATE']);
+
+          $country_query = tep_db_query("select countries_id, countries_name, countries_iso_code_2, countries_iso_code_3, address_format_id from " . TABLE_COUNTRIES . " where countries_iso_code_2 = '" . tep_db_input($country_iso_code_2) . "'");
+          $country = tep_db_fetch_array($country_query);
+
+          $zone_name = $response_array['SHIPTOSTATE'];
+          $zone_id = 0;
+
+          $zone_query = tep_db_query("select zone_id, zone_name from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country['countries_id'] . "' and zone_code = '" . tep_db_input($zone_code) . "'");
+          if (tep_db_num_rows($zone_query)) {
+            $zone = tep_db_fetch_array($zone_query);
+
+            $zone_name = $zone['zone_name'];
+            $zone_id = $zone['zone_id'];
+          }
+
+          $sendto = array('firstname' => $response_array['FIRSTNAME'],
+                          'lastname' => $response_array['LASTNAME'],
+                          'company' => '',
+                          'street_address' => $response_array['SHIPTOSTREET'],
+                          'suburb' => '',
+                          'postcode' => $response_array['SHIPTOZIP'],
+                          'city' => $response_array['SHIPTOCITY'],
+                          'zone_id' => $zone_id,
+                          'zone_name' => $zone_name,
+                          'country_id' => $country['countries_id'],
+                          'country_name' => $country['countries_name'],
+                          'country_iso_code_2' => $country['countries_iso_code_2'],
+                          'country_iso_code_3' => $country['countries_iso_code_3'],
+                          'address_format_id' => ($country['address_format_id'] > 0 ? $country['address_format_id'] : '1'));
+
+          $billto = $sendto;
+
+          $order = new order;
+
+          $total_weight = $cart->show_weight();
+          $total_count = $cart->count_contents();
+
+// load all enabled shipping modules
+          include(DIR_WS_CLASSES . 'shipping.php');
+          $shipping_modules = new shipping;
+
+          $free_shipping = false;
+
+          if ( defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') ) {
+            $pass = false;
+
+            switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
+              case 'national':
+                if ($order->delivery['country_id'] == STORE_COUNTRY) {
+                  $pass = true;
+                }
+                break;
+
+              case 'international':
+                if ($order->delivery['country_id'] != STORE_COUNTRY) {
+                  $pass = true;
+                }
+                break;
+
+              case 'both':
+                $pass = true;
+                break;
+            }
+
+            if ( ($pass == true) && ($order->info['total'] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) {
+              $free_shipping = true;
+
+              include(DIR_WS_LANGUAGES . $language . '/modules/order_total/ot_shipping.php');
+            }
+          }
+
+          if (!tep_session_is_registered('shipping')) tep_session_register('shipping');
+          $shipping = false;
+
+          if ( (tep_count_shipping_modules() > 0) || ($free_shipping == true) ) {
+            if ($free_shipping == true) {
+              $shipping = 'free_free';
+            } else {
+// get all available shipping quotes
+              $quotes = $shipping_modules->quote();
+
+// select cheapest shipping method
+              $shipping = $shipping_modules->cheapest();
+              $shipping = $shipping['id'];
+            }
+          }
+
+          if (strpos($shipping, '_')) {
+            list($module, $method) = explode('_', $shipping);
+
+            if ( is_object($$module) || ($shipping == 'free_free') ) {
+              if ($shipping == 'free_free') {
+                $quote[0]['methods'][0]['title'] = FREE_SHIPPING_TITLE;
+                $quote[0]['methods'][0]['cost'] = '0';
+              } else {
+                $quote = $shipping_modules->quote($method, $module);
+              }
+
+              if (isset($quote['error'])) {
+                tep_session_unregister('shipping');
+
+                tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
+              } else {
+                if ( (isset($quote[0]['methods'][0]['title'])) && (isset($quote[0]['methods'][0]['cost'])) ) {
+                  $shipping = array('id' => $shipping,
+                                    'title' => (($free_shipping == true) ?  $quote[0]['methods'][0]['title'] : $quote[0]['module'] . ' (' . $quote[0]['methods'][0]['title'] . ')'),
+                                    'cost' => $quote[0]['methods'][0]['cost']);
+                }
+              }
+            }
+          }
+
+          if (!tep_session_is_registered('payment')) tep_session_register('payment');
+          $payment = $paypal_uk_express->code;
+
+          if (!tep_session_is_registered('ppeuk_token')) tep_session_register('ppeuk_token');
+          $ppeuk_token = $response_array['TOKEN'];
+
+          if (!tep_session_is_registered('ppeuk_payerid')) tep_session_register('ppeuk_payerid');
+          $ppeuk_payerid = $response_array['PAYERID'];
+
+          tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'));
+        } else {
+          if (!tep_session_is_registered('shipping')) tep_session_register('shipping');
+          $shipping = false;
+
+          $sendto = false;
+
+          if (!tep_session_is_registered('payment')) tep_session_register('payment');
+          $payment = $paypal_uk_express->code;
+
+          if (!tep_session_is_registered('ppeuk_token')) tep_session_register('ppeuk_token');
+          $ppeuk_token = $response_array['TOKEN'];
+
+          if (!tep_session_is_registered('ppeuk_payerid')) tep_session_register('ppeuk_payerid');
+          $ppeuk_payerid = $response_array['PAYERID'];
+
+          tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'));
+        }
+      } else {
+        switch ($response_array['RESULT']) {
+          case '1':
+          case '26':
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_CFG_ERROR;
+            break;
+
+          case '7':
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_ADDRESS;
+            break;
+
+          case '12':
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_DECLINED;
+            break;
+
+          case '1000':
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_EXPRESS_DISABLED;
+            break;
+
+          default:
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_GENERAL;
+            break;
+        }
+
+        tep_redirect(tep_href_link(FILENAME_SHOPPING_CART, 'error_message=' . urlencode($error_message), 'SSL'));
+      }
+
+      break;
+
+    default:
+      include(DIR_WS_CLASSES . 'order.php');
+      $order = new order;
+
+      $params['ACTION'] = 'S';
+      $params['CURRENCY'] = $order->info['currency'];
+      $params['EMAIL'] = $order->customer['email_address'];
+      $params['AMT'] = $paypal_uk_express->format_raw($order->info['total']);
+      $params['RETURNURL'] = tep_href_link('ext/modules/payment/paypal/express_uk.php', 'osC_Action=retrieve', 'SSL', true, false);
+      $params['CANCELURL'] = tep_href_link(FILENAME_SHOPPING_CART, '', 'SSL', true, false);
+
+      if ($order->content_type == 'virtual') {
+        $params['NOSHIPPING'] = '1';
+      }
+
+      $post_string = '';
+
+      foreach ($params as $key => $value) {
+        $post_string .= $key . '[' . strlen(trim($value)) . ']=' . trim($value) . '&';
+      }
+
+      $post_string = substr($post_string, 0, -1);
+
+      $response = $paypal_uk_express->sendTransactionToGateway($api_url, $post_string, array('X-VPS-REQUEST-ID: ' . md5($cartID . tep_session_id() . rand())));
+      $response_array = array();
+      parse_str($response, $response_array);
+
+      if ($response_array['RESULT'] == '0') {
+        tep_redirect($paypal_url . '&token=' . $response_array['TOKEN']);
+      } else {
+        switch ($response_array['RESULT']) {
+          case '1':
+          case '26':
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_CFG_ERROR;
+            break;
+
+          case '1000':
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_EXPRESS_DISABLED;
+            break;
+
+          default:
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_GENERAL;
+            break;
+        }
+
+        tep_redirect(tep_href_link(FILENAME_SHOPPING_CART, 'error_message=' . urlencode($error_message), 'SSL'));
+      }
+
+      break;
+  }
+
+  tep_redirect(tep_href_link(FILENAME_SHOPPING_CART, '', 'SSL'));
+
+  require(DIR_WS_INCLUDES . 'application_bottom.php');
+?>
Binary files 2.2ms2-060817.src/ext/modules/payment/paypal/images/btn_express_espanol.gif and 2.2rc2.src/ext/modules/payment/paypal/images/btn_express_espanol.gif differ
Binary files 2.2ms2-060817.src/ext/modules/payment/paypal/images/btn_express_german.gif and 2.2rc2.src/ext/modules/payment/paypal/images/btn_express_german.gif differ
Binary files 2.2ms2-060817.src/ext/modules/payment/paypal/images/btn_express.gif and 2.2rc2.src/ext/modules/payment/paypal/images/btn_express.gif differ
diff -ruN 2.2ms2-060817.src/ext/modules/payment/paypal/standard_ipn.php 2.2rc2.src/ext/modules/payment/paypal/standard_ipn.php
--- 2.2ms2-060817.src/ext/modules/payment/paypal/standard_ipn.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/ext/modules/payment/paypal/standard_ipn.php	2008-01-09 17:37:44.000000000 -0600
@@ -0,0 +1,166 @@
+<?php
+/*
+  $Id: standard_ipn.php 1778 2008-01-09 23:37:44Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  chdir('../../../../');
+  require('includes/application_top.php');
+
+  $parameters = 'cmd=_notify-validate';
+
+  reset($HTTP_POST_VARS);
+  while (list($key, $value) = each($HTTP_POST_VARS)) {
+    $parameters .= '&' . $key . '=' . urlencode(stripslashes($value));
+  }
+
+  if (MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER == 'Live') {
+    $server = 'www.paypal.com';
+  } else {
+    $server = 'www.sandbox.paypal.com';
+  }
+
+  $fsocket = false;
+  $curl = false;
+  $result = false;
+
+  if ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen('ssl://' . $server, 443, $errno, $errstr, 30)) ) {
+    $fsocket = true;
+  } elseif (function_exists('curl_exec')) {
+    $curl = true;
+  } elseif ($fp = @fsockopen($server, 80, $errno, $errstr, 30)) {
+    $fsocket = true;
+  }
+
+  if ($fsocket == true) {
+    $header = 'POST /cgi-bin/webscr HTTP/1.0' . "\r\n" .
+              'Host: ' . $server . "\r\n" .
+              'Content-Type: application/x-www-form-urlencoded' . "\r\n" .
+              'Content-Length: ' . strlen($parameters) . "\r\n" .
+              'Connection: close' . "\r\n\r\n";
+
+    @fputs($fp, $header . $parameters);
+
+    $string = '';
+    while (!@feof($fp)) {
+      $res = @fgets($fp, 1024);
+      $string .= $res;
+
+      if ( ($res == 'VERIFIED') || ($res == 'INVALID') ) {
+        $result = $res;
+
+        break;
+      }
+    }
+
+    @fclose($fp);
+  } elseif ($curl == true) {
+    $ch = curl_init();
+
+    curl_setopt($ch, CURLOPT_URL, 'https://' . $server . '/cgi-bin/webscr');
+    curl_setopt($ch, CURLOPT_POST, true);
+    curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
+    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+    curl_setopt($ch, CURLOPT_HEADER, false);
+    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
+    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+
+    $result = curl_exec($ch);
+
+    curl_close($ch);
+  }
+
+  if ($result == 'VERIFIED') {
+    if (isset($HTTP_POST_VARS['invoice']) && is_numeric($HTTP_POST_VARS['invoice']) && ($HTTP_POST_VARS['invoice'] > 0)) {
+      $order_query = tep_db_query("select orders_status, currency, currency_value from " . TABLE_ORDERS . " where orders_id = '" . $HTTP_POST_VARS['invoice'] . "' and customers_id = '" . (int)$HTTP_POST_VARS['custom'] . "'");
+      if (tep_db_num_rows($order_query) > 0) {
+        $order = tep_db_fetch_array($order_query);
+
+        if ($order['orders_status'] == MODULE_PAYMENT_PAYPAL_STANDARD_PREPARE_ORDER_STATUS_ID) {
+          $sql_data_array = array('orders_id' => $HTTP_POST_VARS['invoice'],
+                                  'orders_status_id' => MODULE_PAYMENT_PAYPAL_STANDARD_PREPARE_ORDER_STATUS_ID,
+                                  'date_added' => 'now()',
+                                  'customer_notified' => '0',
+                                  'comments' => '');
+
+          tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+
+
+          tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . (MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID) . "', last_modified = now() where orders_id = '" . (int)$HTTP_POST_VARS['invoice'] . "'");
+        }
+
+        $total_query = tep_db_query("select value from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . $HTTP_POST_VARS['invoice'] . "' and class = 'ot_total' limit 1");
+        $total = tep_db_fetch_array($total_query);
+
+        $comment_status = $HTTP_POST_VARS['payment_status'] . ' (' . ucfirst($HTTP_POST_VARS['payer_status']) . '; ' . $currencies->format($HTTP_POST_VARS['mc_gross'], false, $HTTP_POST_VARS['mc_currency']) . ')';
+
+        if ($HTTP_POST_VARS['payment_status'] == 'Pending') {
+          $comment_status .= '; ' . $HTTP_POST_VARS['pending_reason'];
+        } elseif ( ($HTTP_POST_VARS['payment_status'] == 'Reversed') || ($HTTP_POST_VARS['payment_status'] == 'Refunded') ) {
+          $comment_status .= '; ' . $HTTP_POST_VARS['reason_code'];
+        }
+
+        if ($HTTP_POST_VARS['mc_gross'] != number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency']))) {
+          $comment_status .= '; PayPal transaction value (' . tep_output_string_protected($HTTP_POST_VARS['mc_gross']) . ') does not match order value (' . number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency'])) . ')';
+        }
+
+        $sql_data_array = array('orders_id' => $HTTP_POST_VARS['invoice'],
+                                'orders_status_id' => (MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID),
+                                'date_added' => 'now()',
+                                'customer_notified' => '0',
+                                'comments' => 'PayPal IPN Verified [' . $comment_status . ']');
+
+        tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+      }
+    }
+  } else {
+    if (tep_not_null(MODULE_PAYMENT_PAYPAL_STANDARD_DEBUG_EMAIL)) {
+      $email_body = '$HTTP_POST_VARS:' . "\n\n";
+
+      reset($HTTP_POST_VARS);
+      while (list($key, $value) = each($HTTP_POST_VARS)) {
+        $email_body .= $key . '=' . $value . "\n";
+      }
+
+      $email_body .= "\n" . '$HTTP_GET_VARS:' . "\n\n";
+
+      reset($HTTP_GET_VARS);
+      while (list($key, $value) = each($HTTP_GET_VARS)) {
+        $email_body .= $key . '=' . $value . "\n";
+      }
+
+      tep_mail('', MODULE_PAYMENT_PAYPAL_STANDARD_DEBUG_EMAIL, 'PayPal IPN Invalid Process', $email_body, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
+    }
+
+    if (isset($HTTP_POST_VARS['invoice']) && is_numeric($HTTP_POST_VARS['invoice']) && ($HTTP_POST_VARS['invoice'] > 0)) {
+      $check_query = tep_db_query("select orders_id from " . TABLE_ORDERS . " where orders_id = '" . $HTTP_POST_VARS['invoice'] . "' and customers_id = '" . (int)$HTTP_POST_VARS['custom'] . "'");
+      if (tep_db_num_rows($check_query) > 0) {
+        $comment_status = $HTTP_POST_VARS['payment_status'];
+
+        if ($HTTP_POST_VARS['payment_status'] == 'Pending') {
+          $comment_status .= '; ' . $HTTP_POST_VARS['pending_reason'];
+        } elseif ( ($HTTP_POST_VARS['payment_status'] == 'Reversed') || ($HTTP_POST_VARS['payment_status'] == 'Refunded') ) {
+          $comment_status .= '; ' . $HTTP_POST_VARS['reason_code'];
+        }
+
+        tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . ((MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID > 0) ? MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID : DEFAULT_ORDERS_STATUS_ID) . "', last_modified = now() where orders_id = '" . $HTTP_POST_VARS['invoice'] . "'");
+
+        $sql_data_array = array('orders_id' => $HTTP_POST_VARS['invoice'],
+                                'orders_status_id' => (MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID > 0) ? MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID : DEFAULT_ORDERS_STATUS_ID,
+                                'date_added' => 'now()',
+                                'customer_notified' => '0',
+                                'comments' => 'PayPal IPN Invalid [' . $comment_status . ']');
+
+        tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+      }
+    }
+  }
+
+  require('includes/application_bottom.php');
+?>
diff -ruN 2.2ms2-060817.src/ext/modules/payment/sofortueberweisung/callback.php 2.2rc2.src/ext/modules/payment/sofortueberweisung/callback.php
--- 2.2ms2-060817.src/ext/modules/payment/sofortueberweisung/callback.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/ext/modules/payment/sofortueberweisung/callback.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,95 @@
+<?php
+/*
+  $Id: callback.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2006 - 2007 Henri Schmidhuber (http://www.in-solution.de)
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  chdir('../../../../');
+  require ('includes/application_top.php');
+
+  $order_id = $customer_id = $pw = $betrag_integer = '';
+
+  if (isset($HTTP_GET_VARS['kunden_var_0'])) {
+    $order_id = $HTTP_GET_VARS['kunden_var_0'];
+  } elseif (isset($HTTP_POST_VARS['kunden_var_0'])) {
+    $order_id = $HTTP_POST_VARS['kunden_var_0'];
+  }
+
+  if (isset($HTTP_GET_VARS['kunden_var_1'])) {
+    $customer_id = $HTTP_GET_VARS['kunden_var_1'];
+  } elseif (isset($HTTP_POST_VARS['kunden_var_1'])) {
+    $customer_id = $HTTP_POST_VARS['kunden_var_1'];
+  }
+
+  if (isset($HTTP_GET_VARS['pw'])) {
+    $pw = $HTTP_GET_VARS['pw'];
+  } elseif (isset($HTTP_POST_VARS['pw'])) {
+    $pw = $HTTP_POST_VARS['pw'];
+  }
+
+  if (isset($HTTP_GET_VARS['betrag_integer'])) {
+    $betrag_integer = $HTTP_GET_VARS['betrag_integer'];
+  } elseif (isset($HTTP_POST_VARS['betrag_integer'])) {
+    $betrag_integer = $HTTP_POST_VARS['betrag_integer'];
+  }
+
+  // Check if Order exists
+  if (empty($order_id) || empty($customer_id) || empty($pw)) {
+    exit();
+  }
+
+  $comment = '';
+
+  if ($pw != MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_BNA_PASSWORT) {
+    $comment = 'ungltiges Benachrichtigung Passwort' . "\n";
+  }
+
+  // check if order exists
+  $order_query = tep_db_query("select * from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "' and customers_id = '" . (int)$customer_id . "'");
+  if (tep_db_num_rows($order_query) > 0) {
+    $order = tep_db_fetch_array($order_query);
+
+    if ($order['orders_status'] == MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_PREPARE_ORDER_STATUS_ID) {
+      $total_query = tep_db_query("select value from " . TABLE_ORDERS_TOTAL . " where orders_id = '" .  (int)$order_id . "' and class = 'ot_total' limit 1");
+      $total = tep_db_fetch_array($total_query);
+
+      $order_total_integer = number_format($total['value'] * $currencies->get_value('EUR'), 2, '.','')*100;
+      if ($order_total_integer < 1) {
+        $order_total_integer = '000';
+      } elseif ($order_total_integer < 10) {
+        $order_total_integer = '00' . $order_total_integer;
+      } elseif ($order_total_integer < 100) {
+        $order_total_integer = '0' . $order_total_integer;
+      }
+
+      if ((int)$betrag_integer == (int)$order_total_integer) {
+        $comment = 'Zahlung durch Sofortberweisung Benachrichtigung besttigt!';
+      } else {
+        $comment = "Sofortberweisungs Transaktionscheck fehlgeschlagen. Bitte manuell berprfen\n" . ($betrag_integer/100) . '!=' . ($order_total_integer/100);
+      }
+
+      if (MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STORE_TRANSACTION_DETAILS == 'True') {
+        $comment .= "\n" . serialize($HTTP_GET_VARS) . "\n" . serialize($HTTP_POST_VARS);
+      }
+
+      $order_status = (MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID);
+
+      $sql_data_array = array('orders_id' => (int)$order_id,
+                              'orders_status_id' => $order_status,
+                              'date_added' => 'now()',
+                              'customer_notified' => '0',
+                              'comments' => $comment);
+
+      tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+
+      tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . $order_status . "', last_modified = now() where orders_id = '" . (int)$order_id . "'");
+    }
+  }
+?>
Binary files 2.2ms2-060817.src/ext/modules/payment/sofortueberweisung/images/sofortueberweisung.gif and 2.2rc2.src/ext/modules/payment/sofortueberweisung/images/sofortueberweisung.gif differ
diff -ruN 2.2ms2-060817.src/ext/modules/payment/worldpay/junior_callback.php 2.2rc2.src/ext/modules/payment/worldpay/junior_callback.php
--- 2.2ms2-060817.src/ext/modules/payment/worldpay/junior_callback.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/ext/modules/payment/worldpay/junior_callback.php	2008-01-12 18:50:08.000000000 -0600
@@ -0,0 +1,92 @@
+<?php
+/*
+  $Id: junior_callback.php 1807 2008-01-13 00:50:08Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  if (isset($HTTP_POST_VARS['M_sid']) && !empty($HTTP_POST_VARS['M_sid'])) {
+    chdir('../../../../');
+    require ('includes/application_top.php');
+
+    if ($HTTP_POST_VARS['transStatus'] == 'Y') {
+      $pass = false;
+
+      if (isset($HTTP_POST_VARS['M_hash']) && !empty($HTTP_POST_VARS['M_hash']) && ($HTTP_POST_VARS['M_hash'] == md5($HTTP_POST_VARS['M_sid'] . $HTTP_POST_VARS['M_cid'] . $HTTP_POST_VARS['cartId'] . $HTTP_POST_VARS['M_lang'] . number_format($HTTP_POST_VARS['amount'], 2) . MODULE_PAYMENT_WORLDPAY_JUNIOR_MD5_PASSWORD))) {
+        $pass = true;
+      }
+
+      if (isset($HTTP_POST_VARS['callbackPW']) && ($HTTP_POST_VARS['callbackPW'] != MODULE_PAYMENT_WORLDPAY_JUNIOR_CALLBACK_PASSWORD)) {
+        $pass = false;
+      }
+
+      if (tep_not_null(MODULE_PAYMENT_WORLDPAY_JUNIOR_CALLBACK_PASSWORD) && !isset($HTTP_POST_VARS['callbackPW'])) {
+        $pass = false;
+      }
+
+      if ($pass == true) {
+        include('includes/languages/' . basename($HTTP_POST_VARS['M_lang']) . '/modules/payment/worldpay_junior.php');
+
+        $order_query = tep_db_query("select orders_status, currency, currency_value from " . TABLE_ORDERS . " where orders_id = '" . (int)$HTTP_POST_VARS['cartId'] . "' and customers_id = '" . (int)$HTTP_POST_VARS['M_cid'] . "'");
+        if (tep_db_num_rows($order_query) > 0) {
+          $order = tep_db_fetch_array($order_query);
+
+          if ($order['orders_status'] == MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID) {
+            $order_status_id = (MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID);
+
+            tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . $order_status_id . "', last_modified = now() where orders_id = '" . (int)$HTTP_POST_VARS['cartId'] . "'");
+
+            $sql_data_array = array('orders_id' => $HTTP_POST_VARS['cartId'],
+                                    'orders_status_id' => $order_status_id,
+                                    'date_added' => 'now()',
+                                    'customer_notified' => '0',
+                                    'comments' => 'WorldPay: Transaction Verified');
+
+            tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+
+            if (MODULE_PAYMENT_WORLDPAY_JUNIOR_TESTMODE == 'True') {
+              $sql_data_array = array('orders_id' => $HTTP_POST_VARS['cartId'],
+                                      'orders_status_id' => $order_status_id,
+                                      'date_added' => 'now()',
+                                      'customer_notified' => '0',
+                                      'comments' => MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_WARNING_DEMO_MODE);
+
+              tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+            }
+?>
+<style>
+.pageHeading {
+  font-family: Verdana, Arial, sans-serif;
+  font-size: 20px;
+  font-weight: bold;
+  color: #9a9a9a;
+}
+
+.main {
+  font-family: Verdana, Arial, sans-serif;
+  font-size: 11px;
+  line-height: 1.5;
+}
+</style>
+
+<p class="pageHeading"><?php echo STORE_NAME; ?></p>
+
+<p class="main" align="center"><?php echo MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_SUCCESSFUL_TRANSACTION; ?></p>
+
+<p align="center"><input type="button" value="<?php echo sprintf(MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_CONTINUE_BUTTON, addslashes(STORE_NAME)); ?>" onclick="document.location.href='<?php echo tep_href_link(FILENAME_CHECKOUT_PROCESS, tep_session_name() . '=' . $HTTP_POST_VARS['M_sid'] . '&hash=' . $HTTP_POST_VARS['hash'], 'SSL', false); ?>';"></p>
+
+<p>&nbsp;</p>
+
+<WPDISPLAY ITEM=banner>
+<?php
+          }
+        }
+      }
+    }
+  }
+?>
Binary files 2.2ms2-060817.src/images/default/4.gif and 2.2rc2.src/images/default/4.gif differ
Binary files 2.2ms2-060817.src/images/oscommerce.gif and 2.2rc2.src/images/oscommerce.gif differ
Binary files 2.2ms2-060817.src/images/store_logo.png and 2.2rc2.src/images/store_logo.png differ
diff -ruN 2.2ms2-060817.src/includes/application_bottom.php 2.2rc2.src/includes/application_bottom.php
--- 2.2ms2-060817.src/includes/application_bottom.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/application_bottom.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: application_bottom.php,v 1.14 2003/02/10 22:30:41 hpdl Exp $
+  $Id: application_bottom.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/application_top.php 2.2rc2.src/includes/application_top.php
--- 2.2ms2-060817.src/includes/application_top.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/application_top.php	2008-01-10 09:07:07.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: application_top.php,v 1.280 2003/07/12 09:38:07 hpdl Exp $
+  $Id: application_top.php 1785 2008-01-10 15:07:07Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -16,10 +16,9 @@
 // set the level of error reporting
   error_reporting(E_ALL & ~E_NOTICE);
 
-// check if register_globals is enabled.
-// since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.
-  if (function_exists('ini_get')) {
-    ini_get('register_globals') or exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory.');
+// check support for register_globals
+  if (function_exists('ini_get') && (ini_get('register_globals') == false) && (PHP_VERSION < 4.3) ) {
+    exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory. Please use PHP 4.3+ if register_globals cannot be enabled on the server.');
   }
 
 // Set the local configuration parameters - mainly for developers
@@ -35,7 +34,10 @@
   }
 
 // define the project version
-  define('PROJECT_VERSION', 'osCommerce 2.2-MS2');
+  define('PROJECT_VERSION', 'osCommerce Online Merchant v2.2 RC2');
+
+// some code to solve compatibility issues
+  require(DIR_WS_FUNCTIONS . 'compatibility.php');
 
 // set the type of request (secure or not)
   $request_type = (getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL';
@@ -125,9 +127,6 @@
 // include navigation history class
   require(DIR_WS_CLASSES . 'navigation_history.php');
 
-// some code to solve compatibility issues
-  require(DIR_WS_FUNCTIONS . 'compatibility.php');
-
 // check if sessions are supported, otherwise use the php3 compatible session class
   if (!function_exists('session_start')) {
     define('PHP_SESSION_NAME', 'osCsid');
@@ -196,6 +195,10 @@
     $session_started = true;
   }
 
+  if ( ($session_started == true) && (PHP_VERSION >= 4.3) && function_exists('ini_get') && (ini_get('register_globals') == false) ) {
+    extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS);
+  }
+
 // set SID once, even if empty
   $SID = (defined('SID') ? SID : '');
 
@@ -288,8 +291,8 @@
   if (!tep_session_is_registered('currency') || isset($HTTP_GET_VARS['currency']) || ( (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') && (LANGUAGE_CURRENCY != $currency) ) ) {
     if (!tep_session_is_registered('currency')) tep_session_register('currency');
 
-    if (isset($HTTP_GET_VARS['currency'])) {
-      if (!$currency = tep_currency_exists($HTTP_GET_VARS['currency'])) $currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY;
+    if (isset($HTTP_GET_VARS['currency']) && $currencies->is_set($HTTP_GET_VARS['currency'])) {
+      $currency = $HTTP_GET_VARS['currency'];
     } else {
       $currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY;
     }
diff -ruN 2.2ms2-060817.src/includes/boxes/best_sellers.php 2.2rc2.src/includes/boxes/best_sellers.php
--- 2.2ms2-060817.src/includes/boxes/best_sellers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/best_sellers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: best_sellers.php,v 1.21 2003/06/09 22:07:52 hpdl Exp $
+  $Id: best_sellers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/categories.php 2.2rc2.src/includes/boxes/categories.php
--- 2.2ms2-060817.src/includes/boxes/categories.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/categories.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: categories.php,v 1.25 2003/07/09 01:13:58 hpdl Exp $
+  $Id: categories.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/currencies.php 2.2rc2.src/includes/boxes/currencies.php
--- 2.2ms2-060817.src/includes/boxes/currencies.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/currencies.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: currencies.php,v 1.16 2003/02/12 20:27:31 hpdl Exp $
+  $Id: currencies.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/information.php 2.2rc2.src/includes/boxes/information.php
--- 2.2ms2-060817.src/includes/boxes/information.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/information.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: information.php,v 1.6 2003/02/10 22:31:00 hpdl Exp $
+  $Id: information.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/languages.php 2.2rc2.src/includes/boxes/languages.php
--- 2.2ms2-060817.src/includes/boxes/languages.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/languages.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: languages.php,v 1.15 2003/06/09 22:10:48 hpdl Exp $
+  $Id: languages.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/manufacturer_info.php 2.2rc2.src/includes/boxes/manufacturer_info.php
--- 2.2ms2-060817.src/includes/boxes/manufacturer_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/manufacturer_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: manufacturer_info.php,v 1.11 2003/06/09 22:12:05 hpdl Exp $
+  $Id: manufacturer_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/manufacturers.php 2.2rc2.src/includes/boxes/manufacturers.php
--- 2.2ms2-060817.src/includes/boxes/manufacturers.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/manufacturers.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: manufacturers.php,v 1.19 2003/06/09 22:17:13 hpdl Exp $
+  $Id: manufacturers.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/order_history.php 2.2rc2.src/includes/boxes/order_history.php
--- 2.2ms2-060817.src/includes/boxes/order_history.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/order_history.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: order_history.php,v 1.5 2003/06/09 22:18:30 hpdl Exp $
+  $Id: order_history.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/product_notifications.php 2.2rc2.src/includes/boxes/product_notifications.php
--- 2.2ms2-060817.src/includes/boxes/product_notifications.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/product_notifications.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_notifications.php,v 1.8 2003/06/09 22:19:07 hpdl Exp $
+  $Id: product_notifications.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/reviews.php 2.2rc2.src/includes/boxes/reviews.php
--- 2.2ms2-060817.src/includes/boxes/reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: reviews.php,v 1.37 2003/06/09 22:20:28 hpdl Exp $
+  $Id: reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/search.php 2.2rc2.src/includes/boxes/search.php
--- 2.2ms2-060817.src/includes/boxes/search.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/search.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: search.php,v 1.22 2003/02/10 22:31:05 hpdl Exp $
+  $Id: search.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/shopping_cart.php 2.2rc2.src/includes/boxes/shopping_cart.php
--- 2.2ms2-060817.src/includes/boxes/shopping_cart.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/shopping_cart.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: shopping_cart.php,v 1.18 2003/02/10 22:31:06 hpdl Exp $
+  $Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/specials.php 2.2rc2.src/includes/boxes/specials.php
--- 2.2ms2-060817.src/includes/boxes/specials.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/specials.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: specials.php,v 1.31 2003/06/09 22:21:03 hpdl Exp $
+  $Id: specials.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/tell_a_friend.php 2.2rc2.src/includes/boxes/tell_a_friend.php
--- 2.2ms2-060817.src/includes/boxes/tell_a_friend.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/tell_a_friend.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tell_a_friend.php,v 1.16 2003/06/10 18:26:33 hpdl Exp $
+  $Id: tell_a_friend.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/boxes/whats_new.php 2.2rc2.src/includes/boxes/whats_new.php
--- 2.2ms2-060817.src/includes/boxes/whats_new.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/boxes/whats_new.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: whats_new.php,v 1.31 2003/02/10 22:31:09 hpdl Exp $
+  $Id: whats_new.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/classes/boxes.php 2.2rc2.src/includes/classes/boxes.php
--- 2.2ms2-060817.src/includes/classes/boxes.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/boxes.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: boxes.php,v 1.33 2003/06/09 22:22:50 hpdl Exp $
+  $Id: boxes.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/classes/breadcrumb.php 2.2rc2.src/includes/classes/breadcrumb.php
--- 2.2ms2-060817.src/includes/classes/breadcrumb.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/breadcrumb.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: breadcrumb.php,v 1.3 2003/02/11 00:04:50 hpdl Exp $
+  $Id: breadcrumb.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/classes/cc_validation.php 2.2rc2.src/includes/classes/cc_validation.php
--- 2.2ms2-060817.src/includes/classes/cc_validation.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/cc_validation.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cc_validation.php,v 1.3 2003/02/12 20:43:41 hpdl Exp $
+  $Id: cc_validation.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/classes/currencies.php 2.2rc2.src/includes/classes/currencies.php
--- 2.2ms2-060817.src/includes/classes/currencies.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/currencies.php	2008-01-11 12:16:37.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: currencies.php,v 1.16 2003/06/05 23:16:46 hpdl Exp $
+  $Id: currencies.php 1803 2008-01-11 18:16:37Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -40,11 +40,6 @@
       if ($calculate_currency_value == true) {
         $rate = (tep_not_null($currency_value)) ? $currency_value : $this->currencies[$currency_type]['value'];
         $format_string = $this->currencies[$currency_type]['symbol_left'] . number_format(tep_round($number * $rate, $this->currencies[$currency_type]['decimal_places']), $this->currencies[$currency_type]['decimal_places'], $this->currencies[$currency_type]['decimal_point'], $this->currencies[$currency_type]['thousands_point']) . $this->currencies[$currency_type]['symbol_right'];
-// if the selected currency is in the european euro-conversion and the default currency is euro,
-// the currency will displayed in the national currency and euro currency
-        if ( (DEFAULT_CURRENCY == 'EUR') && ($currency_type == 'DEM' || $currency_type == 'BEF' || $currency_type == 'LUF' || $currency_type == 'ESP' || $currency_type == 'FRF' || $currency_type == 'IEP' || $currency_type == 'ITL' || $currency_type == 'NLG' || $currency_type == 'ATS' || $currency_type == 'PTE' || $currency_type == 'FIM' || $currency_type == 'GRD') ) {
-          $format_string .= ' <small>[' . $this->format($number, true, 'EUR') . ']</small>';
-        }
       } else {
         $format_string = $this->currencies[$currency_type]['symbol_left'] . number_format(tep_round($number, $this->currencies[$currency_type]['decimal_places']), $this->currencies[$currency_type]['decimal_places'], $this->currencies[$currency_type]['decimal_point'], $this->currencies[$currency_type]['thousands_point']) . $this->currencies[$currency_type]['symbol_right'];
       }
@@ -52,6 +47,12 @@
       return $format_string;
     }
 
+    function calculate_price($products_price, $products_tax, $quantity = 1) {
+      global $currency;
+
+      return tep_round(tep_add_tax($products_price, $products_tax), $this->currencies[$currency]['decimal_places']) * $quantity;
+    }
+
     function is_set($code) {
       if (isset($this->currencies[$code]) && tep_not_null($this->currencies[$code])) {
         return true;
@@ -69,7 +70,7 @@
     }
 
     function display_price($products_price, $products_tax, $quantity = 1) {
-      return $this->format(tep_add_tax($products_price, $products_tax) * $quantity);
+      return $this->format($this->calculate_price($products_price, $products_tax, $quantity));
     }
   }
 ?>
diff -ruN 2.2ms2-060817.src/includes/classes/email.php 2.2rc2.src/includes/classes/email.php
--- 2.2ms2-060817.src/includes/classes/email.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/email.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: email.php,v 1.12 2003/06/17 17:29:44 dgw_ Exp $
+  $Id: email.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/classes/http_client.php 2.2rc2.src/includes/classes/http_client.php
--- 2.2ms2-060817.src/includes/classes/http_client.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/http_client.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: http_client.php,v 1.1 2002/11/01 02:26:03 hpdl Exp $
+  $Id: http_client.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/classes/language.php 2.2rc2.src/includes/classes/language.php
--- 2.2ms2-060817.src/includes/classes/language.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/language.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: language.php,v 1.6 2003/06/28 16:53:09 dgw_ Exp $
+  $Id: language.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/classes/message_stack.php 2.2rc2.src/includes/classes/message_stack.php
--- 2.2ms2-060817.src/includes/classes/message_stack.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/message_stack.php	2007-12-20 08:57:13.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: message_stack.php,v 1.1 2003/05/19 19:45:42 hpdl Exp $
+  $Id: message_stack.php 1740 2007-12-20 14:57:13Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/classes/mime.php 2.2rc2.src/includes/classes/mime.php
--- 2.2ms2-060817.src/includes/classes/mime.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/mime.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: mime.php,v 1.8 2003/06/17 17:29:44 dgw_ Exp $
+  $Id: mime.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/classes/navigation_history.php 2.2rc2.src/includes/classes/navigation_history.php
--- 2.2ms2-060817.src/includes/classes/navigation_history.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/navigation_history.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: navigation_history.php,v 1.6 2003/06/09 22:23:43 hpdl Exp $
+  $Id: navigation_history.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -60,8 +60,8 @@
       if ($set == 'true') {
         $this->path[] = array('page' => basename($PHP_SELF),
                               'mode' => $request_type,
-                              'get' => $HTTP_GET_VARS,
-                              'post' => $HTTP_POST_VARS);
+                              'get' => $this->filter_parameters($HTTP_GET_VARS),
+                              'post' => $this->filter_parameters($HTTP_POST_VARS));
       }
     }
 
@@ -80,13 +80,13 @@
       if (is_array($page)) {
         $this->snapshot = array('page' => $page['page'],
                                 'mode' => $page['mode'],
-                                'get' => $page['get'],
-                                'post' => $page['post']);
+                                'get' => $this->filter_parameters($page['get']),
+                                'post' => $this->filter_parameters($page['post']));
       } else {
         $this->snapshot = array('page' => basename($PHP_SELF),
                                 'mode' => $request_type,
-                                'get' => $HTTP_GET_VARS,
-                                'post' => $HTTP_POST_VARS);
+                                'get' => $this->filter_parameters($HTTP_GET_VARS),
+                                'post' => $this->filter_parameters($HTTP_POST_VARS));
       }
     }
 
@@ -124,6 +124,21 @@
       }
     }
 
+    function filter_parameters($parameters) {
+      $clean = array();
+
+      if (is_array($parameters)) {
+        reset($parameters);
+        while (list($key, $value) = each($parameters)) {
+          if (strpos($key, '_nh-dns') < 1) {
+            $clean[$key] = $value;
+          }
+        }
+      }
+
+      return $clean;
+    }
+
     function unserialize($broken) {
       for(reset($broken);$kv=each($broken);) {
         $key=$kv['key'];
diff -ruN 2.2ms2-060817.src/includes/classes/order.php 2.2rc2.src/includes/classes/order.php
--- 2.2ms2-060817.src/includes/classes/order.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/order.php	2007-12-20 23:20:28.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: order.php,v 1.33 2003/06/09 22:25:35 hpdl Exp $
+  $Id: order.php 1750 2007-12-21 05:20:28Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -71,19 +71,19 @@
                               'city' => $order['customers_city'],
                               'postcode' => $order['customers_postcode'],
                               'state' => $order['customers_state'],
-                              'country' => $order['customers_country'],
+                              'country' => array('title' => $order['customers_country']),
                               'format_id' => $order['customers_address_format_id'],
                               'telephone' => $order['customers_telephone'],
                               'email_address' => $order['customers_email_address']);
 
-      $this->delivery = array('name' => $order['delivery_name'],
+      $this->delivery = array('name' => trim($order['delivery_name']),
                               'company' => $order['delivery_company'],
                               'street_address' => $order['delivery_street_address'],
                               'suburb' => $order['delivery_suburb'],
                               'city' => $order['delivery_city'],
                               'postcode' => $order['delivery_postcode'],
                               'state' => $order['delivery_state'],
-                              'country' => $order['delivery_country'],
+                              'country' => array('title' => $order['delivery_country']),
                               'format_id' => $order['delivery_address_format_id']);
 
       if (empty($this->delivery['name']) && empty($this->delivery['street_address'])) {
@@ -97,7 +97,7 @@
                              'city' => $order['billing_city'],
                              'postcode' => $order['billing_postcode'],
                              'state' => $order['billing_state'],
-                             'country' => $order['billing_country'],
+                             'country' => array('title' => $order['billing_country']),
                              'format_id' => $order['billing_address_format_id']);
 
       $index = 0;
@@ -131,39 +131,107 @@
     }
 
     function cart() {
-      global $customer_id, $sendto, $billto, $cart, $languages_id, $currency, $currencies, $shipping, $payment;
+      global $HTTP_POST_VARS, $customer_id, $sendto, $billto, $cart, $languages_id, $currency, $currencies, $shipping, $payment, $comments, $customer_default_address_id;
 
       $this->content_type = $cart->get_content_type();
 
+      if ( ($this->content_type != 'virtual') && ($sendto == false) ) {
+        $sendto = $customer_default_address_id;
+      }
+
       $customer_address_query = tep_db_query("select c.customers_firstname, c.customers_lastname, c.customers_telephone, c.customers_email_address, ab.entry_company, ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, co.countries_id, co.countries_name, co.countries_iso_code_2, co.countries_iso_code_3, co.address_format_id, ab.entry_state from " . TABLE_CUSTOMERS . " c, " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " co on (ab.entry_country_id = co.countries_id) where c.customers_id = '" . (int)$customer_id . "' and ab.customers_id = '" . (int)$customer_id . "' and c.customers_default_address_id = ab.address_book_id");
       $customer_address = tep_db_fetch_array($customer_address_query);
 
-      $shipping_address_query = tep_db_query("select ab.entry_firstname, ab.entry_lastname, ab.entry_company, ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, ab.entry_country_id, c.countries_id, c.countries_name, c.countries_iso_code_2, c.countries_iso_code_3, c.address_format_id, ab.entry_state from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " c on (ab.entry_country_id = c.countries_id) where ab.customers_id = '" . (int)$customer_id . "' and ab.address_book_id = '" . (int)$sendto . "'");
-      $shipping_address = tep_db_fetch_array($shipping_address_query);
-      
-      $billing_address_query = tep_db_query("select ab.entry_firstname, ab.entry_lastname, ab.entry_company, ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, ab.entry_country_id, c.countries_id, c.countries_name, c.countries_iso_code_2, c.countries_iso_code_3, c.address_format_id, ab.entry_state from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " c on (ab.entry_country_id = c.countries_id) where ab.customers_id = '" . (int)$customer_id . "' and ab.address_book_id = '" . (int)$billto . "'");
-      $billing_address = tep_db_fetch_array($billing_address_query);
+      if (is_array($sendto) && !empty($sendto)) {
+        $shipping_address = array('entry_firstname' => $sendto['firstname'],
+                                  'entry_lastname' => $sendto['lastname'],
+                                  'entry_company' => $sendto['company'],
+                                  'entry_street_address' => $sendto['street_address'],
+                                  'entry_suburb' => $sendto['suburb'],
+                                  'entry_postcode' => $sendto['postcode'],
+                                  'entry_city' => $sendto['city'],
+                                  'entry_zone_id' => $sendto['zone_id'],
+                                  'zone_name' => $sendto['zone_name'],
+                                  'entry_country_id' => $sendto['country_id'],
+                                  'countries_id' => $sendto['country_id'],
+                                  'countries_name' => $sendto['country_name'],
+                                  'countries_iso_code_2' => $sendto['country_iso_code_2'],
+                                  'countries_iso_code_3' => $sendto['country_iso_code_3'],
+                                  'address_format_id' => $sendto['address_format_id'],
+                                  'entry_state' => $sendto['zone_name']);
+      } elseif (is_numeric($sendto)) {
+        $shipping_address_query = tep_db_query("select ab.entry_firstname, ab.entry_lastname, ab.entry_company, ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, ab.entry_country_id, c.countries_id, c.countries_name, c.countries_iso_code_2, c.countries_iso_code_3, c.address_format_id, ab.entry_state from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " c on (ab.entry_country_id = c.countries_id) where ab.customers_id = '" . (int)$customer_id . "' and ab.address_book_id = '" . (int)$sendto . "'");
+        $shipping_address = tep_db_fetch_array($shipping_address_query);
+      } else {
+        $shipping_address = array('entry_firstname' => null,
+                                  'entry_lastname' => null,
+                                  'entry_company' => null,
+                                  'entry_street_address' => null,
+                                  'entry_suburb' => null,
+                                  'entry_postcode' => null,
+                                  'entry_city' => null,
+                                  'entry_zone_id' => null,
+                                  'zone_name' => null,
+                                  'entry_country_id' => null,
+                                  'countries_id' => null,
+                                  'countries_name' => null,
+                                  'countries_iso_code_2' => null,
+                                  'countries_iso_code_3' => null,
+                                  'address_format_id' => 0,
+                                  'entry_state' => null);
+      }
 
-      $tax_address_query = tep_db_query("select ab.entry_country_id, ab.entry_zone_id from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) where ab.customers_id = '" . (int)$customer_id . "' and ab.address_book_id = '" . (int)($this->content_type == 'virtual' ? $billto : $sendto) . "'");
-      $tax_address = tep_db_fetch_array($tax_address_query);
+      if (is_array($billto) && !empty($billto)) {
+        $billing_address = array('entry_firstname' => $billto['firstname'],
+                                 'entry_lastname' => $billto['lastname'],
+                                 'entry_company' => $billto['company'],
+                                 'entry_street_address' => $billto['street_address'],
+                                 'entry_suburb' => $billto['suburb'],
+                                 'entry_postcode' => $billto['postcode'],
+                                 'entry_city' => $billto['city'],
+                                 'entry_zone_id' => $billto['zone_id'],
+                                 'zone_name' => $billto['zone_name'],
+                                 'entry_country_id' => $billto['country_id'],
+                                 'countries_id' => $billto['country_id'],
+                                 'countries_name' => $billto['country_name'],
+                                 'countries_iso_code_2' => $billto['country_iso_code_2'],
+                                 'countries_iso_code_3' => $billto['country_iso_code_3'],
+                                 'address_format_id' => $billto['address_format_id'],
+                                 'entry_state' => $billto['zone_name']);
+      } else {
+        $billing_address_query = tep_db_query("select ab.entry_firstname, ab.entry_lastname, ab.entry_company, ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, ab.entry_country_id, c.countries_id, c.countries_name, c.countries_iso_code_2, c.countries_iso_code_3, c.address_format_id, ab.entry_state from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " c on (ab.entry_country_id = c.countries_id) where ab.customers_id = '" . (int)$customer_id . "' and ab.address_book_id = '" . (int)$billto . "'");
+        $billing_address = tep_db_fetch_array($billing_address_query);
+      }
+
+      if ($this->content_type == 'virtual') {
+        $tax_address = array('entry_country_id' => $billing_address['entry_country_id'],
+                             'entry_zone_id' => $billing_address['entry_zone_id']);
+      } else {
+        $tax_address = array('entry_country_id' => $shipping_address['entry_country_id'],
+                             'entry_zone_id' => $shipping_address['entry_zone_id']);
+      }
 
       $this->info = array('order_status' => DEFAULT_ORDERS_STATUS_ID,
                           'currency' => $currency,
                           'currency_value' => $currencies->currencies[$currency]['value'],
                           'payment_method' => $payment,
-                          'cc_type' => (isset($GLOBALS['cc_type']) ? $GLOBALS['cc_type'] : ''),
-                          'cc_owner' => (isset($GLOBALS['cc_owner']) ? $GLOBALS['cc_owner'] : ''),
-                          'cc_number' => (isset($GLOBALS['cc_number']) ? $GLOBALS['cc_number'] : ''),
-                          'cc_expires' => (isset($GLOBALS['cc_expires']) ? $GLOBALS['cc_expires'] : ''),
+                          'cc_type' => '',
+                          'cc_owner' => '',
+                          'cc_number' => '',
+                          'cc_expires' => '',
                           'shipping_method' => $shipping['title'],
                           'shipping_cost' => $shipping['cost'],
                           'subtotal' => 0,
                           'tax' => 0,
                           'tax_groups' => array(),
-                          'comments' => (isset($GLOBALS['comments']) ? $GLOBALS['comments'] : ''));
+                          'comments' => (tep_session_is_registered('comments') && !empty($comments) ? $comments : ''));
 
       if (isset($GLOBALS[$payment]) && is_object($GLOBALS[$payment])) {
-        $this->info['payment_method'] = $GLOBALS[$payment]->title;
+        if (isset($GLOBALS[$payment]->public_title)) {
+          $this->info['payment_method'] = $GLOBALS[$payment]->public_title;
+        } else {
+          $this->info['payment_method'] = $GLOBALS[$payment]->title;
+        }
 
         if ( isset($GLOBALS[$payment]->order_status) && is_numeric($GLOBALS[$payment]->order_status) && ($GLOBALS[$payment]->order_status > 0) ) {
           $this->info['order_status'] = $GLOBALS[$payment]->order_status;
@@ -241,7 +309,7 @@
           }
         }
 
-        $shown_price = tep_add_tax($this->products[$index]['final_price'], $this->products[$index]['tax']) * $this->products[$index]['qty'];
+        $shown_price = $currencies->calculate_price($this->products[$index]['final_price'], $this->products[$index]['tax'], $this->products[$index]['qty']);
         $this->info['subtotal'] += $shown_price;
 
         $products_tax = $this->products[$index]['tax'];
diff -ruN 2.2ms2-060817.src/includes/classes/order_total.php 2.2rc2.src/includes/classes/order_total.php
--- 2.2ms2-060817.src/includes/classes/order_total.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/order_total.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: order_total.php,v 1.4 2003/02/11 00:04:53 hpdl Exp $
+  $Id: order_total.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -38,6 +38,7 @@
         while (list(, $value) = each($this->modules)) {
           $class = substr($value, 0, strrpos($value, '.'));
           if ($GLOBALS[$class]->enabled) {
+            $GLOBALS[$class]->output = array();
             $GLOBALS[$class]->process();
 
             for ($i=0, $n=sizeof($GLOBALS[$class]->output); $i<$n; $i++) {
diff -ruN 2.2ms2-060817.src/includes/classes/payment.php 2.2rc2.src/includes/classes/payment.php
--- 2.2ms2-060817.src/includes/classes/payment.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/payment.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: payment.php,v 1.37 2003/06/09 22:26:32 hpdl Exp $
+  $Id: payment.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -122,6 +122,22 @@
       return $js;
     }
 
+    function checkout_initialization_method() {
+      $initialize_array = array();
+
+      if (is_array($this->modules)) {
+        reset($this->modules);
+        while (list(, $value) = each($this->modules)) {
+          $class = substr($value, 0, strrpos($value, '.'));
+          if ($GLOBALS[$class]->enabled && method_exists($GLOBALS[$class], 'checkout_initialization_method')) {
+            $initialize_array[] = $GLOBALS[$class]->checkout_initialization_method();
+          }
+        }
+      }
+
+      return $initialize_array;
+    }
+
     function selection() {
       $selection_array = array();
 
diff -ruN 2.2ms2-060817.src/includes/classes/sessions.php 2.2rc2.src/includes/classes/sessions.php
--- 2.2ms2-060817.src/includes/classes/sessions.php	2006-08-16 17:13:45.000000000 -0500
+++ 2.2rc2.src/includes/classes/sessions.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: sessions.php,v 1.15 2003/06/16 16:24:00 dgw_ Exp $
+  $Id: sessions.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/classes/shipping.php 2.2rc2.src/includes/classes/shipping.php
--- 2.2ms2-060817.src/includes/classes/shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: shipping.php,v 1.23 2003/06/29 11:22:05 hpdl Exp $
+  $Id: shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/classes/shopping_cart.php 2.2rc2.src/includes/classes/shopping_cart.php
--- 2.2ms2-060817.src/includes/classes/shopping_cart.php	2006-08-16 12:17:08.000000000 -0500
+++ 2.2rc2.src/includes/classes/shopping_cart.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: shopping_cart.php,v 1.35 2003/06/25 21:14:33 hpdl Exp $
+  $Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -29,7 +29,7 @@
           $qty = $this->contents[$products_id]['qty'];
           $product_query = tep_db_query("select products_id from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");
           if (!tep_db_num_rows($product_query)) {
-            tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . $qty . "', '" . date('Ymd') . "')");
+            tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . tep_db_input($qty) . "', '" . date('Ymd') . "')");
             if (isset($this->contents[$products_id]['attributes'])) {
               reset($this->contents[$products_id]['attributes']);
               while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {
@@ -37,7 +37,7 @@
               }
             }
           } else {
-            tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . $qty . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");
+            tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . tep_db_input($qty) . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");
           }
         }
       }
@@ -81,6 +81,10 @@
       $products_id_string = tep_get_uprid($products_id, $attributes);
       $products_id = tep_get_prid($products_id_string);
 
+      if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$qty > MAX_QTY_IN_CART)) {
+        $qty = MAX_QTY_IN_CART;
+      }
+
       $attributes_pass_check = true;
 
       if (is_array($attributes)) {
@@ -106,7 +110,7 @@
           if ($this->in_cart($products_id_string)) {
             $this->update_quantity($products_id_string, $qty, $attributes);
           } else {
-            $this->contents[$products_id_string] = array('qty' => $qty);
+            $this->contents[$products_id_string] = array('qty' => (int)$qty);
 // insert into database
             if (tep_session_is_registered('customer_id')) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id_string) . "', '" . (int)$qty . "', '" . date('Ymd') . "')");
 
@@ -134,6 +138,10 @@
       $products_id_string = tep_get_uprid($products_id, $attributes);
       $products_id = tep_get_prid($products_id_string);
 
+      if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$quantity > MAX_QTY_IN_CART)) {
+        $quantity = MAX_QTY_IN_CART;
+      }
+
       $attributes_pass_check = true;
 
       if (is_array($attributes)) {
@@ -147,7 +155,7 @@
       }
 
       if (is_numeric($products_id) && isset($this->contents[$products_id_string]) && is_numeric($quantity) && ($attributes_pass_check == true)) {
-        $this->contents[$products_id_string] = array('qty' => $quantity);
+        $this->contents[$products_id_string] = array('qty' => (int)$quantity);
 // update database
         if (tep_session_is_registered('customer_id')) tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . (int)$quantity . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id_string) . "'");
 
@@ -237,6 +245,8 @@
     }
 
     function calculate() {
+      global $currencies;
+
       $this->total = 0;
       $this->weight = 0;
       if (!is_array($this->contents)) return 0;
@@ -259,7 +269,7 @@
             $products_price = $specials['specials_new_products_price'];
           }
 
-          $this->total += tep_add_tax($products_price, $products_tax) * $qty;
+          $this->total += $currencies->calculate_price($products_price, $products_tax, $qty);
           $this->weight += ($qty * $products_weight);
         }
 
@@ -270,9 +280,9 @@
             $attribute_price_query = tep_db_query("select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$prid . "' and options_id = '" . (int)$option . "' and options_values_id = '" . (int)$value . "'");
             $attribute_price = tep_db_fetch_array($attribute_price_query);
             if ($attribute_price['price_prefix'] == '+') {
-              $this->total += $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);
+              $this->total += $currencies->calculate_price($attribute_price['options_values_price'], $products_tax, $qty);
             } else {
-              $this->total -= $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);
+              $this->total -= $currencies->calculate_price($attribute_price['options_values_price'], $products_tax, $qty);
             }
           }
         }
diff -ruN 2.2ms2-060817.src/includes/classes/split_page_results.php 2.2rc2.src/includes/classes/split_page_results.php
--- 2.2ms2-060817.src/includes/classes/split_page_results.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/classes/split_page_results.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: split_page_results.php,v 1.15 2003/06/09 22:35:34 hpdl Exp $
+  $Id: split_page_results.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/column_left.php 2.2rc2.src/includes/column_left.php
--- 2.2ms2-060817.src/includes/column_left.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/column_left.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: column_left.php,v 1.15 2003/07/01 14:34:54 hpdl Exp $
+  $Id: column_left.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/column_right.php 2.2rc2.src/includes/column_right.php
--- 2.2ms2-060817.src/includes/column_right.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/column_right.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: column_right.php,v 1.17 2003/06/09 22:06:41 hpdl Exp $
+  $Id: column_right.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/configure.php 2.2rc2.src/includes/configure.php
--- 2.2ms2-060817.src/includes/configure.php	2006-08-18 15:51:41.000000000 -0500
+++ 2.2rc2.src/includes/configure.php	2008-01-22 11:27:23.000000000 -0600
@@ -1,27 +1,13 @@
 <?php
-/*
-  $Id: configure.php,v 1.14 2003/07/09 01:15:48 hpdl Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2003 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-// Define the webserver and path parameters
-// * DIR_FS_* = Filesystem directories (local/physical)
-// * DIR_WS_* = Webserver directories (virtual/URL)
-  define('HTTP_SERVER', '[% url_to_install_without_trailing_slash %]'); // eg, http://localhost - should not be empty for productive servers
-  define('HTTPS_SERVER', 'https://[% installed_on_domain %]/[% installpath %]'); // eg, https://localhost - should not be empty for productive servers
-  define('ENABLE_SSL', false); // secure webserver for checkout procedure?
+  define('HTTP_SERVER', 'http://[% installed_on_domain %]');
+  define('HTTPS_SERVER', 'https://[% installed_on_domain %]');
+  define('ENABLE_SSL', false);
   define('HTTP_COOKIE_DOMAIN', '[% installed_on_domain %]');
   define('HTTPS_COOKIE_DOMAIN', '[% installed_on_domain %]');
   define('HTTP_COOKIE_PATH', '/[% installpath %]/');
   define('HTTPS_COOKIE_PATH', '/[% installpath %]/');
-  define('DIR_WS_HTTP_CATALOG', '/');
-  define('DIR_WS_HTTPS_CATALOG', '/');
+  define('DIR_WS_HTTP_CATALOG', '/[% installpath %]/');
+  define('DIR_WS_HTTPS_CATALOG', '/[% installpath %]/');
   define('DIR_WS_IMAGES', 'images/');
   define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/');
   define('DIR_WS_INCLUDES', 'includes/');
@@ -32,17 +18,14 @@
   define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/');
 
   define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/');
-  define('DIR_FS_CATALOG', dirname($HTTP_SERVER_VARS['SCRIPT_FILENAME']) . '/');
-  
+  define('DIR_FS_CATALOG', '[% installdir %]');
   define('DIR_FS_DOWNLOAD', DIR_FS_CATALOG . 'download/');
   define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/');
 
-// define our database connection
-  define('DB_SERVER', '[% mysql.osc.sqlhost %]'); // eg, localhost - should not be empty for productive servers
+  define('DB_SERVER', '[% mysql.osc.sqlhost %]');
   define('DB_SERVER_USERNAME', '[% mysql_user %]');
   define('DB_SERVER_PASSWORD', '[% mysql_pass %]');
   define('DB_DATABASE', '[% osc %]');
-  define('DB_TABLE_PREFIX', '[% table_prefix %]_');
-  define('USE_PCONNECT', 'false'); // use persistent connections?
-  define('STORE_SESSIONS', ''); // leave empty '' for default handler or set to 'mysql'
+  define('USE_PCONNECT', 'false');
+  define('STORE_SESSIONS', '');
 ?>
diff -ruN 2.2ms2-060817.src/includes/counter.php 2.2rc2.src/includes/counter.php
--- 2.2ms2-060817.src/includes/counter.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/counter.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: counter.php,v 1.5 2003/02/10 22:30:52 hpdl Exp $
+  $Id: counter.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/database_tables.php 2.2rc2.src/includes/database_tables.php
--- 2.2ms2-060817.src/includes/database_tables.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/database_tables.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: database_tables.php,v 1.1 2003/03/14 02:10:58 hpdl Exp $
+  $Id: database_tables.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -13,6 +13,7 @@
 // define the database table names used in the project
   define('TABLE_ADDRESS_BOOK', 'address_book');
   define('TABLE_ADDRESS_FORMAT', 'address_format');
+  define('TABLE_ADMINISTRATORS', 'administrators');
   define('TABLE_BANNERS', 'banners');
   define('TABLE_BANNERS_HISTORY', 'banners_history');
   define('TABLE_CATEGORIES', 'categories');
diff -ruN 2.2ms2-060817.src/includes/filenames.php 2.2rc2.src/includes/filenames.php
--- 2.2ms2-060817.src/includes/filenames.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/filenames.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: filenames.php,v 1.4 2003/06/11 17:38:00 hpdl Exp $
+  $Id: filenames.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/footer.php 2.2rc2.src/includes/footer.php
--- 2.2ms2-060817.src/includes/footer.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/footer.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: footer.php,v 1.26 2003/02/10 22:30:54 hpdl Exp $
+  $Id: footer.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/form_check.js.php 2.2rc2.src/includes/form_check.js.php
--- 2.2ms2-060817.src/includes/form_check.js.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/form_check.js.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: form_check.js.php,v 1.9 2003/05/19 19:50:14 hpdl Exp $
+  $Id: form_check.js.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -20,7 +20,7 @@
   if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
     var field_value = form.elements[field_name].value;
 
-    if (field_value == '' || field_value.length < field_size) {
+    if (field_value.length < field_size) {
       error_message = error_message + "* " + message + "\n";
       error = true;
     }
@@ -63,7 +63,7 @@
     var password = form.elements[field_name_1].value;
     var confirmation = form.elements[field_name_2].value;
 
-    if (password == '' || password.length < field_size) {
+    if (password.length < field_size) {
       error_message = error_message + "* " + message_1 + "\n";
       error = true;
     } else if (password != confirmation) {
@@ -79,10 +79,10 @@
     var password_new = form.elements[field_name_2].value;
     var password_confirmation = form.elements[field_name_3].value;
 
-    if (password_current == '' || password_current.length < field_size) {
+    if (password_current.length < field_size) {
       error_message = error_message + "* " + message_1 + "\n";
       error = true;
-    } else if (password_new == '' || password_new.length < field_size) {
+    } else if (password_new.length < field_size) {
       error_message = error_message + "* " + message_2 + "\n";
       error = true;
     } else if (password_new != password_confirmation) {
diff -ruN 2.2ms2-060817.src/includes/functions/banner.php 2.2rc2.src/includes/functions/banner.php
--- 2.2ms2-060817.src/includes/functions/banner.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/functions/banner.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: banner.php,v 1.12 2003/06/20 00:12:59 hpdl Exp $
+  $Id: banner.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/functions/cache.php 2.2rc2.src/includes/functions/cache.php
--- 2.2ms2-060817.src/includes/functions/cache.php	2006-08-16 17:02:55.000000000 -0500
+++ 2.2rc2.src/includes/functions/cache.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cache.php,v 1.11 2003/07/01 14:34:54 hpdl Exp $
+  $Id: cache.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -122,7 +122,7 @@
     $cache_output = '';
 
     $manufacturers_id = '';
-    if (isset($HTTP_GET_VARS['manufactuers_id']) && is_numeric($HTTP_GET_VARS['manufacturers_id'])) {
+    if (isset($HTTP_GET_VARS['manufacturers_id']) && is_numeric($HTTP_GET_VARS['manufacturers_id'])) {
       $manufacturers_id = $HTTP_GET_VARS['manufacturers_id'];
     }
 
diff -ruN 2.2ms2-060817.src/includes/functions/compatibility.php 2.2rc2.src/includes/functions/compatibility.php
--- 2.2ms2-060817.src/includes/functions/compatibility.php	2006-08-16 16:48:23.000000000 -0500
+++ 2.2rc2.src/includes/functions/compatibility.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,16 +1,13 @@
 <?php
 /*
-  $Id: compatibility.php,v 1.19 2003/04/09 16:12:54 project3000 Exp $
+  $Id: compatibility.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2006 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
-
-  Modified by Marco Canini, <m.canini@libero.it>
-  - Fixed a bug with arrays in $HTTP_xxx_VARS
 */
 
 ////
@@ -21,6 +18,7 @@
   function do_magic_quotes_gpc(&$ar) {
     if (!is_array($ar)) return false;
 
+    reset($ar);
     while (list($key, $value) = each($ar)) {
       if (is_array($ar[$key])) {
         do_magic_quotes_gpc($ar[$key]);
@@ -28,12 +26,21 @@
         $ar[$key] = addslashes($value);
       }
     }
+    reset($ar);
   }
 
-// $HTTP_xxx_VARS are always set on php4
-  if (!is_array($HTTP_GET_VARS)) $HTTP_GET_VARS = array();
-  if (!is_array($HTTP_POST_VARS)) $HTTP_POST_VARS = array();
-  if (!is_array($HTTP_COOKIE_VARS)) $HTTP_COOKIE_VARS = array();
+  if (PHP_VERSION >= 4.1) {
+    $HTTP_GET_VARS =& $_GET;
+    $HTTP_POST_VARS =& $_POST;
+    $HTTP_COOKIE_VARS =& $_COOKIE;
+    $HTTP_SESSION_VARS =& $_SESSION;
+    $HTTP_POST_FILES =& $_FILES;
+    $HTTP_SERVER_VARS =& $_SERVER;
+  } else {
+    if (!is_array($HTTP_GET_VARS)) $HTTP_GET_VARS = array();
+    if (!is_array($HTTP_POST_VARS)) $HTTP_POST_VARS = array();
+    if (!is_array($HTTP_COOKIE_VARS)) $HTTP_COOKIE_VARS = array();
+  }
 
 // handle magic_quotes_gpc turned off.
   if (!get_magic_quotes_gpc()) {
diff -ruN 2.2ms2-060817.src/includes/functions/database.php 2.2rc2.src/includes/functions/database.php
--- 2.2ms2-060817.src/includes/functions/database.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/functions/database.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: database.php,v 1.21 2003/06/09 21:21:59 hpdl Exp $
+  $Id: database.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -107,8 +107,10 @@
     return mysql_data_seek($db_query, $row_number);
   }
 
-  function tep_db_insert_id() {
-    return mysql_insert_id();
+  function tep_db_insert_id($link = 'db_link') {
+    global $$link;
+
+    return mysql_insert_id($$link);
   }
 
   function tep_db_free_result($db_query) {
diff -ruN 2.2ms2-060817.src/includes/functions/general.php 2.2rc2.src/includes/functions/general.php
--- 2.2ms2-060817.src/includes/functions/general.php	2006-08-17 08:56:41.000000000 -0500
+++ 2.2rc2.src/includes/functions/general.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: general.php,v 1.231 2003/07/09 01:15:48 hpdl Exp $
+  $Id: general.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -355,20 +355,16 @@
 ////
 // Add tax to a products price
   function tep_add_tax($price, $tax) {
-    global $currencies;
-
     if ( (DISPLAY_PRICE_WITH_TAX == 'true') && ($tax > 0) ) {
-      return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']) + tep_calculate_tax($price, $tax);
+      return $price + tep_calculate_tax($price, $tax);
     } else {
-      return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']);
+      return $price;
     }
   }
 
 // Calculates Tax rounding the result
   function tep_calculate_tax($price, $tax) {
-    global $currencies;
-
-    return tep_round($price * $tax / 100, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']);
+    return $price * $tax / 100;
   }
 
 ////
@@ -496,6 +492,10 @@
 // Return a formatted address
 // TABLES: customers, address_book
   function tep_address_label($customers_id, $address_id = 1, $html = false, $boln = '', $eoln = "\n") {
+    if (is_array($address_id) && !empty($address_id)) {
+      return tep_address_format($address_id['address_format_id'], $address_id, $html, $boln, $eoln);
+    }
+
     $address_query = tep_db_query("select entry_firstname as firstname, entry_lastname as lastname, entry_company as company, entry_street_address as street_address, entry_suburb as suburb, entry_city as city, entry_postcode as postcode, entry_state as state, entry_zone_id as zone_id, entry_country_id as country_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customers_id . "' and address_book_id = '" . (int)$address_id . "'");
     $address = tep_db_fetch_array($address_query);
 
@@ -1171,9 +1171,10 @@
   function tep_currency_exists($code) {
     $code = tep_db_prepare_input($code);
 
-    $currency_code = tep_db_query("select currencies_id from " . TABLE_CURRENCIES . " where code = '" . tep_db_input($code) . "'");
-    if (tep_db_num_rows($currency_code)) {
-      return $code;
+    $currency_query = tep_db_query("select code from " . TABLE_CURRENCIES . " where code = '" . tep_db_input($code) . "' limit 1");
+    if (tep_db_num_rows($currency_query)) {
+      $currency = tep_db_fetch_array($currency_query);
+      return $currency['code'];
     } else {
       return false;
     }
@@ -1227,13 +1228,15 @@
   }
 
   function tep_get_ip_address() {
-    if (isset($_SERVER)) {
-      if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
-        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
-      } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
-        $ip = $_SERVER['HTTP_CLIENT_IP'];
+    global $HTTP_SERVER_VARS;
+
+    if (isset($HTTP_SERVER_VARS)) {
+      if (isset($HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'])) {
+        $ip = $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'];
+      } elseif (isset($HTTP_SERVER_VARS['HTTP_CLIENT_IP'])) {
+        $ip = $HTTP_SERVER_VARS['HTTP_CLIENT_IP'];
       } else {
-        $ip = $_SERVER['REMOTE_ADDR'];
+        $ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
       }
     } else {
       if (getenv('HTTP_X_FORWARDED_FOR')) {
@@ -1249,7 +1252,7 @@
   }
 
   function tep_count_customer_orders($id = '', $check_session = true) {
-    global $customer_id;
+    global $customer_id, $languages_id;
 
     if (is_numeric($id) == false) {
       if (tep_session_is_registered('customer_id')) {
@@ -1265,7 +1268,7 @@
       }
     }
 
-    $orders_check_query = tep_db_query("select count(*) as total from " . TABLE_ORDERS . " where customers_id = '" . (int)$id . "'");
+    $orders_check_query = tep_db_query("select count(*) as total from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_STATUS . " s where o.customers_id = '" . (int)$id . "' and o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and s.public_flag = '1'");
     $orders_check = tep_db_fetch_array($orders_check_query);
 
     return $orders_check['total'];
diff -ruN 2.2ms2-060817.src/includes/functions/gzip_compression.php 2.2rc2.src/includes/functions/gzip_compression.php
--- 2.2ms2-060817.src/includes/functions/gzip_compression.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/functions/gzip_compression.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: gzip_compression.php,v 1.3 2003/02/11 01:31:02 hpdl Exp $
+  $Id: gzip_compression.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/functions/html_output.php 2.2rc2.src/includes/functions/html_output.php
--- 2.2ms2-060817.src/includes/functions/html_output.php	2006-08-16 17:02:19.000000000 -0500
+++ 2.2rc2.src/includes/functions/html_output.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: html_output.php,v 1.56 2003/07/09 01:15:48 hpdl Exp $
+  $Id: html_output.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -158,11 +158,19 @@
 ////
 // Output a form input field
   function tep_draw_input_field($name, $value = '', $parameters = '', $type = 'text', $reinsert_value = true) {
+    global $HTTP_GET_VARS, $HTTP_POST_VARS;
+
     $field = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"';
 
-    if ( (isset($GLOBALS[$name])) && ($reinsert_value == true) ) {
-      $field .= ' value="' . tep_output_string(stripslashes($GLOBALS[$name])) . '"';
-    } elseif (tep_not_null($value)) {
+    if ( ($reinsert_value == true) && ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) ) {
+      if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) {
+        $value = stripslashes($HTTP_GET_VARS[$name]);
+      } elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) {
+        $value = stripslashes($HTTP_POST_VARS[$name]);
+      }
+    }
+
+    if (tep_not_null($value)) {
       $field .= ' value="' . tep_output_string($value) . '"';
     }
 
@@ -182,11 +190,13 @@
 ////
 // Output a selection field - alias function for tep_draw_checkbox_field() and tep_draw_radio_field()
   function tep_draw_selection_field($name, $type, $value = '', $checked = false, $parameters = '') {
+    global $HTTP_GET_VARS, $HTTP_POST_VARS;
+
     $selection = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"';
 
     if (tep_not_null($value)) $selection .= ' value="' . tep_output_string($value) . '"';
 
-    if ( ($checked == true) || ( isset($GLOBALS[$name]) && is_string($GLOBALS[$name]) && ( ($GLOBALS[$name] == 'on') || (isset($value) && (stripslashes($GLOBALS[$name]) == $value)) ) ) ) {
+    if ( ($checked == true) || (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name]) && (($HTTP_GET_VARS[$name] == 'on') || (stripslashes($HTTP_GET_VARS[$name]) == $value))) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name]) && (($HTTP_POST_VARS[$name] == 'on') || (stripslashes($HTTP_POST_VARS[$name]) == $value))) ) {
       $selection .= ' CHECKED';
     }
 
@@ -212,14 +222,20 @@
 ////
 // Output a form textarea field
   function tep_draw_textarea_field($name, $wrap, $width, $height, $text = '', $parameters = '', $reinsert_value = true) {
+    global $HTTP_GET_VARS, $HTTP_POST_VARS;
+
     $field = '<textarea name="' . tep_output_string($name) . '" wrap="' . tep_output_string($wrap) . '" cols="' . tep_output_string($width) . '" rows="' . tep_output_string($height) . '"';
 
     if (tep_not_null($parameters)) $field .= ' ' . $parameters;
 
     $field .= '>';
 
-    if ( (isset($GLOBALS[$name])) && ($reinsert_value == true) ) {
-      $field .= tep_output_string_protected(stripslashes($GLOBALS[$name]));
+    if ( ($reinsert_value == true) && ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) ) {
+      if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) {
+        $field .= tep_output_string_protected(stripslashes($HTTP_GET_VARS[$name]));
+      } elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) {
+        $field .= tep_output_string_protected(stripslashes($HTTP_POST_VARS[$name]));
+      }
     } elseif (tep_not_null($text)) {
       $field .= tep_output_string_protected($text);
     }
@@ -232,12 +248,18 @@
 ////
 // Output a form hidden field
   function tep_draw_hidden_field($name, $value = '', $parameters = '') {
+    global $HTTP_GET_VARS, $HTTP_POST_VARS;
+
     $field = '<input type="hidden" name="' . tep_output_string($name) . '"';
 
     if (tep_not_null($value)) {
       $field .= ' value="' . tep_output_string($value) . '"';
-    } elseif (isset($GLOBALS[$name])) {
-      $field .= ' value="' . tep_output_string(stripslashes($GLOBALS[$name])) . '"';
+    } elseif ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) {
+      if ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) ) {
+        $field .= ' value="' . tep_output_string(stripslashes($HTTP_GET_VARS[$name])) . '"';
+      } elseif ( (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) {
+        $field .= ' value="' . tep_output_string(stripslashes($HTTP_POST_VARS[$name])) . '"';
+      }
     }
 
     if (tep_not_null($parameters)) $field .= ' ' . $parameters;
@@ -260,13 +282,21 @@
 ////
 // Output a form pull down menu
   function tep_draw_pull_down_menu($name, $values, $default = '', $parameters = '', $required = false) {
+    global $HTTP_GET_VARS, $HTTP_POST_VARS;
+
     $field = '<select name="' . tep_output_string($name) . '"';
 
     if (tep_not_null($parameters)) $field .= ' ' . $parameters;
 
     $field .= '>';
 
-    if (empty($default) && isset($GLOBALS[$name])) $default = stripslashes($GLOBALS[$name]);
+    if (empty($default) && ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) ) {
+      if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) {
+        $default = stripslashes($HTTP_GET_VARS[$name]);
+      } elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) {
+        $default = stripslashes($HTTP_POST_VARS[$name]);
+      }
+    }
 
     for ($i=0, $n=sizeof($values); $i<$n; $i++) {
       $field .= '<option value="' . tep_output_string($values[$i]['id']) . '"';
diff -ruN 2.2ms2-060817.src/includes/functions/password_funcs.php 2.2rc2.src/includes/functions/password_funcs.php
--- 2.2ms2-060817.src/includes/functions/password_funcs.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/functions/password_funcs.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: password_funcs.php,v 1.10 2003/02/11 01:31:02 hpdl Exp $
+  $Id: password_funcs.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/functions/sessions.php 2.2rc2.src/includes/functions/sessions.php
--- 2.2ms2-060817.src/includes/functions/sessions.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/functions/sessions.php	2007-12-20 23:59:30.000000000 -0600
@@ -1,15 +1,20 @@
 <?php
 /*
-  $Id: sessions.php,v 1.19 2003/07/02 22:10:34 hpdl Exp $
+  $Id: sessions.php 1752 2007-12-21 05:59:30Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
 
+  if ( (PHP_VERSION >= 4.3) && ((bool)ini_get('register_globals') == false) ) {
+    @ini_set('session.bug_compat_42', 1);
+    @ini_set('session.bug_compat_warn', 0);
+  }
+
   if (STORE_SESSIONS == 'mysql') {
     if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) {
       $SESS_LIFE = 1440;
@@ -31,7 +36,7 @@
         return $value['value'];
       }
 
-      return false;
+      return '';
     }
 
     function _sess_write($key, $val) {
@@ -101,18 +106,34 @@
     global $session_started;
 
     if ($session_started == true) {
-      return session_register($variable);
-    } else {
-      return false;
+      if (PHP_VERSION < 4.3) {
+        return session_register($variable);
+      } else {
+        if (isset($GLOBALS[$variable])) {
+          $_SESSION[$variable] =& $GLOBALS[$variable];
+        } else {
+          $_SESSION[$variable] = null;
+        }
+      }
     }
+
+    return false;
   }
 
   function tep_session_is_registered($variable) {
-    return session_is_registered($variable);
+    if (PHP_VERSION < 4.3) {
+      return session_is_registered($variable);
+    } else {
+      return array_key_exists($variable, $_SESSION);
+    }
   }
 
   function tep_session_unregister($variable) {
-    return session_unregister($variable);
+    if (PHP_VERSION < 4.3) {
+      return session_unregister($variable);
+    } else {
+      unset($_SESSION[$variable]);
+    }
   }
 
   function tep_session_id($sessid = '') {
diff -ruN 2.2ms2-060817.src/includes/functions/specials.php 2.2rc2.src/includes/functions/specials.php
--- 2.2ms2-060817.src/includes/functions/specials.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/functions/specials.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: specials.php,v 1.6 2003/06/09 21:25:32 hpdl Exp $
+  $Id: specials.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/functions/validations.php 2.2rc2.src/includes/functions/validations.php
--- 2.2ms2-060817.src/includes/functions/validations.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/functions/validations.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: validations.php,v 1.11 2003/02/11 01:31:02 hpdl Exp $
+  $Id: validations.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/functions/whos_online.php 2.2rc2.src/includes/functions/whos_online.php
--- 2.2ms2-060817.src/includes/functions/whos_online.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/functions/whos_online.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: whos_online.php,v 1.11 2003/06/20 00:12:59 hpdl Exp $
+  $Id: whos_online.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/general.js 2.2rc2.src/includes/general.js
--- 2.2ms2-060817.src/includes/general.js	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/general.js	2007-12-19 18:52:16.000000000 -0600
@@ -1,5 +1,5 @@
 /*
-  $Id: general.js,v 1.3 2003/02/10 22:30:55 hpdl Exp $
+  $Id: general.js 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/header.php 2.2rc2.src/includes/header.php
--- 2.2ms2-060817.src/includes/header.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/header.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: header.php,v 1.42 2003/06/10 18:20:38 hpdl Exp $
+  $Id: header.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -54,7 +54,7 @@
 ?>
 <table border="0" width="100%" cellspacing="0" cellpadding="0">
   <tr class="header">
-    <td valign="middle"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_image(DIR_WS_IMAGES . 'oscommerce.gif', 'osCommerce') . '</a>'; ?></td>
+    <td valign="middle"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_image(DIR_WS_IMAGES . 'store_logo.png', STORE_NAME) . '</a>'; ?></td>
     <td align="right" valign="bottom"><?php echo '<a href="' . tep_href_link(FILENAME_ACCOUNT, '', 'SSL') . '">' . tep_image(DIR_WS_IMAGES . 'header_account.gif', HEADER_TITLE_MY_ACCOUNT) . '</a>&nbsp;&nbsp;<a href="' . tep_href_link(FILENAME_SHOPPING_CART) . '">' . tep_image(DIR_WS_IMAGES . 'header_cart.gif', HEADER_TITLE_CART_CONTENTS) . '</a>&nbsp;&nbsp;<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '">' . tep_image(DIR_WS_IMAGES . 'header_checkout.gif', HEADER_TITLE_CHECKOUT) . '</a>'; ?>&nbsp;&nbsp;</td>
   </tr>
 </table>
@@ -69,7 +69,7 @@
 ?>
 <table border="0" width="100%" cellspacing="0" cellpadding="2">
   <tr class="headerError">
-    <td class="headerError"><?php echo htmlspecialchars(urldecode($HTTP_GET_VARS['error_message'])); ?></td>
+    <td class="headerError"><?php echo htmlspecialchars(stripslashes(urldecode($HTTP_GET_VARS['error_message']))); ?></td>
   </tr>
 </table>
 <?php
@@ -79,7 +79,7 @@
 ?>
 <table border="0" width="100%" cellspacing="0" cellpadding="2">
   <tr class="headerInfo">
-    <td class="headerInfo"><?php echo htmlspecialchars($HTTP_GET_VARS['info_message']); ?></td>
+    <td class="headerInfo"><?php echo htmlspecialchars(stripslashes(urldecode($HTTP_GET_VARS['info_message']))); ?></td>
   </tr>
 </table>
 <?php
diff -ruN 2.2ms2-060817.src/includes/.htaccess 2.2rc2.src/includes/.htaccess
--- 2.2ms2-060817.src/includes/.htaccess	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/.htaccess	2007-12-19 18:52:16.000000000 -0600
@@ -1,4 +1,4 @@
-# $Id: .htaccess,v 1.4 2001/04/22 20:30:03 dwatkins Exp $
+# $Id: .htaccess 1739 2007-12-20 00:52:16Z hpdl $
 #
 # This is used with Apache WebServers
 # The following blocks direct HTTP requests in this directory recursively
diff -ruN 2.2ms2-060817.src/includes/languages/english/account_edit.php 2.2rc2.src/includes/languages/english/account_edit.php
--- 2.2ms2-060817.src/includes/languages/english/account_edit.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/account_edit.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_edit.php,v 1.8 2003/05/19 20:17:50 hpdl Exp $
+  $Id: account_edit.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/account_history_info.php 2.2rc2.src/includes/languages/english/account_history_info.php
--- 2.2ms2-060817.src/includes/languages/english/account_history_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/account_history_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_history_info.php,v 1.17 2003/06/05 15:43:49 dgw_ Exp $
+  $Id: account_history_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/account_history.php 2.2rc2.src/includes/languages/english/account_history.php
--- 2.2ms2-060817.src/includes/languages/english/account_history.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/account_history.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_history.php,v 1.7 2003/05/19 20:17:50 hpdl Exp $
+  $Id: account_history.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/account_newsletters.php 2.2rc2.src/includes/languages/english/account_newsletters.php
--- 2.2ms2-060817.src/includes/languages/english/account_newsletters.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/account_newsletters.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_newsletters.php,v 1.1 2003/05/19 19:55:45 hpdl Exp $
+  $Id: account_newsletters.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/account_notifications.php 2.2rc2.src/includes/languages/english/account_notifications.php
--- 2.2ms2-060817.src/includes/languages/english/account_notifications.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/account_notifications.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_notifications.php,v 1.1 2003/05/19 19:55:45 hpdl Exp $
+  $Id: account_notifications.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/account_password.php 2.2rc2.src/includes/languages/english/account_password.php
--- 2.2ms2-060817.src/includes/languages/english/account_password.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/account_password.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_password.php,v 1.1 2003/05/19 19:55:45 hpdl Exp $
+  $Id: account_password.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/account.php 2.2rc2.src/includes/languages/english/account.php
--- 2.2ms2-060817.src/includes/languages/english/account.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/account.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account.php,v 1.8 2003/05/19 20:17:50 hpdl Exp $
+  $Id: account.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/address_book.php 2.2rc2.src/includes/languages/english/address_book.php
--- 2.2ms2-060817.src/includes/languages/english/address_book.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/address_book.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: address_book.php,v 1.7 2003/05/19 20:17:50 hpdl Exp $
+  $Id: address_book.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/address_book_process.php 2.2rc2.src/includes/languages/english/address_book_process.php
--- 2.2ms2-060817.src/includes/languages/english/address_book_process.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/address_book_process.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: address_book_process.php,v 1.9 2003/05/22 14:39:32 hpdl Exp $
+  $Id: address_book_process.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/advanced_search.php 2.2rc2.src/includes/languages/english/advanced_search.php
--- 2.2ms2-060817.src/includes/languages/english/advanced_search.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/advanced_search.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: advanced_search.php,v 1.15 2003/07/08 16:45:35 dgw_ Exp $
+  $Id: advanced_search.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/checkout_confirmation.php 2.2rc2.src/includes/languages/english/checkout_confirmation.php
--- 2.2ms2-060817.src/includes/languages/english/checkout_confirmation.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/checkout_confirmation.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_confirmation.php,v 1.24 2003/02/06 17:38:16 thomasamoulton Exp $
+  $Id: checkout_confirmation.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/checkout_payment_address.php 2.2rc2.src/includes/languages/english/checkout_payment_address.php
--- 2.2ms2-060817.src/includes/languages/english/checkout_payment_address.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/checkout_payment_address.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_payment_address.php,v 1.2 2003/05/19 20:17:50 hpdl Exp $
+  $Id: checkout_payment_address.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/checkout_payment.php 2.2rc2.src/includes/languages/english/checkout_payment.php
--- 2.2ms2-060817.src/includes/languages/english/checkout_payment.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/checkout_payment.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_payment.php,v 1.14 2003/02/06 17:38:16 thomasamoulton Exp $
+  $Id: checkout_payment.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/checkout_process.php 2.2rc2.src/includes/languages/english/checkout_process.php
--- 2.2ms2-060817.src/includes/languages/english/checkout_process.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/checkout_process.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_process.php,v 1.26 2002/11/01 04:22:05 hpdl Exp $
+  $Id: checkout_process.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/checkout_shipping_address.php 2.2rc2.src/includes/languages/english/checkout_shipping_address.php
--- 2.2ms2-060817.src/includes/languages/english/checkout_shipping_address.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/checkout_shipping_address.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_shipping_address.php,v 1.2 2003/05/19 20:17:50 hpdl Exp $
+  $Id: checkout_shipping_address.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/checkout_shipping.php 2.2rc2.src/includes/languages/english/checkout_shipping.php
--- 2.2ms2-060817.src/includes/languages/english/checkout_shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/checkout_shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_shipping.php,v 1.3 2003/02/06 17:38:16 thomasamoulton Exp $
+  $Id: checkout_shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/checkout_success.php 2.2rc2.src/includes/languages/english/checkout_success.php
--- 2.2ms2-060817.src/includes/languages/english/checkout_success.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/checkout_success.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_success.php,v 1.12 2003/04/15 17:47:42 dgw_ Exp $
+  $Id: checkout_success.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/conditions.php 2.2rc2.src/includes/languages/english/conditions.php
--- 2.2ms2-060817.src/includes/languages/english/conditions.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/conditions.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: conditions.php,v 1.4 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: conditions.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/contact_us.php 2.2rc2.src/includes/languages/english/contact_us.php
--- 2.2ms2-060817.src/includes/languages/english/contact_us.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/contact_us.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: contact_us.php,v 1.7 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: contact_us.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/cookie_usage.php 2.2rc2.src/includes/languages/english/cookie_usage.php
--- 2.2ms2-060817.src/includes/languages/english/cookie_usage.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/cookie_usage.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cookie_usage.php,v 1.1 2003/03/10 23:32:20 hpdl Exp $
+  $Id: cookie_usage.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/create_account.php 2.2rc2.src/includes/languages/english/create_account.php
--- 2.2ms2-060817.src/includes/languages/english/create_account.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/create_account.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: create_account.php,v 1.11 2003/07/05 13:58:31 hpdl Exp $
+  $Id: create_account.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/create_account_success.php 2.2rc2.src/includes/languages/english/create_account_success.php
--- 2.2ms2-060817.src/includes/languages/english/create_account_success.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/create_account_success.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: create_account_success.php,v 1.9 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: create_account_success.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/download.php 2.2rc2.src/includes/languages/english/download.php
--- 2.2ms2-060817.src/includes/languages/english/download.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/download.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: download.php,v 1.2 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: download.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/index.php 2.2rc2.src/includes/languages/english/index.php
--- 2.2ms2-060817.src/includes/languages/english/index.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/index.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,16 +1,16 @@
 <?php
 /*
-  $Id: index.php,v 1.1 2003/06/11 17:38:00 hpdl Exp $
+  $Id: index.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
 
-define('TEXT_MAIN', 'This is a default setup of the osCommerce project, products shown are for demonstrational purposes, <b>any products purchased will not be delivered nor will the customer be billed</b>. Any information seen on these products is to be treated as fictional.<br><br><table border="0" width="100%" cellspacing="5" cellpadding="2"><tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/1.gif') . '</td><td class="main" valign="top"><b>Error Messages</b><br><br>If there are any error or warning messages shown above, please correct them first before proceeding.<br><br>Error messages are displayed at the very top of the page with a complete <span class="messageStackError">background</span> color.<br><br>Several checks are performed to ensure a healthy setup of your online store - these checks can be disabled by editing the appropriate parameters at the bottom of the includes/application_top.php file.</td></tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/2.gif') . '</td><td class="main" valign="top"><b>Editing Page Texts</b><br><br>The text shown here can be modified in the following file, on each language basis:<br><br><nobr class="messageStackSuccess">[path to catalog]/includes/languages/' . $language . '/' . FILENAME_DEFAULT . '</nobr><br><br>That file can be edited manually, or via the Administration Tool with the <nobr class="messageStackSuccess">Languages->' . ucfirst($language) . '->Define</nobr> or <nobr class="messageStackSuccess">Tools->File Manager</nobr> modules.<br><br>The text is set in the following manner:<br><br><nobr>define(\'TEXT_MAIN\', \'<span class="messageStackSuccess">This is a default setup of the osCommerce project...</span>\');</nobr><br><br>The text highlighted in green may be modified - it is important to keep the define() of the TEXT_MAIN keyword. To remove the text for TEXT_MAIN completely, the following example is used where only two single quote characters exist:<br><br><nobr>define(\'TEXT_MAIN\', \'\');</nobr><br><br>More information concerning the PHP define() function can be read <a href="http://www.php.net/define" target="_blank"><u>here</u></a>.</td></tr><tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/3.gif') . '</td><td class="main" valign="top"><b>Securing The Administration Tool</b><br><br>It is important to secure the Administration Tool as there is currently no security implementation available.</td></tr><tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/4.gif') . '</td><td class="main" valign="top"><b>Online Documentation</b><br><br>Online documentation can be read at the <a href="http://www.oscommerce.info" target="_blank"><u>osCommerce Knowledge Base</u></a> site.<br><br>Community support is available at the <a href="http://forums.oscommerce.com" target="_blank"><u>osCommerce Community Support Forums</u></a> site.</td></tr></table><br>If you wish to download the solution powering this shop, or if you wish to contribute to the osCommerce project, please visit the <a href="http://www.oscommerce.com" target="_blank"><u>support site of osCommerce</u></a>. This shop is running on osCommerce version <font color="#f0000"><b>' . PROJECT_VERSION . '</b></font>.');
+define('TEXT_MAIN', 'This is a default setup of osCommerce Online Merchant. Products shown are for demonstrational purposes. <b>Any products purchased will not be delivered nor will the customer be billed</b>. Any information seen on these products is to be treated as fictional.<br><br><table border="0" width="100%" cellspacing="5" cellpadding="2"><tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/1.gif') . '</td><td class="main" valign="top"><b>Error Messages</b><br><br>If there are any error or warning messages shown above, please correct them first before proceeding.<br><br>Error messages are displayed at the very top of the page with a complete <span class="messageStackError">background</span> color.<br><br>Several checks are performed to ensure a healthy setup of your online store - these checks can be disabled by editing the appropriate parameters at the bottom of the includes/application_top.php file.</td></tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/2.gif') . '</td><td class="main" valign="top"><b>Editing Page Texts</b><br><br>The text shown here can be modified in the following file, on each language basis:<br><br><nobr class="messageStackSuccess">[path to catalog]/includes/languages/' . $language . '/' . FILENAME_DEFAULT . '</nobr><br><br>That file can be edited manually, or via the Administration Tool with the <nobr class="messageStackSuccess">Languages->' . ucfirst($language) . '->Define</nobr> or <nobr class="messageStackSuccess">Tools->File Manager</nobr> modules.<br><br>The text is set in the following manner:<br><br><nobr>define(\'TEXT_MAIN\', \'<span class="messageStackSuccess">This is a default setup of the osCommerce project...</span>\');</nobr><br><br>The text highlighted in green may be modified - it is important to keep the define() of the TEXT_MAIN keyword. To remove the text for TEXT_MAIN completely, the following example is used where only two single quote characters exist:<br><br><nobr>define(\'TEXT_MAIN\', \'\');</nobr><br><br>More information concerning the PHP define() function can be read <a href="http://www.php.net/define" target="_blank"><u>here</u></a>.</td></tr><tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/3.gif') . '</td><td class="main" valign="top"><b>Online Documentation</b><br><br>Online documentation can be read at the <a href="http://www.oscommerce.info" target="_blank"><u>osCommerce Knowledge Base</u></a> site.<br><br>Support is available at the <a href="http://www.oscommerce.com/support" target="_blank"><u>osCommerce Support Site</u></a>.</td></tr></table><br>If you wish to download the solution powering this shop, or if you wish to contribute to the osCommerce project, please visit the <a href="http://www.oscommerce.com" target="_blank"><u>support site of osCommerce</u></a>. This shop is running on <font color="#f0000"><b>' . PROJECT_VERSION . '</b></font>.');
 define('TABLE_HEADING_NEW_PRODUCTS', 'New Products For %s');
 define('TABLE_HEADING_UPCOMING_PRODUCTS', 'Upcoming Products');
 define('TABLE_HEADING_DATE_EXPECTED', 'Date Expected');
diff -ruN 2.2ms2-060817.src/includes/languages/english/info_shopping_cart.php 2.2rc2.src/includes/languages/english/info_shopping_cart.php
--- 2.2ms2-060817.src/includes/languages/english/info_shopping_cart.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/info_shopping_cart.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: info_shopping_cart.php,v 1.4 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: info_shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/login.php 2.2rc2.src/includes/languages/english/login.php
--- 2.2ms2-060817.src/includes/languages/english/login.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/login.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: login.php,v 1.14 2003/06/09 22:46:46 hpdl Exp $
+  $Id: login.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/order_total/ot_loworderfee.php 2.2rc2.src/includes/languages/english/modules/order_total/ot_loworderfee.php
--- 2.2ms2-060817.src/includes/languages/english/modules/order_total/ot_loworderfee.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/order_total/ot_loworderfee.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_loworderfee.php,v 1.1 2002/04/08 22:12:08 hpdl Exp $
+  $Id: ot_loworderfee.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/order_total/ot_shipping.php 2.2rc2.src/includes/languages/english/modules/order_total/ot_shipping.php
--- 2.2ms2-060817.src/includes/languages/english/modules/order_total/ot_shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/order_total/ot_shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_shipping.php,v 1.2 2003/02/05 22:34:45 hpdl Exp $
+  $Id: ot_shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/order_total/ot_subtotal.php 2.2rc2.src/includes/languages/english/modules/order_total/ot_subtotal.php
--- 2.2ms2-060817.src/includes/languages/english/modules/order_total/ot_subtotal.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/order_total/ot_subtotal.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_subtotal.php,v 1.1 2002/04/03 23:09:49 hpdl Exp $
+  $Id: ot_subtotal.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/order_total/ot_tax.php 2.2rc2.src/includes/languages/english/modules/order_total/ot_tax.php
--- 2.2ms2-060817.src/includes/languages/english/modules/order_total/ot_tax.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/order_total/ot_tax.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_tax.php,v 1.1 2002/04/03 23:09:49 hpdl Exp $
+  $Id: ot_tax.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/order_total/ot_total.php 2.2rc2.src/includes/languages/english/modules/order_total/ot_total.php
--- 2.2ms2-060817.src/includes/languages/english/modules/order_total/ot_total.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/order_total/ot_total.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_total.php,v 1.1 2002/04/03 23:09:49 hpdl Exp $
+  $Id: ot_total.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/authorizenet_cc_aim.php 2.2rc2.src/includes/languages/english/modules/payment/authorizenet_cc_aim.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/authorizenet_cc_aim.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/authorizenet_cc_aim.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,26 @@
+<?php
+/*
+  $Id: authorizenet_cc_aim.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_TITLE', 'Authorize.net Credit Card AIM');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_PUBLIC_TITLE', 'Credit Card (Processed by Authorize.net)');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.authorize.net" target="_blank" style="text-decoration: underline; font-weight: bold;">Visit Authorize.net Website</a>');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_OWNER', 'Credit Card Owner:');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_NUMBER', 'Credit Card Number:');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_EXPIRES', 'Credit Card Expiry Date:');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_CVC', 'Credit Card Check Number (CVC):');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_TITLE', 'There has been an error processing your credit card');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_GENERAL', 'Please try again and if problems persist, please try another payment method.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_DECLINED', 'This credit card transaction has been declined. Please try again and if problems persist, please try another credit card or payment method.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_INVALID_EXP_DATE', 'The credit card expiration date is invalid. Please check the card information and try again.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_EXPIRED', 'The credit card has expired. Please try again with another card or payment method.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_CVC', 'The credit card check number (CVC) is invalid. Please check the card information and try again.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/authorizenet_cc_sim.php 2.2rc2.src/includes/languages/english/modules/payment/authorizenet_cc_sim.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/authorizenet_cc_sim.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/authorizenet_cc_sim.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,20 @@
+<?php
+/*
+  $Id: authorizenet_cc_sim.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_TITLE', 'Authorize.net Credit Card SIM');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_PUBLIC_TITLE', 'Credit Card (Processed by Authorize.net)');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.authorize.net" target="_blank" style="text-decoration: underline; font-weight: bold;">Visit Authorize.net Website</a>');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_TITLE', 'There has been an error processing your credit card');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_VERIFICATION', 'The credit card transaction could not be verified with this order. Please try again and if problems persist, please try another payment method.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_DECLINED', 'This credit card transaction has been declined. Please try again and if problems persist, please try another payment method.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_GENERAL', 'Please try again and if problems persist, please try another payment method.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/authorizenet.php 2.2rc2.src/includes/languages/english/modules/payment/authorizenet.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/authorizenet.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/authorizenet.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,24 +0,0 @@
-<?php
-/*
-  $Id: authorizenet.php,v 1.13 2003/01/03 17:25:43 thomasamoulton Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2002 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_TITLE', 'Authorize.net');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_DESCRIPTION', 'Credit Card Test Info:<br><br>CC#: 4111111111111111<br>Expiry: Any');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_TYPE', 'Type:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_OWNER', 'Credit Card Owner:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_NUMBER', 'Credit Card Number:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_EXPIRES', 'Credit Card Expiry Date:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_JS_CC_OWNER', '* The owner\'s name of the credit card must be at least ' . CC_OWNER_MIN_LENGTH . ' characters.\n');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_JS_CC_NUMBER', '* The credit card number must be at least ' . CC_NUMBER_MIN_LENGTH . ' characters.\n');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_ERROR_MESSAGE', 'There has been an error processing your credit card. Please try again.');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_DECLINED_MESSAGE', 'Your credit card was declined. Please try another card or contact your bank for more info.');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_ERROR', 'Credit Card Error!');
-?>
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/cc.php 2.2rc2.src/includes/languages/english/modules/payment/cc.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/cc.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/cc.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,22 +1,20 @@
 <?php
 /*
-  $Id: cc.php,v 1.10 2002/11/01 05:14:11 hpdl Exp $
+  $Id: cc.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
 
-  define('MODULE_PAYMENT_CC_TEXT_TITLE', 'Credit Card');
-  define('MODULE_PAYMENT_CC_TEXT_DESCRIPTION', 'Credit Card Test Info:<br><br>CC#: 4111111111111111<br>Expiry: Any');
-  define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_TYPE', 'Credit Card Type:');
+  define('MODULE_PAYMENT_CC_TEXT_TITLE', 'Credit Card (Not For Production Use)');
+  define('MODULE_PAYMENT_CC_TEXT_PUBLIC_TITLE', 'Credit Card');
+  define('MODULE_PAYMENT_CC_TEXT_DESCRIPTION', 'This module stores the credit card number in the database without encryption and is not recommended for production use.<br><br>Credit Card Test Info:<br><br>CC#: 4111111111111111<br>Expiry: Any');
   define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_OWNER', 'Credit Card Owner:');
   define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_NUMBER', 'Credit Card Number:');
   define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES', 'Credit Card Expiry Date:');
-  define('MODULE_PAYMENT_CC_TEXT_JS_CC_OWNER', '* The owner\'s name of the credit card must be at least ' . CC_OWNER_MIN_LENGTH . ' characters.\n');
-  define('MODULE_PAYMENT_CC_TEXT_JS_CC_NUMBER', '* The credit card number must be at least ' . CC_NUMBER_MIN_LENGTH . ' characters.\n');
   define('MODULE_PAYMENT_CC_TEXT_ERROR', 'Credit Card Error!');
 ?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/chronopay.php 2.2rc2.src/includes/languages/english/modules/payment/chronopay.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/chronopay.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/chronopay.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,16 @@
+<?php
+/*
+  $Id: chronopay.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_CHRONOPAY_TEXT_TITLE', 'ChronoPay');
+  define('MODULE_PAYMENT_CHRONOPAY_TEXT_PUBLIC_TITLE', 'Credit Card');
+  define('MODULE_PAYMENT_CHRONOPAY_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="http://www.chronopay.com" target="_blank" style="text-decoration: underline; font-weight: bold;">Visit ChronoPay Website</a>');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/cod.php 2.2rc2.src/includes/languages/english/modules/payment/cod.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/cod.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/cod.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cod.php,v 1.7 2002/11/01 05:31:57 hpdl Exp $
+  $Id: cod.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/ipayment_cc.php 2.2rc2.src/includes/languages/english/modules/payment/ipayment_cc.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/ipayment_cc.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/ipayment_cc.php	2008-01-13 06:25:10.000000000 -0600
@@ -0,0 +1,22 @@
+<?php
+/*
+  $Id: ipayment_cc.php 1811 2008-01-13 12:25:10Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_TITLE', 'iPayment');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_PUBLIC_TITLE', 'Credit Card');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.ipayment.de" target="_blank" style="text-decoration: underline; font-weight: bold;">Visit iPayment Website</a>');
+  define('MODULE_PAYMENT_IPAYMENT_CC_ERROR_HEADING', 'There has been an error processing your credit card');
+  define('MODULE_PAYMENT_IPAYMENT_CC_ERROR_MESSAGE', 'Please check your credit card details!');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_OWNER', 'Credit Card Owner:');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_NUMBER', 'Credit Card Number:');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES', 'Credit Card Expiry Date:');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_CHECKNUMBER', 'Credit Card Checknumber:');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/ipayment.php 2.2rc2.src/includes/languages/english/modules/payment/ipayment.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/ipayment.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/ipayment.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,25 +0,0 @@
-<?php
-/*
-  $Id: ipayment.php,v 1.4 2002/11/01 05:35:33 hpdl Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2002 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_TITLE', 'iPayment');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_DESCRIPTION', 'Credit Card Test Info:<br><br>CC#: 4111111111111111<br>Expiry: Any');
-  define('IPAYMENT_ERROR_HEADING', 'There has been an error processing your credit card');
-  define('IPAYMENT_ERROR_MESSAGE', 'Please check your credit card details!');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_OWNER', 'Credit Card Owner:');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_NUMBER', 'Credit Card Number:');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_EXPIRES', 'Credit Card Expiry Date:');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_CHECKNUMBER', 'Credit Card Checknumber:');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_CHECKNUMBER_LOCATION', '(located at the back of the credit card)');
-
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_JS_CC_OWNER', '* The owner\'s name of the credit card must be at least ' . CC_OWNER_MIN_LENGTH . ' characters.\n');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_JS_CC_NUMBER', '* The credit card number must be at least ' . CC_NUMBER_MIN_LENGTH . ' characters.\n');
-?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/moneyorder.php 2.2rc2.src/includes/languages/english/modules/payment/moneyorder.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/moneyorder.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/moneyorder.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: moneyorder.php,v 1.6 2003/01/24 21:36:04 thomasamoulton Exp $
+  $Id: moneyorder.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/nochex.php 2.2rc2.src/includes/languages/english/modules/payment/nochex.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/nochex.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/nochex.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: nochex.php,v 1.2 2002/11/01 05:38:20 hpdl Exp $
+  $Id: nochex.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal_direct.php 2.2rc2.src/includes/languages/english/modules/payment/paypal_direct.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/paypal_direct.php	2008-01-11 10:49:20.000000000 -0600
@@ -0,0 +1,26 @@
+<?php
+/*
+  $Id: paypal_direct.php 1801 2008-01-11 16:49:20Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_TITLE', 'PayPal Website Payments Pro (US) Direct Payments');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_PUBLIC_TITLE', 'Credit or Debit Card (Processed securely by PayPal)');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_DESCRIPTION', '<b>Note: PayPal requires the PayPal Express Checkout payment module to be enabled if this module is activated.</b><br /><br /><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">Visit PayPal Website</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalDirectInfo\');">(info)</a><span id="paypalDirectInfo" style="display: none;"><br><i>Using the above link to signup at PayPal grants osCommerce a small financial bonus for referring a customer.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_OWNER', 'Card Owner:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_TYPE', 'Card Type:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_NUMBER', 'Card Number:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_VALID_FROM', 'Card Valid From Date:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_VALID_FROM_INFO', '(if available)');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_EXPIRES', 'Card Expiry Date:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_CVC', 'Card Security Code (CVV2):');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_ISSUE_NUMBER', 'Card Issue Number:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_ISSUE_NUMBER_INFO', '(for Maestro and Solo cards only)');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_ERROR_ALL_FIELDS_REQUIRED', 'Error: All payment information fields are required.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal_express.php 2.2rc2.src/includes/languages/english/modules/payment/paypal_express.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal_express.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/paypal_express.php	2008-01-11 09:40:58.000000000 -0600
@@ -0,0 +1,18 @@
+<?php
+/*
+  $Id: paypal_express.php 1798 2008-01-11 15:40:58Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_TITLE', 'PayPal Express Checkout');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_PUBLIC_TITLE', 'PayPal Express (including Credit Cards and Debit Cards)');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">Visit PayPal Website</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalExpressInfo\');">(info)</a><span id="paypalExpressInfo" style="display: none;"><br><i>Using the above link to signup at PayPal grants osCommerce a small financial bonus for referring a customer.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_BUTTON', 'Checkout with PayPal');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_COMMENTS', 'Comments:');
+?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal.php 2.2rc2.src/includes/languages/english/modules/payment/paypal.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/paypal.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,15 +0,0 @@
-<?php
-/*
-  $Id: paypal.php,v 1.7 2002/11/01 05:39:27 hpdl Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2002 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  define('MODULE_PAYMENT_PAYPAL_TEXT_TITLE', 'PayPal');
-  define('MODULE_PAYMENT_PAYPAL_TEXT_DESCRIPTION', 'PayPal');
-?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal_standard.php 2.2rc2.src/includes/languages/english/modules/payment/paypal_standard.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal_standard.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/paypal_standard.php	2008-01-09 17:37:44.000000000 -0600
@@ -0,0 +1,16 @@
+<?php
+/*
+  $Id: paypal_standard.php 1778 2008-01-09 23:37:44Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_TITLE', 'PayPal Website Payments Standard');
+  define('MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_PUBLIC_TITLE', 'PayPal (including Credit Cards and Debit Cards)');
+  define('MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">Visit PayPal Website</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalStdInfo\');">(info)</a><span id="paypalStdInfo" style="display: none;"><br><i>Using the above link to signup at PayPal grants osCommerce a small financial bonus for referring a customer.</i></span>');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal_uk_direct.php 2.2rc2.src/includes/languages/english/modules/payment/paypal_uk_direct.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal_uk_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/paypal_uk_direct.php	2008-01-11 10:33:02.000000000 -0600
@@ -0,0 +1,31 @@
+<?php
+/*
+  $Id: paypal_uk_direct.php 1800 2008-01-11 16:33:02Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_TITLE', 'PayPal Website Payments Pro (UK) Direct Payments');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_PUBLIC_TITLE', 'Credit or Debit Card (Processed securely by PayPal)');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_DESCRIPTION', '<b>Note: PayPal requires the PayPal Website Payments Pro (UK) Express Checkout payment module to be enabled if this module is activated.</b><br /><br /><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">Visit PayPal Website</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalDirectUKInfo\');">(info)</a><span id="paypalDirectUKInfo" style="display: none;"><br><i>Using the above link to signup at PayPal grants osCommerce a small financial bonus for referring a customer.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_OWNER', 'Card Owner:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_TYPE', 'Card Type:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_NUMBER', 'Card Number:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_VALID_FROM', 'Card Valid From Date:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_VALID_FROM_INFO', '(if available)');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_EXPIRES', 'Card Expiry Date:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_CVC', 'Card Security Code (CVV2):');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_ISSUE_NUMBER', 'Card Issue Number:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_ISSUE_NUMBER_INFO', '(for Maestro and Solo cards only)');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_ALL_FIELDS_REQUIRED', 'Error: All payment information fields are required.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_GENERAL', 'Error: A general problem has occurred with the transaction. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_CFG_ERROR', 'Error: Payment module configuration error. Please verify the login credentials.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_ADDRESS', 'Error: A match of the Shipping Address City, State, and Postal Code failed. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_DECLINED', 'Error: This transaction has been declined. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_INVALID_CREDIT_CARD', 'Error: The provided credit card information is invalid. Please try again.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal_uk_express.php 2.2rc2.src/includes/languages/english/modules/payment/paypal_uk_express.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/paypal_uk_express.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/paypal_uk_express.php	2008-01-11 10:33:02.000000000 -0600
@@ -0,0 +1,23 @@
+<?php
+/*
+  $Id: paypal_uk_express.php 1800 2008-01-11 16:33:02Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_TITLE', 'PayPal Website Payments Pro (UK) Express Checkout');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_PUBLIC_TITLE', 'PayPal Express (including Credit Cards and Debit Cards)');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_DESCRIPTION', '<b>Note: PayPal requires the PayPal Website Payments Pro (UK) Direct Payments payment module to be enabled if this module is activated.</b><br /><br /><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">Visit PayPal Website</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalExpressUKInfo\');">(info)</a><span id="paypalExpressUKInfo" style="display: none;"><br><i>Using the above link to signup at PayPal grants osCommerce a small financial bonus for referring a customer.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_BUTTON', 'Checkout with PayPal');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_COMMENTS', 'Comments:');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_GENERAL', 'Error: A general problem has occurred with the transaction. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_CFG_ERROR', 'Error: Payment module configuration error. Please verify the login credentials.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_ADDRESS', 'Error: A match of the Shipping Address City, State, and Postal Code failed. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_DECLINED', 'Error: This transaction has been declined. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_EXPRESS_DISABLED', 'Error: PayPal Express Checkout has been disabled for this merchant. Please contact PayPal Customer Service.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/pm2checkout.php 2.2rc2.src/includes/languages/english/modules/payment/pm2checkout.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/pm2checkout.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/pm2checkout.php	2008-01-11 07:48:20.000000000 -0600
@@ -1,26 +1,20 @@
 <?php
 /*
-  $Id: pm2checkout.php,v 1.3 2002/11/18 14:45:23 project3000 Exp $
+  $Id: pm2checkout.php 1793 2008-01-11 13:48:20Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
 
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_TITLE', '2CheckOut');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_DESCRIPTION', 'Credit Card Test Info:<br><br>CC#: 4111111111111111<br>Expiry: Any');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_TYPE', 'Type:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER', 'Credit Card Owner:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_FIRST_NAME', 'Credit Card Owner First Name:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_LAST_NAME', 'Credit Card Owner Last Name:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_NUMBER', 'Credit Card Number:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_EXPIRES', 'Credit Card Expiry Date:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_CHECKNUMBER', 'Credit Card Checknumber:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_CHECKNUMBER_LOCATION', '(located at the back of the credit card)');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_JS_CC_NUMBER', '* The credit card number must be at least ' . CC_NUMBER_MIN_LENGTH . ' characters.\n');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_TITLE', '2Checkout');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_PUBLIC_TITLE', '2Checkout');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_PUBLIC_DESCRIPTION', 'Credit Cards and Alternatives');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.2checkout.com/2co/signup?affiliate=1255821" target="_blank" style="text-decoration: underline; font-weight: bold;">Visit 2Checkout Website</a>&nbsp;<a href="javascript:toggleDivBlock(\'pm2checkoutInfo\');">(info)</a><span id="pm2checkoutInfo" style="display: none;"><br><i>Using the above link to signup at 2Checkout grants osCommerce a small financial bonus for referring a customer.</i></span><br><br>Credit Card Test Info:<br><br>CC#: 4111111111111111<br>Expiry: Any');
   define('MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR_MESSAGE', 'There has been an error processing your credit card. Please try again.');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR', 'Credit Card Error!');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_WARNING_DEMO_MODE', 'In Review: Transaction performed in demo mode.');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_WARNING_TRANSACTION_ORDER', 'In Review: Transaction total did not match order total.');
 ?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/psigate.php 2.2rc2.src/includes/languages/english/modules/payment/psigate.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/psigate.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/psigate.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: psigate.php,v 1.3 2002/11/18 14:45:25 project3000 Exp $
+  $Id: psigate.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/secpay.php 2.2rc2.src/includes/languages/english/modules/payment/secpay.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/secpay.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/secpay.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: secpay.php,v 1.7 2002/11/18 14:45:29 project3000 Exp $
+  $Id: secpay.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/sofortueberweisung_direct.php 2.2rc2.src/includes/languages/english/modules/payment/sofortueberweisung_direct.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/sofortueberweisung_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/sofortueberweisung_direct.php	2008-01-11 08:55:19.000000000 -0600
@@ -0,0 +1,53 @@
+<?php
+/*
+  $Id: sofortueberweisung_direct.php 1797 2008-01-11 14:55:19Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2006 - 2007 Henri Schmidhuber (http://www.in-solution.de)
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  if (!defined('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STATUS')) {
+    define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION', '<div align="center"><a href=' . tep_href_link('ext/modules/payment/sofortueberweisung/install.php', 'install=sofortueberweisung_direct', 'SSL') . '>' . tep_image('ext/modules/payment/sofortueberweisung/autoinstaller.gif', 'Autoinstaller (empfohlen)') . '</a></div><br><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.sofortueberweisung.de/cms/index.php?vpartner=21" target="_blank" style="text-decoration: underline; font-weight: bold;">Sofortberweisung Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'sofortueberweisungInfo\');">(info)</a><span id="sofortueberweisungInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span><br><br>Kontonummer Test Info:<br><br>BLZ#: 88888888');
+  } else {
+    define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.sofortueberweisung.de/cms/index.php?vpartner=21" target="_blank" style="text-decoration: underline; font-weight: bold;">Sofortberweisung Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'sofortueberweisungInfo\');">(info)</a><span id="sofortueberweisungInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span><br><br>Kontonummer Test Info:<br><br>BLZ#: 88888888');
+  }
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_TITLE', 'Sofortberweisung Direkt');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_PUBLIC_TITLE', 'Sofortberweisung');
+
+  // checkout_payment Informationen via Bild
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION_CHECKOUT_PAYMENT', '
+    <table border="0" cellspacing="0" cellpadding="0">
+      <tr>
+        <td><a href="#" onclick="window.open(\'https://www.sofortueberweisung.de/cms/index.php?vpartner=21\', \'Popup\',\'toolbar=yes,status=no,menubar=no,scrollbars=yes,width=690,height=500\'); return false;">' . tep_image('ext/modules/payment/sofortueberweisung/images/sofortueberweisung.gif', 'Sofortberweisung ist der kostenlose, TV-zertifizierte Zahlungsdienst der Payment Network AG. Ihre Vorteile: keine zustzliche Registrierung, automatische Abbuchung von Ihrem Online-Bankkonto, hchste Sicherheitsstandards und sofortiger Versand von Lagerware. Fr die Bezahlung mit Sofortberweisung bentigen Sie Ihre eBanking Zugangsdaten, d.h. Bankverbindung, Kontonummer, PIN und TAN.') . '</a></td>
+      </tr>
+    </table>');
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION_CHECKOUT_CONFIRMATION', '
+    <table border="0" cellspacing="0" cellpadding="0">
+      <tr>
+        <td class="main"><p>Nach Besttigung der Bestellung werden Sie zum Zahlungssytem von Sofortberweisung weitergeleitet und knnen dort eine Online-berweisung duchfhren.</p><p>Hierfr bentigen Sie Ihre eBanking Zugangsdaten, d.h. Bankverbindung, Kontonummer, PIN und TAN. Mehr Informationen finden Sie hier: <a href="#" onclick="window.open(\'https://www.sofortueberweisung.de/cms/index.php?vpartner=21\', \'Popup\',\'toolbar=yes,status=no,menubar=no,scrollbars=yes,width=690,height=500\'); return false;">http://www.sofortueberweisung.de</a>.</p></td>
+      </tr>
+    </table>');
+
+ // im Verwendungszweck werden folgende Platzhalter ersetzt:
+ // {{order_date}} durch Bestelldatum
+ // {{customer_id}} durch Kundennummer der Datenbank
+ // {{customer_name}}  durch Kundenname
+ // {{customer_company}} durch Kundenfirma
+ // {{customer_email}} durch Email des Kunden
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_V_ZWECK_1', STORE_NAME);  // max 27 Zeichen
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_V_ZWECK_2', 'Nr. {{orderid}} Kd-Nr. {{customer_id}}'); // max 27 Zeichen
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_EMAIL_FOOTER', '');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_REDIRECT', 'Sie werden nun zu Sofortueberweisung.de weitergeleitet. Sollte dies nicht geschehen bitte den Button drcken');
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_ERROR_HEADING', 'Folgender Fehler wurde von Sofortberweisung whrend des Prozesses gemeldet:');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_ERROR_MESSAGE', 'Zahlung via Sofortberweisung ist leider nicht mglich, oder wurde auf Kundenwunsch abgebrochen. Bitte whlen sie ein andere Zahlungsweise.');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_CHECK_ERROR', 'Sofortberweisungs Transaktionscheck fehlgeschlagen. Bitte manuell berprfen');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/payment/worldpay_junior.php 2.2rc2.src/includes/languages/english/modules/payment/worldpay_junior.php
--- 2.2ms2-060817.src/includes/languages/english/modules/payment/worldpay_junior.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/payment/worldpay_junior.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,19 @@
+<?php
+/*
+  $Id: worldpay_junior.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_TITLE', 'WorldPay Junior');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_PUBLIC_TITLE', 'Credit Card');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="http://www.worldpay.com" target="_blank" style="text-decoration: underline; font-weight: bold;">Visit WorldPay Website</a>');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_WARNING_DEMO_MODE', 'In Review: Transaction performed in demo mode.');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_SUCCESSFUL_TRANSACTION', 'The payment transaction has been successfully performed!');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_CONTINUE_BUTTON', 'Click here to continue to %s');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/shipping/flat.php 2.2rc2.src/includes/languages/english/modules/shipping/flat.php
--- 2.2ms2-060817.src/includes/languages/english/modules/shipping/flat.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/shipping/flat.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: flat.php,v 1.5 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: flat.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/shipping/item.php 2.2rc2.src/includes/languages/english/modules/shipping/item.php
--- 2.2ms2-060817.src/includes/languages/english/modules/shipping/item.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/shipping/item.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: item.php,v 1.5 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: item.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/shipping/table.php 2.2rc2.src/includes/languages/english/modules/shipping/table.php
--- 2.2ms2-060817.src/includes/languages/english/modules/shipping/table.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/shipping/table.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: table.php,v 1.5 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: table.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/shipping/usps.php 2.2rc2.src/includes/languages/english/modules/shipping/usps.php
--- 2.2ms2-060817.src/includes/languages/english/modules/shipping/usps.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/shipping/usps.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: usps.php,v 1.8 2003/02/14 12:54:37 dgw_ Exp $
+  $Id: usps.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/modules/shipping/zones.php 2.2rc2.src/includes/languages/english/modules/shipping/zones.php
--- 2.2ms2-060817.src/includes/languages/english/modules/shipping/zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/modules/shipping/zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: zones.php,v 1.3 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/password_forgotten.php 2.2rc2.src/includes/languages/english/password_forgotten.php
--- 2.2ms2-060817.src/includes/languages/english/password_forgotten.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/password_forgotten.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: password_forgotten.php,v 1.8 2003/06/09 22:46:46 hpdl Exp $
+  $Id: password_forgotten.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/privacy.php 2.2rc2.src/includes/languages/english/privacy.php
--- 2.2ms2-060817.src/includes/languages/english/privacy.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/privacy.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: privacy.php,v 1.4 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: privacy.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/product_info.php 2.2rc2.src/includes/languages/english/product_info.php
--- 2.2ms2-060817.src/includes/languages/english/product_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/product_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_info.php,v 1.15 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: product_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/product_reviews_info.php 2.2rc2.src/includes/languages/english/product_reviews_info.php
--- 2.2ms2-060817.src/includes/languages/english/product_reviews_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/product_reviews_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews_info.php,v 1.6 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: product_reviews_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/product_reviews.php 2.2rc2.src/includes/languages/english/product_reviews.php
--- 2.2ms2-060817.src/includes/languages/english/product_reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/product_reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews.php,v 1.6 2003/06/05 23:23:52 hpdl Exp $
+  $Id: product_reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/product_reviews_write.php 2.2rc2.src/includes/languages/english/product_reviews_write.php
--- 2.2ms2-060817.src/includes/languages/english/product_reviews_write.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/product_reviews_write.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews_write.php,v 1.7 2003/06/05 23:23:52 hpdl Exp $
+  $Id: product_reviews_write.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/products_new.php 2.2rc2.src/includes/languages/english/products_new.php
--- 2.2ms2-060817.src/includes/languages/english/products_new.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/products_new.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: products_new.php,v 1.3 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: products_new.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/reviews.php 2.2rc2.src/includes/languages/english/reviews.php
--- 2.2ms2-060817.src/includes/languages/english/reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: reviews.php,v 1.5 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/shipping.php 2.2rc2.src/includes/languages/english/shipping.php
--- 2.2ms2-060817.src/includes/languages/english/shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: shipping.php,v 1.4 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/shopping_cart.php 2.2rc2.src/includes/languages/english/shopping_cart.php
--- 2.2ms2-060817.src/includes/languages/english/shopping_cart.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/shopping_cart.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: shopping_cart.php,v 1.13 2002/04/05 20:24:02 project3000 Exp $
+  $Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -23,4 +23,6 @@
 
 define('OUT_OF_STOCK_CANT_CHECKOUT', 'Products marked with ' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . ' dont exist in desired quantity in our stock.<br>Please alter the quantity of products marked with (' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '), Thank you');
 define('OUT_OF_STOCK_CAN_CHECKOUT', 'Products marked with ' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . ' dont exist in desired quantity in our stock.<br>You can buy them anyway and check the quantity we have in stock for immediate deliver in the checkout process.');
+
+define('TEXT_ALTERNATIVE_CHECKOUT_METHODS', '- OR -');
 ?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/english/specials.php 2.2rc2.src/includes/languages/english/specials.php
--- 2.2ms2-060817.src/includes/languages/english/specials.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/specials.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: specials.php,v 1.7 2002/11/19 01:48:08 dgw_ Exp $
+  $Id: specials.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/ssl_check.php 2.2rc2.src/includes/languages/english/ssl_check.php
--- 2.2ms2-060817.src/includes/languages/english/ssl_check.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/ssl_check.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ssl_check.php,v 1.1 2003/03/10 23:32:20 hpdl Exp $
+  $Id: ssl_check.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english/tell_a_friend.php 2.2rc2.src/includes/languages/english/tell_a_friend.php
--- 2.2ms2-060817.src/includes/languages/english/tell_a_friend.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english/tell_a_friend.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tell_a_friend.php,v 1.7 2003/06/10 18:20:39 hpdl Exp $
+  $Id: tell_a_friend.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/english.php 2.2rc2.src/includes/languages/english.php
--- 2.2ms2-060817.src/includes/languages/english.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/english.php	2007-12-20 12:02:36.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: english.php,v 1.114 2003/07/09 18:13:39 dgw_ Exp $
+  $Id: english.php 1743 2007-12-20 18:02:36Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -310,9 +310,9 @@
 define('WARNING_SESSION_AUTO_START', 'Warning: session.auto_start is enabled - please disable this php feature in php.ini and restart the web server.');
 define('WARNING_DOWNLOAD_DIRECTORY_NON_EXISTENT', 'Warning: The downloadable products directory does not exist: ' . DIR_FS_DOWNLOAD . '. Downloadable products will not work until this directory is valid.');
 
-define('TEXT_CCVAL_ERROR_INVALID_DATE', 'The expiry date entered for the credit card is invalid.<br>Please check the date and try again.');
-define('TEXT_CCVAL_ERROR_INVALID_NUMBER', 'The credit card number entered is invalid.<br>Please check the number and try again.');
-define('TEXT_CCVAL_ERROR_UNKNOWN_CARD', 'The first four digits of the number entered are: %s<br>If that number is correct, we do not accept that type of credit card.<br>If it is wrong, please try again.');
+define('TEXT_CCVAL_ERROR_INVALID_DATE', 'The expiry date entered for the credit card is invalid. Please check the date and try again.');
+define('TEXT_CCVAL_ERROR_INVALID_NUMBER', 'The credit card number entered is invalid. Please check the number and try again.');
+define('TEXT_CCVAL_ERROR_UNKNOWN_CARD', 'The first four digits of the number entered are: %s. If that number is correct, we do not accept that type of credit card. If it is wrong, please try again.');
 
 define('FOOTER_TEXT_BODY', 'Copyright &copy; ' . date('Y') . ' <a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . STORE_NAME . '</a><br>Powered by <a href="http://www.oscommerce.com" target="_blank">osCommerce</a>');
 ?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/account_edit.php 2.2rc2.src/includes/languages/espanol/account_edit.php
--- 2.2ms2-060817.src/includes/languages/espanol/account_edit.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/account_edit.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_edit.php,v 1.9 2003/07/08 16:45:35 dgw_ Exp $
+  $Id: account_edit.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/account_history_info.php 2.2rc2.src/includes/languages/espanol/account_history_info.php
--- 2.2ms2-060817.src/includes/languages/espanol/account_history_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/account_history_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_history_info.php,v 1.16 2003/07/08 16:45:35 dgw_ Exp $
+  $Id: account_history_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/account_history.php 2.2rc2.src/includes/languages/espanol/account_history.php
--- 2.2ms2-060817.src/includes/languages/espanol/account_history.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/account_history.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_history.php,v 1.11 2003/07/08 16:45:35 dgw_ Exp $
+  $Id: account_history.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/account_newsletters.php 2.2rc2.src/includes/languages/espanol/account_newsletters.php
--- 2.2ms2-060817.src/includes/languages/espanol/account_newsletters.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/account_newsletters.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_newsletters.php,v 1.3 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: account_newsletters.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/account_notifications.php 2.2rc2.src/includes/languages/espanol/account_notifications.php
--- 2.2ms2-060817.src/includes/languages/espanol/account_notifications.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/account_notifications.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_notifications.php,v 1.3 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: account_notifications.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/account_password.php 2.2rc2.src/includes/languages/espanol/account_password.php
--- 2.2ms2-060817.src/includes/languages/espanol/account_password.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/account_password.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_password.php,v 1.3 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: account_password.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/account.php 2.2rc2.src/includes/languages/espanol/account.php
--- 2.2ms2-060817.src/includes/languages/espanol/account.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/account.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account.php,v 1.11 2003/07/08 16:45:35 dgw_ Exp $
+  $Id: account.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/address_book.php 2.2rc2.src/includes/languages/espanol/address_book.php
--- 2.2ms2-060817.src/includes/languages/espanol/address_book.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/address_book.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: address_book.php,v 1.10 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: address_book.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/address_book_process.php 2.2rc2.src/includes/languages/espanol/address_book_process.php
--- 2.2ms2-060817.src/includes/languages/espanol/address_book_process.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/address_book_process.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: address_book_process.php,v 1.10 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: address_book_process.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/advanced_search.php 2.2rc2.src/includes/languages/espanol/advanced_search.php
--- 2.2ms2-060817.src/includes/languages/espanol/advanced_search.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/advanced_search.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: advanced_search.php,v 1.18 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: advanced_search.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/checkout_confirmation.php 2.2rc2.src/includes/languages/espanol/checkout_confirmation.php
--- 2.2ms2-060817.src/includes/languages/espanol/checkout_confirmation.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/checkout_confirmation.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_confirmation.php,v 1.21 2003/07/08 16:56:04 dgw_ Exp $
+  $Id: checkout_confirmation.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/checkout_payment_address.php 2.2rc2.src/includes/languages/espanol/checkout_payment_address.php
--- 2.2ms2-060817.src/includes/languages/espanol/checkout_payment_address.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/checkout_payment_address.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_payment_address.php,v 1.4 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: checkout_payment_address.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/checkout_payment.php 2.2rc2.src/includes/languages/espanol/checkout_payment.php
--- 2.2ms2-060817.src/includes/languages/espanol/checkout_payment.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/checkout_payment.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_payment.php,v 1.16 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: checkout_payment.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/checkout_process.php 2.2rc2.src/includes/languages/espanol/checkout_process.php
--- 2.2ms2-060817.src/includes/languages/espanol/checkout_process.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/checkout_process.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_process.php,v 1.20 2003/07/08 17:19:18 dgw_ Exp $
+  $Id: checkout_process.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/checkout_shipping_address.php 2.2rc2.src/includes/languages/espanol/checkout_shipping_address.php
--- 2.2ms2-060817.src/includes/languages/espanol/checkout_shipping_address.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/checkout_shipping_address.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_shipping_address.php,v 1.4 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: checkout_shipping_address.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/checkout_shipping.php 2.2rc2.src/includes/languages/espanol/checkout_shipping.php
--- 2.2ms2-060817.src/includes/languages/espanol/checkout_shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/checkout_shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_shipping.php,v 1.5 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: checkout_shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/checkout_success.php 2.2rc2.src/includes/languages/espanol/checkout_success.php
--- 2.2ms2-060817.src/includes/languages/espanol/checkout_success.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/checkout_success.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_success.php,v 1.12 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: checkout_success.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/conditions.php 2.2rc2.src/includes/languages/espanol/conditions.php
--- 2.2ms2-060817.src/includes/languages/espanol/conditions.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/conditions.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: conditions.php,v 1.4 2002/11/12 00:45:21 dgw_ Exp $
+  $Id: conditions.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/contact_us.php 2.2rc2.src/includes/languages/espanol/contact_us.php
--- 2.2ms2-060817.src/includes/languages/espanol/contact_us.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/contact_us.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: contact_us.php,v 1.7 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: contact_us.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/cookie_usage.php 2.2rc2.src/includes/languages/espanol/cookie_usage.php
--- 2.2ms2-060817.src/includes/languages/espanol/cookie_usage.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/cookie_usage.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cookie_usage.php,v 1.4 2003/07/08 16:56:04 dgw_ Exp $
+  $Id: cookie_usage.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/create_account.php 2.2rc2.src/includes/languages/espanol/create_account.php
--- 2.2ms2-060817.src/includes/languages/espanol/create_account.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/create_account.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: create_account.php,v 1.12 2003/07/08 16:56:04 dgw_ Exp $
+  $Id: create_account.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/create_account_success.php 2.2rc2.src/includes/languages/espanol/create_account_success.php
--- 2.2ms2-060817.src/includes/languages/espanol/create_account_success.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/create_account_success.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: create_account_success.php,v 1.8 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: create_account_success.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/download.php 2.2rc2.src/includes/languages/espanol/download.php
--- 2.2ms2-060817.src/includes/languages/espanol/download.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/download.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: download.php,v 1.3 2003/06/05 23:23:53 hpdl Exp $
+  $Id: download.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/index.php 2.2rc2.src/includes/languages/espanol/index.php
--- 2.2ms2-060817.src/includes/languages/espanol/index.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/index.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: index.php,v 1.3 2003/07/08 16:56:04 dgw_ Exp $
+  $Id: index.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/info_shopping_cart.php 2.2rc2.src/includes/languages/espanol/info_shopping_cart.php
--- 2.2ms2-060817.src/includes/languages/espanol/info_shopping_cart.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/info_shopping_cart.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: info_shopping_cart.php,v 1.5 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: info_shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/login.php 2.2rc2.src/includes/languages/espanol/login.php
--- 2.2ms2-060817.src/includes/languages/espanol/login.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/login.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: login.php,v 1.18 2003/07/08 16:56:04 dgw_ Exp $
+  $Id: login.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/order_total/ot_loworderfee.php 2.2rc2.src/includes/languages/espanol/modules/order_total/ot_loworderfee.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/order_total/ot_loworderfee.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/order_total/ot_loworderfee.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_loworderfee.php,v 1.3 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: ot_loworderfee.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/order_total/ot_shipping.php 2.2rc2.src/includes/languages/espanol/modules/order_total/ot_shipping.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/order_total/ot_shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/order_total/ot_shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_shipping.php,v 1.5 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: ot_shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/order_total/ot_subtotal.php 2.2rc2.src/includes/languages/espanol/modules/order_total/ot_subtotal.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/order_total/ot_subtotal.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/order_total/ot_subtotal.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_subtotal.php,v 1.2 2002/11/19 01:03:17 dgw_ Exp $
+  $Id: ot_subtotal.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/order_total/ot_tax.php 2.2rc2.src/includes/languages/espanol/modules/order_total/ot_tax.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/order_total/ot_tax.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/order_total/ot_tax.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_tax.php,v 1.2 2002/11/19 01:03:17 dgw_ Exp $
+  $Id: ot_tax.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/order_total/ot_total.php 2.2rc2.src/includes/languages/espanol/modules/order_total/ot_total.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/order_total/ot_total.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/order_total/ot_total.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_total.php,v 1.2 2002/11/19 01:03:17 dgw_ Exp $
+  $Id: ot_total.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/authorizenet_cc_aim.php 2.2rc2.src/includes/languages/espanol/modules/payment/authorizenet_cc_aim.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/authorizenet_cc_aim.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/authorizenet_cc_aim.php	2008-01-11 07:48:20.000000000 -0600
@@ -0,0 +1,26 @@
+<?php
+/*
+  $Id: authorizenet_cc_aim.php 1793 2008-01-11 13:48:20Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_TITLE', 'Authorize.net Credit Card AIM');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_PUBLIC_TITLE', 'Tarjeta de Cr&eacute;dito (procesado con seguridad de Authorize.net)');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.authorize.net" target="_blank" style="text-decoration: underline; font-weight: bold;">Visita la web de Authorize.net</a>');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_OWNER', 'Titular de la tarjeta:');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_NUMBER', 'N&uacute;mero de tarjeta:');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_EXPIRES', 'Fecha de caducidad:');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_CVC', 'C&oacute;digo de seguridad:');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_TITLE', 'There has been an error processing your credit card');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_GENERAL', 'Please try again and if problems persist, please try another payment method.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_DECLINED', 'This credit card transaction has been declined. Please try again and if problems persist, please try another credit card or payment method.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_INVALID_EXP_DATE', 'The credit card expiration date is invalid. Please check the card information and try again.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_EXPIRED', 'The credit card has expired. Please try again with another card or payment method.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_CVC', 'The credit card check number (CVC) is invalid. Please check the card information and try again.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/authorizenet_cc_sim.php 2.2rc2.src/includes/languages/espanol/modules/payment/authorizenet_cc_sim.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/authorizenet_cc_sim.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/authorizenet_cc_sim.php	2008-01-11 07:48:20.000000000 -0600
@@ -0,0 +1,20 @@
+<?php
+/*
+  $Id: authorizenet_cc_sim.php 1793 2008-01-11 13:48:20Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_TITLE', 'Authorize.net Credit Card SIM');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_PUBLIC_TITLE', 'Tarjeta de Cr&eacute;dito (procesado con seguridad de Authorize.net)');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.authorize.net" target="_blank" style="text-decoration: underline; font-weight: bold;">Visita la web de Authorize.net</a>');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_TITLE', 'There has been an error processing your credit card');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_VERIFICATION', 'The credit card transaction could not be verified with this order. Please try again and if problems persist, please try another payment method.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_DECLINED', 'This credit card transaction has been declined. Please try again and if problems persist, please try another payment method.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_GENERAL', 'Please try again and if problems persist, please try another payment method.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/authorizenet.php 2.2rc2.src/includes/languages/espanol/modules/payment/authorizenet.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/authorizenet.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/authorizenet.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,24 +0,0 @@
-<?php
-/*
-  $Id: authorizenet.php,v 1.14 2003/07/08 16:45:36 dgw_ Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2002 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_TITLE', 'Authorize.net');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_DESCRIPTION', 'Tarjeta de Cr&eacute;dito para Pruebas:<br><br>Numero: 4111111111111111<br>Caducidad: Cualquiera');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_TYPE', 'Tipo de Tarjeta:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_OWNER', 'Titular de la Tarjeta:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_NUMBER', 'N&uacute;mero de la Tarjeta:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_EXPIRES', 'Fecha de Caducidad:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_JS_CC_OWNER', '* El nombre del titular de la tarjeta de cr&eacute;dito debe de tener al menos ' . CC_OWNER_MIN_LENGTH . ' caracteres.\n');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_JS_CC_NUMBER', '* El n&uacute;mero de la tarjeta de credito debe de tener al menos ' . CC_NUMBER_MIN_LENGTH . ' numeros.\n');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_ERROR_MESSAGE', 'Ha ocurrido un error procesando su tarjeta de cr&eacute;dito. Por favor, int&eacute;ntelo de nuevo.');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_DECLINED_MESSAGE', 'Su tarjeta ha sido denegada. Pruebe con otra tarjeta o consulte con su banco.');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_ERROR', 'Error en Tarjeta de Cr&eacute;dito!');
-?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/cc.php 2.2rc2.src/includes/languages/espanol/modules/payment/cc.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/cc.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/cc.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,22 +1,20 @@
 <?php
 /*
-  $Id: cc.php,v 1.11 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: cc.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
 
   define('MODULE_PAYMENT_CC_TEXT_TITLE', 'Tarjeta de Cr&eacute;dito');
+  define('MODULE_PAYMENT_CC_TEXT_PUBLIC_TITLE', 'Tarjeta de Cr&eacute;dito');
   define('MODULE_PAYMENT_CC_TEXT_DESCRIPTION', 'Tarjeta de Cr&eacute;dito para Pruebas:<br><br>Numero: 4111111111111111<br>Caducidad: Cualquiera');
-  define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_TYPE', 'Tipo de Tarjeta:');
   define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_OWNER', 'Titular de la Tarjeta:');
   define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_NUMBER', 'N&uacute;mero de la Tarjeta:');
   define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES', 'Fecha de Caducidad:');
-  define('MODULE_PAYMENT_CC_TEXT_JS_CC_OWNER', '* El titular de la tarjeta de cr&eacute;dito debe de tener al menos ' . CC_OWNER_MIN_LENGTH . ' letras.\n');
-  define('MODULE_PAYMENT_CC_TEXT_JS_CC_NUMBER', '* El n&uacute;mero de la tarjeta de cr&eacute;dito debe de tener al menos ' . CC_NUMBER_MIN_LENGTH . ' numeros.\n');
   define('MODULE_PAYMENT_CC_TEXT_ERROR', 'Error en Tarjeta de Cr&eacute;dito!');
 ?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/chronopay.php 2.2rc2.src/includes/languages/espanol/modules/payment/chronopay.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/chronopay.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/chronopay.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,16 @@
+<?php
+/*
+  $Id: chronopay.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_CHRONOPAY_TEXT_TITLE', 'ChronoPay');
+  define('MODULE_PAYMENT_CHRONOPAY_TEXT_PUBLIC_TITLE', 'Tarjeta de Cr&eacute;dito');
+  define('MODULE_PAYMENT_CHRONOPAY_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="http://www.chronopay.com" target="_blank" style="text-decoration: underline; font-weight: bold;">Visita la web de ChronoPay</a>');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/cod.php 2.2rc2.src/includes/languages/espanol/modules/payment/cod.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/cod.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/cod.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cod.php,v 1.7 2002/11/01 05:31:57 hpdl Exp $
+  $Id: cod.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/ipayment_cc.php 2.2rc2.src/includes/languages/espanol/modules/payment/ipayment_cc.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/ipayment_cc.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/ipayment_cc.php	2008-01-13 06:25:10.000000000 -0600
@@ -0,0 +1,22 @@
+<?php
+/*
+  $Id: ipayment_cc.php 1811 2008-01-13 12:25:10Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_TITLE', 'iPayment');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_PUBLIC_TITLE', 'Tarjeta de Cr&eacute;dito');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.ipayment.de" target="_blank" style="text-decoration: underline; font-weight: bold;">Visita la web de iPayment</a>');
+  define('MODULE_PAYMENT_IPAYMENT_CC_ERROR_HEADING', 'Ha ocurrido un error procesando su tarjeta de cr&eacute;dito');
+  define('MODULE_PAYMENT_IPAYMENT_CC_ERROR_MESSAGE', 'Revise los datos de su tarjeta de cr&eacute;dito!');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_OWNER', 'Titular de la Tarjeta:');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_NUMBER', 'N&uacute;mero de la Tarjeta:');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES', 'Fecha de Caducidad:');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_CHECKNUMBER', 'N&uacute;mero de Comprobaci&oacute;n:');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/ipayment.php 2.2rc2.src/includes/languages/espanol/modules/payment/ipayment.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/ipayment.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/ipayment.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,25 +0,0 @@
-<?php
-/*
-  $Id: ipayment.php,v 1.6 2003/07/08 16:45:36 dgw_ Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2002 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_TITLE', 'iPayment');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_DESCRIPTION', 'Tarjeta de Cr&eacute;dito para Pruebas:<br><br>Numero: 4111111111111111<br>Caducidad: Cualquiera');
-  define('IPAYMENT_ERROR_HEADING', 'Ha ocurrido un error procesando su tarjeta de cr&eacute;dito');
-  define('IPAYMENT_ERROR_MESSAGE', 'Revise los datos de su tarjeta de cr&eacute;dito!');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_OWNER', 'Titular de la Tarjeta:');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_NUMBER', 'N&uacute;mero de la Tarjeta:');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_EXPIRES', 'Fecha de Caducidad:');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_CHECKNUMBER', 'N&uacute;mero de Comprobaci&oacute;n:');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_CHECKNUMBER_LOCATION', '(lo puede encontrar en la parte de atr&aacute;s de la tarjeta de credito)');
-
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_JS_CC_OWNER', '* El nombre del titular de la tarjeta de cr&eacute;dito debe de tener al menos ' . CC_OWNER_MIN_LENGTH . ' caracteres.\n');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_JS_CC_NUMBER', '* El n&uacute;mero de la tarjeta de cr&eacute;dito debe tener al menos ' . CC_NUMBER_MIN_LENGTH . ' caracteres.\n');
-?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/moneyorder.php 2.2rc2.src/includes/languages/espanol/modules/payment/moneyorder.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/moneyorder.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/moneyorder.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: moneyorder.php,v 1.7 2003/01/24 21:36:05 thomasamoulton Exp $
+  $Id: moneyorder.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/nochex.php 2.2rc2.src/includes/languages/espanol/modules/payment/nochex.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/nochex.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/nochex.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: nochex.php,v 1.3 2003/04/15 17:48:50 dgw_ Exp $
+  $Id: nochex.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal_direct.php 2.2rc2.src/includes/languages/espanol/modules/payment/paypal_direct.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/paypal_direct.php	2008-01-11 10:49:20.000000000 -0600
@@ -0,0 +1,26 @@
+<?php
+/*
+  $Id: paypal_direct.php 1801 2008-01-11 16:49:20Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_TITLE', 'PayPal Website Payments Pro (US) Direct Payments');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_PUBLIC_TITLE', 'Tarjeta de Cr&eacute;dito or tarjeta del banco (procesado con seguridad de PayPal)');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_DESCRIPTION', '<b>Attencion: PayPal necesita el PayPal Express Checkout M&oacute;dulo de Pago cuando este M&oacute;dulo esta instalado.</b><br /><br /><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">Visita la web de PayPal</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalDirectInfo\');">(info)</a><span id="paypalDirectInfo" style="display: none;"><br><i>Con el uso del Link para usar PayPal osCommerce dar a cada Cliente nuevo un pequeno Bonus.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_OWNER', 'Titular de la tarjeta:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_TYPE', 'Tipo de tarjeta:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_NUMBER', 'N&uacute;mero de tarjeta:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_VALID_FROM', 'Tarjeta valida desde:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_VALID_FROM_INFO', '(si est&aacute; disponible)');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_EXPIRES', 'Fecha de caducidad:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_CVC', 'C&oacute;digo de seguridad:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_ISSUE_NUMBER', 'Issue n&uacute;mero de tarjeta:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_ISSUE_NUMBER_INFO', '(es solo para tarjeta de Maestro y Solo)');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_ERROR_ALL_FIELDS_REQUIRED', 'Error: Todos los datos son obligatorios.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal_express.php 2.2rc2.src/includes/languages/espanol/modules/payment/paypal_express.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal_express.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/paypal_express.php	2008-01-11 09:40:58.000000000 -0600
@@ -0,0 +1,18 @@
+<?php
+/*
+  $Id: paypal_express.php 1798 2008-01-11 15:40:58Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_TITLE', 'PayPal Express Checkout');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_PUBLIC_TITLE', 'PayPal Express');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">Visita la web de PayPal</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalExpressInfo\');">(info)</a><span id="paypalExpressInfo" style="display: none;"><br><i>Con el uso del Link para usar PayPal osCommerce dar a cada Cliente nuevo un pequeno Bonus.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_BUTTON', 'Pague con PayPal');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_COMMENTS', 'Comentarios:');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal.php 2.2rc2.src/includes/languages/espanol/modules/payment/paypal.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/paypal.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,15 +0,0 @@
-<?php
-/*
-  $Id: paypal.php,v 1.7 2002/11/01 05:39:27 hpdl Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2002 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  define('MODULE_PAYMENT_PAYPAL_TEXT_TITLE', 'PayPal');
-  define('MODULE_PAYMENT_PAYPAL_TEXT_DESCRIPTION', 'PayPal');
-?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal_standard.php 2.2rc2.src/includes/languages/espanol/modules/payment/paypal_standard.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal_standard.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/paypal_standard.php	2008-01-11 07:21:23.000000000 -0600
@@ -0,0 +1,16 @@
+<?php
+/*
+  $Id: paypal_standard.php 1791 2008-01-11 13:21:23Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_TITLE', 'PayPal Website Payments Standard');
+  define('MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_PUBLIC_TITLE', 'PayPal');
+  define('MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">Visita la web de PayPal</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalStdInfo\');">(info)</a><span id="paypalStdInfo" style="display: none;"><br><i>Con el uso del Link para usar PayPal osCommerce dar a cada Cliente nuevo un pequeno Bonus.</i></span>');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal_uk_direct.php 2.2rc2.src/includes/languages/espanol/modules/payment/paypal_uk_direct.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal_uk_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/paypal_uk_direct.php	2008-01-11 10:33:02.000000000 -0600
@@ -0,0 +1,31 @@
+<?php
+/*
+  $Id: paypal_uk_direct.php 1800 2008-01-11 16:33:02Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_TITLE', 'PayPal Website Payments Pro (UK) Direct Payments');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_PUBLIC_TITLE', 'Tarjeta de Cr&eacute;dito or tarjeta del banco (procesado con seguridad de PayPal)');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_DESCRIPTION', '<b>Attencion: PayPal necesita el PayPal Website Payments Pro (UK) Express Checkout M&oacute;dulo de Pago cuando este M&oacute;dulo esta instalado.</b><br /><br /><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">Visita la web de PayPal</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalDirectUKInfo\');">(info)</a><span id="paypalDirectUKInfo" style="display: none;"><br><i>Con el uso del Link para usar PayPal osCommerce dar a cada Cliente nuevo un pequeno Bonus.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_OWNER', 'Titular de la tarjeta:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_TYPE', 'Tipo de tarjeta:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_NUMBER', 'N&uacute;mero de tarjeta:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_VALID_FROM', 'Tarjeta valida desde:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_VALID_FROM_INFO', '(si est&aacute; disponible)');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_EXPIRES', 'Fecha de caducidad:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_CVC', 'C&oacute;digo de seguridad:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_ISSUE_NUMBER', 'Issue n&uacute;mero de tarjeta:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_ISSUE_NUMBER_INFO', '(es solo para tarjeta de Maestro y Solo)');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_ALL_FIELDS_REQUIRED', 'Error: Todos los datos son obligatorios.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_GENERAL', 'Error: A general problem has occurred with the transaction. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_CFG_ERROR', 'Error: Payment module configuration error. Please verify the login credentials.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_ADDRESS', 'Error: A match of the Shipping Address City, State, and Postal Code failed. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_DECLINED', 'Error: This transaction has been declined. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_INVALID_CREDIT_CARD', 'Error: The provided credit card information is invalid. Please try again.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal_uk_express.php 2.2rc2.src/includes/languages/espanol/modules/payment/paypal_uk_express.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/paypal_uk_express.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/paypal_uk_express.php	2008-01-11 10:33:02.000000000 -0600
@@ -0,0 +1,23 @@
+<?php
+/*
+  $Id: paypal_uk_express.php 1800 2008-01-11 16:33:02Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_TITLE', 'PayPal Website Payments Pro (UK) Express Checkout');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_PUBLIC_TITLE', 'PayPal Express');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_DESCRIPTION', '<b>Attencion: PayPal necesita el PayPal Website Payments Pro (UK) Direct Payments M&oacute;dulo de Pago cuando este M&oacute;dulo esta instalado.</b><br /><br /><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">Visita la web de PayPal</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalExpressUKInfo\');">(info)</a><span id="paypalExpressUKInfo" style="display: none;"><br><i>Con el uso del Link para usar PayPal osCommerce dar a cada Cliente nuevo un pequeno Bonus.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_BUTTON', 'Pague con PayPal');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_COMMENTS', 'Comentarios:');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_GENERAL', 'Error: A general problem has occurred with the transaction. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_CFG_ERROR', 'Error: Payment module configuration error. Please verify the login credentials.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_ADDRESS', 'Error: A match of the Shipping Address City, State, and Postal Code failed. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_DECLINED', 'Error: This transaction has been declined. Please try again.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_EXPRESS_DISABLED', 'Error: PayPal Express Checkout has been disabled for this merchant. Please contact PayPal Customer Service.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/pm2checkout.php 2.2rc2.src/includes/languages/espanol/modules/payment/pm2checkout.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/pm2checkout.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/pm2checkout.php	2008-01-11 07:48:20.000000000 -0600
@@ -1,26 +1,20 @@
 <?php
 /*
-  $Id: pm2checkout.php,v 1.4 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: pm2checkout.php 1793 2008-01-11 13:48:20Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
 
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_TITLE', '2CheckOut');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_DESCRIPTION', 'Tarjeta de Cr&eacute;dito para Pruebas:<br><br>Numero: 4111111111111111<br>Caducidad: Cualquiera');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_TYPE', 'Tipo:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER', 'Titular de la Tarjeta:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_FIRST_NAME', 'Nombre del Titular:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_LAST_NAME', 'Apellidos del Titular:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_NUMBER', 'N&uacute;mero de la Tarjeta:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_EXPIRES', 'Fecha de Caducidad:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_CHECKNUMBER', 'N&uacute;mero de comprobaci&oacute;n:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_CHECKNUMBER_LOCATION', '(lo puede encontrar en la parte de atr&aacute;s de la tarjeta de credito)');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_JS_CC_NUMBER', '* El n&uacute;mero de la tarjeta de cr&eacute;dito debe tener al menos ' . CC_NUMBER_MIN_LENGTH . ' caracteres.\n');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_TITLE', '2Checkout');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_PUBLIC_TITLE', '2Checkout');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_PUBLIC_DESCRIPTION', 'Tarjeta de Cr&eacute;dito or Alternativas');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.2checkout.com/2co/signup?affiliate=1255821" target="_blank" style="text-decoration: underline; font-weight: bold;">Visita la web de 2Checkout</a>&nbsp;<a href="javascript:toggleDivBlock(\'pm2checkoutInfo\');">(info)</a><span id="pm2checkoutInfo" style="display: none;"><br><i>Con el uso del Link para usar 2Checkout osCommerce dar a cada Cliente nuevo un pequeno Bonus.</i></span><br><br>Tarjeta de Cr&eacute;dito para Pruebas:<br><br>Numero: 4111111111111111<br>Caducidad: Cualquiera');
   define('MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR_MESSAGE', 'Ha ocurrido un error procesando su tarjeta de cr&eacute;dito, por favor int&eacute;ntelo de nuevo.');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR', 'Error de Tarjeta de Cr&eacute;dito!');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_WARNING_DEMO_MODE', 'In Review: Transaction performed in demo mode.');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_WARNING_TRANSACTION_ORDER', 'In Review: Transaction total did not match order total.');
 ?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/psigate.php 2.2rc2.src/includes/languages/espanol/modules/payment/psigate.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/psigate.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/psigate.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: psigate.php,v 1.4 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: psigate.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/secpay.php 2.2rc2.src/includes/languages/espanol/modules/payment/secpay.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/secpay.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/secpay.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: secpay.php,v 1.8 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: secpay.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/sofortueberweisung_direct.php 2.2rc2.src/includes/languages/espanol/modules/payment/sofortueberweisung_direct.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/sofortueberweisung_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/sofortueberweisung_direct.php	2008-01-11 08:55:19.000000000 -0600
@@ -0,0 +1,53 @@
+<?php
+/*
+  $Id: sofortueberweisung_direct.php 1797 2008-01-11 14:55:19Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2006 - 2007 Henri Schmidhuber (http://www.in-solution.de)
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  if (!defined('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STATUS')) {
+    define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION', '<div align="center"><a href=' . tep_href_link('ext/modules/payment/sofortueberweisung/install.php', 'install=sofortueberweisung_direct', 'SSL') . '>' . tep_image('ext/modules/payment/sofortueberweisung/autoinstaller.gif', 'Autoinstaller (empfohlen)') . '</a></div><br><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.sofortueberweisung.de/cms/index.php?vpartner=21" target="_blank" style="text-decoration: underline; font-weight: bold;">Sofortberweisung Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'sofortueberweisungInfo\');">(info)</a><span id="sofortueberweisungInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span><br><br>Kontonummer Test Info:<br><br>BLZ#: 88888888');
+  } else {
+    define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.sofortueberweisung.de/cms/index.php?vpartner=21" target="_blank" style="text-decoration: underline; font-weight: bold;">Sofortberweisung Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'sofortueberweisungInfo\');">(info)</a><span id="sofortueberweisungInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span><br><br>Kontonummer Test Info:<br><br>BLZ#: 88888888');
+  }
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_TITLE', 'Sofortberweisung Direkt');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_PUBLIC_TITLE', 'Sofortberweisung');
+
+  // checkout_payment Informationen via Bild
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION_CHECKOUT_PAYMENT', '
+    <table border="0" cellspacing="0" cellpadding="0">
+      <tr>
+        <td><a href="#" onclick="window.open(\'https://www.sofortueberweisung.de/cms/index.php?vpartner=21\', \'Popup\',\'toolbar=yes,status=no,menubar=no,scrollbars=yes,width=690,height=500\'); return false;">' . tep_image('ext/modules/payment/sofortueberweisung/images/sofortueberweisung.gif', 'Sofortberweisung ist der kostenlose, TV-zertifizierte Zahlungsdienst der Payment Network AG. Ihre Vorteile: keine zustzliche Registrierung, automatische Abbuchung von Ihrem Online-Bankkonto, hchste Sicherheitsstandards und sofortiger Versand von Lagerware. Fr die Bezahlung mit Sofortberweisung bentigen Sie Ihre eBanking Zugangsdaten, d.h. Bankverbindung, Kontonummer, PIN und TAN.') . '</a></td>
+      </tr>
+    </table>');
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION_CHECKOUT_CONFIRMATION', '
+    <table border="0" cellspacing="0" cellpadding="0">
+      <tr>
+        <td class="main"><p>Nach Besttigung der Bestellung werden Sie zum Zahlungssytem von Sofortberweisung weitergeleitet und knnen dort eine Online-berweisung duchfhren.</p><p>Hierfr bentigen Sie Ihre eBanking Zugangsdaten, d.h. Bankverbindung, Kontonummer, PIN und TAN. Mehr Informationen finden Sie hier: <a href="#" onclick="window.open(\'https://www.sofortueberweisung.de/cms/index.php?vpartner=21\', \'Popup\',\'toolbar=yes,status=no,menubar=no,scrollbars=yes,width=690,height=500\'); return false;">http://www.sofortueberweisung.de</a>.</p></td>
+      </tr>
+    </table>');
+
+ // im Verwendungszweck werden folgende Platzhalter ersetzt:
+ // {{order_date}} durch Bestelldatum
+ // {{customer_id}} durch Kundennummer der Datenbank
+ // {{customer_name}}  durch Kundenname
+ // {{customer_company}} durch Kundenfirma
+ // {{customer_email}} durch Email des Kunden
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_V_ZWECK_1', STORE_NAME);  // max 27 Zeichen
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_V_ZWECK_2', 'Nr. {{orderid}} Kd-Nr. {{customer_id}}'); // max 27 Zeichen
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_EMAIL_FOOTER', '');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_REDIRECT', 'Sie werden nun zu Sofortueberweisung.de weitergeleitet. Sollte dies nicht geschehen bitte den Button drcken');
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_ERROR_HEADING', 'Folgender Fehler wurde von Sofortberweisung whrend des Prozesses gemeldet:');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_ERROR_MESSAGE', 'Zahlung via Sofortberweisung ist leider nicht mglich, oder wurde auf Kundenwunsch abgebrochen. Bitte whlen sie ein andere Zahlungsweise.');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_CHECK_ERROR', 'Sofortberweisungs Transaktionscheck fehlgeschlagen. Bitte manuell berprfen');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/payment/worldpay_junior.php 2.2rc2.src/includes/languages/espanol/modules/payment/worldpay_junior.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/payment/worldpay_junior.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/payment/worldpay_junior.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,19 @@
+<?php
+/*
+  $Id: worldpay_junior.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_TITLE', 'WorldPay Junior');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_PUBLIC_TITLE', 'Tarjeta de Cr&eacute;dito');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="http://www.worldpay.com" target="_blank" style="text-decoration: underline; font-weight: bold;">Visita la web de WorldPay</a>');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_WARNING_DEMO_MODE', 'In Review: Transaction performed in demo mode.');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_SUCCESSFUL_TRANSACTION', 'The payment transaction has been successfully performed!');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_CONTINUE_BUTTON', 'Click here to continue to %s');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/shipping/flat.php 2.2rc2.src/includes/languages/espanol/modules/shipping/flat.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/shipping/flat.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/shipping/flat.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: flat.php,v 1.6 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: flat.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/shipping/item.php 2.2rc2.src/includes/languages/espanol/modules/shipping/item.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/shipping/item.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/shipping/item.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: item.php,v 1.6 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: item.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/shipping/table.php 2.2rc2.src/includes/languages/espanol/modules/shipping/table.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/shipping/table.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/shipping/table.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: table.php,v 1.5 2002/11/19 01:14:34 dgw_ Exp $
+  $Id: table.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/shipping/usps.php 2.2rc2.src/includes/languages/espanol/modules/shipping/usps.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/shipping/usps.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/shipping/usps.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: usps.php,v 1.8 2003/02/14 12:54:38 dgw_ Exp $
+  $Id: usps.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/modules/shipping/zones.php 2.2rc2.src/includes/languages/espanol/modules/shipping/zones.php
--- 2.2ms2-060817.src/includes/languages/espanol/modules/shipping/zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/modules/shipping/zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: zones.php,v 1.4 2002/11/19 01:14:34 dgw_ Exp $
+  $Id: zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/password_forgotten.php 2.2rc2.src/includes/languages/espanol/password_forgotten.php
--- 2.2ms2-060817.src/includes/languages/espanol/password_forgotten.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/password_forgotten.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: password_forgotten.php,v 1.9 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: password_forgotten.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/privacy.php 2.2rc2.src/includes/languages/espanol/privacy.php
--- 2.2ms2-060817.src/includes/languages/espanol/privacy.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/privacy.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: privacy.php,v 1.5 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: privacy.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/product_info.php 2.2rc2.src/includes/languages/espanol/product_info.php
--- 2.2ms2-060817.src/includes/languages/espanol/product_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/product_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_info.php,v 1.15 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: product_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/product_reviews_info.php 2.2rc2.src/includes/languages/espanol/product_reviews_info.php
--- 2.2ms2-060817.src/includes/languages/espanol/product_reviews_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/product_reviews_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews_info.php,v 1.7 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: product_reviews_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/product_reviews.php 2.2rc2.src/includes/languages/espanol/product_reviews.php
--- 2.2ms2-060817.src/includes/languages/espanol/product_reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/product_reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews.php,v 1.6 2003/06/05 23:23:53 hpdl Exp $
+  $Id: product_reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/product_reviews_write.php 2.2rc2.src/includes/languages/espanol/product_reviews_write.php
--- 2.2ms2-060817.src/includes/languages/espanol/product_reviews_write.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/product_reviews_write.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews_write.php,v 1.10 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: product_reviews_write.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/products_new.php 2.2rc2.src/includes/languages/espanol/products_new.php
--- 2.2ms2-060817.src/includes/languages/espanol/products_new.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/products_new.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: products_new.php,v 1.4 2002/11/12 00:45:21 dgw_ Exp $
+  $Id: products_new.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/reviews.php 2.2rc2.src/includes/languages/espanol/reviews.php
--- 2.2ms2-060817.src/includes/languages/espanol/reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: reviews.php,v 1.5 2002/11/12 00:45:21 dgw_ Exp $
+  $Id: reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/shipping.php 2.2rc2.src/includes/languages/espanol/shipping.php
--- 2.2ms2-060817.src/includes/languages/espanol/shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: shipping.php,v 1.5 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/shopping_cart.php 2.2rc2.src/includes/languages/espanol/shopping_cart.php
--- 2.2ms2-060817.src/includes/languages/espanol/shopping_cart.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/shopping_cart.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: shopping_cart.php,v 1.10 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -23,4 +23,6 @@
 
 define('OUT_OF_STOCK_CANT_CHECKOUT', 'Los productos marcados con ' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . ' no estan disponibles en la cantidad que requiere.<br>Modifique la cantidad de productos marcados con ' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . ', Gracias');
 define('OUT_OF_STOCK_CAN_CHECKOUT', 'Los productos marcados con ' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . ' no estan disponibles en cantidad que requiere.<br>De todas formas, puede comprar los que hay disponibles y el resto se lo enviamos mas tarde o esperar a que la cantidad requerida este disponible.');
+
+define('TEXT_ALTERNATIVE_CHECKOUT_METHODS', '- O -');
 ?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/specials.php 2.2rc2.src/includes/languages/espanol/specials.php
--- 2.2ms2-060817.src/includes/languages/espanol/specials.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/specials.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: specials.php,v 1.5 2002/11/12 00:45:21 dgw_ Exp $
+  $Id: specials.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/ssl_check.php 2.2rc2.src/includes/languages/espanol/ssl_check.php
--- 2.2ms2-060817.src/includes/languages/espanol/ssl_check.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/ssl_check.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ssl_check.php,v 1.3 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: ssl_check.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol/tell_a_friend.php 2.2rc2.src/includes/languages/espanol/tell_a_friend.php
--- 2.2ms2-060817.src/includes/languages/espanol/tell_a_friend.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol/tell_a_friend.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tell_a_friend.php,v 1.10 2003/07/08 16:45:36 dgw_ Exp $
+  $Id: tell_a_friend.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/espanol.php 2.2rc2.src/includes/languages/espanol.php
--- 2.2ms2-060817.src/includes/languages/espanol.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/espanol.php	2007-12-20 12:02:36.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: espanol.php,v 1.107 2003/07/09 18:13:39 dgw_ Exp $
+  $Id: espanol.php 1743 2007-12-20 18:02:36Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -310,9 +310,9 @@
 define('WARNING_SESSION_AUTO_START', 'Advertencia: session.auto_start esta activado - desactive esta caracteristica en el fichero php.ini and reinicie el servidor web.');
 define('WARNING_DOWNLOAD_DIRECTORY_NON_EXISTENT', 'Advertencia: El directorio para productos descargables no existe: ' . DIR_FS_DOWNLOAD . '. Los productos descargables no funcionar&aacute;n hasta que no se corriga este error.');
 
-define('TEXT_CCVAL_ERROR_INVALID_DATE', 'La fecha de caducidad de la tarjeta de cr&eacute;dito es incorrecta.<br>Compruebe la fecha e int&eacute;ntelo de nuevo.');
-define('TEXT_CCVAL_ERROR_INVALID_NUMBER', 'El n&uacute;mero de la tarjeta de cr&eacute;dito es incorrecto.<br>Compruebe el numero e int&eacute;ntelo de nuevo.');
-define('TEXT_CCVAL_ERROR_UNKNOWN_CARD', 'Los primeros cuatro digitos de su tarjeta son: %s<br>Si este n&uacute;mero es correcto, no aceptamos este tipo de tarjetas.<br>Si es incorrecto, int&eacute;ntelo de nuevo.');
+define('TEXT_CCVAL_ERROR_INVALID_DATE', 'La fecha de caducidad de la tarjeta de cr&eacute;dito es incorrecta. Compruebe la fecha e int&eacute;ntelo de nuevo.');
+define('TEXT_CCVAL_ERROR_INVALID_NUMBER', 'El n&uacute;mero de la tarjeta de cr&eacute;dito es incorrecto. Compruebe el numero e int&eacute;ntelo de nuevo.');
+define('TEXT_CCVAL_ERROR_UNKNOWN_CARD', 'Los primeros cuatro digitos de su tarjeta son: %s. Si este n&uacute;mero es correcto, no aceptamos este tipo de tarjetas. Si es incorrecto, int&eacute;ntelo de nuevo.');
 
 define('FOOTER_TEXT_BODY', 'Copyright &copy; ' . date('Y') . ' <a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . STORE_NAME . '</a><br>Powered by <a href="http://www.oscommerce.com" target="_blank">osCommerce</a>');
 ?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/account_edit.php 2.2rc2.src/includes/languages/german/account_edit.php
--- 2.2ms2-060817.src/includes/languages/german/account_edit.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/account_edit.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_edit.php,v 1.12 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: account_edit.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/account_history_info.php 2.2rc2.src/includes/languages/german/account_history_info.php
--- 2.2ms2-060817.src/includes/languages/german/account_history_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/account_history_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_history_info.php,v 1.20 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: account_history_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/account_history.php 2.2rc2.src/includes/languages/german/account_history.php
--- 2.2ms2-060817.src/includes/languages/german/account_history.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/account_history.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_history.php,v 1.16 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: account_history.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/account_newsletters.php 2.2rc2.src/includes/languages/german/account_newsletters.php
--- 2.2ms2-060817.src/includes/languages/german/account_newsletters.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/account_newsletters.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_newsletters.php,v 1.2 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: account_newsletters.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/account_notifications.php 2.2rc2.src/includes/languages/german/account_notifications.php
--- 2.2ms2-060817.src/includes/languages/german/account_notifications.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/account_notifications.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_notifications.php,v 1.2 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: account_notifications.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/account_password.php 2.2rc2.src/includes/languages/german/account_password.php
--- 2.2ms2-060817.src/includes/languages/german/account_password.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/account_password.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account_password.php,v 1.2 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: account_password.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/account.php 2.2rc2.src/includes/languages/german/account.php
--- 2.2ms2-060817.src/includes/languages/german/account.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/account.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: account.php,v 1.13 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: account.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/address_book.php 2.2rc2.src/includes/languages/german/address_book.php
--- 2.2ms2-060817.src/includes/languages/german/address_book.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/address_book.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: address_book.php,v 1.15 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: address_book.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/address_book_process.php 2.2rc2.src/includes/languages/german/address_book_process.php
--- 2.2ms2-060817.src/includes/languages/german/address_book_process.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/address_book_process.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: address_book_process.php,v 1.15 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: address_book_process.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/advanced_search.php 2.2rc2.src/includes/languages/german/advanced_search.php
--- 2.2ms2-060817.src/includes/languages/german/advanced_search.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/advanced_search.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: advanced_search.php,v 1.21 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: advanced_search.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/checkout_confirmation.php 2.2rc2.src/includes/languages/german/checkout_confirmation.php
--- 2.2ms2-060817.src/includes/languages/german/checkout_confirmation.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/checkout_confirmation.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_confirmation.php,v 1.27 2003/02/16 00:42:02 harley_vb Exp $
+  $Id: checkout_confirmation.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/checkout_payment_address.php 2.2rc2.src/includes/languages/german/checkout_payment_address.php
--- 2.2ms2-060817.src/includes/languages/german/checkout_payment_address.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/checkout_payment_address.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_payment_address.php,v 1.4 2003/05/19 20:17:51 hpdl Exp $
+  $Id: checkout_payment_address.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/checkout_payment.php 2.2rc2.src/includes/languages/german/checkout_payment.php
--- 2.2ms2-060817.src/includes/languages/german/checkout_payment.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/checkout_payment.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_payment.php,v 1.20 2003/02/16 00:42:03 harley_vb Exp $
+  $Id: checkout_payment.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/checkout_process.php 2.2rc2.src/includes/languages/german/checkout_process.php
--- 2.2ms2-060817.src/includes/languages/german/checkout_process.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/checkout_process.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_process.php,v 1.29 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: checkout_process.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/checkout_shipping_address.php 2.2rc2.src/includes/languages/german/checkout_shipping_address.php
--- 2.2ms2-060817.src/includes/languages/german/checkout_shipping_address.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/checkout_shipping_address.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_shipping_address.php,v 1.4 2003/05/19 20:17:51 hpdl Exp $
+  $Id: checkout_shipping_address.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/checkout_shipping.php 2.2rc2.src/includes/languages/german/checkout_shipping.php
--- 2.2ms2-060817.src/includes/languages/german/checkout_shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/checkout_shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_shipping.php,v 1.5 2003/02/16 00:42:03 harley_vb Exp $
+  $Id: checkout_shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/checkout_success.php 2.2rc2.src/includes/languages/german/checkout_success.php
--- 2.2ms2-060817.src/includes/languages/german/checkout_success.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/checkout_success.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_success.php,v 1.17 2003/02/16 00:42:03 harley_vb Exp $
+  $Id: checkout_success.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/conditions.php 2.2rc2.src/includes/languages/german/conditions.php
--- 2.2ms2-060817.src/includes/languages/german/conditions.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/conditions.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: conditions.php,v 1.5 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: conditions.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/contact_us.php 2.2rc2.src/includes/languages/german/contact_us.php
--- 2.2ms2-060817.src/includes/languages/german/contact_us.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/contact_us.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: contact_us.php,v 1.7 2002/04/17 15:57:07 harley_vb Exp $
+  $Id: contact_us.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/cookie_usage.php 2.2rc2.src/includes/languages/german/cookie_usage.php
--- 2.2ms2-060817.src/includes/languages/german/cookie_usage.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/cookie_usage.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cookie_usage.php,v 1.2 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: cookie_usage.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/create_account.php 2.2rc2.src/includes/languages/german/create_account.php
--- 2.2ms2-060817.src/includes/languages/german/create_account.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/create_account.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: create_account.php,v 1.13 2003/05/19 20:17:51 hpdl Exp $
+  $Id: create_account.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/create_account_success.php 2.2rc2.src/includes/languages/german/create_account_success.php
--- 2.2ms2-060817.src/includes/languages/german/create_account_success.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/create_account_success.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: create_account_success.php,v 1.9 2003/02/16 00:42:03 harley_vb Exp $
+  $Id: create_account_success.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/download.php 2.2rc2.src/includes/languages/german/download.php
--- 2.2ms2-060817.src/includes/languages/german/download.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/download.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: download.php,v 1.2 2002/02/02 21:58:48 harley_vb Exp $
+  $Id: download.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/index.php 2.2rc2.src/includes/languages/german/index.php
--- 2.2ms2-060817.src/includes/languages/german/index.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/index.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,16 +1,16 @@
 <?php
 /*
-  $Id: index.php,v 1.2 2003/07/11 09:04:22 jan0815 Exp $
+  $Id: index.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
 
-define('TEXT_MAIN', 'Dies ist eine Standardinstallation von osCommerce. Alle hier gezeigten Produkte sind fiktiv zu verstehen. <b>Eine hier get&auml;tigte Bestellung wird NICHT ausgef&uuml;hrt werden, Sie erhalten keine Lieferung oder Rechnung.</b><br><br><table border="0" width="100%" cellspacing="5" cellpadding="2"><tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/1.gif') . '</td><td class="main" valign="top"><b>Fehlermeldungen</b><br><br>Sollten sich im oberen Bildschirmbereich Fehler oder Warnungen befinden, korrigieren Sie diese bitte entsprechend den dort gegebenen Hinweisen.<br><br>Fehlermeldungen sind durch eine entsprechende <span class="messageStackError">Hintergrundfarbe</span> gekennzeichnet.<br><br>Es werden standardm&auml;ssig verschiedene &Uuml;berpr&uuml;fungen durchgef&uuml;hrt. Sie k&ouml;nnen diese Checks durch &Auml;nderungen in der Datei includes/application_top.php abschalten.</td></tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/2.gif') . '</td><td class="main" valign="top"><b>Seiteninhalte bearbeiten</b><br><br>Dieser Text befindet sich im jeweiligen Sprachverzeichnis in folgender Datei: <br><br><nobr class="messageStackSuccess">[Pfad zu catalog]/includes/languages/' . $language . '/' . FILENAME_DEFAULT . '</nobr><br><br>Sie k&ouml;nnen diese Datei entweder direkt mit einem Editor bearbeiten, oder im Administrations-Modus &uuml;ber <nobr class="messageStackSuccess">Languages->' . ucfirst($language) . '->Sprachen</nobr> oder &uuml;ber <nobr class="messageStackSuccess">Hilfsprogramme->Datei-Manager</nobr>.<br><br>Der Text wird folgendermassen gesetzt: <br><br><nobr>define(\'TEXT_MAIN\', \'<span class="messageStackSuccess">Dies ist eine Standardinstallation von osCommerce ...</span>\');</nobr><br><br>Der gr&uuml;n hinterlegte Teil soll dabei ge&auml;ndert werden - wicthig ist, dass Sie auf keinen Fall den define()-Befehl f&uml;r TEXT_MAIN editieren. Um den kompletten Text zu entfernen, setzen Sie TEXT_MAIN folgendermassen: <br><br><nobr>define(\'TEXT_MAIN\', \'\');</nobr><br><br>Mehr Informationen &uuml;ber diesen Befehl erhalten Sie <a href="http://www.php.net/define" target="_blank"><u>hier</u></a>.</td></tr><tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/3.gif') . '</td><td class="main" valign="top"><b>Das Administrationswerkzeug sichern</b><br><br>Nach einer Standardinstallation von osCommerce ist das Administrationswerkzeug NICHT gesch&uuml;tzt. Es ist daher sehr wichtig diesen Teil von osCommerce abzusichern.</td></tr><tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/4.gif') . '</td><td class="main" valign="top"><b>Online-Handbuch</b><br><br>Unser Online-Handbuch befindet sich unter <a href="http://de.oscommerce.info" target="_blank"><u>osCommerce Knowledge Base</u></a>.<br><br>Unsere deutschsprachige Support Community finden Sie unter <a href="http://forums.oscommerce.de" target="_blank"><u>osCommerce German Community Support Forums</u></a>.</td></tr></table><br>Wenn Sie dass System hinter diesem Shop downloaden wollen, oder wenn Sie L&ouml;sungen zu osCommerce beitragen wollen, besuchen Sie uns bitte unter <a href="http://www.oscommerce.com" target="_blank"><u>der Support Site von osCommerce</u></a>. Dieser Shop verwendet osCommerce in der Version <font color="#f0000"><b>' . PROJECT_VERSION . '</b></font>.');
+define('TEXT_MAIN', 'Dies ist eine Standardinstallation von osCommerce Online Merchant. Alle hier gezeigten Produkte sind fiktiv zu verstehen. <b>Eine hier get&auml;tigte Bestellung wird NICHT ausgef&uuml;hrt werden, Sie erhalten keine Lieferung oder Rechnung.</b><br><br><table border="0" width="100%" cellspacing="5" cellpadding="2"><tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/1.gif') . '</td><td class="main" valign="top"><b>Fehlermeldungen</b><br><br>Sollten sich im oberen Bildschirmbereich Fehler oder Warnungen befinden, korrigieren Sie diese bitte entsprechend den dort gegebenen Hinweisen.<br><br>Fehlermeldungen sind durch eine entsprechende <span class="messageStackError">Hintergrundfarbe</span> gekennzeichnet.<br><br>Es werden standardm&auml;ssig verschiedene &Uuml;berpr&uuml;fungen durchgef&uuml;hrt. Sie k&ouml;nnen diese Checks durch &Auml;nderungen in der Datei includes/application_top.php abschalten.</td></tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/2.gif') . '</td><td class="main" valign="top"><b>Seiteninhalte bearbeiten</b><br><br>Dieser Text befindet sich im jeweiligen Sprachverzeichnis in folgender Datei: <br><br><nobr class="messageStackSuccess">[Pfad zu catalog]/includes/languages/' . $language . '/' . FILENAME_DEFAULT . '</nobr><br><br>Sie k&ouml;nnen diese Datei entweder direkt mit einem Editor bearbeiten, oder im Administrations-Modus &uuml;ber <nobr class="messageStackSuccess">Languages->' . ucfirst($language) . '->Sprachen</nobr> oder &uuml;ber <nobr class="messageStackSuccess">Hilfsprogramme->Datei-Manager</nobr>.<br><br>Der Text wird folgendermassen gesetzt: <br><br><nobr>define(\'TEXT_MAIN\', \'<span class="messageStackSuccess">Dies ist eine Standardinstallation von osCommerce ...</span>\');</nobr><br><br>Der gr&uuml;n hinterlegte Teil soll dabei ge&auml;ndert werden - wicthig ist, dass Sie auf keinen Fall den define()-Befehl f&uuml;r TEXT_MAIN editieren. Um den kompletten Text zu entfernen, setzen Sie TEXT_MAIN folgendermassen: <br><br><nobr>define(\'TEXT_MAIN\', \'\');</nobr><br><br>Mehr Informationen &uuml;ber diesen Befehl erhalten Sie <a href="http://www.php.net/define" target="_blank"><u>hier</u></a>.</td></tr><tr><td class="main" valign="top">' . tep_image(DIR_WS_IMAGES . 'default/3.gif') . '</td><td class="main" valign="top"><b>Online-Handbuch</b><br><br>Unser Online-Handbuch befindet sich unter <a href="http://de.oscommerce.info" target="_blank"><u>osCommerce Knowledge Base</u></a>.<br><br>Unsere deutschsprachige Support Seite finden Sie unter <a href="http://www.oscommerce.de" target="_blank"><u>osCommerce Deutschland</u></a>.</td></tr></table><br>Wenn Sie dass System hinter diesem Shop downloaden wollen, oder wenn Sie L&ouml;sungen zu osCommerce beitragen wollen, besuchen Sie uns bitte unter <a href="http://www.oscommerce.com" target="_blank"><u>der Support Site von osCommerce</u></a>. Dieser Shop verwendet <font color="#f0000"><b>' . PROJECT_VERSION . '</b></font>.');
 define('TABLE_HEADING_NEW_PRODUCTS', 'Neue Produkte im %s');
 define('TABLE_HEADING_UPCOMING_PRODUCTS', 'Wann ist was verf&uuml;gbar');
 define('TABLE_HEADING_DATE_EXPECTED', 'Datum');
diff -ruN 2.2ms2-060817.src/includes/languages/german/info_shopping_cart.php 2.2rc2.src/includes/languages/german/info_shopping_cart.php
--- 2.2ms2-060817.src/includes/languages/german/info_shopping_cart.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/info_shopping_cart.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: info_shopping_cart.php,v 1.6 2002/04/17 15:57:07 harley_vb Exp $
+  $Id: info_shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/login.php 2.2rc2.src/includes/languages/german/login.php
--- 2.2ms2-060817.src/includes/languages/german/login.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/login.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: login.php,v 1.15 2003/06/09 22:46:46 hpdl Exp $
+  $Id: login.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/logoff.php 2.2rc2.src/includes/languages/german/logoff.php
--- 2.2ms2-060817.src/includes/languages/german/logoff.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/logoff.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: logoff.php,v 1.3 2003/02/16 00:42:03 harley_vb Exp $
+  $Id: logoff.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/order_total/ot_loworderfee.php 2.2rc2.src/includes/languages/german/modules/order_total/ot_loworderfee.php
--- 2.2ms2-060817.src/includes/languages/german/modules/order_total/ot_loworderfee.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/order_total/ot_loworderfee.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_loworderfee.php,v 1.3 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: ot_loworderfee.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/order_total/ot_shipping.php 2.2rc2.src/includes/languages/german/modules/order_total/ot_shipping.php
--- 2.2ms2-060817.src/includes/languages/german/modules/order_total/ot_shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/order_total/ot_shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_shipping.php,v 1.5 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: ot_shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/order_total/ot_subtotal.php 2.2rc2.src/includes/languages/german/modules/order_total/ot_subtotal.php
--- 2.2ms2-060817.src/includes/languages/german/modules/order_total/ot_subtotal.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/order_total/ot_subtotal.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_subtotal.php,v 1.3 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: ot_subtotal.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/order_total/ot_tax.php 2.2rc2.src/includes/languages/german/modules/order_total/ot_tax.php
--- 2.2ms2-060817.src/includes/languages/german/modules/order_total/ot_tax.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/order_total/ot_tax.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_tax.php,v 1.3 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: ot_tax.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/order_total/ot_total.php 2.2rc2.src/includes/languages/german/modules/order_total/ot_total.php
--- 2.2ms2-060817.src/includes/languages/german/modules/order_total/ot_total.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/order_total/ot_total.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_total.php,v 1.3 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: ot_total.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/authorizenet_cc_aim.php 2.2rc2.src/includes/languages/german/modules/payment/authorizenet_cc_aim.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/authorizenet_cc_aim.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/authorizenet_cc_aim.php	2008-01-11 07:51:10.000000000 -0600
@@ -0,0 +1,26 @@
+<?php
+/*
+  $Id: authorizenet_cc_aim.php 1794 2008-01-11 13:51:10Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_TITLE', 'Authorize.net Credit Card AIM');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_PUBLIC_TITLE', 'Kreditkarte (verarbeitet durch Authorize.net)');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.authorize.net" target="_blank" style="text-decoration: underline; font-weight: bold;">Authorize.net Webseite besuchen</a>');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_OWNER', 'Kreditkarteninhaber:');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_NUMBER', 'Kreditkarten-Nr.:');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_EXPIRES', 'G&uuml;ltig bis:');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_CVC', 'Kreditkartenpr&uuml;fnummer:');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_TITLE', 'Fehler bei der Verarbeitung der Kreditkarte');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_GENERAL', 'Bitte versuchen Sie erneut. Wenn das Problem weiterhin besteht, w&auml;hlen Sie bitte eine andere Zahlungsweise.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_DECLINED', 'Ihre Kreditkarte wurde abgelehnt. Bitte versuchen Sie es mit einer anderen Karte oder w&auml;hlen Sie eine andere Zahlungsweise.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_INVALID_EXP_DATE', 'Das G&uuml;ltigkeitsdatum der Kreditkarte ist falsch. Bitte &uuml;berpr&uuml;fen Sie die Kreditkarteninformationen.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_EXPIRED', 'Die Kreditkarte ist abgelaufen. Bitte versuchen Sie es erneut mit einer anderen Karte oder Zahlungsweise.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_CVC', 'Die Kreditkartenpr&uuml;fnummer ist ung&uuml;ltig. Bitte &uuml;berpr&uuml;fen Sie die Kreditkarteninformationen und versuchen Sie es erneut');
+?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/authorizenet_cc_sim.php 2.2rc2.src/includes/languages/german/modules/payment/authorizenet_cc_sim.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/authorizenet_cc_sim.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/authorizenet_cc_sim.php	2008-01-11 07:48:20.000000000 -0600
@@ -0,0 +1,20 @@
+<?php
+/*
+  $Id: authorizenet_cc_sim.php 1793 2008-01-11 13:48:20Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_TITLE', 'Authorize.net Credit Card SIM');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_PUBLIC_TITLE', 'Kreditkarte (verarbeitet durch Authorize.net)');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.authorize.net" target="_blank" style="text-decoration: underline; font-weight: bold;">Authorize.net Webseite besuchen</a>');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_TITLE', 'Fehler bei der Verarbeitung der Kreditkarte');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_VERIFICATION', 'Die Kreditkartentransaktion konnte nicht mit dieser Bestellung verifiziert werden. Bitte versuchen Sie erneut. Wenn das Problem weiterhin besteht, w&auml;hlen Sie bitte eine andere Zahlungsweise.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_DECLINED', 'Die Kreditkartentransaktion wurde abgelehnt. Bitte versuchen Sie erneut. Wenn das Problem weiterhin besteht, w&auml;hlen Sie bitte eine andere Zahlungsweise.');
+  define('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_GENERAL', 'Bitte versuchen Sie erneut. Wenn das Problem weiterhin besteht, w&auml;hlen Sie bitte eine andere Zahlungsweise.');
+?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/authorizenet.php 2.2rc2.src/includes/languages/german/modules/payment/authorizenet.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/authorizenet.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/authorizenet.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,24 +0,0 @@
-<?php
-/*
-  $Id: authorizenet.php,v 1.16 2003/07/11 09:04:23 jan0815 Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2003 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_TITLE', 'Authorize.net');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_DESCRIPTION', 'Kreditkarten Test Info:<br><br>CC#: 4111111111111111<br>G&uuml;ltig bis: Any');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_TYPE', 'Typ:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_OWNER', 'Kreditkarteninhaber:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_NUMBER', 'Kreditkarten-Nr.:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_EXPIRES', 'G&uuml;ltig bis:');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_JS_CC_OWNER', '* Der Name des Kreditkarteninhabers muss mindestens aus  ' . CC_OWNER_MIN_LENGTH . ' Zeichen bestehen.\n');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_JS_CC_NUMBER', '* Die \'Kreditkarten-Nr.\' muss mindestens aus ' . CC_NUMBER_MIN_LENGTH . ' Zahlen bestehen.\n');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_ERROR_MESSAGE', 'Bei der &Uuml;berp&uuml;fung Ihrer Kreditkarte ist ein Fehler aufgetreten! Bitte versuchen Sie es nochmal.');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_DECLINED_MESSAGE', 'Ihre Kreditkarte wurde abgelehnt. Bitte versuchen Sie es mit einer anderen Karte oder kontaktieren Sie Ihre Bank f&uuml;r weitere Informationen.');
-  define('MODULE_PAYMENT_AUTHORIZENET_TEXT_ERROR', 'Fehler bei der &Uuml;berp&uuml;fung der Kreditkarte!');
-?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/cc.php 2.2rc2.src/includes/languages/german/modules/payment/cc.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/cc.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/cc.php	2008-01-11 07:48:20.000000000 -0600
@@ -1,22 +1,20 @@
 <?php
 /*
-  $Id: cc.php,v 1.12 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: cc.php 1793 2008-01-11 13:48:20Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
 
-  define('MODULE_PAYMENT_CC_TEXT_TITLE', 'Kreditkarte');
-  define('MODULE_PAYMENT_CC_TEXT_DESCRIPTION', 'Kreditkarten Test Info:<br><br>CC#: 4111111111111111<br>G&uuml;ltig bis: Any');
-  define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_TYPE', 'Typ:');
+  define('MODULE_PAYMENT_CC_TEXT_TITLE', 'Kreditkarte (Nicht Einsatzf&auml;hig)');
+  define('MODULE_PAYMENT_CC_TEXT_PUBLIC_TITLE', 'Kreditkarte');
+  define('MODULE_PAYMENT_CC_TEXT_DESCRIPTION', 'Dieser Modul speichert die Kartennummer ohne Verschl&uuml;sselung in die Datenbank und ist im Einsatz nicht geeignet.<br><br>Kreditkarten Test Info:<br><br>CC#: 4111111111111111<br>G&uuml;ltig bis: Any');
   define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_OWNER', 'Kreditkarteninhaber:');
   define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_NUMBER', 'Kreditkarten-Nr.:');
   define('MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES', 'G&uuml;ltig bis:');
-  define('MODULE_PAYMENT_CC_TEXT_JS_CC_OWNER', '* Der \'Name des Inhabers\' muss mindestens aus ' . CC_OWNER_MIN_LENGTH . ' Buchstaben bestehen.\n');
-  define('MODULE_PAYMENT_CC_TEXT_JS_CC_NUMBER', '* Die \'Kreditkarten-Nr.\' muss mindestens aus ' . CC_NUMBER_MIN_LENGTH . ' Zahlen bestehen.\n');
   define('MODULE_PAYMENT_CC_TEXT_ERROR', 'Fehler bei der &Uuml;berp&uuml;fung der Kreditkarte!');
-?>
+?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/chronopay.php 2.2rc2.src/includes/languages/german/modules/payment/chronopay.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/chronopay.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/chronopay.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,16 @@
+<?php
+/*
+  $Id: chronopay.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_CHRONOPAY_TEXT_TITLE', 'ChronoPay');
+  define('MODULE_PAYMENT_CHRONOPAY_TEXT_PUBLIC_TITLE', 'Kreditkarte');
+  define('MODULE_PAYMENT_CHRONOPAY_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="http://www.chronopay.com" target="_blank" style="text-decoration: underline; font-weight: bold;">ChronoPay Webseite besuchen</a>');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/cod.php 2.2rc2.src/includes/languages/german/modules/payment/cod.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/cod.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/cod.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cod.php,v 1.8 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: cod.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/ipayment_cc.php 2.2rc2.src/includes/languages/german/modules/payment/ipayment_cc.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/ipayment_cc.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/ipayment_cc.php	2008-01-13 06:25:10.000000000 -0600
@@ -0,0 +1,22 @@
+<?php
+/*
+  $Id: ipayment_cc.php 1811 2008-01-13 12:25:10Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_TITLE', 'iPayment');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_PUBLIC_TITLE', 'Kreditkarte');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.ipayment.de" target="_blank" style="text-decoration: underline; font-weight: bold;">iPayment Webseite besuchen</a>');
+  define('MODULE_PAYMENT_IPAYMENT_CC_ERROR_HEADING', 'Folgender Fehler wurde von iPayment w&auml;hrend des Prozesses gemeldet:');
+  define('MODULE_PAYMENT_IPAYMENT_CC_ERROR_MESSAGE', 'Bitte kontrollieren Sie die Daten Ihrer Kreditkarte!');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_OWNER', 'Kreditkarteninhaber');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_NUMBER', 'Kreditkarten-Nr.:');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES', 'G&uuml;ltig bis:');
+  define('MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_CHECKNUMBER', 'Karten-Pr&uuml;fnummer');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/ipayment.php 2.2rc2.src/includes/languages/german/modules/payment/ipayment.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/ipayment.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/ipayment.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,25 +0,0 @@
-<?php
-/*
-  $Id: ipayment.php,v 1.7 2003/07/11 09:04:23 jan0815 Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2002 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_TITLE', 'iPayment');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_DESCRIPTION', 'Kreditkarten Test Info:<br><br>CC#: 4111111111111111<br>G&uuml;ltig bis: Any');
-  define('IPAYMENT_ERROR_HEADING', 'Folgender Fehler wurde von iPayment w&auml;hrend des Prozesses gemeldet:');
-  define('IPAYMENT_ERROR_MESSAGE', 'Bitte kontrollieren Sie die Daten Ihrer Kreditkarte!');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_OWNER', 'Kreditkarteninhaber');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_NUMBER', 'Kreditkarten-Nr.:');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_EXPIRES', 'G&uuml;ltig bis:');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_CHECKNUMBER', 'Karten-Pr&uuml;fnummer');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_CHECKNUMBER_LOCATION', '(Auf der Kartenr&uuml;ckseite im Unterschriftsfeld)');
-
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_JS_CC_OWNER', '* Der Name des Kreditkarteninhabers mss mindestens aus  ' . CC_OWNER_MIN_LENGTH . ' Zeichen bestehen.\n');
-  define('MODULE_PAYMENT_IPAYMENT_TEXT_JS_CC_NUMBER', '* Die \'Kreditkarten-Nr.\' muss mindestens aus ' . CC_NUMBER_MIN_LENGTH . ' Zahlen bestehen.\n');
-?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/moneyorder.php 2.2rc2.src/includes/languages/german/modules/payment/moneyorder.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/moneyorder.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/moneyorder.php	2008-01-11 08:55:19.000000000 -0600
@@ -1,16 +1,16 @@
-<?php
-/*
-  $Id: moneyorder.php,v 1.9 2003/07/11 09:04:23 jan0815 Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2002 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  define('MODULE_PAYMENT_MONEYORDER_TEXT_TITLE', 'Scheck/Vorkasse');
-  define('MODULE_PAYMENT_MONEYORDER_TEXT_DESCRIPTION', 'Zahlbar an:&nbsp;' . MODULE_PAYMENT_MONEYORDER_PAYTO . '<br>Adressat:<br><br>' . nl2br(STORE_NAME_ADDRESS) . '<br><br>' . 'Ihre Bestellung wird nicht versandt, bis wir das Geld erhalten haben!');
-  define('MODULE_PAYMENT_MONEYORDER_TEXT_EMAIL_FOOTER', "Zahlbar an: ". MODULE_PAYMENT_MONEYORDER_PAYTO . "\n\nAdressat:\n" . STORE_NAME_ADDRESS . "\n\n" . 'Ihre Bestellung wir nicht versandt, bis wird das Geld erhalten haben!');
-?>
+<?php
+/*
+  $Id: moneyorder.php 1797 2008-01-11 14:55:19Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_MONEYORDER_TEXT_TITLE', 'Scheck/Vorkasse');
+  define('MODULE_PAYMENT_MONEYORDER_TEXT_DESCRIPTION', 'Zahlbar an:&nbsp;' . MODULE_PAYMENT_MONEYORDER_PAYTO . '<br>Adressat:<br><br>' . nl2br(STORE_NAME_ADDRESS) . '<br><br>' . 'Ihre Bestellung wird versandt, sobald wir Ihre Zahlung erhalten haben.');
+  define('MODULE_PAYMENT_MONEYORDER_TEXT_EMAIL_FOOTER', "Zahlbar an: ". MODULE_PAYMENT_MONEYORDER_PAYTO . "\n\nAdressat:\n" . STORE_NAME_ADDRESS . "\n\n" . 'Ihre Bestellung wird versandt, sobald wir Ihre Zahlung erhalten haben.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/nochex.php 2.2rc2.src/includes/languages/german/modules/payment/nochex.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/nochex.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/nochex.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: nochex.php,v 1.4 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: nochex.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal_direct.php 2.2rc2.src/includes/languages/german/modules/payment/paypal_direct.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/paypal_direct.php	2008-01-11 10:49:20.000000000 -0600
@@ -0,0 +1,26 @@
+<?php
+/*
+  $Id: paypal_direct.php 1801 2008-01-11 16:49:20Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_TITLE', 'PayPal Website Payments Pro (US) Direct Payments');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_PUBLIC_TITLE', 'Kredit- oder Debitkarte (Sichere Bezahlung durch PayPal)');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_DESCRIPTION', '<b>Hinweis: PayPal ben&ouml;tigt die Aktivierung des PayPal Express Checkout Zahlungsmodul, wenn dieses Modul installiert ist.</b><br /><br /><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">PayPal Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalDirectInfo\');">(info)</a><span id="paypalDirectInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_OWNER', 'Karteninhaber:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_TYPE', 'Kartentyp:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_NUMBER', 'Kartennummer:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_VALID_FROM', 'G&uuml;ltig von:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_VALID_FROM_INFO', '(falls vorhanden)');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_EXPIRES', 'G&uuml;ltig bis:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_CVC', 'Kartenpr&uuml;fnummer:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_ISSUE_NUMBER', 'Kartenausgabenummer:');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_CARD_ISSUE_NUMBER_INFO', '(nur f&uuml;r Maestro- und Solo-Karten)');
+  define('MODULE_PAYMENT_PAYPAL_DIRECT_ERROR_ALL_FIELDS_REQUIRED', 'Fehler: Alle Eingabefelder werden ben&ouml;tigt.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal_express.php 2.2rc2.src/includes/languages/german/modules/payment/paypal_express.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal_express.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/paypal_express.php	2008-01-11 09:40:58.000000000 -0600
@@ -0,0 +1,18 @@
+<?php
+/*
+  $Id: paypal_express.php 1798 2008-01-11 15:40:58Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_TITLE', 'PayPal Express Checkout');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_PUBLIC_TITLE', 'PayPal Express');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">PayPal Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalExpressInfo\');">(info)</a><span id="paypalExpressInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_BUTTON', 'Express-Kauf mit PayPal');
+  define('MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_COMMENTS', 'Anmerkungen:');
+?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal.php 2.2rc2.src/includes/languages/german/modules/payment/paypal.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/paypal.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,15 +0,0 @@
-<?php
-/*
-  $Id: paypal.php,v 1.8 2003/07/11 09:04:23 jan0815 Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2002 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  define('MODULE_PAYMENT_PAYPAL_TEXT_TITLE', 'PayPal');
-  define('MODULE_PAYMENT_PAYPAL_TEXT_DESCRIPTION', 'PayPal');
-?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal_standard.php 2.2rc2.src/includes/languages/german/modules/payment/paypal_standard.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal_standard.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/paypal_standard.php	2008-01-11 08:55:19.000000000 -0600
@@ -0,0 +1,16 @@
+<?php
+/*
+  $Id: paypal_standard.php 1797 2008-01-11 14:55:19Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_TITLE', 'PayPal Website Payments Standard');
+  define('MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_PUBLIC_TITLE', 'PayPal');
+  define('MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">PayPal Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalStdInfo\');">(info)</a><span id="paypalStdInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span>');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal_uk_direct.php 2.2rc2.src/includes/languages/german/modules/payment/paypal_uk_direct.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal_uk_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/paypal_uk_direct.php	2008-01-11 10:33:02.000000000 -0600
@@ -0,0 +1,31 @@
+<?php
+/*
+  $Id: paypal_uk_direct.php 1800 2008-01-11 16:33:02Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_TITLE', 'PayPal Website Payments Pro (UK) Direct Payments');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_PUBLIC_TITLE', 'Kredit- oder Debitkarte (Sichere bezahlung durch PayPal)');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_DESCRIPTION', '<b>Hinweis: PayPal ben&ouml;tigt die Aktivierung des PayPal Website Payments Pro (UK) Express Checkout Zahlungsmodul, wenn dieses Modul installiert ist.</b><br /><br /><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">PayPal Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalDirectUKInfo\');">(info)</a><span id="paypalDirectUKInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_OWNER', 'Karteninhaber:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_TYPE', 'Kartentyp:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_NUMBER', 'Kartennummer:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_VALID_FROM', 'G&uuml;ltig von:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_VALID_FROM_INFO', '(falls vorhanden)');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_EXPIRES', 'G&uuml;ltig bis:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_CVC', 'Kartenpr&uuml;fnummer:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_ISSUE_NUMBER', 'Kartenausgabenummer:');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_ISSUE_NUMBER_INFO', '(nur f&uuml;r Maestro- und Solo-Karten)');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_ALL_FIELDS_REQUIRED', 'Fehler: Alle Eingabefelder werden ben&ouml;tigt.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_GENERAL', 'Fehler: Ein allgemeiner Fehler ist bei der Transaktion aufgetreten. Bitte versuchen Sie es erneut.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_CFG_ERROR', 'Fehler: Fehler bei der Konfiguration des Zahlungsmodul. Bitte &uuml;berpr&uuml;fen Sie Ihre Login-Daten.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_ADDRESS', 'Fehler: Versandadresse, Ort, Bundesland oder Postleitzahl stimmen nicht &uuml;berein. Bitte versuchen Sie es erneut.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_DECLINED', 'Fehler: Die Transaktion wurde verweigert. Bitte versuchen Sie es erneut.');
+  define('MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_INVALID_CREDIT_CARD', 'Fehler: Die angegebenen Kreditkarteninformationen sind ung&uuml;ltig. Bitte versuchen Sie es erneut.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal_uk_express.php 2.2rc2.src/includes/languages/german/modules/payment/paypal_uk_express.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/paypal_uk_express.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/paypal_uk_express.php	2008-01-11 10:33:02.000000000 -0600
@@ -0,0 +1,23 @@
+<?php
+/*
+  $Id: paypal_uk_express.php 1800 2008-01-11 16:33:02Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_TITLE', 'PayPal Website Payments Pro (UK) Express Checkout');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_PUBLIC_TITLE', 'PayPal Express');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_DESCRIPTION', '<b>Hinweis: PayPal ben&ouml;tigt die Aktivierung des PayPal Website Payments Pro (UK) Direct Payments Zahlungsmodul, wenn dieses Modul installiert ist.</b><br /><br /><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.paypal.com/mrb/pal=PS2X9Q773CKG4" target="_blank" style="text-decoration: underline; font-weight: bold;">PayPal Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'paypalExpressUKInfo\');">(info)</a><span id="paypalExpressUKInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span>');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_BUTTON', 'Express-Kauf mit PayPal');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_COMMENTS', 'Anmerkungen:');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_GENERAL', 'Fehler: Ein allgemeiner Fehler ist bei der Transaktion aufgetreten. Bitte versuchen Sie es erneut.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_CFG_ERROR', 'Fehler: Fehler bei der Konfiguration des Zahlungsmodul. Bitte &uuml;berpr&uuml;fen Sie Ihre Login-Daten.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_ADDRESS', 'Fehler: Versandadresse, Ort, Bundesland oder Postleitzahl stimmen nicht &uuml;berein. Bitte versuchen Sie es erneut.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_DECLINED', 'Fehler: Die Transaktion wurde verweigert. Bitte versuchen Sie es erneut.');
+  define('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_EXPRESS_DISABLED', 'Fehler: PayPal Express Checkout wurde f&uuml;r diesen H&auml;ndler deaktiviert. Bitte kontaktieren Sie den PayPal Kundenservice.');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/pm2checkout.php 2.2rc2.src/includes/languages/german/modules/payment/pm2checkout.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/pm2checkout.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/pm2checkout.php	2008-01-11 08:55:19.000000000 -0600
@@ -1,26 +1,20 @@
 <?php
 /*
-  $Id: pm2checkout.php,v 1.5 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: pm2checkout.php 1797 2008-01-11 14:55:19Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
 
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_TITLE', '2CheckOut');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_DESCRIPTION', 'Kreditkarten Test Info:<br><br>CC#: 4111111111111111<br>G&uuml;ltig bis: Any');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_TYPE', 'Typ:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER', 'Kreditkarteninhaber:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_FIRST_NAME', 'Kreditkarteninhaber Vorname:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_LAST_NAME', 'Kreditkarteninhaber Nachname:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_NUMBER', 'Kreditkarten-Nr.:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_EXPIRES', 'G&uuml;ltig bis:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_CHECKNUMBER', 'Karten-Pr&uuml;fnummer:');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_CHECKNUMBER_LOCATION', '(Auf der Kartenr&uuml;ckseite im Unterschriftsfeld)');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_JS_CC_NUMBER', '* Die \'Kreditkarten-Nr.\' muss mindestens aus ' . CC_NUMBER_MIN_LENGTH . ' Zahlen bestehen.\n');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_TITLE', '2Checkout');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_PUBLIC_TITLE', '2Checkout');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_PUBLIC_DESCRIPTION', 'Kreditkarten und Alternativen');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.2checkout.com/2co/signup?affiliate=1255821" target="_blank" style="text-decoration: underline; font-weight: bold;">2Checkout Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'pm2checkoutInfo\');">(info)</a><span id="pm2checkoutInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span><br><br>Kreditkarten Test Info:<br><br>CC#: 4111111111111111<br>G&uuml;ltig bis: Any');
   define('MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR_MESSAGE', 'Bei der &Uuml;berp&uuml;fung Ihrer Kreditkarte ist ein Fehler aufgetreten! Bitte versuchen Sie es nochmal.');
-  define('MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR', 'Fehler bei der &Uuml;berp&uuml;fung der Kreditkarte!');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_WARNING_DEMO_MODE', 'In Review: Transaction performed in demo mode.');
+  define('MODULE_PAYMENT_2CHECKOUT_TEXT_WARNING_TRANSACTION_ORDER', 'In Review: Transaction total did not match order total.');
 ?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/psigate.php 2.2rc2.src/includes/languages/german/modules/payment/psigate.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/psigate.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/psigate.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: psigate.php,v 1.4 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: psigate.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/secpay.php 2.2rc2.src/includes/languages/german/modules/payment/secpay.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/secpay.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/secpay.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: secpay.php,v 1.9 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: secpay.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/sofortueberweisung_direct.php 2.2rc2.src/includes/languages/german/modules/payment/sofortueberweisung_direct.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/sofortueberweisung_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/sofortueberweisung_direct.php	2008-01-11 08:55:19.000000000 -0600
@@ -0,0 +1,53 @@
+<?php
+/*
+  $Id: sofortueberweisung_direct.php 1797 2008-01-11 14:55:19Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2006 - 2007 Henri Schmidhuber (http://www.in-solution.de)
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  if (!defined('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STATUS')) {
+    define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION', '<div align="center"><a href=' . tep_href_link('ext/modules/payment/sofortueberweisung/install.php', 'install=sofortueberweisung_direct', 'SSL') . '>' . tep_image('ext/modules/payment/sofortueberweisung/autoinstaller.gif', 'Autoinstaller (empfohlen)') . '</a></div><br><img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.sofortueberweisung.de/cms/index.php?vpartner=21" target="_blank" style="text-decoration: underline; font-weight: bold;">Sofortberweisung Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'sofortueberweisungInfo\');">(info)</a><span id="sofortueberweisungInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span><br><br>Kontonummer Test Info:<br><br>BLZ#: 88888888');
+  } else {
+    define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="https://www.sofortueberweisung.de/cms/index.php?vpartner=21" target="_blank" style="text-decoration: underline; font-weight: bold;">Sofortberweisung Webseite besuchen</a>&nbsp;<a href="javascript:toggleDivBlock(\'sofortueberweisungInfo\');">(info)</a><span id="sofortueberweisungInfo" style="display: none;"><br><i>Bei Benutzung dieses Links erh&auml;lt osCommerce f&uuml;r eine Neukundenvermittlung einen kleinen Bonus.</i></span><br><br>Kontonummer Test Info:<br><br>BLZ#: 88888888');
+  }
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_TITLE', 'Sofortberweisung Direkt');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_PUBLIC_TITLE', 'Sofortberweisung');
+
+  // checkout_payment Informationen via Bild
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION_CHECKOUT_PAYMENT', '
+    <table border="0" cellspacing="0" cellpadding="0">
+      <tr>
+        <td><a href="#" onclick="window.open(\'https://www.sofortueberweisung.de/cms/index.php?vpartner=21\', \'Popup\',\'toolbar=yes,status=no,menubar=no,scrollbars=yes,width=690,height=500\'); return false;">' . tep_image('ext/modules/payment/sofortueberweisung/images/sofortueberweisung.gif', 'Sofortberweisung ist der kostenlose, TV-zertifizierte Zahlungsdienst der Payment Network AG. Ihre Vorteile: keine zustzliche Registrierung, automatische Abbuchung von Ihrem Online-Bankkonto, hchste Sicherheitsstandards und sofortiger Versand von Lagerware. Fr die Bezahlung mit Sofortberweisung bentigen Sie Ihre eBanking Zugangsdaten, d.h. Bankverbindung, Kontonummer, PIN und TAN.') . '</a></td>
+      </tr>
+    </table>');
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION_CHECKOUT_CONFIRMATION', '
+    <table border="0" cellspacing="0" cellpadding="0">
+      <tr>
+        <td class="main"><p>Nach Besttigung der Bestellung werden Sie zum Zahlungssytem von Sofortberweisung weitergeleitet und knnen dort eine Online-berweisung duchfhren.</p><p>Hierfr bentigen Sie Ihre eBanking Zugangsdaten, d.h. Bankverbindung, Kontonummer, PIN und TAN. Mehr Informationen finden Sie hier: <a href="#" onclick="window.open(\'https://www.sofortueberweisung.de/cms/index.php?vpartner=21\', \'Popup\',\'toolbar=yes,status=no,menubar=no,scrollbars=yes,width=690,height=500\'); return false;">http://www.sofortueberweisung.de</a>.</p></td>
+      </tr>
+    </table>');
+
+ // im Verwendungszweck werden folgende Platzhalter ersetzt:
+ // {{order_date}} durch Bestelldatum
+ // {{customer_id}} durch Kundennummer der Datenbank
+ // {{customer_name}}  durch Kundenname
+ // {{customer_company}} durch Kundenfirma
+ // {{customer_email}} durch Email des Kunden
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_V_ZWECK_1', STORE_NAME);  // max 27 Zeichen
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_V_ZWECK_2', 'Nr. {{orderid}} Kd-Nr. {{customer_id}}'); // max 27 Zeichen
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_EMAIL_FOOTER', '');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_REDIRECT', 'Sie werden nun zu Sofortueberweisung.de weitergeleitet. Sollte dies nicht geschehen bitte den Button drcken');
+
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_ERROR_HEADING', 'Folgender Fehler wurde von Sofortberweisung whrend des Prozesses gemeldet:');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_ERROR_MESSAGE', 'Zahlung via Sofortberweisung ist leider nicht mglich, oder wurde auf Kundenwunsch abgebrochen. Bitte whlen sie ein andere Zahlungsweise.');
+  define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_CHECK_ERROR', 'Sofortberweisungs Transaktionscheck fehlgeschlagen. Bitte manuell berprfen');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/payment/worldpay_junior.php 2.2rc2.src/includes/languages/german/modules/payment/worldpay_junior.php
--- 2.2ms2-060817.src/includes/languages/german/modules/payment/worldpay_junior.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/payment/worldpay_junior.php	2007-12-19 18:52:16.000000000 -0600
@@ -0,0 +1,19 @@
+<?php
+/*
+  $Id: worldpay_junior.php 1739 2007-12-20 00:52:16Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2007 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_TITLE', 'WorldPay Junior');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_PUBLIC_TITLE', 'Kreditkarte');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_DESCRIPTION', '<img src="images/icon_popup.gif" border="0">&nbsp;<a href="http://www.worldpay.com" target="_blank" style="text-decoration: underline; font-weight: bold;">WorldPay Webseite besuchen</a>');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_WARNING_DEMO_MODE', 'In Review: Transaction performed in demo mode.');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_SUCCESSFUL_TRANSACTION', 'The payment transaction has been successfully performed!');
+  define('MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_CONTINUE_BUTTON', 'Click here to continue to %s');
+?>
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/shipping/flat.php 2.2rc2.src/includes/languages/german/modules/shipping/flat.php
--- 2.2ms2-060817.src/includes/languages/german/modules/shipping/flat.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/shipping/flat.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: flat.php,v 1.7 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: flat.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/shipping/item.php 2.2rc2.src/includes/languages/german/modules/shipping/item.php
--- 2.2ms2-060817.src/includes/languages/german/modules/shipping/item.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/shipping/item.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: item.php,v 1.7 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: item.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/shipping/table.php 2.2rc2.src/includes/languages/german/modules/shipping/table.php
--- 2.2ms2-060817.src/includes/languages/german/modules/shipping/table.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/shipping/table.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: table.php,v 1.7 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: table.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/shipping/usps.php 2.2rc2.src/includes/languages/german/modules/shipping/usps.php
--- 2.2ms2-060817.src/includes/languages/german/modules/shipping/usps.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/shipping/usps.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: usps.php,v 1.11 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: usps.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/modules/shipping/zones.php 2.2rc2.src/includes/languages/german/modules/shipping/zones.php
--- 2.2ms2-060817.src/includes/languages/german/modules/shipping/zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/modules/shipping/zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: zones.php,v 1.4 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/password_forgotten.php 2.2rc2.src/includes/languages/german/password_forgotten.php
--- 2.2ms2-060817.src/includes/languages/german/password_forgotten.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/password_forgotten.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: password_forgotten.php,v 1.11 2003/06/25 21:17:02 hpdl Exp $
+  $Id: password_forgotten.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/privacy.php 2.2rc2.src/includes/languages/german/privacy.php
--- 2.2ms2-060817.src/includes/languages/german/privacy.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/privacy.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: privacy.php,v 1.4 2002/04/17 15:57:07 harley_vb Exp $
+  $Id: privacy.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/product_info.php 2.2rc2.src/includes/languages/german/product_info.php
--- 2.2ms2-060817.src/includes/languages/german/product_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/product_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_info.php,v 1.18 2003/02/16 00:42:03 harley_vb Exp $
+  $Id: product_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/product_reviews_info.php 2.2rc2.src/includes/languages/german/product_reviews_info.php
--- 2.2ms2-060817.src/includes/languages/german/product_reviews_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/product_reviews_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews_info.php,v 1.8 2003/02/16 00:42:03 harley_vb Exp $
+  $Id: product_reviews_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/product_reviews.php 2.2rc2.src/includes/languages/german/product_reviews.php
--- 2.2ms2-060817.src/includes/languages/german/product_reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/product_reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews.php,v 1.8 2003/06/05 23:23:53 hpdl Exp $
+  $Id: product_reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/product_reviews_write.php 2.2rc2.src/includes/languages/german/product_reviews_write.php
--- 2.2ms2-060817.src/includes/languages/german/product_reviews_write.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/product_reviews_write.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews_write.php,v 1.10 2003/06/05 23:23:53 hpdl Exp $
+  $Id: product_reviews_write.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/products_new.php 2.2rc2.src/includes/languages/german/products_new.php
--- 2.2ms2-060817.src/includes/languages/german/products_new.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/products_new.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: products_new.php,v 1.3 2002/04/17 15:57:07 harley_vb Exp $
+  $Id: products_new.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/reviews.php 2.2rc2.src/includes/languages/german/reviews.php
--- 2.2ms2-060817.src/includes/languages/german/reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: reviews.php,v 1.6 2002/04/17 15:57:07 harley_vb Exp $
+  $Id: reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/shipping.php 2.2rc2.src/includes/languages/german/shipping.php
--- 2.2ms2-060817.src/includes/languages/german/shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: shipping.php,v 1.4 2002/04/17 15:57:07 harley_vb Exp $
+  $Id: shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/shopping_cart.php 2.2rc2.src/includes/languages/german/shopping_cart.php
--- 2.2ms2-060817.src/includes/languages/german/shopping_cart.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/shopping_cart.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: shopping_cart.php,v 1.15 2002/04/17 15:57:07 harley_vb Exp $
+  $Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2002 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -23,4 +23,6 @@
 
 define('OUT_OF_STOCK_CANT_CHECKOUT', 'Die mit ' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . ' markierten Produkte, sind leider nicht in der von Ihnen gew&uuml;nschten Menge auf Lager.<br>Bitte reduzieren Sie Ihre Bestellmenge f&uuml;r die gekennzeichneten Produkte, vielen Dank');
 define('OUT_OF_STOCK_CAN_CHECKOUT', 'Die mit ' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . ' markierten Produkte, sind leider nicht in der von Ihnen gew&uuml;nschten Menge auf Lager.<br>Die bestellte Menge wird kurzfristig von uns geliefert, wenn Sie es w&uuml;nschen nehmen wir auch eine Teillieferung vor.');
+
+define('TEXT_ALTERNATIVE_CHECKOUT_METHODS', '- ODER -');
 ?>
\ No newline at end of file
diff -ruN 2.2ms2-060817.src/includes/languages/german/specials.php 2.2rc2.src/includes/languages/german/specials.php
--- 2.2ms2-060817.src/includes/languages/german/specials.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/specials.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: specials.php,v 1.6 2002/04/17 15:57:07 harley_vb Exp $
+  $Id: specials.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/ssl_check.php 2.2rc2.src/includes/languages/german/ssl_check.php
--- 2.2ms2-060817.src/includes/languages/german/ssl_check.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/ssl_check.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ssl_check.php,v 1.2 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: ssl_check.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german/tell_a_friend.php 2.2rc2.src/includes/languages/german/tell_a_friend.php
--- 2.2ms2-060817.src/includes/languages/german/tell_a_friend.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german/tell_a_friend.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: tell_a_friend.php,v 1.11 2003/07/11 09:04:23 jan0815 Exp $
+  $Id: tell_a_friend.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/languages/german.php 2.2rc2.src/includes/languages/german.php
--- 2.2ms2-060817.src/includes/languages/german.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/languages/german.php	2007-12-20 12:02:36.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: german.php,v 1.124 2003/07/11 09:03:49 jan0815 Exp $
+  $Id: german.php 1743 2007-12-20 18:02:36Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -310,9 +310,9 @@
 define('WARNING_SESSION_AUTO_START', 'Warnung: session.auto_start ist enabled - Bitte disablen Sie dieses PHP Feature in der php.ini und starten Sie den WEB-Server neu!');
 define('WARNING_DOWNLOAD_DIRECTORY_NON_EXISTENT', 'Warnung: Das Verzeichnis fr den Artikel Download existiert nicht: ' . DIR_FS_DOWNLOAD . '. Diese Funktion wird nicht funktionieren bis das Verzeichnis erstellt wurde!');
 
-define('TEXT_CCVAL_ERROR_INVALID_DATE', 'Das "G&uuml;ltig bis" Datum ist ung&uuml;ltig.<br>Bitte korrigieren Sie Ihre Angaben.');
-define('TEXT_CCVAL_ERROR_INVALID_NUMBER', 'Die "KreditkarteNummer", die Sie angegeben haben, ist ung&uuml;ltig.<br>Bitte korrigieren Sie Ihre Angaben.');
-define('TEXT_CCVAL_ERROR_UNKNOWN_CARD', 'Die ersten 4 Ziffern Ihrer Kreditkarte sind: %s<br>Wenn diese Angaben stimmen, wird dieser Kartentyp leider nicht akzeptiert.<br>Bitte korrigieren Sie Ihre Angaben gegebenfalls.');
+define('TEXT_CCVAL_ERROR_INVALID_DATE', 'Das "G&uuml;ltig bis" Datum ist ung&uuml;ltig. Bitte korrigieren Sie Ihre Angaben.');
+define('TEXT_CCVAL_ERROR_INVALID_NUMBER', 'Die "KreditkarteNummer", die Sie angegeben haben, ist ung&uuml;ltig. Bitte korrigieren Sie Ihre Angaben.');
+define('TEXT_CCVAL_ERROR_UNKNOWN_CARD', 'Die ersten 4 Ziffern Ihrer Kreditkarte sind: %s. Wenn diese Angaben stimmen, wird dieser Kartentyp leider nicht akzeptiert. Bitte korrigieren Sie Ihre Angaben gegebenfalls.');
 
 define('FOOTER_TEXT_BODY', 'Copyright &copy; ' . date('Y') . ' <a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . STORE_NAME . '</a><br>Powered by <a href="http://www.oscommerce.com" target="_blank">osCommerce</a>');
 ?>
diff -ruN 2.2ms2-060817.src/includes/local/.cvsignore 2.2rc2.src/includes/local/.cvsignore
--- 2.2ms2-060817.src/includes/local/.cvsignore	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/local/.cvsignore	1969-12-31 18:00:00.000000000 -0600
@@ -1 +0,0 @@
-configure.php
diff -ruN 2.2ms2-060817.src/includes/modules/address_book_details.php 2.2rc2.src/includes/modules/address_book_details.php
--- 2.2ms2-060817.src/includes/modules/address_book_details.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/address_book_details.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: address_book_details.php,v 1.10 2003/06/09 22:49:56 hpdl Exp $
+  $Id: address_book_details.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -27,12 +27,14 @@
         <td><table border="0" cellspacing="2" cellpadding="2">
 <?php
   if (ACCOUNT_GENDER == 'true') {
+    $male = $female = false;
     if (isset($gender)) {
       $male = ($gender == 'm') ? true : false;
-    } else {
+      $female = !$male;
+    } elseif (isset($entry['entry_gender'])) {
       $male = ($entry['entry_gender'] == 'm') ? true : false;
+      $female = !$male;
     }
-    $female = !$male;
 ?>
           <tr>
             <td class="main"><?php echo ENTRY_GENDER; ?></td>
diff -ruN 2.2ms2-060817.src/includes/modules/also_purchased_products.php 2.2rc2.src/includes/modules/also_purchased_products.php
--- 2.2ms2-060817.src/includes/modules/also_purchased_products.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/also_purchased_products.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: also_purchased_products.php,v 1.21 2003/02/12 23:55:58 hpdl Exp $
+  $Id: also_purchased_products.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/checkout_new_address.php 2.2rc2.src/includes/modules/checkout_new_address.php
--- 2.2ms2-060817.src/includes/modules/checkout_new_address.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/checkout_new_address.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: checkout_new_address.php,v 1.4 2003/06/09 22:49:57 hpdl Exp $
+  $Id: checkout_new_address.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/downloads.php 2.2rc2.src/includes/modules/downloads.php
--- 2.2ms2-060817.src/includes/modules/downloads.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/downloads.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: downloads.php,v 1.3 2003/06/09 22:49:58 hpdl Exp $
+  $Id: downloads.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -22,7 +22,7 @@
   }
 
 // Now get all downloadable products in that order
-  $downloads_query = tep_db_query("select date_format(o.date_purchased, '%Y-%m-%d') as date_purchased_day, opd.download_maxdays, op.products_name, opd.orders_products_download_id, opd.orders_products_filename, opd.download_count, opd.download_maxdays from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_PRODUCTS . " op, " . TABLE_ORDERS_PRODUCTS_DOWNLOAD . " opd where o.customers_id = '" . (int)$customer_id . "' and o.orders_id = '" . (int)$last_order . "' and o.orders_id = op.orders_id and op.orders_products_id = opd.orders_products_id and opd.orders_products_filename != ''");
+  $downloads_query = tep_db_query("select date_format(o.date_purchased, '%Y-%m-%d') as date_purchased_day, opd.download_maxdays, op.products_name, opd.orders_products_download_id, opd.orders_products_filename, opd.download_count, opd.download_maxdays from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_PRODUCTS . " op, " . TABLE_ORDERS_PRODUCTS_DOWNLOAD . " opd, " . TABLE_ORDERS_STATUS . " os where o.customers_id = '" . (int)$customer_id . "' and o.orders_id = '" . (int)$last_order . "' and o.orders_id = op.orders_id and op.orders_products_id = opd.orders_products_id and opd.orders_products_filename != '' and o.orders_status = os.orders_status_id and os.downloads_flag = '1' and os.language_id = '" . (int)$languages_id . "'");
   if (tep_db_num_rows($downloads_query) > 0) {
 ?>
       <tr>
diff -ruN 2.2ms2-060817.src/includes/modules/new_products.php 2.2rc2.src/includes/modules/new_products.php
--- 2.2ms2-060817.src/includes/modules/new_products.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/new_products.php	2008-01-11 16:48:15.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: new_products.php,v 1.34 2003/06/09 22:49:58 hpdl Exp $
+  $Id: new_products.php 1806 2008-01-11 22:48:15Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -18,16 +18,15 @@
   new contentBoxHeading($info_box_contents);
 
   if ( (!isset($new_products_category_id)) || ($new_products_category_id == '0') ) {
-    $new_products_query = tep_db_query("select p.products_id, p.products_image, p.products_tax_class_id, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where products_status = '1' order by p.products_date_added desc limit " . MAX_DISPLAY_NEW_PRODUCTS);
+    $new_products_query = tep_db_query("select p.products_id, p.products_image, p.products_tax_class_id, pd.products_name, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added desc limit " . MAX_DISPLAY_NEW_PRODUCTS);
   } else {
-    $new_products_query = tep_db_query("select distinct p.products_id, p.products_image, p.products_tax_class_id, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and c.parent_id = '" . (int)$new_products_category_id . "' and p.products_status = '1' order by p.products_date_added desc limit " . MAX_DISPLAY_NEW_PRODUCTS);
+    $new_products_query = tep_db_query("select distinct p.products_id, p.products_image, p.products_tax_class_id, pd.products_name, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and c.parent_id = '" . (int)$new_products_category_id . "' and p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added desc limit " . MAX_DISPLAY_NEW_PRODUCTS);
   }
 
   $row = 0;
   $col = 0;
   $info_box_contents = array();
   while ($new_products = tep_db_fetch_array($new_products_query)) {
-    $new_products['products_name'] = tep_get_products_name($new_products['products_id']);
     $info_box_contents[$row][$col] = array('align' => 'center',
                                            'params' => 'class="smallText" width="33%" valign="top"',
                                            'text' => '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $new_products['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $new_products['products_image'], $new_products['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $new_products['products_id']) . '">' . $new_products['products_name'] . '</a><br>' . $currencies->display_price($new_products['products_price'], tep_get_tax_rate($new_products['products_tax_class_id'])));
diff -ruN 2.2ms2-060817.src/includes/modules/order_total/ot_loworderfee.php 2.2rc2.src/includes/modules/order_total/ot_loworderfee.php
--- 2.2ms2-060817.src/includes/modules/order_total/ot_loworderfee.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/order_total/ot_loworderfee.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_loworderfee.php,v 1.11 2003/02/14 06:03:32 hpdl Exp $
+  $Id: ot_loworderfee.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/order_total/ot_shipping.php 2.2rc2.src/includes/modules/order_total/ot_shipping.php
--- 2.2ms2-060817.src/includes/modules/order_total/ot_shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/order_total/ot_shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: ot_shipping.php,v 1.15 2003/02/07 22:01:57 dgw_ Exp $
+  $Id: ot_shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -39,7 +39,7 @@
         }
 
         if ( ($pass == true) && ( ($order->info['total'] - $order->info['shipping_cost']) >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) {
-          $order->info['shipping_method'] = $this->title;
+          $order->info['shipping_method'] = FREE_SHIPPING_TITLE;
           $order->info['total'] -= $order->info['shipping_cost'];
           $order->info['shipping_cost'] = 0;
         }
diff -ruN 2.2ms2-060817.src/includes/modules/order_total/ot_subtotal.php 2.2rc2.src/includes/modules/order_total/ot_subtotal.php
--- 2.2ms2-060817.src/includes/modules/order_total/ot_subtotal.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/order_total/ot_subtotal.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_subtotal.php,v 1.7 2003/02/13 00:12:04 hpdl Exp $
+  $Id: ot_subtotal.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/order_total/ot_tax.php 2.2rc2.src/includes/modules/order_total/ot_tax.php
--- 2.2ms2-060817.src/includes/modules/order_total/ot_tax.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/order_total/ot_tax.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_tax.php,v 1.14 2003/02/14 05:58:35 hpdl Exp $
+  $Id: ot_tax.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/order_total/ot_total.php 2.2rc2.src/includes/modules/order_total/ot_total.php
--- 2.2ms2-060817.src/includes/modules/order_total/ot_total.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/order_total/ot_total.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ot_total.php,v 1.7 2003/02/13 00:12:04 hpdl Exp $
+  $Id: ot_total.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/payment/authorizenet_cc_aim.php 2.2rc2.src/includes/modules/payment/authorizenet_cc_aim.php
--- 2.2ms2-060817.src/includes/modules/payment/authorizenet_cc_aim.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/authorizenet_cc_aim.php	2008-01-11 12:16:37.000000000 -0600
@@ -0,0 +1,376 @@
+<?php
+/*
+  $Id: authorizenet_cc_aim.php 1803 2008-01-11 18:16:37Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  class authorizenet_cc_aim {
+    var $code, $title, $description, $enabled;
+
+// class constructor
+    function authorizenet_cc_aim() {
+      global $order;
+
+      $this->signature = 'authorizenet|authorizenet_cc_aim|1.0|2.2';
+
+      $this->code = 'authorizenet_cc_aim';
+      $this->title = MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_PUBLIC_TITLE;
+      $this->description = MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TEXT_DESCRIPTION;
+      $this->sort_order = MODULE_PAYMENT_AUTHORIZENET_CC_AIM_SORT_ORDER;
+      $this->enabled = ((MODULE_PAYMENT_AUTHORIZENET_CC_AIM_STATUS == 'True') ? true : false);
+
+      if ((int)MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ORDER_STATUS_ID > 0) {
+        $this->order_status = MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ORDER_STATUS_ID;
+      }
+
+      if (is_object($order)) $this->update_status();
+    }
+
+// class methods
+    function update_status() {
+      global $order;
+
+      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ZONE > 0) ) {
+        $check_flag = false;
+        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
+        while ($check = tep_db_fetch_array($check_query)) {
+          if ($check['zone_id'] < 1) {
+            $check_flag = true;
+            break;
+          } elseif ($check['zone_id'] == $order->billing['zone_id']) {
+            $check_flag = true;
+            break;
+          }
+        }
+
+        if ($check_flag == false) {
+          $this->enabled = false;
+        }
+      }
+    }
+
+    function javascript_validation() {
+      return false;
+    }
+
+    function selection() {
+      return array('id' => $this->code,
+                   'module' => $this->public_title);
+    }
+
+    function pre_confirmation_check() {
+      return false;
+    }
+
+    function confirmation() {
+      global $order;
+
+      for ($i=1; $i<13; $i++) {
+        $expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000)));
+      }
+
+      $today = getdate(); 
+      for ($i=$today['year']; $i < $today['year']+10; $i++) {
+        $expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
+      }
+
+      $confirmation = array('fields' => array(array('title' => MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_OWNER,
+                                                    'field' => tep_draw_input_field('cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),
+                                              array('title' => MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_NUMBER,
+                                                    'field' => tep_draw_input_field('cc_number_nh-dns')),
+                                              array('title' => MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_EXPIRES,
+                                                    'field' => tep_draw_pull_down_menu('cc_expires_month', $expires_month) . '&nbsp;' . tep_draw_pull_down_menu('cc_expires_year', $expires_year)),
+                                              array('title' => MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CREDIT_CARD_CVC,
+                                                    'field' => tep_draw_input_field('cc_cvc_nh-dns', '', 'size="5" maxlength="4"'))));
+
+      return $confirmation;
+    }
+
+    function process_button() {
+      return false;
+    }
+
+    function before_process() {
+      global $HTTP_POST_VARS, $customer_id, $order, $sendto, $currency;
+
+      $params = array('x_login' => substr(MODULE_PAYMENT_AUTHORIZENET_CC_AIM_LOGIN_ID, 0, 20),
+                      'x_tran_key' => substr(MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_KEY, 0, 16),
+                      'x_version' => '3.1',
+                      'x_delim_data' => 'TRUE',
+                      'x_delim_char' => ',',
+                      'x_encap_char' => '"',
+                      'x_relay_response' => 'FALSE',
+                      'x_first_name' => substr($order->billing['firstname'], 0, 50),
+                      'x_last_name' => substr($order->billing['lastname'], 0, 50),
+                      'x_company' => substr($order->billing['company'], 0, 50),
+                      'x_address' => substr($order->billing['street_address'], 0, 60),
+                      'x_city' => substr($order->billing['city'], 0, 40),
+                      'x_state' => substr($order->billing['state'], 0, 40),
+                      'x_zip' => substr($order->billing['postcode'], 0, 20),
+                      'x_country' => substr($order->billing['country']['title'], 0, 60),
+                      'x_phone' => substr($order->customer['telephone'], 0, 25),
+                      'x_cust_id' => substr($customer_id, 0, 20),
+                      'x_customer_ip' => tep_get_ip_address(),
+                      'x_email' => substr($order->customer['email_address'], 0, 255),
+                      'x_description' => substr(STORE_NAME, 0, 255),
+                      'x_amount' => substr($this->format_raw($order->info['total']), 0, 15),
+                      'x_currency_code' => substr($currency, 0, 3),
+                      'x_method' => 'CC',
+                      'x_type' => ((MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_METHOD == 'Capture') ? 'AUTH_CAPTURE' : 'AUTH_ONLY'),
+                      'x_card_num' => substr($HTTP_POST_VARS['cc_number_nh-dns'], 0, 22),
+                      'x_exp_date' => $HTTP_POST_VARS['cc_expires_month'] . $HTTP_POST_VARS['cc_expires_year'],
+                      'x_card_code' => substr($HTTP_POST_VARS['cc_cvc_nh-dns'], 0, 4));
+
+      if (is_numeric($sendto) && ($sendto > 0)) {
+        $params['x_ship_to_first_name'] = substr($order->delivery['firstname'], 0, 50);
+        $params['x_ship_to_last_name'] = substr($order->delivery['lastname'], 0, 50);
+        $params['x_ship_to_company'] = substr($order->delivery['company'], 0, 50);
+        $params['x_ship_to_address'] = substr($order->delivery['street_address'], 0, 60);
+        $params['x_ship_to_city'] = substr($order->delivery['city'], 0, 40);
+        $params['x_ship_to_state'] = substr($order->delivery['state'], 0, 40);
+        $params['x_ship_to_zip'] = substr($order->delivery['postcode'], 0, 20);
+        $params['x_ship_to_country'] = substr($order->delivery['country']['title'], 0, 60);
+      }
+
+      if (MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_MODE == 'Test') {
+        $params['x_test_request'] = 'TRUE';
+      }
+
+      $tax_value = 0;
+
+      foreach ($order->info['tax_groups'] as $key => $value) {
+        if ($value > 0) {
+          $tax_value += $this->format_raw($value);
+        }
+      }
+
+      if ($tax_value > 0) {
+        $params['x_tax'] = $this->format_raw($tax_value);
+      }
+
+      $params['x_freight'] = $this->format_raw($order->info['shipping_cost']);
+
+      $post_string = '';
+
+      foreach ($params as $key => $value) {
+        $post_string .= $key . '=' . urlencode(trim($value)) . '&';
+      }
+
+      $post_string = substr($post_string, 0, -1);
+
+      for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+        $post_string .= '&x_line_item=' . urlencode($i+1) . '<|>' . urlencode(substr($order->products[$i]['name'], 0, 31)) . '<|>' . urlencode(substr($order->products[$i]['name'], 0, 255)) . '<|>' . urlencode($order->products[$i]['qty']) . '<|>' . urlencode($this->format_raw($order->products[$i]['final_price'])) . '<|>' . urlencode($order->products[$i]['tax'] > 0 ? 'YES' : 'NO');
+      }
+
+      switch (MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_SERVER) {
+        case 'Live':
+          $gateway_url = 'https://secure.authorize.net/gateway/transact.dll';
+          break;
+
+        default:
+          $gateway_url = 'https://test.authorize.net/gateway/transact.dll';
+          break;
+      }
+
+      $transaction_response = $this->sendTransactionToGateway($gateway_url, $post_string);
+
+      if (!empty($transaction_response)) {
+        $regs = preg_split("/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/", $transaction_response);
+
+        foreach ($regs as $key => $value) {
+          $regs[$key] = substr($value, 1, -1); // remove double quotes
+        }
+      } else {
+        $regs = array('-1', '-1', '-1');
+      }
+
+      $error = false;
+
+      if ($regs[0] == '1') {
+        if (tep_not_null(MODULE_PAYMENT_AUTHORIZENET_CC_AIM_MD5_HASH)) {
+          if (strtoupper($regs[37]) != strtoupper(md5(MODULE_PAYMENT_AUTHORIZENET_CC_AIM_MD5_HASH . MODULE_PAYMENT_AUTHORIZENET_CC_AIM_LOGIN_ID . $regs[6] . $this->format_raw($order->info['total'])))) {
+            $error = 'general';
+          }
+        }
+      } else {
+        switch ($regs[2]) {
+          case '7':
+            $error = 'invalid_expiration_date';
+            break;
+
+          case '8':
+            $error = 'expired';
+            break;
+
+          case '6':
+          case '17':
+          case '28':
+            $error = 'declined';
+            break;
+
+          case '78':
+            $error = 'cvc';
+            break;
+
+          default:
+            $error = 'general';
+            break;
+        }
+      }
+
+      if ($error != false) {
+        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code . '&error=' . $error, 'SSL'));
+      }
+    }
+
+    function after_process() {
+      return false;
+    }
+
+    function get_error() {
+      global $HTTP_GET_VARS;
+
+      $error_message = MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_GENERAL;
+
+      switch ($HTTP_GET_VARS['error']) {
+        case 'invalid_expiration_date':
+          $error_message = MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_INVALID_EXP_DATE;
+          break;
+
+        case 'expired':
+          $error_message = MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_EXPIRED;
+          break;
+
+        case 'declined':
+          $error_message = MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_DECLINED;
+          break;
+
+        case 'cvc':
+          $error_message = MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_CVC;
+          break;
+
+        default:
+          $error_message = MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_GENERAL;
+          break;
+      }
+
+      $error = array('title' => MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ERROR_TITLE,
+                     'error' => $error_message);
+
+      return $error;
+    }
+
+    function check() {
+      if (!isset($this->_check)) {
+        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_STATUS'");
+        $this->_check = tep_db_num_rows($check_query);
+      }
+      return $this->_check;
+    }
+
+    function install() {
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Authorize.net Credit Card AIM', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_STATUS', 'False', 'Do you want to accept Authorize.net Credit Card AIM payments?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Login ID', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_LOGIN_ID', '', 'The login ID used for the Authorize.net service', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Transaction Key', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_KEY', '', 'Transaction key used for encrypting data', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('MD5 Hash', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_MD5_HASH', '', 'The MD5 hash value to verify transactions with', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Server', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_SERVER', 'Live', 'Perform transactions on the live or test server. The test server should only be used by developers with Authorize.net test accounts.', '6', '0', 'tep_cfg_select_option(array(\'Live\', \'Test\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Mode', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_MODE', 'Live', 'Transaction mode used for processing orders', '6', '0', 'tep_cfg_select_option(array(\'Live\', \'Test\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Method', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_METHOD', 'Authorization', 'The processing method to use for each transaction.', '6', '0', 'tep_cfg_select_option(array(\'Authorization\', \'Capture\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('cURL Program Location', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CURL', '/usr/bin/curl', 'The location to the cURL program application.', '6', '0' , now())");
+    }
+
+    function remove() {
+      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
+    }
+
+    function keys() {
+      return array('MODULE_PAYMENT_AUTHORIZENET_CC_AIM_STATUS', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_LOGIN_ID', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_KEY', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_MD5_HASH', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_SERVER', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_MODE', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_TRANSACTION_METHOD', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ZONE', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_ORDER_STATUS_ID', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_SORT_ORDER', 'MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CURL');
+    }
+
+    function _hmac($key, $data) {
+      if (function_exists('mhash') && defined('MHASH_MD5')) {
+        return bin2hex(mhash(MHASH_MD5, $data, $key));
+      }
+
+// RFC 2104 HMAC implementation for php.
+// Creates an md5 HMAC.
+// Eliminates the need to install mhash to compute a HMAC
+// Hacked by Lance Rushing
+
+      $b = 64; // byte length for md5
+      if (strlen($key) > $b) {
+        $key = pack("H*",md5($key));
+      }
+
+      $key = str_pad($key, $b, chr(0x00));
+      $ipad = str_pad('', $b, chr(0x36));
+      $opad = str_pad('', $b, chr(0x5c));
+      $k_ipad = $key ^ $ipad ;
+      $k_opad = $key ^ $opad;
+
+      return md5($k_opad . pack("H*",md5($k_ipad . $data)));
+    }
+
+    function sendTransactionToGateway($url, $parameters) {
+      $server = parse_url($url);
+
+      if (isset($server['port']) === false) {
+        $server['port'] = ($server['scheme'] == 'https') ? 443 : 80;
+      }
+
+      if (isset($server['path']) === false) {
+        $server['path'] = '/';
+      }
+
+      if (isset($server['user']) && isset($server['pass'])) {
+        $header[] = 'Authorization: Basic ' . base64_encode($server['user'] . ':' . $server['pass']);
+      }
+
+      if (function_exists('curl_init')) {
+        $curl = curl_init($server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : ''));
+        curl_setopt($curl, CURLOPT_PORT, $server['port']);
+        curl_setopt($curl, CURLOPT_HEADER, 0);
+        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
+        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+        curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
+        curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
+        curl_setopt($curl, CURLOPT_POST, 1);
+        curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);
+
+        $result = curl_exec($curl);
+
+        curl_close($curl);
+      } else {
+        exec(escapeshellarg(MODULE_PAYMENT_AUTHORIZENET_CC_AIM_CURL) . ' -d ' . escapeshellarg($parameters) . ' "' . $server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : '') . '" -P ' . $server['port'] . ' -k', $result);
+        $result = implode("\n", $result);
+      }
+
+      return $result;
+    }
+
+// format prices without currency formatting
+    function format_raw($number, $currency_code = '', $currency_value = '') {
+      global $currencies, $currency;
+
+      if (empty($currency_code) || !$this->is_set($currency_code)) {
+        $currency_code = $currency;
+      }
+
+      if (empty($currency_value) || !is_numeric($currency_value)) {
+        $currency_value = $currencies->currencies[$currency_code]['value'];
+      }
+
+      return number_format(tep_round($number * $currency_value, $currencies->currencies[$currency_code]['decimal_places']), $currencies->currencies[$currency_code]['decimal_places'], '.', '');
+    }
+  }
+?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/authorizenet_cc_sim.php 2.2rc2.src/includes/modules/payment/authorizenet_cc_sim.php
--- 2.2ms2-060817.src/includes/modules/payment/authorizenet_cc_sim.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/authorizenet_cc_sim.php	2008-01-11 12:16:37.000000000 -0600
@@ -0,0 +1,281 @@
+<?php
+/*
+  $Id: authorizenet_cc_sim.php 1803 2008-01-11 18:16:37Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  class authorizenet_cc_sim {
+    var $code, $title, $description, $enabled;
+
+// class constructor
+    function authorizenet_cc_sim() {
+      global $order;
+
+      $this->signature = 'authorizenet|authorizenet_cc_sim|1.0|2.2';
+
+      $this->code = 'authorizenet_cc_sim';
+      $this->title = MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_PUBLIC_TITLE;
+      $this->description = MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TEXT_DESCRIPTION;
+      $this->sort_order = MODULE_PAYMENT_AUTHORIZENET_CC_SIM_SORT_ORDER;
+      $this->enabled = ((MODULE_PAYMENT_AUTHORIZENET_CC_SIM_STATUS == 'True') ? true : false);
+
+      if ((int)MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ORDER_STATUS_ID > 0) {
+        $this->order_status = MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ORDER_STATUS_ID;
+      }
+
+      if (is_object($order)) $this->update_status();
+
+      switch (MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_SERVER) {
+        case 'Live':
+          $this->form_action_url = 'https://secure.authorize.net/gateway/transact.dll';
+          break;
+
+        default:
+          $this->form_action_url = 'https://test.authorize.net/gateway/transact.dll';
+          break;
+      }
+    }
+
+// class methods
+    function update_status() {
+      global $order;
+
+      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ZONE > 0) ) {
+        $check_flag = false;
+        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
+        while ($check = tep_db_fetch_array($check_query)) {
+          if ($check['zone_id'] < 1) {
+            $check_flag = true;
+            break;
+          } elseif ($check['zone_id'] == $order->billing['zone_id']) {
+            $check_flag = true;
+            break;
+          }
+        }
+
+        if ($check_flag == false) {
+          $this->enabled = false;
+        }
+      }
+    }
+
+    function javascript_validation() {
+      return false;
+    }
+
+    function selection() {
+      return array('id' => $this->code,
+                   'module' => $this->public_title);
+    }
+
+    function pre_confirmation_check() {
+      return false;
+    }
+
+    function confirmation() {
+      return false;
+    }
+
+    function process_button() {
+      global $customer_id, $order, $sendto, $currency;
+
+      $process_button_string = $this->_InsertFP(MODULE_PAYMENT_AUTHORIZENET_CC_SIM_LOGIN_ID, MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_KEY, $this->format_raw($order->info['total']), rand(1, 1000), $currency);
+
+      $process_button_string .= tep_draw_hidden_field('x_login', substr(MODULE_PAYMENT_AUTHORIZENET_CC_SIM_LOGIN_ID, 0, 20)) .
+                                tep_draw_hidden_field('x_version', '3.1') .
+                                tep_draw_hidden_field('x_show_form', 'PAYMENT_FORM') .
+                                tep_draw_hidden_field('x_relay_response', 'TRUE') .
+                                tep_draw_hidden_field('x_relay_url', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', false)) .
+                                tep_draw_hidden_field('x_first_name', substr($order->billing['firstname'], 0, 50)) .
+                                tep_draw_hidden_field('x_last_name', substr($order->billing['lastname'], 0, 50)) .
+                                tep_draw_hidden_field('x_company', substr($order->billing['company'], 0, 50)) .
+                                tep_draw_hidden_field('x_address', substr($order->billing['street_address'], 0, 60)) .
+                                tep_draw_hidden_field('x_city', substr($order->billing['city'], 0, 40)) .
+                                tep_draw_hidden_field('x_state', substr($order->billing['state'], 0, 40)) .
+                                tep_draw_hidden_field('x_zip', substr($order->billing['postcode'], 0, 20)) .
+                                tep_draw_hidden_field('x_country', substr($order->billing['country']['title'], 0, 60)) .
+                                tep_draw_hidden_field('x_phone', substr($order->customer['telephone'], 0, 25)) .
+                                tep_draw_hidden_field('x_cust_id', substr($customer_id, 0, 20)) .
+                                tep_draw_hidden_field('x_customer_ip', tep_get_ip_address()) .
+                                tep_draw_hidden_field('x_email', substr($order->customer['email_address'], 0, 255)) .
+                                tep_draw_hidden_field('x_description', substr(STORE_NAME, 0, 255)) .
+                                tep_draw_hidden_field('x_amount', substr($this->format_raw($order->info['total']), 0, 15)) .
+                                tep_draw_hidden_field('x_currency_code', substr($currency, 0, 3)) .
+                                tep_draw_hidden_field('x_method', 'CC') .
+                                tep_draw_hidden_field('x_type', ((MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_METHOD == 'Capture') ? 'AUTH_CAPTURE' : 'AUTH_ONLY'));
+
+      if (is_numeric($sendto) && ($sendto > 0)) {
+        $process_button_string .= tep_draw_hidden_field('x_ship_to_first_name', substr($order->delivery['firstname'], 0, 50)) .
+                                  tep_draw_hidden_field('x_ship_to_last_name', substr($order->delivery['lastname'], 0, 50)) .
+                                  tep_draw_hidden_field('x_ship_to_company', substr($order->delivery['company'], 0, 50)) .
+                                  tep_draw_hidden_field('x_ship_to_address', substr($order->delivery['street_address'], 0, 60)) .
+                                  tep_draw_hidden_field('x_ship_to_city', substr($order->delivery['city'], 0, 40)) .
+                                  tep_draw_hidden_field('x_ship_to_state', substr($order->delivery['state'], 0, 40)) .
+                                  tep_draw_hidden_field('x_ship_to_zip', substr($order->delivery['postcode'], 0, 20)) .
+                                  tep_draw_hidden_field('x_ship_to_country', substr($order->delivery['country']['title'], 0, 60));
+      }
+
+      if (MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_MODE == 'Test') {
+        $process_button_string .= tep_draw_hidden_field('x_test_request', 'TRUE');
+      }
+
+      for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+        $process_button_string .= tep_draw_hidden_field('x_line_item', ($i+1) . '<|>' . substr($order->products[$i]['name'], 0, 31) . '<|>' . substr($order->products[$i]['name'], 0, 255) . '<|>' . $order->products[$i]['qty'] . '<|>' . $this->format_raw($order->products[$i]['final_price']) . '<|>' . ($order->products[$i]['tax'] > 0 ? 'YES' : 'NO'));
+      }
+
+      $tax_value = 0;
+
+      reset($order->info['tax_groups']);
+      while (list($key, $value) = each($order->info['tax_groups'])) {
+        if ($value > 0) {
+          $tax_value += $this->format_raw($value);
+        }
+      }
+
+      if ($tax_value > 0) {
+        $process_button_string .= tep_draw_hidden_field('x_tax', $this->format_raw($tax_value));
+      }
+
+      $process_button_string .= tep_draw_hidden_field('x_freight', $this->format_raw($order->info['shipping_cost'])) .
+                                tep_draw_hidden_field(tep_session_name(), tep_session_id());
+
+      return $process_button_string;
+    }
+
+    function before_process() {
+      global $HTTP_POST_VARS, $order;
+
+      $error = false;
+
+      if ($HTTP_POST_VARS['x_response_code'] == '1') {
+        if (tep_not_null(MODULE_PAYMENT_AUTHORIZENET_CC_SIM_MD5_HASH) && ($HTTP_POST_VARS['x_MD5_Hash'] != strtoupper(md5(MODULE_PAYMENT_AUTHORIZENET_CC_SIM_MD5_HASH . MODULE_PAYMENT_AUTHORIZENET_CC_SIM_LOGIN_ID . $HTTP_POST_VARS['x_trans_id'] . $this->format_raw($order->info['total']))))) {
+          $error = 'verification';
+        } elseif ($HTTP_POST_VARS['x_amount'] != $this->format_raw($order->info['total'])) {
+          $error = 'verification';
+        }
+      } elseif ($HTTP_POST_VARS['x_response_code'] == '2') {
+        $error = 'declined';
+      } else {
+        $error = 'general';
+      }
+
+      if ($error != false) {
+        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code . '&error=' . $error, 'SSL', true, false));
+      }
+    }
+
+    function after_process() {
+      return false;
+    }
+
+    function get_error() {
+      global $HTTP_GET_VARS;
+
+      $error_message = MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_GENERAL;
+
+      switch ($HTTP_GET_VARS['error']) {
+        case 'verification':
+          $error_message = MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_VERIFICATION;
+          break;
+
+        case 'declined':
+          $error_message = MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_DECLINED;
+          break;
+
+        default:
+          $error_message = MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_GENERAL;
+          break;
+      }
+
+      $error = array('title' => MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ERROR_TITLE,
+                     'error' => $error_message);
+
+      return $error;
+    }
+
+    function check() {
+      if (!isset($this->_check)) {
+        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_STATUS'");
+        $this->_check = tep_db_num_rows($check_query);
+      }
+      return $this->_check;
+    }
+
+    function install() {
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Authorize.net Credit Card SIM', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_STATUS', 'False', 'Do you want to accept Authorize.net Credit Card SIM payments?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Login ID', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_LOGIN_ID', '', 'The login ID used for the Authorize.net service', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Transaction Key', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_KEY', '', 'Transaction key used for encrypting data', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('MD5 Hash', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_MD5_HASH', '', 'The MD5 hash value to verify transactions with', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Server', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_SERVER', 'Live', 'Perform transactions on the live or test server. The test server should only be used by developers with Authorize.net test accounts.', '6', '0', 'tep_cfg_select_option(array(\'Live\', \'Test\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Mode', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_MODE', 'Test', 'Transaction mode used for processing orders', '6', '0', 'tep_cfg_select_option(array(\'Live\', \'Test\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Method', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_METHOD', 'Authorization', 'The processing method to use for each transaction.', '6', '0', 'tep_cfg_select_option(array(\'Authorization\', \'Capture\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+    }
+
+    function remove() {
+      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
+    }
+
+    function keys() {
+      return array('MODULE_PAYMENT_AUTHORIZENET_CC_SIM_STATUS', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_LOGIN_ID', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_KEY', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_MD5_HASH', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_SERVER', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_MODE', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_TRANSACTION_METHOD', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ZONE', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_ORDER_STATUS_ID', 'MODULE_PAYMENT_AUTHORIZENET_CC_SIM_SORT_ORDER');
+    }
+
+    function _hmac($key, $data) {
+      if (function_exists('mhash') && defined('MHASH_MD5')) {
+        return bin2hex(mhash(MHASH_MD5, $data, $key));
+      }
+
+// RFC 2104 HMAC implementation for php.
+// Creates an md5 HMAC.
+// Eliminates the need to install mhash to compute a HMAC
+// Hacked by Lance Rushing
+
+      $b = 64; // byte length for md5
+      if (strlen($key) > $b) {
+        $key = pack("H*",md5($key));
+      }
+
+      $key = str_pad($key, $b, chr(0x00));
+      $ipad = str_pad('', $b, chr(0x36));
+      $opad = str_pad('', $b, chr(0x5c));
+      $k_ipad = $key ^ $ipad ;
+      $k_opad = $key ^ $opad;
+
+      return md5($k_opad . pack("H*",md5($k_ipad . $data)));
+    }
+
+    function _InsertFP($loginid, $x_tran_key, $amount, $sequence, $currency = '') {
+      $tstamp = time();
+
+      $fingerprint = $this->_hmac($x_tran_key, $loginid . '^' . $sequence . '^' . $tstamp . '^' . $amount . '^' . $currency);
+
+      return tep_draw_hidden_field('x_fp_sequence', $sequence) .
+             tep_draw_hidden_field('x_fp_timestamp', $tstamp) .
+             tep_draw_hidden_field('x_fp_hash', $fingerprint);
+    }
+
+// format prices without currency formatting
+    function format_raw($number, $currency_code = '', $currency_value = '') {
+      global $currencies, $currency;
+
+      if (empty($currency_code) || !$this->is_set($currency_code)) {
+        $currency_code = $currency;
+      }
+
+      if (empty($currency_value) || !is_numeric($currency_value)) {
+        $currency_value = $currencies->currencies[$currency_code]['value'];
+      }
+
+      return number_format(tep_round($number * $currency_value, $currencies->currencies[$currency_code]['decimal_places']), $currencies->currencies[$currency_code]['decimal_places'], '.', '');
+    }
+  }
+?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/authorizenet.php 2.2rc2.src/includes/modules/payment/authorizenet.php
--- 2.2ms2-060817.src/includes/modules/payment/authorizenet.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/authorizenet.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,302 +0,0 @@
-<?php
-/*
-  $Id: authorizenet.php,v 1.48 2003/04/10 21:42:30 project3000 Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2003 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  class authorizenet {
-    var $code, $title, $description, $enabled;
-
-// class constructor
-    function authorizenet() {
-      global $order;
-
-      $this->code = 'authorizenet';
-      $this->title = MODULE_PAYMENT_AUTHORIZENET_TEXT_TITLE;
-      $this->description = MODULE_PAYMENT_AUTHORIZENET_TEXT_DESCRIPTION;
-      $this->enabled = ((MODULE_PAYMENT_AUTHORIZENET_STATUS == 'True') ? true : false);
-      $this->sort_order = MODULE_PAYMENT_AUTHORIZENET_SORT_ORDER;
-
-      if ((int)MODULE_PAYMENT_AUTHORIZENET_ORDER_STATUS_ID > 0) {
-        $this->order_status = MODULE_PAYMENT_AUTHORIZENET_ORDER_STATUS_ID;
-      }
-
-      if (is_object($order)) $this->update_status();
-
-      $this->form_action_url = 'https://secure.authorize.net/gateway/transact.dll';
-    }
-
-// Authorize.net utility functions
-// DISCLAIMER:
-//     This code 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.
-
-// Main Interfaces:
-//
-// function InsertFP ($loginid, $txnkey, $amount, $sequence) - Insert HTML form elements required for SIM
-// function CalculateFP ($loginid, $txnkey, $amount, $sequence, $tstamp) - Returns Fingerprint.
-
-// compute HMAC-MD5
-// Uses PHP mhash extension. Pl sure to enable the extension
-// function hmac ($key, $data) {
-//   return (bin2hex (mhash(MHASH_MD5, $data, $key)));
-//}
-
-// Thanks is lance from http://www.php.net/manual/en/function.mhash.php
-//lance_rushing at hot* spamfree *mail dot com
-//27-Nov-2002 09:36 
-// 
-//Want to Create a md5 HMAC, but don't have hmash installed?
-//
-//Use this:
-
-function hmac ($key, $data)
-{
-   // RFC 2104 HMAC implementation for php.
-   // Creates an md5 HMAC.
-   // Eliminates the need to install mhash to compute a HMAC
-   // Hacked by Lance Rushing
-
-   $b = 64; // byte length for md5
-   if (strlen($key) > $b) {
-       $key = pack("H*",md5($key));
-   }
-   $key  = str_pad($key, $b, chr(0x00));
-   $ipad = str_pad('', $b, chr(0x36));
-   $opad = str_pad('', $b, chr(0x5c));
-   $k_ipad = $key ^ $ipad ;
-   $k_opad = $key ^ $opad;
-
-   return md5($k_opad  . pack("H*",md5($k_ipad . $data)));
-}
-// end code from lance (resume authorize.net code)
-
-// Calculate and return fingerprint
-// Use when you need control on the HTML output
-function CalculateFP ($loginid, $txnkey, $amount, $sequence, $tstamp, $currency = "") {
-  return ($this->hmac ($txnkey, $loginid . "^" . $sequence . "^" . $tstamp . "^" . $amount . "^" . $currency));
-}
-
-// Inserts the hidden variables in the HTML FORM required for SIM
-// Invokes hmac function to calculate fingerprint.
-
-function InsertFP ($loginid, $txnkey, $amount, $sequence, $currency = "") {
-  $tstamp = time ();
-  $fingerprint = $this->hmac ($txnkey, $loginid . "^" . $sequence . "^" . $tstamp . "^" . $amount . "^" . $currency);
-
-  $str = tep_draw_hidden_field('x_fp_sequence', $sequence) .
-         tep_draw_hidden_field('x_fp_timestamp', $tstamp) .
-         tep_draw_hidden_field('x_fp_hash', $fingerprint);
-
-  return $str;
-}
-// end authorize.net code
-
-// class methods
-    function update_status() {
-      global $order;
-
-      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_AUTHORIZENET_ZONE > 0) ) {
-        $check_flag = false;
-        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_AUTHORIZENET_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
-        while ($check = tep_db_fetch_array($check_query)) {
-          if ($check['zone_id'] < 1) {
-            $check_flag = true;
-            break;
-          } elseif ($check['zone_id'] == $order->billing['zone_id']) {
-            $check_flag = true;
-            break;
-          }
-        }
-
-        if ($check_flag == false) {
-          $this->enabled = false;
-        }
-      }
-    }
-
-    function javascript_validation() {
-      $js = '  if (payment_value == "' . $this->code . '") {' . "\n" .
-            '    var cc_owner = document.checkout_payment.authorizenet_cc_owner.value;' . "\n" .
-            '    var cc_number = document.checkout_payment.authorizenet_cc_number.value;' . "\n" .
-            '    if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" .
-            '      error_message = error_message + "' . MODULE_PAYMENT_AUTHORIZENET_TEXT_JS_CC_OWNER . '";' . "\n" .
-            '      error = 1;' . "\n" .
-            '    }' . "\n" .
-            '    if (cc_number == "" || cc_number.length < ' . CC_NUMBER_MIN_LENGTH . ') {' . "\n" .
-            '      error_message = error_message + "' . MODULE_PAYMENT_AUTHORIZENET_TEXT_JS_CC_NUMBER . '";' . "\n" .
-            '      error = 1;' . "\n" .
-            '    }' . "\n" .
-            '  }' . "\n";
-
-      return $js;
-    }
-
-    function selection() {
-      global $order;
-
-      for ($i=1; $i<13; $i++) {
-        $expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000)));
-      }
-
-      $today = getdate(); 
-      for ($i=$today['year']; $i < $today['year']+10; $i++) {
-        $expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
-      }
-      $selection = array('id' => $this->code,
-                         'module' => $this->title,
-                         'fields' => array(array('title' => MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_OWNER,
-                                                 'field' => tep_draw_input_field('authorizenet_cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),
-                                           array('title' => MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_NUMBER,
-                                                 'field' => tep_draw_input_field('authorizenet_cc_number')),
-                                           array('title' => MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_EXPIRES,
-                                                 'field' => tep_draw_pull_down_menu('authorizenet_cc_expires_month', $expires_month) . '&nbsp;' . tep_draw_pull_down_menu('authorizenet_cc_expires_year', $expires_year))));
-
-      return $selection;
-    }
-
-    function pre_confirmation_check() {
-      global $HTTP_POST_VARS;
-
-      include(DIR_WS_CLASSES . 'cc_validation.php');
-
-      $cc_validation = new cc_validation();
-      $result = $cc_validation->validate($HTTP_POST_VARS['authorizenet_cc_number'], $HTTP_POST_VARS['authorizenet_cc_expires_month'], $HTTP_POST_VARS['authorizenet_cc_expires_year']);
-      $error = '';
-      switch ($result) {
-        case -1:
-          $error = sprintf(TEXT_CCVAL_ERROR_UNKNOWN_CARD, substr($cc_validation->cc_number, 0, 4));
-          break;
-        case -2:
-        case -3:
-        case -4:
-          $error = TEXT_CCVAL_ERROR_INVALID_DATE;
-          break;
-        case false:
-          $error = TEXT_CCVAL_ERROR_INVALID_NUMBER;
-          break;
-      }
-
-      if ( ($result == false) || ($result < 1) ) {
-        $payment_error_return = 'payment_error=' . $this->code . '&error=' . urlencode($error) . '&authorizenet_cc_owner=' . urlencode($HTTP_POST_VARS['authorizenet_cc_owner']) . '&authorizenet_cc_expires_month=' . $HTTP_POST_VARS['authorizenet_cc_expires_month'] . '&authorizenet_cc_expires_year=' . $HTTP_POST_VARS['authorizenet_cc_expires_year'];
-
-        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, $payment_error_return, 'SSL', true, false));
-      }
-
-      $this->cc_card_type = $cc_validation->cc_type;
-      $this->cc_card_number = $cc_validation->cc_number;
-      $this->cc_expiry_month = $cc_validation->cc_expiry_month;
-      $this->cc_expiry_year = $cc_validation->cc_expiry_year;
-    }
-
-    function confirmation() {
-      global $HTTP_POST_VARS;
-
-      $confirmation = array('title' => $this->title . ': ' . $this->cc_card_type,
-                            'fields' => array(array('title' => MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_OWNER,
-                                                    'field' => $HTTP_POST_VARS['authorizenet_cc_owner']),
-                                              array('title' => MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_NUMBER,
-                                                    'field' => substr($this->cc_card_number, 0, 4) . str_repeat('X', (strlen($this->cc_card_number) - 8)) . substr($this->cc_card_number, -4)),
-                                              array('title' => MODULE_PAYMENT_AUTHORIZENET_TEXT_CREDIT_CARD_EXPIRES,
-                                                    'field' => strftime('%B, %Y', mktime(0,0,0,$HTTP_POST_VARS['authorizenet_cc_expires_month'], 1, '20' . $HTTP_POST_VARS['authorizenet_cc_expires_year'])))));
-
-      return $confirmation;
-    }
-
-    function process_button() {
-      global $HTTP_SERVER_VARS, $order, $customer_id;
-
-      $sequence = rand(1, 1000);
-      $process_button_string = tep_draw_hidden_field('x_Login', MODULE_PAYMENT_AUTHORIZENET_LOGIN) .
-                               tep_draw_hidden_field('x_Card_Num', $this->cc_card_number) .
-                               tep_draw_hidden_field('x_Exp_Date', $this->cc_expiry_month . substr($this->cc_expiry_year, -2)) .
-                               tep_draw_hidden_field('x_Amount', number_format($order->info['total'], 2)) .
-                               tep_draw_hidden_field('x_Relay_URL', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', false)) .
-                               tep_draw_hidden_field('x_Method', ((MODULE_PAYMENT_AUTHORIZENET_METHOD == 'Credit Card') ? 'CC' : 'ECHECK')) .
-                               tep_draw_hidden_field('x_Version', '3.0') .
-                               tep_draw_hidden_field('x_Cust_ID', $customer_id) .
-                               tep_draw_hidden_field('x_Email_Customer', ((MODULE_PAYMENT_AUTHORIZENET_EMAIL_CUSTOMER == 'True') ? 'TRUE': 'FALSE')) .
-                               tep_draw_hidden_field('x_first_name', $order->billing['firstname']) .
-                               tep_draw_hidden_field('x_last_name', $order->billing['lastname']) .
-                               tep_draw_hidden_field('x_address', $order->billing['street_address']) .
-                               tep_draw_hidden_field('x_city', $order->billing['city']) .
-                               tep_draw_hidden_field('x_state', $order->billing['state']) .
-                               tep_draw_hidden_field('x_zip', $order->billing['postcode']) .
-                               tep_draw_hidden_field('x_country', $order->billing['country']['title']) .
-                               tep_draw_hidden_field('x_phone', $order->customer['telephone']) .
-                               tep_draw_hidden_field('x_email', $order->customer['email_address']) .
-                               tep_draw_hidden_field('x_ship_to_first_name', $order->delivery['firstname']) .
-                               tep_draw_hidden_field('x_ship_to_last_name', $order->delivery['lastname']) .
-                               tep_draw_hidden_field('x_ship_to_address', $order->delivery['street_address']) .
-                               tep_draw_hidden_field('x_ship_to_city', $order->delivery['city']) .
-                               tep_draw_hidden_field('x_ship_to_state', $order->delivery['state']) .
-                               tep_draw_hidden_field('x_ship_to_zip', $order->delivery['postcode']) .
-                               tep_draw_hidden_field('x_ship_to_country', $order->delivery['country']['title']) .
-                               tep_draw_hidden_field('x_Customer_IP', $HTTP_SERVER_VARS['REMOTE_ADDR']) .
-                               $this->InsertFP(MODULE_PAYMENT_AUTHORIZENET_LOGIN, MODULE_PAYMENT_AUTHORIZENET_TXNKEY, number_format($order->info['total'], 2), $sequence);
-      if (MODULE_PAYMENT_AUTHORIZENET_TESTMODE == 'Test') $process_button_string .= tep_draw_hidden_field('x_Test_Request', 'TRUE');
-
-      $process_button_string .= tep_draw_hidden_field(tep_session_name(), tep_session_id());
-
-      return $process_button_string;
-    }
-
-    function before_process() {
-      global $HTTP_POST_VARS;
-
-      if ($HTTP_POST_VARS['x_response_code'] == '1') return;
-      if ($HTTP_POST_VARS['x_response_code'] == '2') {
-        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_AUTHORIZENET_TEXT_DECLINED_MESSAGE), 'SSL', true, false));
-      }
-      // Code 3 is an error - but anything else is an error too (IMHO)
-      tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_AUTHORIZENET_TEXT_ERROR_MESSAGE), 'SSL', true, false));
-    }
-
-    function after_process() {
-      return false;
-    }
-
-    function get_error() {
-      global $HTTP_GET_VARS;
-
-      $error = array('title' => MODULE_PAYMENT_AUTHORIZENET_TEXT_ERROR,
-                     'error' => stripslashes(urldecode($HTTP_GET_VARS['error'])));
-
-      return $error;
-    }
-
-    function check() {
-      if (!isset($this->_check)) {
-        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_AUTHORIZENET_STATUS'");
-        $this->_check = tep_db_num_rows($check_query);
-      }
-      return $this->_check;
-    }
-
-    function install() {
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Authorize.net Module', 'MODULE_PAYMENT_AUTHORIZENET_STATUS', 'True', 'Do you want to accept Authorize.net payments?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Login Username', 'MODULE_PAYMENT_AUTHORIZENET_LOGIN', 'testing', 'The login username used for the Authorize.net service', '6', '0', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Transaction Key', 'MODULE_PAYMENT_AUTHORIZENET_TXNKEY', 'Test', 'Transaction Key used for encrypting TP data', '6', '0', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Mode', 'MODULE_PAYMENT_AUTHORIZENET_TESTMODE', 'Test', 'Transaction mode used for processing orders', '6', '0', 'tep_cfg_select_option(array(\'Test\', \'Production\'), ', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Method', 'MODULE_PAYMENT_AUTHORIZENET_METHOD', 'Credit Card', 'Transaction method used for processing orders', '6', '0', 'tep_cfg_select_option(array(\'Credit Card\', \'eCheck\'), ', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Customer Notifications', 'MODULE_PAYMENT_AUTHORIZENET_EMAIL_CUSTOMER', 'False', 'Should Authorize.Net e-mail a receipt to the customer?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_AUTHORIZENET_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_AUTHORIZENET_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_AUTHORIZENET_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
-    }
-
-    function remove() {
-      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
-    }
-
-    function keys() {
-      return array('MODULE_PAYMENT_AUTHORIZENET_STATUS', 'MODULE_PAYMENT_AUTHORIZENET_LOGIN', 'MODULE_PAYMENT_AUTHORIZENET_TXNKEY', 'MODULE_PAYMENT_AUTHORIZENET_TESTMODE', 'MODULE_PAYMENT_AUTHORIZENET_METHOD', 'MODULE_PAYMENT_AUTHORIZENET_EMAIL_CUSTOMER', 'MODULE_PAYMENT_AUTHORIZENET_ZONE', 'MODULE_PAYMENT_AUTHORIZENET_ORDER_STATUS_ID', 'MODULE_PAYMENT_AUTHORIZENET_SORT_ORDER');
-    }
-  }
-?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/cc.php 2.2rc2.src/includes/modules/payment/cc.php
--- 2.2ms2-060817.src/includes/modules/payment/cc.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/cc.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: cc.php,v 1.53 2003/02/04 09:55:01 project3000 Exp $
+  $Id: cc.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
@@ -19,6 +19,7 @@
 
       $this->code = 'cc';
       $this->title = MODULE_PAYMENT_CC_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_CC_TEXT_PUBLIC_TITLE;
       $this->description = MODULE_PAYMENT_CC_TEXT_DESCRIPTION;
       $this->sort_order = MODULE_PAYMENT_CC_SORT_ORDER;
       $this->enabled = ((MODULE_PAYMENT_CC_STATUS == 'True') ? true : false);
@@ -54,23 +55,19 @@
     }
 
     function javascript_validation() {
-      $js = '  if (payment_value == "' . $this->code . '") {' . "\n" .
-            '    var cc_owner = document.checkout_payment.cc_owner.value;' . "\n" .
-            '    var cc_number = document.checkout_payment.cc_number.value;' . "\n" .
-            '    if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" .
-            '      error_message = error_message + "' . MODULE_PAYMENT_CC_TEXT_JS_CC_OWNER . '";' . "\n" .
-            '      error = 1;' . "\n" .
-            '    }' . "\n" .
-            '    if (cc_number == "" || cc_number.length < ' . CC_NUMBER_MIN_LENGTH . ') {' . "\n" .
-            '      error_message = error_message + "' . MODULE_PAYMENT_CC_TEXT_JS_CC_NUMBER . '";' . "\n" .
-            '      error = 1;' . "\n" .
-            '    }' . "\n" .
-            '  }' . "\n";
-
-      return $js;
+      return false;
     }
 
     function selection() {
+      return array('id' => $this->code,
+                   'module' => $this->public_title);
+    }
+
+    function pre_confirmation_check() {
+      return false;
+    }
+
+    function confirmation() {
       global $order;
 
       for ($i=1; $i<13; $i++) {
@@ -82,25 +79,27 @@
         $expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
       }
 
-      $selection = array('id' => $this->code,
-                         'module' => $this->title,
-                         'fields' => array(array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_OWNER,
-                                                 'field' => tep_draw_input_field('cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),
-                                           array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_NUMBER,
-                                                 'field' => tep_draw_input_field('cc_number')),
-                                           array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES,
-                                                 'field' => tep_draw_pull_down_menu('cc_expires_month', $expires_month) . '&nbsp;' . tep_draw_pull_down_menu('cc_expires_year', $expires_year))));
+      $confirmation = array('fields' => array(array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_OWNER,
+                                                    'field' => tep_draw_input_field('cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),
+                                              array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_NUMBER,
+                                                    'field' => tep_draw_input_field('cc_number_nh-dns')),
+                                              array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES,
+                                                    'field' => tep_draw_pull_down_menu('cc_expires_month', $expires_month) . '&nbsp;' . tep_draw_pull_down_menu('cc_expires_year', $expires_year))));
 
-      return $selection;
+      return $confirmation;
     }
 
-    function pre_confirmation_check() {
-      global $HTTP_POST_VARS;
+    function process_button() {
+      return false;
+    }
+
+    function before_process() {
+      global $HTTP_POST_VARS, $order;
 
       include(DIR_WS_CLASSES . 'cc_validation.php');
 
       $cc_validation = new cc_validation();
-      $result = $cc_validation->validate($HTTP_POST_VARS['cc_number'], $HTTP_POST_VARS['cc_expires_month'], $HTTP_POST_VARS['cc_expires_year']);
+      $result = $cc_validation->validate($HTTP_POST_VARS['cc_number_nh-dns'], $HTTP_POST_VARS['cc_expires_month'], $HTTP_POST_VARS['cc_expires_year']);
 
       $error = '';
       switch ($result) {
@@ -123,43 +122,16 @@
         tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, $payment_error_return, 'SSL', true, false));
       }
 
-      $this->cc_card_type = $cc_validation->cc_type;
-      $this->cc_card_number = $cc_validation->cc_number;
-    }
-
-    function confirmation() {
-      global $HTTP_POST_VARS;
-
-      $confirmation = array('title' => $this->title . ': ' . $this->cc_card_type,
-                            'fields' => array(array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_OWNER,
-                                                    'field' => $HTTP_POST_VARS['cc_owner']),
-                                              array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_NUMBER,
-                                                    'field' => substr($this->cc_card_number, 0, 4) . str_repeat('X', (strlen($this->cc_card_number) - 8)) . substr($this->cc_card_number, -4)),
-                                              array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES,
-                                                    'field' => strftime('%B, %Y', mktime(0,0,0,$HTTP_POST_VARS['cc_expires_month'], 1, '20' . $HTTP_POST_VARS['cc_expires_year'])))));
-
-      return $confirmation;
-    }
-
-    function process_button() {
-      global $HTTP_POST_VARS;
-
-      $process_button_string = tep_draw_hidden_field('cc_owner', $HTTP_POST_VARS['cc_owner']) .
-                               tep_draw_hidden_field('cc_expires', $HTTP_POST_VARS['cc_expires_month'] . $HTTP_POST_VARS['cc_expires_year']) .
-                               tep_draw_hidden_field('cc_type', $this->cc_card_type) .
-                               tep_draw_hidden_field('cc_number', $this->cc_card_number);
-
-      return $process_button_string;
-    }
-
-    function before_process() {
-      global $HTTP_POST_VARS, $order;
+      $order->info['cc_owner'] = $HTTP_POST_VARS['cc_owner'];
+      $order->info['cc_type'] = $cc_validation->cc_type;
+      $order->info['cc_number'] = $HTTP_POST_VARS['cc_number_nh-dns'];
+      $order->info['cc_expires'] = $HTTP_POST_VARS['cc_expires_month'] . $HTTP_POST_VARS['cc_expires_year'];
 
       if ( (defined('MODULE_PAYMENT_CC_EMAIL')) && (tep_validate_email(MODULE_PAYMENT_CC_EMAIL)) ) {
-        $len = strlen($HTTP_POST_VARS['cc_number']);
+        $len = strlen($HTTP_POST_VARS['cc_number_nh-dns']);
 
-        $this->cc_middle = substr($HTTP_POST_VARS['cc_number'], 4, ($len-8));
-        $order->info['cc_number'] = substr($HTTP_POST_VARS['cc_number'], 0, 4) . str_repeat('X', (strlen($HTTP_POST_VARS['cc_number']) - 8)) . substr($HTTP_POST_VARS['cc_number'], -4);
+        $this->cc_middle = substr($HTTP_POST_VARS['cc_number_nh-dns'], 4, ($len-8));
+        $order->info['cc_number'] = substr($HTTP_POST_VARS['cc_number_nh-dns'], 0, 4) . str_repeat('X', (strlen($HTTP_POST_VARS['cc_number_nh-dns']) - 8)) . substr($HTTP_POST_VARS['cc_number_nh-dns'], -4);
       }
     }
 
diff -ruN 2.2ms2-060817.src/includes/modules/payment/chronopay.php 2.2rc2.src/includes/modules/payment/chronopay.php
--- 2.2ms2-060817.src/includes/modules/payment/chronopay.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/chronopay.php	2008-01-09 19:10:52.000000000 -0600
@@ -0,0 +1,561 @@
+<?php
+/*
+  $Id: chronopay.php 1782 2008-01-10 01:10:52Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  class chronopay {
+    var $code, $title, $description, $enabled;
+
+// class constructor
+    function chronopay() {
+      global $order;
+
+      $this->signature = 'chronopay|chronopay|1.0|2.2';
+
+      $this->code = 'chronopay';
+      $this->title = MODULE_PAYMENT_CHRONOPAY_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_CHRONOPAY_TEXT_PUBLIC_TITLE;
+      $this->description = MODULE_PAYMENT_CHRONOPAY_TEXT_DESCRIPTION;
+      $this->sort_order = MODULE_PAYMENT_CHRONOPAY_SORT_ORDER;
+      $this->enabled = ((MODULE_PAYMENT_CHRONOPAY_STATUS == 'True') ? true : false);
+
+      if ((int)MODULE_PAYMENT_CHRONOPAY_PREPARE_ORDER_STATUS_ID > 0) {
+        $this->order_status = MODULE_PAYMENT_CHRONOPAY_PREPARE_ORDER_STATUS_ID;
+      }
+
+      if (is_object($order)) $this->update_status();
+
+      $this->form_action_url = 'https://secure.chronopay.com/index_shop.cgi';
+    }
+
+// class methods
+    function update_status() {
+      global $order;
+
+      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_CHRONOPAY_ZONE > 0) ) {
+        $check_flag = false;
+        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_CHRONOPAY_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
+        while ($check = tep_db_fetch_array($check_query)) {
+          if ($check['zone_id'] < 1) {
+            $check_flag = true;
+            break;
+          } elseif ($check['zone_id'] == $order->billing['zone_id']) {
+            $check_flag = true;
+            break;
+          }
+        }
+
+        if ($check_flag == false) {
+          $this->enabled = false;
+        }
+      }
+    }
+
+    function javascript_validation() {
+      return false;
+    }
+
+    function selection() {
+      global $cart_ChronoPay_ID;
+
+      if (tep_session_is_registered('cart_ChronoPay_ID')) {
+        $order_id = substr($cart_ChronoPay_ID, strpos($cart_ChronoPay_ID, '-')+1);
+
+        $check_query = tep_db_query('select orders_id from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '" limit 1');
+
+        if (tep_db_num_rows($check_query) < 1) {
+          tep_db_query('delete from ' . TABLE_ORDERS . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_TOTAL . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_DOWNLOAD . ' where orders_id = "' . (int)$order_id . '"');
+
+          tep_session_unregister('cart_ChronoPay_ID');
+        }
+      }
+
+      return array('id' => $this->code,
+                   'module' => $this->public_title);
+    }
+
+    function pre_confirmation_check() {
+      global $cartID, $cart;
+
+      if (empty($cart->cartID)) {
+        $cartID = $cart->cartID = $cart->generate_cart_id();
+      }
+
+      if (!tep_session_is_registered('cartID')) {
+        tep_session_register('cartID');
+      }
+    }
+
+    function confirmation() {
+      global $cartID, $cart_ChronoPay_ID, $customer_id, $languages_id, $order, $order_total_modules;
+
+      if (tep_session_is_registered('cartID')) {
+        $insert_order = false;
+
+        if (tep_session_is_registered('cart_ChronoPay_ID')) {
+          $order_id = substr($cart_ChronoPay_ID, strpos($cart_ChronoPay_ID, '-')+1);
+
+          $curr_check = tep_db_query("select currency from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
+          $curr = tep_db_fetch_array($curr_check);
+
+          if ( ($curr['currency'] != $order->info['currency']) || ($cartID != substr($cart_ChronoPay_ID, 0, strlen($cartID))) ) {
+            $check_query = tep_db_query('select orders_id from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '" limit 1');
+
+            if (tep_db_num_rows($check_query) < 1) {
+              tep_db_query('delete from ' . TABLE_ORDERS . ' where orders_id = "' . (int)$order_id . '"');
+              tep_db_query('delete from ' . TABLE_ORDERS_TOTAL . ' where orders_id = "' . (int)$order_id . '"');
+              tep_db_query('delete from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '"');
+              tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS . ' where orders_id = "' . (int)$order_id . '"');
+              tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . ' where orders_id = "' . (int)$order_id . '"');
+              tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_DOWNLOAD . ' where orders_id = "' . (int)$order_id . '"');
+            }
+
+            $insert_order = true;
+          }
+        } else {
+          $insert_order = true;
+        }
+
+        if ($insert_order == true) {
+          $order_totals = array();
+          if (is_array($order_total_modules->modules)) {
+            reset($order_total_modules->modules);
+            while (list(, $value) = each($order_total_modules->modules)) {
+              $class = substr($value, 0, strrpos($value, '.'));
+              if ($GLOBALS[$class]->enabled) {
+                for ($i=0, $n=sizeof($GLOBALS[$class]->output); $i<$n; $i++) {
+                  if (tep_not_null($GLOBALS[$class]->output[$i]['title']) && tep_not_null($GLOBALS[$class]->output[$i]['text'])) {
+                    $order_totals[] = array('code' => $GLOBALS[$class]->code,
+                                            'title' => $GLOBALS[$class]->output[$i]['title'],
+                                            'text' => $GLOBALS[$class]->output[$i]['text'],
+                                            'value' => $GLOBALS[$class]->output[$i]['value'],
+                                            'sort_order' => $GLOBALS[$class]->sort_order);
+                  }
+                }
+              }
+            }
+          }
+
+          $sql_data_array = array('customers_id' => $customer_id,
+                                  'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
+                                  'customers_company' => $order->customer['company'],
+                                  'customers_street_address' => $order->customer['street_address'],
+                                  'customers_suburb' => $order->customer['suburb'],
+                                  'customers_city' => $order->customer['city'],
+                                  'customers_postcode' => $order->customer['postcode'],
+                                  'customers_state' => $order->customer['state'],
+                                  'customers_country' => $order->customer['country']['title'],
+                                  'customers_telephone' => $order->customer['telephone'],
+                                  'customers_email_address' => $order->customer['email_address'],
+                                  'customers_address_format_id' => $order->customer['format_id'],
+                                  'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],
+                                  'delivery_company' => $order->delivery['company'],
+                                  'delivery_street_address' => $order->delivery['street_address'],
+                                  'delivery_suburb' => $order->delivery['suburb'],
+                                  'delivery_city' => $order->delivery['city'],
+                                  'delivery_postcode' => $order->delivery['postcode'],
+                                  'delivery_state' => $order->delivery['state'],
+                                  'delivery_country' => $order->delivery['country']['title'],
+                                  'delivery_address_format_id' => $order->delivery['format_id'],
+                                  'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
+                                  'billing_company' => $order->billing['company'],
+                                  'billing_street_address' => $order->billing['street_address'],
+                                  'billing_suburb' => $order->billing['suburb'],
+                                  'billing_city' => $order->billing['city'],
+                                  'billing_postcode' => $order->billing['postcode'],
+                                  'billing_state' => $order->billing['state'],
+                                  'billing_country' => $order->billing['country']['title'],
+                                  'billing_address_format_id' => $order->billing['format_id'],
+                                  'payment_method' => $order->info['payment_method'],
+                                  'cc_type' => $order->info['cc_type'],
+                                  'cc_owner' => $order->info['cc_owner'],
+                                  'cc_number' => $order->info['cc_number'],
+                                  'cc_expires' => $order->info['cc_expires'],
+                                  'date_purchased' => 'now()',
+                                  'orders_status' => $order->info['order_status'],
+                                  'currency' => $order->info['currency'],
+                                  'currency_value' => $order->info['currency_value']);
+
+          tep_db_perform(TABLE_ORDERS, $sql_data_array);
+
+          $insert_id = tep_db_insert_id();
+
+          for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
+            $sql_data_array = array('orders_id' => $insert_id,
+                                    'title' => $order_totals[$i]['title'],
+                                    'text' => $order_totals[$i]['text'],
+                                    'value' => $order_totals[$i]['value'],
+                                    'class' => $order_totals[$i]['code'],
+                                    'sort_order' => $order_totals[$i]['sort_order']);
+
+            tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
+          }
+
+          for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+            $sql_data_array = array('orders_id' => $insert_id,
+                                    'products_id' => tep_get_prid($order->products[$i]['id']),
+                                    'products_model' => $order->products[$i]['model'],
+                                    'products_name' => $order->products[$i]['name'],
+                                    'products_price' => $order->products[$i]['price'],
+                                    'final_price' => $order->products[$i]['final_price'],
+                                    'products_tax' => $order->products[$i]['tax'],
+                                    'products_quantity' => $order->products[$i]['qty']);
+
+            tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);
+
+            $order_products_id = tep_db_insert_id();
+
+            $attributes_exist = '0';
+            if (isset($order->products[$i]['attributes'])) {
+              $attributes_exist = '1';
+              for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
+                if (DOWNLOAD_ENABLED == 'true') {
+                  $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
+                                       from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                       left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                       on pa.products_attributes_id=pad.products_attributes_id
+                                       where pa.products_id = '" . $order->products[$i]['id'] . "'
+                                       and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
+                                       and pa.options_id = popt.products_options_id
+                                       and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
+                                       and pa.options_values_id = poval.products_options_values_id
+                                       and popt.language_id = '" . $languages_id . "'
+                                       and poval.language_id = '" . $languages_id . "'";
+                  $attributes = tep_db_query($attributes_query);
+                } else {
+                  $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
+                }
+                $attributes_values = tep_db_fetch_array($attributes);
+
+                $sql_data_array = array('orders_id' => $insert_id,
+                                        'orders_products_id' => $order_products_id,
+                                        'products_options' => $attributes_values['products_options_name'],
+                                        'products_options_values' => $attributes_values['products_options_values_name'],
+                                        'options_values_price' => $attributes_values['options_values_price'],
+                                        'price_prefix' => $attributes_values['price_prefix']);
+
+                tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);
+
+                if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) {
+                  $sql_data_array = array('orders_id' => $insert_id,
+                                          'orders_products_id' => $order_products_id,
+                                          'orders_products_filename' => $attributes_values['products_attributes_filename'],
+                                          'download_maxdays' => $attributes_values['products_attributes_maxdays'],
+                                          'download_count' => $attributes_values['products_attributes_maxcount']);
+
+                  tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);
+                }
+              }
+            }
+          }
+
+          $cart_ChronoPay_ID = $cartID . '-' . $insert_id;
+          tep_session_register('cart_ChronoPay_ID');
+        }
+      }
+
+      return false;
+    }
+
+    function process_button() {
+      global $customer_id, $order, $currencies, $currency, $languages_id, $cart_ChronoPay_ID;
+
+      switch ($order->billing['country']['iso_code_3']) {
+        case 'USA':
+        case 'CAN':
+          $zone_query = tep_db_query("select zone_code from " . TABLE_ZONES . " where zone_id = '" . (int)$order->billing['zone_id'] . "'");
+          $zone = tep_db_fetch_array($zone_query);
+
+          $state_code = $zone['zone_code'];
+          break;
+
+        default:
+          $state_code = 'XX';
+          break;
+      }
+
+      $lang_query = tep_db_query("select code from " . TABLE_LANGUAGES . " where languages_id = '" . (int)$languages_id . "'");
+      $lang = tep_db_fetch_array($lang_query);
+
+      switch (strtoupper($lang['code'])) {
+        case 'EN':
+        case 'RU':
+        case 'NL':
+        case 'ES':
+          $language_code = strtoupper($lang['code']);
+          break;
+
+        default:
+          $language_code = strtoupper(DEFAULT_LANGUAGE);
+      }
+
+      $total_price = number_format($order->info['total'] * $currencies->get_value('USD'), $currencies->currencies['USD']['decimal_places'], '.', '');
+      $order_id = substr($cart_ChronoPay_ID, strpos($cart_ChronoPay_ID, '-')+1);
+
+      $process_button_string = tep_draw_hidden_field('product_id', MODULE_PAYMENT_CHRONOPAY_PRODUCT_ID) .
+                               tep_draw_hidden_field('product_name', STORE_NAME) .
+                               tep_draw_hidden_field('product_price', $total_price) .
+                               tep_draw_hidden_field('product_price_currency', $currency) .
+                               tep_draw_hidden_field('cb_url', urlencode(tep_href_link('ext/modules/payment/chronopay/callback.php', '' , 'SSL', true, true, true))) .
+                               tep_draw_hidden_field('cb_type', 'P') .
+                               tep_draw_hidden_field('decline_url', urlencode(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'))) .
+                               tep_draw_hidden_field('language', $language_code) .
+                               tep_draw_hidden_field('f_name', $order->billing['firstname']) .
+                               tep_draw_hidden_field('s_name', $order->billing['lastname']) .
+                               tep_draw_hidden_field('street', $order->billing['street_address']) .
+                               tep_draw_hidden_field('city', $order->billing['city']) .
+                               tep_draw_hidden_field('state', $state_code) .
+                               tep_draw_hidden_field('zip', $order->billing['postcode']) .
+                               tep_draw_hidden_field('country', $order->billing['country']['iso_code_3']) .
+                               tep_draw_hidden_field('phone', $order->customer['telephone']) .
+                               tep_draw_hidden_field('email', $order->customer['email_address']) .
+                               tep_draw_hidden_field('cs1', $customer_id) .
+                               tep_draw_hidden_field('cs2', $order_id) .
+                               tep_draw_hidden_field('cs3', md5(MODULE_PAYMENT_CHRONOPAY_PRODUCT_ID . $order_id . $customer_id . $total_price . MODULE_PAYMENT_CHRONOPAY_MD5_HASH));
+
+      return $process_button_string;
+    }
+
+    function before_process() {
+      global $customer_id, $order, $order_totals, $sendto, $billto, $languages_id, $payment, $currencies, $cart, $cart_ChronoPay_ID;
+      global $$payment;
+
+      $order_id = substr($cart_ChronoPay_ID, strpos($cart_ChronoPay_ID, '-')+1);
+
+      $check_query = tep_db_query("select orders_status from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
+      if (tep_db_num_rows($check_query)) {
+        $check = tep_db_fetch_array($check_query);
+
+        if ($check['orders_status'] == MODULE_PAYMENT_CHRONOPAY_PREPARE_ORDER_STATUS_ID) {
+          $sql_data_array = array('orders_id' => $order_id,
+                                  'orders_status_id' => MODULE_PAYMENT_CHRONOPAY_PREPARE_ORDER_STATUS_ID,
+                                  'date_added' => 'now()',
+                                  'customer_notified' => '0',
+                                  'comments' => '');
+
+          tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+        }
+      }
+
+      tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . (MODULE_PAYMENT_CHRONOPAY_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_CHRONOPAY_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID) . "', last_modified = now() where orders_id = '" . (int)$order_id . "'");
+
+      $sql_data_array = array('orders_id' => $order_id,
+                              'orders_status_id' => (MODULE_PAYMENT_CHRONOPAY_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_CHRONOPAY_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID),
+                              'date_added' => 'now()',
+                              'customer_notified' => (SEND_EMAILS == 'true') ? '1' : '0',
+                              'comments' => $order->info['comments']);
+
+      tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+
+// initialized for the email confirmation
+      $products_ordered = '';
+      $subtotal = 0;
+      $total_tax = 0;
+
+      for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+// Stock Update - Joao Correia
+        if (STOCK_LIMITED == 'true') {
+          if (DOWNLOAD_ENABLED == 'true') {
+            $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
+                                FROM " . TABLE_PRODUCTS . " p
+                                LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                ON p.products_id=pa.products_id
+                                LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                ON pa.products_attributes_id=pad.products_attributes_id
+                                WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";
+// Will work with only one option for downloadable products
+// otherwise, we have to build the query dynamically with a loop
+            $products_attributes = $order->products[$i]['attributes'];
+            if (is_array($products_attributes)) {
+              $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";
+            }
+            $stock_query = tep_db_query($stock_query_raw);
+          } else {
+            $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+          }
+          if (tep_db_num_rows($stock_query) > 0) {
+            $stock_values = tep_db_fetch_array($stock_query);
+// do not decrement quantities if products_attributes_filename exists
+            if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
+              $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];
+            } else {
+              $stock_left = $stock_values['products_quantity'];
+            }
+            tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+            if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
+              tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+            }
+          }
+        }
+
+// Update products_ordered (for bestsellers list)
+        tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+
+//------insert customer choosen option to order--------
+        $attributes_exist = '0';
+        $products_ordered_attributes = '';
+        if (isset($order->products[$i]['attributes'])) {
+          $attributes_exist = '1';
+          for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
+            if (DOWNLOAD_ENABLED == 'true') {
+              $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
+                                   from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                   left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                   on pa.products_attributes_id=pad.products_attributes_id
+                                   where pa.products_id = '" . $order->products[$i]['id'] . "'
+                                   and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
+                                   and pa.options_id = popt.products_options_id
+                                   and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
+                                   and pa.options_values_id = poval.products_options_values_id
+                                   and popt.language_id = '" . $languages_id . "'
+                                   and poval.language_id = '" . $languages_id . "'";
+              $attributes = tep_db_query($attributes_query);
+            } else {
+              $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
+            }
+            $attributes_values = tep_db_fetch_array($attributes);
+
+            $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];
+          }
+        }
+//------insert customer choosen option eof ----
+        $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
+        $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
+        $total_cost += $total_products_price;
+
+        $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
+      }
+
+// lets start with the email confirmation
+      $email_order = STORE_NAME . "\n" .
+                     EMAIL_SEPARATOR . "\n" .
+                     EMAIL_TEXT_ORDER_NUMBER . ' ' . $order_id . "\n" .
+                     EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $order_id, 'SSL', false) . "\n" .
+                     EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
+      if ($order->info['comments']) {
+        $email_order .= tep_db_output($order->info['comments']) . "\n\n";
+      }
+      $email_order .= EMAIL_TEXT_PRODUCTS . "\n" .
+                      EMAIL_SEPARATOR . "\n" .
+                      $products_ordered .
+                      EMAIL_SEPARATOR . "\n";
+
+      for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
+        $email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
+      }
+
+      if ($order->content_type != 'virtual') {
+        $email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
+                        EMAIL_SEPARATOR . "\n" .
+                        tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
+      }
+
+      $email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
+                      EMAIL_SEPARATOR . "\n" .
+                      tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
+
+      if (is_object($$payment)) {
+        $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
+                        EMAIL_SEPARATOR . "\n";
+        $payment_class = $$payment;
+        $email_order .= $payment_class->title . "\n\n";
+        if ($payment_class->email_footer) {
+          $email_order .= $payment_class->email_footer . "\n\n";
+        }
+      }
+
+      tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
+
+// send emails to other people
+      if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
+        tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
+      }
+
+// load the after_process function from the payment modules
+      $this->after_process();
+
+      $cart->reset(true);
+
+// unregister session variables used during checkout
+      tep_session_unregister('sendto');
+      tep_session_unregister('billto');
+      tep_session_unregister('shipping');
+      tep_session_unregister('payment');
+      tep_session_unregister('comments');
+
+      tep_session_unregister('cart_ChronoPay_ID');
+
+      tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
+    }
+
+    function after_process() {
+      return false;
+    }
+
+    function output_error() {
+      return false;
+    }
+
+    function check() {
+      if (!isset($this->_check)) {
+        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_CHRONOPAY_STATUS'");
+        $this->_check = tep_db_num_rows($check_query);
+      }
+      return $this->_check;
+    }
+
+    function install() {
+      $check_query = tep_db_query("select orders_status_id from " . TABLE_ORDERS_STATUS . " where orders_status_name = 'Preparing [ChronoPay]' limit 1");
+
+      if (tep_db_num_rows($check_query) < 1) {
+        $status_query = tep_db_query("select max(orders_status_id) as status_id from " . TABLE_ORDERS_STATUS);
+        $status = tep_db_fetch_array($status_query);
+
+        $status_id = $status['status_id']+1;
+
+        $languages = tep_get_languages();
+
+        for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
+          tep_db_query("insert into " . TABLE_ORDERS_STATUS . " (orders_status_id, language_id, orders_status_name) values ('" . $status_id . "', '" . $languages[$i]['id'] . "', 'Preparing [ChronoPay]')");
+        }
+
+        $flags_query = tep_db_query("describe " . TABLE_ORDERS_STATUS . " public_flag");
+        if (tep_db_num_rows($flags_query) == 1) {
+          tep_db_query("update " . TABLE_ORDERS_STATUS . " set public_flag = 0 and downloads_flag = 0 where orders_status_id = '" . $status_id . "'");
+        }
+      } else {
+        $check = tep_db_fetch_array($check_query);
+
+        $status_id = $check['orders_status_id'];
+      }
+
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable ChronoPay', 'MODULE_PAYMENT_CHRONOPAY_STATUS', 'False', 'Do you want to accept ChronoPay payments?', '6', '3', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('ChronoPay Product ID', 'MODULE_PAYMENT_CHRONOPAY_PRODUCT_ID', '', 'The product ID to assign transactions to.', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('MD5 Hash Signature', 'MODULE_PAYMENT_CHRONOPAY_MD5_HASH', '', 'Use this value to verify transactions with.', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_CHRONOPAY_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Preparing Order Status', 'MODULE_PAYMENT_CHRONOPAY_PREPARE_ORDER_STATUS_ID', '" . $status_id . "', 'Set the status of prepared orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set ChronoPay Acknowledged Order Status', 'MODULE_PAYMENT_CHRONOPAY_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_CHRONOPAY_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
+    }
+
+    function remove() {
+      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
+    }
+
+    function keys() {
+      return array('MODULE_PAYMENT_CHRONOPAY_STATUS', 'MODULE_PAYMENT_CHRONOPAY_PRODUCT_ID', 'MODULE_PAYMENT_CHRONOPAY_MD5_HASH', 'MODULE_PAYMENT_CHRONOPAY_ZONE', 'MODULE_PAYMENT_CHRONOPAY_PREPARE_ORDER_STATUS_ID', 'MODULE_PAYMENT_CHRONOPAY_ORDER_STATUS_ID', 'MODULE_PAYMENT_CHRONOPAY_SORT_ORDER');
+    }
+  }
+?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/cod.php 2.2rc2.src/includes/modules/payment/cod.php
--- 2.2ms2-060817.src/includes/modules/payment/cod.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/cod.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: cod.php,v 1.28 2003/02/14 05:51:31 hpdl Exp $
+  $Id: cod.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/payment/ipayment_cc.php 2.2rc2.src/includes/modules/payment/ipayment_cc.php
--- 2.2ms2-060817.src/includes/modules/payment/ipayment_cc.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/ipayment_cc.php	2008-01-14 04:55:23.000000000 -0600
@@ -0,0 +1,211 @@
+<?php
+/*
+  $Id: ipayment_cc.php 1815 2008-01-14 10:55:23Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  class ipayment_cc {
+    var $code, $title, $description, $enabled;
+
+// class constructor
+    function ipayment_cc() {
+      global $order;
+
+      $this->signature = 'ipayment|ipayment_cc|1.0|2.2';
+
+      $this->code = 'ipayment_cc';
+      $this->title = MODULE_PAYMENT_IPAYMENT_CC_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_IPAYMENT_CC_TEXT_PUBLIC_TITLE;
+      $this->description = MODULE_PAYMENT_IPAYMENT_CC_TEXT_DESCRIPTION;
+      $this->sort_order = MODULE_PAYMENT_IPAYMENT_CC_SORT_ORDER;
+      $this->enabled = ((MODULE_PAYMENT_IPAYMENT_CC_STATUS == 'True') ? true : false);
+
+      if ((int)MODULE_PAYMENT_IPAYMENT_CC_ORDER_STATUS_ID > 0) {
+        $this->order_status = MODULE_PAYMENT_IPAYMENT_CC_ORDER_STATUS_ID;
+      }
+
+      if (is_object($order)) $this->update_status();
+
+      $this->form_action_url = 'https://ipayment.de/merchant/' . MODULE_PAYMENT_IPAYMENT_CC_ID . '/processor.php';
+    }
+
+// class methods
+    function update_status() {
+      global $order;
+
+      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_IPAYMENT_CC_ZONE > 0) ) {
+        $check_flag = false;
+        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_IPAYMENT_CC_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
+        while ($check = tep_db_fetch_array($check_query)) {
+          if ($check['zone_id'] < 1) {
+            $check_flag = true;
+            break;
+          } elseif ($check['zone_id'] == $order->billing['zone_id']) {
+            $check_flag = true;
+            break;
+          }
+        }
+
+        if ($check_flag == false) {
+          $this->enabled = false;
+        }
+      }
+    }
+
+    function javascript_validation() {
+      return false;
+    }
+
+    function selection() {
+      return array('id' => $this->code,
+                   'module' => $this->public_title);
+    }
+
+    function pre_confirmation_check() {
+      return false;
+    }
+
+    function confirmation() {
+      global $order;
+
+      for ($i=1; $i<13; $i++) {
+        $expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000)));
+      }
+
+      $today = getdate(); 
+      for ($i=$today['year']; $i < $today['year']+10; $i++) {
+        $expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
+      }
+
+      $confirmation = array('fields' => array(array('title' => MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_OWNER,
+                                                    'field' => tep_draw_input_field('addr_name', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),
+                                              array('title' => MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_NUMBER,
+                                                    'field' => tep_draw_input_field('cc_number')),
+                                              array('title' => MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES,
+                                                    'field' => tep_draw_pull_down_menu('cc_expdate_month', $expires_month) . '&nbsp;' . tep_draw_pull_down_menu('cc_expdate_year', $expires_year)),
+                                              array('title' => MODULE_PAYMENT_IPAYMENT_CC_TEXT_CREDIT_CARD_CHECKNUMBER,
+                                                    'field' => tep_draw_input_field('cc_checkcode', '', 'size="5" maxlength="4"'))));
+
+      return $confirmation;
+    }
+
+    function process_button() {
+      global $order, $currency;
+
+      $zone_code = '';
+
+      if (is_numeric($order->billing['zone_id']) && ($order->billing['zone_id'] > 0)) {
+        $zone_query = tep_db_query("select zone_code from " . TABLE_ZONES . " where zone_id = '" . (int)$order->billing['zone_id'] . "'");
+        if (tep_db_num_rows($zone_query)) {
+          $zone = tep_db_fetch_array($zone_query);
+
+          $zone_code = $zone['zone_code'];
+        }
+      }
+
+      $process_button_string = tep_draw_hidden_field('silent', '1') .
+                               tep_draw_hidden_field('trx_paymenttyp', 'cc') .
+                               tep_draw_hidden_field('trxuser_id', MODULE_PAYMENT_IPAYMENT_CC_USER_ID) .
+                               tep_draw_hidden_field('trxpassword', MODULE_PAYMENT_IPAYMENT_CC_PASSWORD) .
+//                               tep_draw_hidden_field('order_id', '') .
+//                               tep_draw_hidden_field('strict_id_check', 1) .
+                               tep_draw_hidden_field('from_ip', tep_get_ip_address()) .
+                               tep_draw_hidden_field('trx_currency', $currency) .
+                               tep_draw_hidden_field('trx_amount', $this->format_raw($order->info['total'])*100) .
+                               tep_draw_hidden_field('trx_typ', ((MODULE_PAYMENT_IPAYMENT_CC_TRANSACTION_METHOD == 'Capture') ? 'auth' : 'preauth')) .
+                               tep_draw_hidden_field('addr_email', $order->customer['email_address']) .
+                               tep_draw_hidden_field('addr_street', $order->billing['street_address']) .
+                               tep_draw_hidden_field('addr_city', $order->billing['city']) .
+                               tep_draw_hidden_field('addr_zip', $order->billing['postcode']) .
+                               tep_draw_hidden_field('addr_country', $order->billing['country']['iso_code_2']) .
+                               tep_draw_hidden_field('addr_state', $zone_code) .
+                               tep_draw_hidden_field('addr_telefon', $order->customer['telephone']) .
+                               tep_draw_hidden_field('redirect_url', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', true)) .
+                               tep_draw_hidden_field('silent_error_url', tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code, 'SSL', true)) .
+                               tep_draw_hidden_field('client_name', 'oscommerce') .
+                               tep_draw_hidden_field('client_version', PROJECT_VERSION);
+
+      if (tep_not_null(MODULE_PAYMENT_IPAYMENT_CC_SECRET_HASH_PASSWORD)) {
+        $process_button_string .= tep_draw_hidden_field('trx_securityhash', md5(MODULE_PAYMENT_IPAYMENT_CC_USER_ID . ($this->format_raw($order->info['total']) * 100) . $currency . MODULE_PAYMENT_IPAYMENT_CC_PASSWORD . MODULE_PAYMENT_IPAYMENT_CC_SECRET_HASH_PASSWORD));
+      }
+
+      return $process_button_string;
+    }
+
+    function before_process() {
+      global $HTTP_GET_VARS, $order, $currency;
+
+      if ($HTTP_GET_VARS['ret_errorcode'] != '0') {
+        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code . '&error=' . tep_output_string_protected($HTTP_GET_VARS['ret_errormsg'])));
+      }
+
+      if (tep_not_null(MODULE_PAYMENT_IPAYMENT_CC_SECRET_HASH_PASSWORD) && ($HTTP_GET_VARS['ret_param_checksum'] != md5(MODULE_PAYMENT_IPAYMENT_CC_USER_ID . ($this->format_raw($order->info['total']) * 100) . $currency . $HTTP_GET_VARS['ret_authcode'] . $HTTP_GET_VARS['ret_booknr'] . MODULE_PAYMENT_IPAYMENT_CC_SECRET_HASH_PASSWORD))) {
+        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code));
+      }
+
+      return false;
+    }
+
+    function after_process() {
+      return false;
+    }
+
+    function get_error() {
+      global $HTTP_GET_VARS;
+
+      $error = array('title' => MODULE_PAYMENT_IPAYMENT_CC_ERROR_HEADING,
+                     'error' => ((isset($HTTP_GET_VARS['error'])) ? stripslashes(urldecode($HTTP_GET_VARS['error'])) : MODULE_PAYMENT_IPAYMENT_CC_ERROR_MESSAGE));
+
+      return $error;
+    }
+
+    function check() {
+      if (!isset($this->_check)) {
+        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_IPAYMENT_CC_STATUS'");
+        $this->_check = tep_db_num_rows($check_query);
+      }
+      return $this->_check;
+    }
+
+    function install() {
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable iPayment', 'MODULE_PAYMENT_IPAYMENT_CC_STATUS', 'False', 'Do you want to accept iPayment payments?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Account Number', 'MODULE_PAYMENT_IPAYMENT_CC_ID', '99999', 'The account number used for the iPayment service', '6', '2', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('User ID', 'MODULE_PAYMENT_IPAYMENT_CC_USER_ID', '99999', 'The user ID for the iPayment service', '6', '3', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('User Password', 'MODULE_PAYMENT_IPAYMENT_CC_PASSWORD', '0', 'The user password for the iPayment service', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Method', 'MODULE_PAYMENT_IPAYMENT_CC_TRANSACTION_METHOD', 'Authorization', 'The processing method to use for each transaction.', '6', '0', 'tep_cfg_select_option(array(\'Authorization\', \'Capture\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Secret Hash Password', 'MODULE_PAYMENT_IPAYMENT_CC_SECRET_HASH_PASSWORD', '', 'The secret hash password to validate transactions with', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_IPAYMENT_CC_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_IPAYMENT_CC_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_IPAYMENT_CC_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+    }
+
+    function remove() {
+      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
+    }
+
+    function keys() {
+      return array('MODULE_PAYMENT_IPAYMENT_CC_STATUS', 'MODULE_PAYMENT_IPAYMENT_CC_ID', 'MODULE_PAYMENT_IPAYMENT_CC_USER_ID', 'MODULE_PAYMENT_IPAYMENT_CC_PASSWORD', 'MODULE_PAYMENT_IPAYMENT_CC_TRANSACTION_METHOD', 'MODULE_PAYMENT_IPAYMENT_CC_SECRET_HASH_PASSWORD', 'MODULE_PAYMENT_IPAYMENT_CC_ZONE', 'MODULE_PAYMENT_IPAYMENT_CC_ORDER_STATUS_ID', 'MODULE_PAYMENT_IPAYMENT_CC_SORT_ORDER');
+    }
+
+// format prices without currency formatting
+    function format_raw($number, $currency_code = '', $currency_value = '') {
+      global $currencies, $currency;
+
+      if (empty($currency_code) || !$this->is_set($currency_code)) {
+        $currency_code = $currency;
+      }
+
+      if (empty($currency_value) || !is_numeric($currency_value)) {
+        $currency_value = $currencies->currencies[$currency_code]['value'];
+      }
+
+      return number_format(tep_round($number * $currency_value, $currencies->currencies[$currency_code]['decimal_places']), $currencies->currencies[$currency_code]['decimal_places'], '.', '');
+    }
+  }
+?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/ipayment.php 2.2rc2.src/includes/modules/payment/ipayment.php
--- 2.2ms2-060817.src/includes/modules/payment/ipayment.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/ipayment.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,244 +0,0 @@
-<?php
-/*
-  $Id: ipayment.php,v 1.32 2003/01/29 19:57:14 hpdl Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2003 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  class ipayment {
-    var $code, $title, $description, $enabled;
-
-// class constructor
-    function ipayment() {
-      global $order;
-
-      $this->code = 'ipayment';
-      $this->title = MODULE_PAYMENT_IPAYMENT_TEXT_TITLE;
-      $this->description = MODULE_PAYMENT_IPAYMENT_TEXT_DESCRIPTION;
-      $this->sort_order = MODULE_PAYMENT_IPAYMENT_SORT_ORDER;
-      $this->enabled = ((MODULE_PAYMENT_IPAYMENT_STATUS == 'True') ? true : false);
-
-      if ((int)MODULE_PAYMENT_IPAYMENT_ORDER_STATUS_ID > 0) {
-        $this->order_status = MODULE_PAYMENT_IPAYMENT_ORDER_STATUS_ID;
-      }
-
-      if (is_object($order)) $this->update_status();
-
-      $this->form_action_url = 'https://ipayment.de/merchant/' . MODULE_PAYMENT_IPAYMENT_ID . '/processor.php';
-    }
-
-// class methods
-    function update_status() {
-      global $order;
-
-      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_IPAYMENT_ZONE > 0) ) {
-        $check_flag = false;
-        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_IPAYMENT_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
-        while ($check = tep_db_fetch_array($check_query)) {
-          if ($check['zone_id'] < 1) {
-            $check_flag = true;
-            break;
-          } elseif ($check['zone_id'] == $order->billing['zone_id']) {
-            $check_flag = true;
-            break;
-          }
-        }
-
-        if ($check_flag == false) {
-          $this->enabled = false;
-        }
-      }
-    }
-
-    function javascript_validation() {
-      $js = '  if (payment_value == "' . $this->code . '") {' . "\n" .
-            '    var cc_owner = document.checkout_payment.ipayment_cc_owner.value;' . "\n" .
-            '    var cc_number = document.checkout_payment.ipayment_cc_number.value;' . "\n" .
-            '    if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" .
-            '      error_message = error_message + "' . MODULE_PAYMENT_IPAYMENT_TEXT_JS_CC_OWNER . '";' . "\n" .
-            '      error = 1;' . "\n" .
-            '    }' . "\n" .
-            '    if (cc_number == "" || cc_number.length < ' . CC_NUMBER_MIN_LENGTH . ') {' . "\n" .
-            '      error_message = error_message + "' . MODULE_PAYMENT_IPAYMENT_TEXT_JS_CC_NUMBER . '";' . "\n" .
-            '      error = 1;' . "\n" .
-            '    }' . "\n" .
-            '  }' . "\n";
-
-      return $js;
-    }
-
-    function selection() {
-      global $order;
-
-      for ($i=1; $i < 13; $i++) {
-        $expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000)));
-      }
-
-      $today = getdate(); 
-      for ($i=$today['year']; $i < $today['year']+10; $i++) {
-        $expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
-      }
-
-      $selection = array('id' => $this->code,
-                         'module' => $this->title,
-                         'fields' => array(array('title' => MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_OWNER,
-                                                 'field' => tep_draw_input_field('ipayment_cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),
-                                           array('title' => MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_NUMBER,
-                                                 'field' => tep_draw_input_field('ipayment_cc_number')),
-                                           array('title' => MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_EXPIRES,
-                                                 'field' => tep_draw_pull_down_menu('ipayment_cc_expires_month', $expires_month) . '&nbsp;' . tep_draw_pull_down_menu('ipayment_cc_expires_year', $expires_year)),
-                                           array('title' => MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_CHECKNUMBER,
-                                                 'field' => tep_draw_input_field('ipayment_cc_checkcode', '', 'size="4" maxlength="3"') . '&nbsp;<small>' . MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_CHECKNUMBER_LOCATION . '</small>')));
-
-      return $selection;
-    }
-
-    function pre_confirmation_check() {
-      global $HTTP_POST_VARS;
-
-      include(DIR_WS_CLASSES . 'cc_validation.php');
-
-      $cc_validation = new cc_validation();
-      $result = $cc_validation->validate($HTTP_POST_VARS['ipayment_cc_number'], $HTTP_POST_VARS['ipayment_cc_expires_month'], $HTTP_POST_VARS['ipayment_cc_expires_year']);
-
-      $error = '';
-      switch ($result) {
-        case -1:
-          $error = sprintf(TEXT_CCVAL_ERROR_UNKNOWN_CARD, substr($cc_validation->cc_number, 0, 4));
-          break;
-        case -2:
-        case -3:
-        case -4:
-          $error = TEXT_CCVAL_ERROR_INVALID_DATE;
-          break;
-        case false:
-          $error = TEXT_CCVAL_ERROR_INVALID_NUMBER;
-          break;
-      }
-
-      if ( ($result == false) || ($result < 1) ) {
-        $payment_error_return = 'payment_error=' . $this->code . '&error=' . urlencode($error) . '&ipayment_cc_owner=' . urlencode($HTTP_POST_VARS['ipayment_cc_owner']) . '&ipayment_cc_expires_month=' . $HTTP_POST_VARS['ipayment_cc_expires_month'] . '&ipayment_cc_expires_year=' . $HTTP_POST_VARS['ipayment_cc_expires_year'] . '&ipayment_cc_checkcode=' . $HTTP_POST_VARS['ipayment_cc_checkcode'];
-
-        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, $payment_error_return, 'SSL', true, false));
-      }
-
-      $this->cc_card_type = $cc_validation->cc_type;
-      $this->cc_card_number = $cc_validation->cc_number;
-      $this->cc_expiry_month = $cc_validation->cc_expiry_month;
-      $this->cc_expiry_year = $cc_validation->cc_expiry_year;
-    }
-
-    function confirmation() {
-      global $HTTP_POST_VARS;
-
-      $confirmation = array('title' => $this->title . ': ' . $this->cc_card_type,
-                            'fields' => array(array('title' => MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_OWNER,
-                                                    'field' => $HTTP_POST_VARS['ipayment_cc_owner']),
-                                              array('title' => MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_NUMBER,
-                                                    'field' => substr($this->cc_card_number, 0, 4) . str_repeat('X', (strlen($this->cc_card_number) - 8)) . substr($this->cc_card_number, -4)),
-                                              array('title' => MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_EXPIRES,
-                                                    'field' => strftime('%B, %Y', mktime(0,0,0,$HTTP_POST_VARS['ipayment_cc_expires_month'], 1, '20' . $HTTP_POST_VARS['ipayment_cc_expires_year'])))));
-
-      if (tep_not_null($HTTP_POST_VARS['ipayment_cc_checkcode'])) {
-        $confirmation['fields'][] = array('title' => MODULE_PAYMENT_IPAYMENT_TEXT_CREDIT_CARD_CHECKNUMBER,
-                                          'field' => $HTTP_POST_VARS['ipayment_cc_checkcode']);
-      }
-
-      return $confirmation;
-    }
-
-    function process_button() {
-      global $HTTP_POST_VARS, $order, $currencies, $currency;
-
-      switch (MODULE_PAYMENT_IPAYMENT_CURRENCY) {
-        case 'Always EUR':
-          $trx_currency = 'EUR';
-          break;
-        case 'Always USD':
-          $trx_currency = 'USD';
-          break;
-        case 'Either EUR or USD, else EUR':
-          if ( ($currency == 'EUR') || ($currency == 'USD') ) {
-            $trx_currency = $currency;
-          } else {
-            $trx_currency = 'EUR';
-          }
-          break;
-        case 'Either EUR or USD, else USD':
-          if ( ($currency == 'EUR') || ($currency == 'USD') ) {
-            $trx_currency = $currency;
-          } else {
-            $trx_currency = 'USD';
-          }
-          break;
-      }
-
-      $process_button_string = tep_draw_hidden_field('silent', '1') .
-                               tep_draw_hidden_field('trx_paymenttyp', 'cc') .
-                               tep_draw_hidden_field('trxuser_id', MODULE_PAYMENT_IPAYMENT_USER_ID) .
-                               tep_draw_hidden_field('trxpassword', MODULE_PAYMENT_IPAYMENT_PASSWORD) .
-                               tep_draw_hidden_field('item_name', STORE_NAME) .
-                               tep_draw_hidden_field('trx_currency', $trx_currency) .
-                               tep_draw_hidden_field('trx_amount', number_format($order->info['total'] * 100 * $currencies->get_value($trx_currency), 0, '','')) .
-                               tep_draw_hidden_field('cc_expdate_month', $HTTP_POST_VARS['ipayment_cc_expires_month']) .
-                               tep_draw_hidden_field('cc_expdate_year', $HTTP_POST_VARS['ipayment_cc_expires_year']) .
-                               tep_draw_hidden_field('cc_number', $HTTP_POST_VARS['ipayment_cc_number']) .
-                               tep_draw_hidden_field('cc_checkcode', $HTTP_POST_VARS['ipayment_cc_checkcode']) .
-                               tep_draw_hidden_field('addr_name', $HTTP_POST_VARS['ipayment_cc_owner']) .
-                               tep_draw_hidden_field('addr_email', $order->customer['email_address']) .
-                               tep_draw_hidden_field('redirect_url', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', true)) .
-                               tep_draw_hidden_field('silent_error_url', tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code . '&ipayment_cc_owner=' . urlencode($HTTP_POST_VARS['ipayment_cc_owner']), 'SSL', true));
-
-      return $process_button_string;
-    }
-
-    function before_process() {
-      return false;
-    }
-
-    function after_process() {
-      return false;
-    }
-
-    function get_error() {
-      global $HTTP_GET_VARS;
-
-      $error = array('title' => IPAYMENT_ERROR_HEADING,
-                     'error' => ((isset($HTTP_GET_VARS['error'])) ? stripslashes(urldecode($HTTP_GET_VARS['error'])) : IPAYMENT_ERROR_MESSAGE));
-
-      return $error;
-    }
-
-    function check() {
-      if (!isset($this->_check)) {
-        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_IPAYMENT_STATUS'");
-        $this->_check = tep_db_num_rows($check_query);
-      }
-      return $this->_check;
-    }
-
-    function install() {
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable iPayment Module', 'MODULE_PAYMENT_IPAYMENT_STATUS', 'True', 'Do you want to accept iPayment payments?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Account Number', 'MODULE_PAYMENT_IPAYMENT_ID', '99999', 'The account number used for the iPayment service', '6', '2', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('User ID', 'MODULE_PAYMENT_IPAYMENT_USER_ID', '99999', 'The user ID for the iPayment service', '6', '3', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('User Password', 'MODULE_PAYMENT_IPAYMENT_PASSWORD', '0', 'The user password for the iPayment service', '6', '4', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Currency', 'MODULE_PAYMENT_IPAYMENT_CURRENCY', 'Either EUR or USD, else EUR', 'The currency to use for credit card transactions', '6', '5', 'tep_cfg_select_option(array(\'Always EUR\', \'Always USD\', \'Either EUR or USD, else EUR\', \'Either EUR or USD, else USD\'), ', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_IPAYMENT_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_IPAYMENT_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_IPAYMENT_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
-    }
-
-    function remove() {
-      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
-    }
-
-    function keys() {
-      return array('MODULE_PAYMENT_IPAYMENT_STATUS', 'MODULE_PAYMENT_IPAYMENT_ID', 'MODULE_PAYMENT_IPAYMENT_USER_ID', 'MODULE_PAYMENT_IPAYMENT_PASSWORD', 'MODULE_PAYMENT_IPAYMENT_CURRENCY', 'MODULE_PAYMENT_IPAYMENT_ZONE', 'MODULE_PAYMENT_IPAYMENT_ORDER_STATUS_ID', 'MODULE_PAYMENT_IPAYMENT_SORT_ORDER');
-    }
-  }
-?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/moneyorder.php 2.2rc2.src/includes/modules/payment/moneyorder.php
--- 2.2ms2-060817.src/includes/modules/payment/moneyorder.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/moneyorder.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: moneyorder.php,v 1.10 2003/01/29 19:57:14 hpdl Exp $
+  $Id: moneyorder.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/payment/nochex.php 2.2rc2.src/includes/modules/payment/nochex.php
--- 2.2ms2-060817.src/includes/modules/payment/nochex.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/nochex.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: nochex.php,v 1.12 2003/01/29 19:57:15 hpdl Exp $
+  $Id: nochex.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/payment/paypal_direct.php 2.2rc2.src/includes/modules/payment/paypal_direct.php
--- 2.2ms2-060817.src/includes/modules/payment/paypal_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/paypal_direct.php	2008-01-11 12:16:37.000000000 -0600
@@ -0,0 +1,284 @@
+<?php
+/*
+  $Id: paypal_direct.php 1803 2008-01-11 18:16:37Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  class paypal_direct {
+    var $code, $title, $description, $enabled;
+
+// class constructor
+    function paypal_direct() {
+      global $order;
+
+      $this->signature = 'paypal|paypal_direct|1.0|2.2';
+
+      $this->code = 'paypal_direct';
+      $this->title = MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_PUBLIC_TITLE;
+      $this->description = MODULE_PAYMENT_PAYPAL_DIRECT_TEXT_DESCRIPTION;
+      $this->sort_order = MODULE_PAYMENT_PAYPAL_DIRECT_SORT_ORDER;
+      $this->enabled = ((MODULE_PAYMENT_PAYPAL_DIRECT_STATUS == 'True') ? true : false);
+
+      if ((int)MODULE_PAYMENT_PAYPAL_DIRECT_ORDER_STATUS_ID > 0) {
+        $this->order_status = MODULE_PAYMENT_PAYPAL_DIRECT_ORDER_STATUS_ID;
+      }
+
+      if (is_object($order)) $this->update_status();
+
+      $this->cc_types = array('VISA' => 'Visa',
+                              'MASTERCARD' => 'MasterCard',
+                              'DISCOVER' => 'Discover Card',
+                              'AMEX' => 'American Express',
+                              'SWITCH' => 'Maestro',
+                              'SOLO' => 'Solo');
+    }
+
+// class methods
+    function update_status() {
+      global $order;
+
+      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PAYPAL_DIRECT_ZONE > 0) ) {
+        $check_flag = false;
+        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYPAL_DIRECT_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
+        while ($check = tep_db_fetch_array($check_query)) {
+          if ($check['zone_id'] < 1) {
+            $check_flag = true;
+            break;
+          } elseif ($check['zone_id'] == $order->delivery['zone_id']) {
+            $check_flag = true;
+            break;
+          }
+        }
+
+        if ($check_flag == false) {
+          $this->enabled = false;
+        }
+      }
+    }
+
+    function javascript_validation() {
+      return false;
+    }
+
+    function selection() {
+      return array('id' => $this->code,
+                   'module' => $this->public_title);
+    }
+
+    function pre_confirmation_check() {
+      return false;
+    }
+
+    function confirmation() {
+      global $order;
+
+      $types_array = array();
+      while (list($key, $value) = each($this->cc_types)) {
+        $types_array[] = array('id' => $key,
+                               'text' => $value);
+      }
+
+      $today = getdate();
+
+      $months_array = array();
+      for ($i=1; $i<13; $i++) {
+        $months_array[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000)));
+      }
+
+      $year_valid_from_array = array();
+      for ($i=$today['year']-10; $i < $today['year']+1; $i++) {
+        $year_valid_from_array[] = array('id' => strftime('%Y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
+      }
+
+      $year_expires_array = array();
+      for ($i=$today['year']; $i < $today['year']+10; $i++) {
+        $year_expires_array[] = array('id' => strftime('%Y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
+      }
+
+      $confirmation = array('fields' => array(array('title' => MODULE_PAYMENT_PAYPAL_DIRECT_CARD_OWNER,
+                                                    'field' => tep_draw_input_field('cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_DIRECT_CARD_TYPE,
+                                                    'field' => tep_draw_pull_down_menu('cc_type', $types_array)),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_DIRECT_CARD_NUMBER,
+                                                    'field' => tep_draw_input_field('cc_number_nh-dns')),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_DIRECT_CARD_VALID_FROM,
+                                                    'field' => tep_draw_pull_down_menu('cc_starts_month', $months_array) . '&nbsp;' . tep_draw_pull_down_menu('cc_starts_year', $year_valid_from_array) . ' ' . MODULE_PAYMENT_PAYPAL_DIRECT_CARD_VALID_FROM_INFO),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_DIRECT_CARD_EXPIRES,
+                                                    'field' => tep_draw_pull_down_menu('cc_expires_month', $months_array) . '&nbsp;' . tep_draw_pull_down_menu('cc_expires_year', $year_expires_array)),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_DIRECT_CARD_CVC,
+                                                    'field' => tep_draw_input_field('cc_cvc_nh-dns', '', 'size="5" maxlength="4"')),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_DIRECT_CARD_ISSUE_NUMBER,
+                                                    'field' => tep_draw_input_field('cc_issue_nh-dns', '', 'size="3" maxlength="2"') . ' ' . MODULE_PAYMENT_PAYPAL_DIRECT_CARD_ISSUE_NUMBER_INFO)));
+
+      return $confirmation;
+    }
+
+    function process_button() {
+      return false;
+    }
+
+    function before_process() {
+      global $HTTP_POST_VARS, $order, $sendto;
+
+      if (isset($HTTP_POST_VARS['cc_owner']) && !empty($HTTP_POST_VARS['cc_owner']) && isset($HTTP_POST_VARS['cc_type']) && isset($this->cc_types[$HTTP_POST_VARS['cc_type']]) && isset($HTTP_POST_VARS['cc_number_nh-dns']) && !empty($HTTP_POST_VARS['cc_number_nh-dns'])) {
+        if (MODULE_PAYMENT_PAYPAL_DIRECT_TRANSACTION_SERVER == 'Live') {
+          $api_url = 'https://api-3t.paypal.com/nvp';
+        } else {
+          $api_url = 'https://api-3t.sandbox.paypal.com/nvp';
+        }
+
+        $params = array('USER' => MODULE_PAYMENT_PAYPAL_DIRECT_API_USERNAME,
+                        'PWD' => MODULE_PAYMENT_PAYPAL_DIRECT_API_PASSWORD,
+                        'VERSION' => '3.2',
+                        'SIGNATURE' => MODULE_PAYMENT_PAYPAL_DIRECT_API_SIGNATURE,
+                        'METHOD' => 'DoDirectPayment',
+                        'PAYMENTACTION' => ((MODULE_PAYMENT_PAYPAL_DIRECT_TRANSACTION_METHOD == 'Sale') ? 'Sale' : 'Authorization'),
+                        'IPADDRESS' => tep_get_ip_address(),
+                        'AMT' => $this->format_raw($order->info['total']),
+                        'CREDITCARDTYPE' => $HTTP_POST_VARS['cc_type'],
+                        'ACCT' => $HTTP_POST_VARS['cc_number_nh-dns'],
+                        'STARTDATE' => $HTTP_POST_VARS['cc_starts_month'] . $HTTP_POST_VARS['cc_starts_year'],
+                        'EXPDATE' => $HTTP_POST_VARS['cc_expires_month'] . $HTTP_POST_VARS['cc_expires_year'],
+                        'CVV2' => $HTTP_POST_VARS['cc_cvc_nh-dns'],
+                        'FIRSTNAME' => substr($HTTP_POST_VARS['cc_owner'], 0, strpos($HTTP_POST_VARS['cc_owner'], ' ')),
+                        'LASTNAME' => substr($HTTP_POST_VARS['cc_owner'], strpos($HTTP_POST_VARS['cc_owner'], ' ')+1),
+                        'STREET' => $order->billing['street_address'],
+                        'CITY' => $order->billing['city'],
+                        'STATE' => tep_get_zone_code($order->billing['country']['id'], $order->billing['zone_id'], $order->billing['state']),
+                        'COUNTRYCODE' => $order->billing['country']['iso_code_2'],
+                        'ZIP' => $order->billing['postcode'],
+                        'EMAIL' => $order->customer['email_address'],
+                        'PHONENUM' => $order->customer['telephone'],
+                        'CURRENCYCODE' => $order->info['currency'],
+                        'BUTTONSOURCE' => 'osCommerce22_Default_DP');
+
+        if ( ($HTTP_POST_VARS['cc_type'] == 'SWITCH') || ($HTTP_POST_VARS['cc_type'] == 'SOLO') ) {
+          $params['ISSUENUMBER'] = $HTTP_POST_VARS['cc_issue_nh-dns'];
+        }
+
+        if (is_numeric($sendto) && ($sendto > 0)) {
+          $params['SHIPTONAME'] = $order->delivery['firstname'] . ' ' . $order->delivery['lastname'];
+          $params['SHIPTOSTREET'] = $order->delivery['street_address'];
+          $params['SHIPTOCITY'] = $order->delivery['city'];
+          $params['SHIPTOSTATE'] = tep_get_zone_code($order->delivery['country']['id'], $order->delivery['zone_id'], $order->delivery['state']);
+          $params['SHIPTOCOUNTRYCODE'] = $order->delivery['country']['iso_code_2'];
+          $params['SHIPTOZIP'] = $order->delivery['postcode'];
+        }
+
+        $post_string = '';
+
+        foreach ($params as $key => $value) {
+          $post_string .= $key . '=' . urlencode(trim($value)) . '&';
+        }
+
+        $post_string = substr($post_string, 0, -1);
+
+        $response = $this->sendTransactionToGateway($api_url, $post_string);
+        $response_array = array();
+        parse_str($response, $response_array);
+
+        if (($response_array['ACK'] != 'Success') && ($response_array['ACK'] != 'SuccessWithWarning')) {
+          tep_redirect(tep_href_link(FILENAME_SHOPPING_CART, 'error_message=' . stripslashes($response_array['L_LONGMESSAGE0']), 'SSL'));
+        }
+      } else {
+        tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'error_message=' . MODULE_PAYMENT_PAYPAL_DIRECT_ERROR_ALL_FIELDS_REQUIRED, 'SSL'));
+      }
+    }
+
+    function after_process() {
+      return false;
+    }
+
+    function get_error() {
+      return false;
+    }
+
+    function check() {
+      if (!isset($this->_check)) {
+        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYPAL_DIRECT_STATUS'");
+        $this->_check = tep_db_num_rows($check_query);
+      }
+      return $this->_check;
+    }
+
+    function install() {
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable PayPal Direct', 'MODULE_PAYMENT_PAYPAL_DIRECT_STATUS', 'False', 'Do you want to accept PayPal Direct payments?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('API Username', 'MODULE_PAYMENT_PAYPAL_DIRECT_API_USERNAME', '', 'The username to use for the PayPal API service.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('API Password', 'MODULE_PAYMENT_PAYPAL_DIRECT_API_PASSWORD', '', 'The password to use for the PayPal API service.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('API Signature', 'MODULE_PAYMENT_PAYPAL_DIRECT_API_SIGNATURE', '', 'The signature to use for the PayPal API service.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Server', 'MODULE_PAYMENT_PAYPAL_DIRECT_TRANSACTION_SERVER', 'Live', 'Use the live or testing (sandbox) gateway server to process transactions?', '6', '0', 'tep_cfg_select_option(array(\'Live\', \'Sandbox\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Method', 'MODULE_PAYMENT_PAYPAL_DIRECT_TRANSACTION_METHOD', 'Sale', 'The processing method to use for each transaction.', '6', '0', 'tep_cfg_select_option(array(\'Authorization\', \'Sale\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_PAYPAL_DIRECT_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_PAYPAL_DIRECT_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_PAYPAL_DIRECT_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value.', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('cURL Program Location', 'MODULE_PAYMENT_PAYPAL_DIRECT_CURL', '/usr/bin/curl', 'The location to the cURL program application.', '6', '0' , now())");
+   }
+
+    function remove() {
+      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
+    }
+
+    function keys() {
+      return array('MODULE_PAYMENT_PAYPAL_DIRECT_STATUS', 'MODULE_PAYMENT_PAYPAL_DIRECT_API_USERNAME', 'MODULE_PAYMENT_PAYPAL_DIRECT_API_PASSWORD', 'MODULE_PAYMENT_PAYPAL_DIRECT_API_SIGNATURE', 'MODULE_PAYMENT_PAYPAL_DIRECT_TRANSACTION_SERVER', 'MODULE_PAYMENT_PAYPAL_DIRECT_TRANSACTION_METHOD', 'MODULE_PAYMENT_PAYPAL_DIRECT_ZONE', 'MODULE_PAYMENT_PAYPAL_DIRECT_ORDER_STATUS_ID', 'MODULE_PAYMENT_PAYPAL_DIRECT_SORT_ORDER', 'MODULE_PAYMENT_PAYPAL_DIRECT_CURL');
+    }
+
+    function sendTransactionToGateway($url, $parameters) {
+      $server = parse_url($url);
+
+      if (!isset($server['port'])) {
+        $server['port'] = ($server['scheme'] == 'https') ? 443 : 80;
+      }
+
+      if (!isset($server['path'])) {
+        $server['path'] = '/';
+      }
+
+      if (isset($server['user']) && isset($server['pass'])) {
+        $header[] = 'Authorization: Basic ' . base64_encode($server['user'] . ':' . $server['pass']);
+      }
+
+      if (function_exists('curl_init')) {
+        $curl = curl_init($server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : ''));
+        curl_setopt($curl, CURLOPT_PORT, $server['port']);
+        curl_setopt($curl, CURLOPT_HEADER, 0);
+        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
+        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+        curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
+        curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
+        curl_setopt($curl, CURLOPT_POST, 1);
+        curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);
+
+        $result = curl_exec($curl);
+
+        curl_close($curl);
+      } else {
+        exec(escapeshellarg(MODULE_PAYMENT_PAYPAL_DIRECT_CURL) . ' -d ' . escapeshellarg($parameters) . ' "' . $server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : '') . '" -P ' . $server['port'] . ' -k', $result);
+        $result = implode("\n", $result);
+      }
+
+      return $result;
+    }
+
+// format prices without currency formatting
+    function format_raw($number, $currency_code = '', $currency_value = '') {
+      global $currencies, $currency;
+
+      if (empty($currency_code) || !$this->is_set($currency_code)) {
+        $currency_code = $currency;
+      }
+
+      if (empty($currency_value) || !is_numeric($currency_value)) {
+        $currency_value = $currencies->currencies[$currency_code]['value'];
+      }
+
+      return number_format(tep_round($number * $currency_value, $currencies->currencies[$currency_code]['decimal_places']), $currencies->currencies[$currency_code]['decimal_places'], '.', '');
+    }
+  }
+?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/paypal_express.php 2.2rc2.src/includes/modules/payment/paypal_express.php
--- 2.2ms2-060817.src/includes/modules/payment/paypal_express.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/paypal_express.php	2008-01-11 12:16:37.000000000 -0600
@@ -0,0 +1,254 @@
+<?php
+/*
+  $Id: paypal_express.php 1803 2008-01-11 18:16:37Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  class paypal_express {
+    var $code, $title, $description, $enabled;
+
+// class constructor
+    function paypal_express() {
+      global $order;
+
+      $this->signature = 'paypal|paypal_express|1.0|2.2';
+
+      $this->code = 'paypal_express';
+      $this->title = MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_PUBLIC_TITLE;
+      $this->description = MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_DESCRIPTION;
+      $this->sort_order = MODULE_PAYMENT_PAYPAL_EXPRESS_SORT_ORDER;
+      $this->enabled = ((MODULE_PAYMENT_PAYPAL_EXPRESS_STATUS == 'True') ? true : false);
+
+      if ((int)MODULE_PAYMENT_PAYPAL_EXPRESS_ORDER_STATUS_ID > 0) {
+        $this->order_status = MODULE_PAYMENT_PAYPAL_EXPRESS_ORDER_STATUS_ID;
+      }
+
+      if (is_object($order)) $this->update_status();
+    }
+
+// class methods
+    function update_status() {
+      global $order;
+
+      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PAYPAL_EXPRESS_ZONE > 0) ) {
+        $check_flag = false;
+        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYPAL_EXPRESS_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
+        while ($check = tep_db_fetch_array($check_query)) {
+          if ($check['zone_id'] < 1) {
+            $check_flag = true;
+            break;
+          } elseif ($check['zone_id'] == $order->delivery['zone_id']) {
+            $check_flag = true;
+            break;
+          }
+        }
+
+        if ($check_flag == false) {
+          $this->enabled = false;
+        }
+      }
+    }
+
+    function checkout_initialization_method() {
+      global $language;
+
+      if (file_exists(DIR_FS_CATALOG . 'ext/modules/payment/paypal/images/btn_express_' . basename($language) . '.gif')) {
+        $image = 'ext/modules/payment/paypal/images/btn_express_' . basename($language) . '.gif';
+      } else {
+        $image = 'ext/modules/payment/paypal/images/btn_express.gif';
+      }
+
+      $string = '<a href="' . tep_href_link('ext/modules/payment/paypal/express.php', '', 'SSL') . '"><img src="' . $image . '" border="0" alt="" title="' . tep_output_string_protected(MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_BUTTON) . '" /></a>';
+
+      return $string;
+    }
+
+    function javascript_validation() {
+      return false;
+    }
+
+    function selection() {
+      return array('id' => $this->code,
+                   'module' => $this->public_title);
+    }
+
+    function pre_confirmation_check() {
+      if (!tep_session_is_registered('ppe_token')) {
+        tep_redirect(tep_href_link('ext/modules/payment/paypal/express.php', '', 'SSL'));
+      }
+    }
+
+    function confirmation() {
+      global $comments;
+
+      if (!isset($comments)) {
+        $comments = null;
+      }
+
+      $confirmation = false;
+
+      if (empty($comments)) {
+        $confirmation = array('fields' => array(array('title' => MODULE_PAYMENT_PAYPAL_EXPRESS_TEXT_COMMENTS,
+                                                      'field' => tep_draw_textarea_field('ppecomments', 'soft', '60', '5', $comments))));
+      }
+
+      return $confirmation;
+    }
+
+    function process_button() {
+      return false;
+    }
+
+    function before_process() {
+      global $order, $sendto, $ppe_token, $ppe_payerid, $HTTP_POST_VARS, $comments;
+
+      if (empty($comments)) {
+        if (isset($HTTP_POST_VARS['ppecomments']) && tep_not_null($HTTP_POST_VARS['ppecomments'])) {
+          $comments = tep_db_prepare_input($HTTP_POST_VARS['ppecomments']);
+
+          $order->info['comments'] = $comments;
+        }
+      }
+
+      if (MODULE_PAYMENT_PAYPAL_EXPRESS_TRANSACTION_SERVER == 'Live') {
+        $api_url = 'https://api-3t.paypal.com/nvp';
+      } else {
+        $api_url = 'https://api-3t.sandbox.paypal.com/nvp';
+      }
+
+      $params = array('USER' => MODULE_PAYMENT_PAYPAL_EXPRESS_API_USERNAME,
+                      'PWD' => MODULE_PAYMENT_PAYPAL_EXPRESS_API_PASSWORD,
+                      'VERSION' => '3.2',
+                      'SIGNATURE' => MODULE_PAYMENT_PAYPAL_EXPRESS_API_SIGNATURE,
+                      'METHOD' => 'DoExpressCheckoutPayment',
+                      'TOKEN' => $ppe_token,
+                      'PAYMENTACTION' => ((MODULE_PAYMENT_PAYPAL_EXPRESS_TRANSACTION_METHOD == 'Sale') ? 'Sale' : 'Authorization'),
+                      'PAYERID' => $ppe_payerid,
+                      'AMT' => $this->format_raw($order->info['total']),
+                      'CURRENCYCODE' => $order->info['currency'],
+                      'BUTTONSOURCE' => 'osCommerce22_Default_EC');
+
+      if (is_numeric($sendto) && ($sendto > 0)) {
+        $params['SHIPTONAME'] = $order->delivery['firstname'] . ' ' . $order->delivery['lastname'];
+        $params['SHIPTOSTREET'] = $order->delivery['street_address'];
+        $params['SHIPTOCITY'] = $order->delivery['city'];
+        $params['SHIPTOSTATE'] = tep_get_zone_code($order->delivery['country']['id'], $order->delivery['zone_id'], $order->delivery['state']);
+        $params['SHIPTOCOUNTRYCODE'] = $order->delivery['country']['iso_code_2'];
+        $params['SHIPTOZIP'] = $order->delivery['postcode'];
+      }
+
+      $post_string = '';
+
+      foreach ($params as $key => $value) {
+        $post_string .= $key . '=' . urlencode(trim($value)) . '&';
+      }
+
+      $post_string = substr($post_string, 0, -1);
+
+      $response = $this->sendTransactionToGateway($api_url, $post_string);
+      $response_array = array();
+      parse_str($response, $response_array);
+
+      if (($response_array['ACK'] != 'Success') && ($response_array['ACK'] != 'SuccessWithWarning')) {
+        tep_redirect(tep_href_link(FILENAME_SHOPPING_CART, 'error_message=' . stripslashes($response_array['L_LONGMESSAGE0']), 'SSL'));
+      }
+    }
+
+    function after_process() {
+      tep_session_unregister('ppe_token');
+      tep_session_unregister('ppe_payerid');
+    }
+
+    function get_error() {
+      return false;
+    }
+
+    function check() {
+      if (!isset($this->_check)) {
+        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYPAL_EXPRESS_STATUS'");
+        $this->_check = tep_db_num_rows($check_query);
+      }
+      return $this->_check;
+    }
+
+    function install() {
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable PayPal Express Checkout', 'MODULE_PAYMENT_PAYPAL_EXPRESS_STATUS', 'False', 'Do you want to accept PayPal Express Checkout payments?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('API Username', 'MODULE_PAYMENT_PAYPAL_EXPRESS_API_USERNAME', '', 'The username to use for the PayPal API service', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('API Password', 'MODULE_PAYMENT_PAYPAL_EXPRESS_API_PASSWORD', '', 'The password to use for the PayPal API service', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('API Signature', 'MODULE_PAYMENT_PAYPAL_EXPRESS_API_SIGNATURE', '', 'The signature to use for the PayPal API service', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Server', 'MODULE_PAYMENT_PAYPAL_EXPRESS_TRANSACTION_SERVER', 'Live', 'Use the live or testing (sandbox) gateway server to process transactions?', '6', '0', 'tep_cfg_select_option(array(\'Live\', \'Sandbox\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Method', 'MODULE_PAYMENT_PAYPAL_EXPRESS_TRANSACTION_METHOD', 'Sale', 'The processing method to use for each transaction.', '6', '0', 'tep_cfg_select_option(array(\'Authorization\', \'Sale\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_PAYPAL_EXPRESS_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_PAYPAL_EXPRESS_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_PAYPAL_EXPRESS_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('cURL Program Location', 'MODULE_PAYMENT_PAYPAL_EXPRESS_CURL', '/usr/bin/curl', 'The location to the cURL program application.', '6', '0' , now())");
+   }
+
+    function remove() {
+      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
+    }
+
+    function keys() {
+      return array('MODULE_PAYMENT_PAYPAL_EXPRESS_STATUS', 'MODULE_PAYMENT_PAYPAL_EXPRESS_API_USERNAME', 'MODULE_PAYMENT_PAYPAL_EXPRESS_API_PASSWORD', 'MODULE_PAYMENT_PAYPAL_EXPRESS_API_SIGNATURE', 'MODULE_PAYMENT_PAYPAL_EXPRESS_TRANSACTION_SERVER', 'MODULE_PAYMENT_PAYPAL_EXPRESS_TRANSACTION_METHOD', 'MODULE_PAYMENT_PAYPAL_EXPRESS_ZONE', 'MODULE_PAYMENT_PAYPAL_EXPRESS_ORDER_STATUS_ID', 'MODULE_PAYMENT_PAYPAL_EXPRESS_SORT_ORDER', 'MODULE_PAYMENT_PAYPAL_EXPRESS_CURL');
+    }
+
+    function sendTransactionToGateway($url, $parameters) {
+      $server = parse_url($url);
+
+      if (!isset($server['port'])) {
+        $server['port'] = ($server['scheme'] == 'https') ? 443 : 80;
+      }
+
+      if (!isset($server['path'])) {
+        $server['path'] = '/';
+      }
+
+      if (isset($server['user']) && isset($server['pass'])) {
+        $header[] = 'Authorization: Basic ' . base64_encode($server['user'] . ':' . $server['pass']);
+      }
+
+      if (function_exists('curl_init')) {
+        $curl = curl_init($server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : ''));
+        curl_setopt($curl, CURLOPT_PORT, $server['port']);
+        curl_setopt($curl, CURLOPT_HEADER, 0);
+        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
+        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+        curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
+        curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
+        curl_setopt($curl, CURLOPT_POST, 1);
+        curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);
+
+        $result = curl_exec($curl);
+
+        curl_close($curl);
+      } else {
+        exec(escapeshellarg(MODULE_PAYMENT_PAYPAL_EXPRESS_CURL) . ' -d ' . escapeshellarg($parameters) . ' "' . $server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : '') . '" -P ' . $server['port'] . ' -k', $result);
+        $result = implode("\n", $result);
+      }
+
+      return $result;
+    }
+
+// format prices without currency formatting
+    function format_raw($number, $currency_code = '', $currency_value = '') {
+      global $currencies, $currency;
+
+      if (empty($currency_code) || !$this->is_set($currency_code)) {
+        $currency_code = $currency;
+      }
+
+      if (empty($currency_value) || !is_numeric($currency_value)) {
+        $currency_value = $currencies->currencies[$currency_code]['value'];
+      }
+
+      return number_format(tep_round($number * $currency_value, $currencies->currencies[$currency_code]['decimal_places']), $currencies->currencies[$currency_code]['decimal_places'], '.', '');
+    }
+  }
+?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/paypal.php 2.2rc2.src/includes/modules/payment/paypal.php
--- 2.2ms2-060817.src/includes/modules/payment/paypal.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/paypal.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,135 +0,0 @@
-<?php
-/*
-  $Id: paypal.php,v 1.39 2003/01/29 19:57:15 hpdl Exp $
-
-  osCommerce, Open Source E-Commerce Solutions
-  http://www.oscommerce.com
-
-  Copyright (c) 2003 osCommerce
-
-  Released under the GNU General Public License
-*/
-
-  class paypal {
-    var $code, $title, $description, $enabled;
-
-// class constructor
-    function paypal() {
-      global $order;
-
-      $this->code = 'paypal';
-      $this->title = MODULE_PAYMENT_PAYPAL_TEXT_TITLE;
-      $this->description = MODULE_PAYMENT_PAYPAL_TEXT_DESCRIPTION;
-      $this->sort_order = MODULE_PAYMENT_PAYPAL_SORT_ORDER;
-      $this->enabled = ((MODULE_PAYMENT_PAYPAL_STATUS == 'True') ? true : false);
-
-      if ((int)MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID > 0) {
-        $this->order_status = MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID;
-      }
-
-      if (is_object($order)) $this->update_status();
-
-      $this->form_action_url = 'https://secure.paypal.com/cgi-bin/webscr';
-    }
-
-// class methods
-    function update_status() {
-      global $order;
-
-      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PAYPAL_ZONE > 0) ) {
-        $check_flag = false;
-        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYPAL_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
-        while ($check = tep_db_fetch_array($check_query)) {
-          if ($check['zone_id'] < 1) {
-            $check_flag = true;
-            break;
-          } elseif ($check['zone_id'] == $order->billing['zone_id']) {
-            $check_flag = true;
-            break;
-          }
-        }
-
-        if ($check_flag == false) {
-          $this->enabled = false;
-        }
-      }
-    }
-
-    function javascript_validation() {
-      return false;
-    }
-
-    function selection() {
-      return array('id' => $this->code,
-                   'module' => $this->title);
-    }
-
-    function pre_confirmation_check() {
-      return false;
-    }
-
-    function confirmation() {
-      return false;
-    }
-
-    function process_button() {
-      global $order, $currencies, $currency;
-
-      if (MODULE_PAYMENT_PAYPAL_CURRENCY == 'Selected Currency') {
-        $my_currency = $currency;
-      } else {
-        $my_currency = substr(MODULE_PAYMENT_PAYPAL_CURRENCY, 5);
-      }
-      if (!in_array($my_currency, array('CAD', 'EUR', 'GBP', 'JPY', 'USD'))) {
-        $my_currency = 'USD';
-      }
-      $process_button_string = tep_draw_hidden_field('cmd', '_xclick') .
-                               tep_draw_hidden_field('business', MODULE_PAYMENT_PAYPAL_ID) .
-                               tep_draw_hidden_field('item_name', STORE_NAME) .
-                               tep_draw_hidden_field('amount', number_format(($order->info['total'] - $order->info['shipping_cost']) * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) .
-                               tep_draw_hidden_field('shipping', number_format($order->info['shipping_cost'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) .
-                               tep_draw_hidden_field('currency_code', $my_currency) .
-                               tep_draw_hidden_field('return', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) .
-                               tep_draw_hidden_field('cancel_return', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
-
-      return $process_button_string;
-    }
-
-    function before_process() {
-      return false;
-    }
-
-    function after_process() {
-      return false;
-    }
-
-    function output_error() {
-      return false;
-    }
-
-    function check() {
-      if (!isset($this->_check)) {
-        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYPAL_STATUS'");
-        $this->_check = tep_db_num_rows($check_query);
-      }
-      return $this->_check;
-    }
-
-    function install() {
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable PayPal Module', 'MODULE_PAYMENT_PAYPAL_STATUS', 'True', 'Do you want to accept PayPal payments?', '6', '3', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('E-Mail Address', 'MODULE_PAYMENT_PAYPAL_ID', 'you@yourbusiness.com', 'The e-mail address to use for the PayPal service', '6', '4', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Currency', 'MODULE_PAYMENT_PAYPAL_CURRENCY', 'Selected Currency', 'The currency to use for credit card transactions', '6', '6', 'tep_cfg_select_option(array(\'Selected Currency\',\'Only USD\',\'Only CAD\',\'Only EUR\',\'Only GBP\',\'Only JPY\'), ', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_PAYPAL_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_PAYPAL_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
-    }
-
-    function remove() {
-      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
-    }
-
-    function keys() {
-      return array('MODULE_PAYMENT_PAYPAL_STATUS', 'MODULE_PAYMENT_PAYPAL_ID', 'MODULE_PAYMENT_PAYPAL_CURRENCY', 'MODULE_PAYMENT_PAYPAL_ZONE', 'MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID', 'MODULE_PAYMENT_PAYPAL_SORT_ORDER');
-    }
-  }
-?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/paypal_standard.php 2.2rc2.src/includes/modules/payment/paypal_standard.php
--- 2.2ms2-060817.src/includes/modules/payment/paypal_standard.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/paypal_standard.php	2008-01-11 12:16:37.000000000 -0600
@@ -0,0 +1,646 @@
+<?php
+/*
+  $Id: paypal_standard.php 1803 2008-01-11 18:16:37Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  class paypal_standard {
+    var $code, $title, $description, $enabled;
+
+// class constructor
+    function paypal_standard() {
+      global $order;
+
+      $this->signature = 'paypal|paypal_standard|1.0|2.2';
+
+      $this->code = 'paypal_standard';
+      $this->title = MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_PUBLIC_TITLE;
+      $this->description = MODULE_PAYMENT_PAYPAL_STANDARD_TEXT_DESCRIPTION;
+      $this->sort_order = MODULE_PAYMENT_PAYPAL_STANDARD_SORT_ORDER;
+      $this->enabled = ((MODULE_PAYMENT_PAYPAL_STANDARD_STATUS == 'True') ? true : false);
+
+      if ((int)MODULE_PAYMENT_PAYPAL_STANDARD_PREPARE_ORDER_STATUS_ID > 0) {
+        $this->order_status = MODULE_PAYMENT_PAYPAL_STANDARD_PREPARE_ORDER_STATUS_ID;
+      }
+
+      if (is_object($order)) $this->update_status();
+
+      if (MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER == 'Live') {
+        $this->form_action_url = 'https://www.paypal.com/cgi-bin/webscr';
+      } else {
+        $this->form_action_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
+      }
+    }
+
+// class methods
+    function update_status() {
+      global $order;
+
+      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PAYPAL_STANDARD_ZONE > 0) ) {
+        $check_flag = false;
+        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYPAL_STANDARD_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
+        while ($check = tep_db_fetch_array($check_query)) {
+          if ($check['zone_id'] < 1) {
+            $check_flag = true;
+            break;
+          } elseif ($check['zone_id'] == $order->billing['zone_id']) {
+            $check_flag = true;
+            break;
+          }
+        }
+
+        if ($check_flag == false) {
+          $this->enabled = false;
+        }
+      }
+    }
+
+    function javascript_validation() {
+      return false;
+    }
+
+    function selection() {
+      global $cart_PayPal_Standard_ID;
+
+      if (tep_session_is_registered('cart_PayPal_Standard_ID')) {
+        $order_id = substr($cart_PayPal_Standard_ID, strpos($cart_PayPal_Standard_ID, '-')+1);
+
+        $check_query = tep_db_query('select orders_id from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '" limit 1');
+
+        if (tep_db_num_rows($check_query) < 1) {
+          tep_db_query('delete from ' . TABLE_ORDERS . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_TOTAL . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_DOWNLOAD . ' where orders_id = "' . (int)$order_id . '"');
+
+          tep_session_unregister('cart_PayPal_Standard_ID');
+        }
+      }
+
+      return array('id' => $this->code,
+                   'module' => $this->public_title);
+    }
+
+    function pre_confirmation_check() {
+      global $cartID, $cart;
+
+      if (empty($cart->cartID)) {
+        $cartID = $cart->cartID = $cart->generate_cart_id();
+      }
+
+      if (!tep_session_is_registered('cartID')) {
+        tep_session_register('cartID');
+      }
+    }
+
+    function confirmation() {
+      global $cartID, $cart_PayPal_Standard_ID, $customer_id, $languages_id, $order, $order_total_modules;
+
+      if (tep_session_is_registered('cartID')) {
+        $insert_order = false;
+
+        if (tep_session_is_registered('cart_PayPal_Standard_ID')) {
+          $order_id = substr($cart_PayPal_Standard_ID, strpos($cart_PayPal_Standard_ID, '-')+1);
+
+          $curr_check = tep_db_query("select currency from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
+          $curr = tep_db_fetch_array($curr_check);
+
+          if ( ($curr['currency'] != $order->info['currency']) || ($cartID != substr($cart_PayPal_Standard_ID, 0, strlen($cartID))) ) {
+            $check_query = tep_db_query('select orders_id from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '" limit 1');
+
+            if (tep_db_num_rows($check_query) < 1) {
+              tep_db_query('delete from ' . TABLE_ORDERS . ' where orders_id = "' . (int)$order_id . '"');
+              tep_db_query('delete from ' . TABLE_ORDERS_TOTAL . ' where orders_id = "' . (int)$order_id . '"');
+              tep_db_query('delete from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '"');
+              tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS . ' where orders_id = "' . (int)$order_id . '"');
+              tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . ' where orders_id = "' . (int)$order_id . '"');
+              tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_DOWNLOAD . ' where orders_id = "' . (int)$order_id . '"');
+            }
+
+            $insert_order = true;
+          }
+        } else {
+          $insert_order = true;
+        }
+
+        if ($insert_order == true) {
+          $order_totals = array();
+          if (is_array($order_total_modules->modules)) {
+            reset($order_total_modules->modules);
+            while (list(, $value) = each($order_total_modules->modules)) {
+              $class = substr($value, 0, strrpos($value, '.'));
+              if ($GLOBALS[$class]->enabled) {
+                for ($i=0, $n=sizeof($GLOBALS[$class]->output); $i<$n; $i++) {
+                  if (tep_not_null($GLOBALS[$class]->output[$i]['title']) && tep_not_null($GLOBALS[$class]->output[$i]['text'])) {
+                    $order_totals[] = array('code' => $GLOBALS[$class]->code,
+                                            'title' => $GLOBALS[$class]->output[$i]['title'],
+                                            'text' => $GLOBALS[$class]->output[$i]['text'],
+                                            'value' => $GLOBALS[$class]->output[$i]['value'],
+                                            'sort_order' => $GLOBALS[$class]->sort_order);
+                  }
+                }
+              }
+            }
+          }
+
+          $sql_data_array = array('customers_id' => $customer_id,
+                                  'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
+                                  'customers_company' => $order->customer['company'],
+                                  'customers_street_address' => $order->customer['street_address'],
+                                  'customers_suburb' => $order->customer['suburb'],
+                                  'customers_city' => $order->customer['city'],
+                                  'customers_postcode' => $order->customer['postcode'],
+                                  'customers_state' => $order->customer['state'],
+                                  'customers_country' => $order->customer['country']['title'],
+                                  'customers_telephone' => $order->customer['telephone'],
+                                  'customers_email_address' => $order->customer['email_address'],
+                                  'customers_address_format_id' => $order->customer['format_id'],
+                                  'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],
+                                  'delivery_company' => $order->delivery['company'],
+                                  'delivery_street_address' => $order->delivery['street_address'],
+                                  'delivery_suburb' => $order->delivery['suburb'],
+                                  'delivery_city' => $order->delivery['city'],
+                                  'delivery_postcode' => $order->delivery['postcode'],
+                                  'delivery_state' => $order->delivery['state'],
+                                  'delivery_country' => $order->delivery['country']['title'],
+                                  'delivery_address_format_id' => $order->delivery['format_id'],
+                                  'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
+                                  'billing_company' => $order->billing['company'],
+                                  'billing_street_address' => $order->billing['street_address'],
+                                  'billing_suburb' => $order->billing['suburb'],
+                                  'billing_city' => $order->billing['city'],
+                                  'billing_postcode' => $order->billing['postcode'],
+                                  'billing_state' => $order->billing['state'],
+                                  'billing_country' => $order->billing['country']['title'],
+                                  'billing_address_format_id' => $order->billing['format_id'],
+                                  'payment_method' => $order->info['payment_method'],
+                                  'cc_type' => $order->info['cc_type'],
+                                  'cc_owner' => $order->info['cc_owner'],
+                                  'cc_number' => $order->info['cc_number'],
+                                  'cc_expires' => $order->info['cc_expires'],
+                                  'date_purchased' => 'now()',
+                                  'orders_status' => $order->info['order_status'],
+                                  'currency' => $order->info['currency'],
+                                  'currency_value' => $order->info['currency_value']);
+
+          tep_db_perform(TABLE_ORDERS, $sql_data_array);
+
+          $insert_id = tep_db_insert_id();
+
+          for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
+            $sql_data_array = array('orders_id' => $insert_id,
+                                    'title' => $order_totals[$i]['title'],
+                                    'text' => $order_totals[$i]['text'],
+                                    'value' => $order_totals[$i]['value'],
+                                    'class' => $order_totals[$i]['code'],
+                                    'sort_order' => $order_totals[$i]['sort_order']);
+
+            tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
+          }
+
+          for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+            $sql_data_array = array('orders_id' => $insert_id,
+                                    'products_id' => tep_get_prid($order->products[$i]['id']),
+                                    'products_model' => $order->products[$i]['model'],
+                                    'products_name' => $order->products[$i]['name'],
+                                    'products_price' => $order->products[$i]['price'],
+                                    'final_price' => $order->products[$i]['final_price'],
+                                    'products_tax' => $order->products[$i]['tax'],
+                                    'products_quantity' => $order->products[$i]['qty']);
+
+            tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);
+
+            $order_products_id = tep_db_insert_id();
+
+            $attributes_exist = '0';
+            if (isset($order->products[$i]['attributes'])) {
+              $attributes_exist = '1';
+              for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
+                if (DOWNLOAD_ENABLED == 'true') {
+                  $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
+                                       from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                       left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                       on pa.products_attributes_id=pad.products_attributes_id
+                                       where pa.products_id = '" . $order->products[$i]['id'] . "'
+                                       and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
+                                       and pa.options_id = popt.products_options_id
+                                       and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
+                                       and pa.options_values_id = poval.products_options_values_id
+                                       and popt.language_id = '" . $languages_id . "'
+                                       and poval.language_id = '" . $languages_id . "'";
+                  $attributes = tep_db_query($attributes_query);
+                } else {
+                  $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
+                }
+                $attributes_values = tep_db_fetch_array($attributes);
+
+                $sql_data_array = array('orders_id' => $insert_id,
+                                        'orders_products_id' => $order_products_id,
+                                        'products_options' => $attributes_values['products_options_name'],
+                                        'products_options_values' => $attributes_values['products_options_values_name'],
+                                        'options_values_price' => $attributes_values['options_values_price'],
+                                        'price_prefix' => $attributes_values['price_prefix']);
+
+                tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);
+
+                if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) {
+                  $sql_data_array = array('orders_id' => $insert_id,
+                                          'orders_products_id' => $order_products_id,
+                                          'orders_products_filename' => $attributes_values['products_attributes_filename'],
+                                          'download_maxdays' => $attributes_values['products_attributes_maxdays'],
+                                          'download_count' => $attributes_values['products_attributes_maxcount']);
+
+                  tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);
+                }
+              }
+            }
+          }
+
+          $cart_PayPal_Standard_ID = $cartID . '-' . $insert_id;
+          tep_session_register('cart_PayPal_Standard_ID');
+        }
+      }
+
+      return false;
+    }
+
+    function process_button() {
+      global $customer_id, $order, $sendto, $currency, $cart_PayPal_Standard_ID, $shipping;
+
+      $process_button_string = '';
+      $parameters = array('cmd' => '_xclick',
+                          'item_name' => STORE_NAME,
+                          'shipping' => $this->format_raw($order->info['shipping_cost']),
+                          'tax' => $this->format_raw($order->info['tax']),
+                          'business' => MODULE_PAYMENT_PAYPAL_STANDARD_ID,
+                          'amount' => $this->format_raw($order->info['total'] - $order->info['shipping_cost'] - $order->info['tax']),
+                          'currency_code' => $currency,
+                          'invoice' => substr($cart_PayPal_Standard_ID, strpos($cart_PayPal_Standard_ID, '-')+1),
+                          'custom' => $customer_id,
+                          'no_note' => '1',
+                          'notify_url' => tep_href_link('ext/modules/payment/paypal/standard_ipn.php', '', 'SSL', false, false),
+                          'return' => tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL'),
+                          'cancel_return' => tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'),
+                          'bn' => 'osCommerce22_Default_ST',
+                          'paymentaction' => ((MODULE_PAYMENT_PAYPAL_STANDARD_TRANSACTION_METHOD == 'Sale') ? 'sale' : 'authorization'));
+
+      if (is_numeric($sendto) && ($sendto > 0)) {
+        $parameters['address_override'] = '1';
+        $parameters['first_name'] = $order->delivery['firstname'];
+        $parameters['last_name'] = $order->delivery['lastname'];
+        $parameters['address1'] = $order->delivery['street_address'];
+        $parameters['city'] = $order->delivery['city'];
+        $parameters['state'] = tep_get_zone_code($order->delivery['country']['id'], $order->delivery['zone_id'], $order->delivery['state']);
+        $parameters['zip'] = $order->delivery['postcode'];
+        $parameters['country'] = $order->delivery['country']['iso_code_2'];
+      } else {
+        $parameters['no_shipping'] = '1';
+        $parameters['first_name'] = $order->billing['firstname'];
+        $parameters['last_name'] = $order->billing['lastname'];
+        $parameters['address1'] = $order->billing['street_address'];
+        $parameters['city'] = $order->billing['city'];
+        $parameters['state'] = tep_get_zone_code($order->billing['country']['id'], $order->billing['zone_id'], $order->billing['state']);
+        $parameters['zip'] = $order->billing['postcode'];
+        $parameters['country'] = $order->billing['country']['iso_code_2'];
+      }
+
+      if (tep_not_null(MODULE_PAYMENT_PAYPAL_STANDARD_PAGE_STYLE)) {
+        $parameters['page_style'] = MODULE_PAYMENT_PAYPAL_STANDARD_PAGE_STYLE;
+      }
+
+      if (MODULE_PAYMENT_PAYPAL_STANDARD_EWP_STATUS == 'True') {
+        $parameters['cert_id'] = MODULE_PAYMENT_PAYPAL_STANDARD_EWP_CERT_ID;
+
+        $random_string = rand(100000, 999999) . '-' . $customer_id . '-';
+
+        $data = '';
+        reset($parameters);
+        while (list($key, $value) = each($parameters)) {
+          $data .= $key . '=' . $value . "\n";
+        }
+
+        $fp = fopen(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'data.txt', 'w');
+        fwrite($fp, $data);
+        fclose($fp);
+
+        unset($data);
+
+        if (function_exists('openssl_pkcs7_sign') && function_exists('openssl_pkcs7_encrypt')) {
+          openssl_pkcs7_sign(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'data.txt', MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt', file_get_contents(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PUBLIC_KEY), file_get_contents(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PRIVATE_KEY), array('From' => MODULE_PAYMENT_PAYPAL_STANDARD_ID), PKCS7_BINARY);
+
+          unlink(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'data.txt');
+
+// remove headers from the signature
+          $signed = file_get_contents(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt');
+          $signed = explode("\n\n", $signed);
+          $signed = base64_decode($signed[1]);
+
+          $fp = fopen(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt', 'w');
+          fwrite($fp, $signed);
+          fclose($fp);
+
+          unset($signed);
+
+          openssl_pkcs7_encrypt(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt', MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt', file_get_contents(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PAYPAL_KEY), array('From' => MODULE_PAYMENT_PAYPAL_STANDARD_ID), PKCS7_BINARY);
+
+          unlink(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt');
+
+// remove headers from the encrypted result
+          $data = file_get_contents(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt');
+          $data = explode("\n\n", $data);
+          $data = '-----BEGIN PKCS7-----' . "\n" . $data[1] . "\n" . '-----END PKCS7-----';
+
+          unlink(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt');
+        } else {
+          exec(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_OPENSSL . ' smime -sign -in ' . MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'data.txt -signer ' . MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PUBLIC_KEY . ' -inkey ' . MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PRIVATE_KEY . ' -outform der -nodetach -binary > ' . MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt');
+          unlink(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'data.txt');
+
+          exec(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_OPENSSL . ' smime -encrypt -des3 -binary -outform pem ' . MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PAYPAL_KEY . ' < ' . MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt > ' . MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt');
+          unlink(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt');
+
+          $fh = fopen(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt', 'rb');
+          $data = fread($fh, filesize(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt'));
+          fclose($fh);
+
+          unlink(MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt');
+        }
+
+        $process_button_string = tep_draw_hidden_field('cmd', '_s-xclick') .
+                                 tep_draw_hidden_field('encrypted', $data);
+
+        unset($data);
+      } else {
+        reset($parameters);
+        while (list($key, $value) = each($parameters)) {
+          $process_button_string .= tep_draw_hidden_field($key, $value);
+        }
+      }
+
+      return $process_button_string;
+    }
+
+    function before_process() {
+      global $customer_id, $order, $order_totals, $sendto, $billto, $languages_id, $payment, $currencies, $cart, $cart_PayPal_Standard_ID;
+      global $$payment;
+
+      $order_id = substr($cart_PayPal_Standard_ID, strpos($cart_PayPal_Standard_ID, '-')+1);
+
+      $check_query = tep_db_query("select orders_status from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
+      if (tep_db_num_rows($check_query)) {
+        $check = tep_db_fetch_array($check_query);
+
+        if ($check['orders_status'] == MODULE_PAYMENT_PAYPAL_STANDARD_PREPARE_ORDER_STATUS_ID) {
+          $sql_data_array = array('orders_id' => $order_id,
+                                  'orders_status_id' => MODULE_PAYMENT_PAYPAL_STANDARD_PREPARE_ORDER_STATUS_ID,
+                                  'date_added' => 'now()',
+                                  'customer_notified' => '0',
+                                  'comments' => '');
+
+          tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+        }
+      }
+
+      tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . (MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID) . "', last_modified = now() where orders_id = '" . (int)$order_id . "'");
+
+      $sql_data_array = array('orders_id' => $order_id,
+                              'orders_status_id' => (MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID),
+                              'date_added' => 'now()',
+                              'customer_notified' => (SEND_EMAILS == 'true') ? '1' : '0',
+                              'comments' => $order->info['comments']);
+
+      tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+
+// initialized for the email confirmation
+      $products_ordered = '';
+      $subtotal = 0;
+      $total_tax = 0;
+
+      for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+// Stock Update - Joao Correia
+        if (STOCK_LIMITED == 'true') {
+          if (DOWNLOAD_ENABLED == 'true') {
+            $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
+                                FROM " . TABLE_PRODUCTS . " p
+                                LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                ON p.products_id=pa.products_id
+                                LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                ON pa.products_attributes_id=pad.products_attributes_id
+                                WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";
+// Will work with only one option for downloadable products
+// otherwise, we have to build the query dynamically with a loop
+            $products_attributes = $order->products[$i]['attributes'];
+            if (is_array($products_attributes)) {
+              $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";
+            }
+            $stock_query = tep_db_query($stock_query_raw);
+          } else {
+            $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+          }
+          if (tep_db_num_rows($stock_query) > 0) {
+            $stock_values = tep_db_fetch_array($stock_query);
+// do not decrement quantities if products_attributes_filename exists
+            if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
+              $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];
+            } else {
+              $stock_left = $stock_values['products_quantity'];
+            }
+            tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+            if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
+              tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+            }
+          }
+        }
+
+// Update products_ordered (for bestsellers list)
+        tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+
+//------insert customer choosen option to order--------
+        $attributes_exist = '0';
+        $products_ordered_attributes = '';
+        if (isset($order->products[$i]['attributes'])) {
+          $attributes_exist = '1';
+          for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
+            if (DOWNLOAD_ENABLED == 'true') {
+              $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
+                                   from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                   left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                   on pa.products_attributes_id=pad.products_attributes_id
+                                   where pa.products_id = '" . $order->products[$i]['id'] . "'
+                                   and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
+                                   and pa.options_id = popt.products_options_id
+                                   and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
+                                   and pa.options_values_id = poval.products_options_values_id
+                                   and popt.language_id = '" . $languages_id . "'
+                                   and poval.language_id = '" . $languages_id . "'";
+              $attributes = tep_db_query($attributes_query);
+            } else {
+              $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
+            }
+            $attributes_values = tep_db_fetch_array($attributes);
+
+            $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];
+          }
+        }
+//------insert customer choosen option eof ----
+        $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
+        $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
+        $total_cost += $total_products_price;
+
+        $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
+      }
+
+// lets start with the email confirmation
+      $email_order = STORE_NAME . "\n" .
+                     EMAIL_SEPARATOR . "\n" .
+                     EMAIL_TEXT_ORDER_NUMBER . ' ' . $order_id . "\n" .
+                     EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $order_id, 'SSL', false) . "\n" .
+                     EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
+      if ($order->info['comments']) {
+        $email_order .= tep_db_output($order->info['comments']) . "\n\n";
+      }
+      $email_order .= EMAIL_TEXT_PRODUCTS . "\n" .
+                      EMAIL_SEPARATOR . "\n" .
+                      $products_ordered .
+                      EMAIL_SEPARATOR . "\n";
+
+      for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
+        $email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
+      }
+
+      if ($order->content_type != 'virtual') {
+        $email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
+                        EMAIL_SEPARATOR . "\n" .
+                        tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
+      }
+
+      $email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
+                      EMAIL_SEPARATOR . "\n" .
+                      tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
+
+      if (is_object($$payment)) {
+        $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
+                        EMAIL_SEPARATOR . "\n";
+        $payment_class = $$payment;
+        $email_order .= $payment_class->title . "\n\n";
+        if ($payment_class->email_footer) {
+          $email_order .= $payment_class->email_footer . "\n\n";
+        }
+      }
+
+      tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
+
+// send emails to other people
+      if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
+        tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
+      }
+
+// load the after_process function from the payment modules
+      $this->after_process();
+
+      $cart->reset(true);
+
+// unregister session variables used during checkout
+      tep_session_unregister('sendto');
+      tep_session_unregister('billto');
+      tep_session_unregister('shipping');
+      tep_session_unregister('payment');
+      tep_session_unregister('comments');
+
+      tep_session_unregister('cart_PayPal_Standard_ID');
+
+      tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
+    }
+
+    function after_process() {
+      return false;
+    }
+
+    function output_error() {
+      return false;
+    }
+
+    function check() {
+      if (!isset($this->_check)) {
+        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYPAL_STANDARD_STATUS'");
+        $this->_check = tep_db_num_rows($check_query);
+      }
+      return $this->_check;
+    }
+
+    function install() {
+      $check_query = tep_db_query("select orders_status_id from " . TABLE_ORDERS_STATUS . " where orders_status_name = 'Preparing [PayPal Standard]' limit 1");
+
+      if (tep_db_num_rows($check_query) < 1) {
+        $status_query = tep_db_query("select max(orders_status_id) as status_id from " . TABLE_ORDERS_STATUS);
+        $status = tep_db_fetch_array($status_query);
+
+        $status_id = $status['status_id']+1;
+
+        $languages = tep_get_languages();
+
+        foreach ($languages as $lang) {
+          tep_db_query("insert into " . TABLE_ORDERS_STATUS . " (orders_status_id, language_id, orders_status_name) values ('" . $status_id . "', '" . $lang['id'] . "', 'Preparing [PayPal Standard]')");
+        }
+
+        $flags_query = tep_db_query("describe " . TABLE_ORDERS_STATUS . " public_flag");
+        if (tep_db_num_rows($flags_query) == 1) {
+          tep_db_query("update " . TABLE_ORDERS_STATUS . " set public_flag = 0 and downloads_flag = 0 where orders_status_id = '" . $status_id . "'");
+        }
+      } else {
+        $check = tep_db_fetch_array($check_query);
+
+        $status_id = $check['orders_status_id'];
+      }
+
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable PayPal Website Payments Standard', 'MODULE_PAYMENT_PAYPAL_STANDARD_STATUS', 'False', 'Do you want to accept PayPal Website Payments Standard payments?', '6', '3', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('E-Mail Address', 'MODULE_PAYMENT_PAYPAL_STANDARD_ID', '', 'The PayPal seller e-mail address to accept payments for', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_PAYPAL_STANDARD_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_PAYPAL_STANDARD_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Preparing Order Status', 'MODULE_PAYMENT_PAYPAL_STANDARD_PREPARE_ORDER_STATUS_ID', '" . $status_id . "', 'Set the status of prepared orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set PayPal Acknowledged Order Status', 'MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Gateway Server', 'MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER', 'Live', 'Use the testing (sandbox) or live gateway server for transactions?', '6', '6', 'tep_cfg_select_option(array(\'Live\', \'Sandbox\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Method', 'MODULE_PAYMENT_PAYPAL_STANDARD_TRANSACTION_METHOD', 'Sale', 'The processing method to use for each transaction.', '6', '0', 'tep_cfg_select_option(array(\'Authorization\', \'Sale\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Page Style', 'MODULE_PAYMENT_PAYPAL_STANDARD_PAGE_STYLE', '', 'The page style to use for the transaction procedure (defined at your PayPal Profile page)', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Debug E-Mail Address', 'MODULE_PAYMENT_PAYPAL_STANDARD_DEBUG_EMAIL', '', 'All parameters of an Invalid IPN notification will be sent to this email address if one is entered.', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Encrypted Web Payments', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_STATUS', 'False', 'Do you want to enable Encrypted Web Payments?', '6', '3', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Your Private Key', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PRIVATE_KEY', '', 'The location of your Private Key to use for signing the data. (*.pem)', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Your Public Certificate', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PUBLIC_KEY', '', 'The location of your Public Certificate to use for signing the data. (*.pem)', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PayPals Public Certificate', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PAYPAL_KEY', '', 'The location of the PayPal Public Certificate for encrypting the data.', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Your PayPal Public Certificate ID', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_CERT_ID', '', 'The Certificate ID to use from your PayPal Encrypted Payment Settings Profile.', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Working Directory', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY', '', 'The working directory to use for temporary files. (trailing slash needed)', '6', '4', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('OpenSSL Location', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_OPENSSL', '/usr/bin/openssl', 'The location of the openssl binary file.', '6', '4', now())");
+    }
+
+    function remove() {
+      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
+    }
+
+    function keys() {
+      return array('MODULE_PAYMENT_PAYPAL_STANDARD_STATUS', 'MODULE_PAYMENT_PAYPAL_STANDARD_ID', 'MODULE_PAYMENT_PAYPAL_STANDARD_ZONE', 'MODULE_PAYMENT_PAYPAL_STANDARD_PREPARE_ORDER_STATUS_ID', 'MODULE_PAYMENT_PAYPAL_STANDARD_ORDER_STATUS_ID', 'MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER', 'MODULE_PAYMENT_PAYPAL_STANDARD_TRANSACTION_METHOD', 'MODULE_PAYMENT_PAYPAL_STANDARD_PAGE_STYLE', 'MODULE_PAYMENT_PAYPAL_STANDARD_DEBUG_EMAIL', 'MODULE_PAYMENT_PAYPAL_STANDARD_SORT_ORDER', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_STATUS', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PRIVATE_KEY', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PUBLIC_KEY', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_PAYPAL_KEY', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_CERT_ID', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_WORKING_DIRECTORY', 'MODULE_PAYMENT_PAYPAL_STANDARD_EWP_OPENSSL');
+    }
+
+// format prices without currency formatting
+    function format_raw($number, $currency_code = '', $currency_value = '') {
+      global $currencies, $currency;
+
+      if (empty($currency_code) || !$this->is_set($currency_code)) {
+        $currency_code = $currency;
+      }
+
+      if (empty($currency_value) || !is_numeric($currency_value)) {
+        $currency_value = $currencies->currencies[$currency_code]['value'];
+      }
+
+      return number_format(tep_round($number * $currency_value, $currencies->currencies[$currency_code]['decimal_places']), $currencies->currencies[$currency_code]['decimal_places'], '.', '');
+    }
+  }
+?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/paypal_uk_direct.php 2.2rc2.src/includes/modules/payment/paypal_uk_direct.php
--- 2.2ms2-060817.src/includes/modules/payment/paypal_uk_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/paypal_uk_direct.php	2008-01-11 12:16:37.000000000 -0600
@@ -0,0 +1,316 @@
+<?php
+/*
+  $Id: paypal_uk_direct.php 1803 2008-01-11 18:16:37Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  class paypal_uk_direct {
+    var $code, $title, $description, $enabled;
+
+// class constructor
+    function paypal_uk_direct() {
+      global $order;
+
+      $this->signature = 'paypal|paypal_uk_direct|1.0|2.2';
+
+      $this->code = 'paypal_uk_direct';
+      $this->title = MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_PUBLIC_TITLE;
+      $this->description = MODULE_PAYMENT_PAYPAL_UK_DIRECT_TEXT_DESCRIPTION;
+      $this->sort_order = MODULE_PAYMENT_PAYPAL_UK_DIRECT_SORT_ORDER;
+      $this->enabled = ((MODULE_PAYMENT_PAYPAL_UK_DIRECT_STATUS == 'True') ? true : false);
+
+      if ((int)MODULE_PAYMENT_PAYPAL_UK_DIRECT_ORDER_STATUS_ID > 0) {
+        $this->order_status = MODULE_PAYMENT_PAYPAL_UK_DIRECT_ORDER_STATUS_ID;
+      }
+
+      if (is_object($order)) $this->update_status();
+
+      $this->cc_types = array('0' => 'Visa',
+                              '1' => 'MasterCard',
+                              '9' => 'Maestro',
+                              'S' => 'Solo');
+    }
+
+// class methods
+    function update_status() {
+      global $order;
+
+      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PAYPAL_UK_DIRECT_ZONE > 0) ) {
+        $check_flag = false;
+        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYPAL_UK_DIRECT_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
+        while ($check = tep_db_fetch_array($check_query)) {
+          if ($check['zone_id'] < 1) {
+            $check_flag = true;
+            break;
+          } elseif ($check['zone_id'] == $order->delivery['zone_id']) {
+            $check_flag = true;
+            break;
+          }
+        }
+
+        if ($check_flag == false) {
+          $this->enabled = false;
+        }
+      }
+    }
+
+    function javascript_validation() {
+      return false;
+    }
+
+    function selection() {
+      return array('id' => $this->code,
+                   'module' => $this->public_title);
+    }
+
+    function pre_confirmation_check() {
+      return false;
+    }
+
+    function confirmation() {
+      global $order;
+
+      $types_array = array();
+      while (list($key, $value) = each($this->cc_types)) {
+        $types_array[] = array('id' => $key,
+                               'text' => $value);
+      }
+
+      $today = getdate();
+
+      $months_array = array();
+      for ($i=1; $i<13; $i++) {
+        $months_array[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000)));
+      }
+
+      $year_valid_from_array = array();
+      for ($i=$today['year']-10; $i < $today['year']+1; $i++) {
+        $year_valid_from_array[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
+      }
+
+      $year_expires_array = array();
+      for ($i=$today['year']; $i < $today['year']+10; $i++) {
+        $year_expires_array[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
+      }
+
+      $confirmation = array('fields' => array(array('title' => MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_OWNER,
+                                                    'field' => tep_draw_input_field('cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_TYPE,
+                                                    'field' => tep_draw_pull_down_menu('cc_type', $types_array)),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_NUMBER,
+                                                    'field' => tep_draw_input_field('cc_number_nh-dns')),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_VALID_FROM,
+                                                    'field' => tep_draw_pull_down_menu('cc_starts_month', $months_array) . '&nbsp;' . tep_draw_pull_down_menu('cc_starts_year', $year_valid_from_array) . ' ' . MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_VALID_FROM_INFO),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_EXPIRES,
+                                                    'field' => tep_draw_pull_down_menu('cc_expires_month', $months_array) . '&nbsp;' . tep_draw_pull_down_menu('cc_expires_year', $year_expires_array)),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_CVC,
+                                                    'field' => tep_draw_input_field('cc_cvc_nh-dns', '', 'size="5" maxlength="4"')),
+                                              array('title' => MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_ISSUE_NUMBER,
+                                                    'field' => tep_draw_input_field('cc_issue_nh-dns', '', 'size="3" maxlength="2"') . ' ' . MODULE_PAYMENT_PAYPAL_UK_DIRECT_CARD_ISSUE_NUMBER_INFO)));
+
+      return $confirmation;
+    }
+
+    function process_button() {
+      return false;
+    }
+
+    function before_process() {
+      global $HTTP_POST_VARS, $order, $sendto;
+
+      if (isset($HTTP_POST_VARS['cc_owner']) && !empty($HTTP_POST_VARS['cc_owner']) && isset($HTTP_POST_VARS['cc_type']) && isset($this->cc_types[$HTTP_POST_VARS['cc_type']]) && isset($HTTP_POST_VARS['cc_number_nh-dns']) && !empty($HTTP_POST_VARS['cc_number_nh-dns'])) {
+        if (MODULE_PAYMENT_PAYPAL_UK_DIRECT_TRANSACTION_SERVER == 'Live') {
+          $api_url = 'https://payflowpro.verisign.com/transaction';
+        } else {
+          $api_url = 'https://pilot-payflowpro.verisign.com/transaction';
+        }
+
+        $params = array('USER' => (tep_not_null(MODULE_PAYMENT_PAYPAL_UK_DIRECT_USERNAME) ? MODULE_PAYMENT_PAYPAL_UK_DIRECT_USERNAME : MODULE_PAYMENT_PAYPAL_UK_DIRECT_VENDOR),
+                        'VENDOR' => MODULE_PAYMENT_PAYPAL_UK_DIRECT_VENDOR,
+                        'PARTNER' => MODULE_PAYMENT_PAYPAL_UK_DIRECT_PARTNER,
+                        'PWD' => MODULE_PAYMENT_PAYPAL_UK_DIRECT_PASSWORD,
+                        'TENDER' => 'C',
+                        'TRXTYPE' => ((MODULE_PAYMENT_PAYPAL_UK_DIRECT_TRANSACTION_METHOD == 'Sale') ? 'S' : 'A'),
+                        'AMT' => $this->format_raw($order->info['total']),
+                        'CURRENCY' => $order->info['currency'],
+                        'NAME' => $HTTP_POST_VARS['cc_owner'],
+                        'STREET' => $order->billing['street_address'],
+                        'CITY' => $order->billing['city'],
+                        'STATE' => tep_get_zone_code($order->billing['country']['id'], $order->billing['zone_id'], $order->billing['state']),
+                        'COUNTRY' => $order->billing['country']['iso_code_2'],
+                        'ZIP' => $order->billing['postcode'],
+                        'CLIENTIP' => tep_get_ip_address(),
+                        'EMAIL' => $order->customer['email_address'],
+                        'ACCT' => $HTTP_POST_VARS['cc_number_nh-dns'],
+                        'ACCTTYPE' => $HTTP_POST_VARS['cc_type'],
+                        'CARDSTART' => $HTTP_POST_VARS['cc_starts_month'] . $HTTP_POST_VARS['cc_starts_year'],
+                        'EXPDATE' => $HTTP_POST_VARS['cc_expires_month'] . $HTTP_POST_VARS['cc_expires_year'],
+                        'CVV2' => $HTTP_POST_VARS['cc_cvc_nh-dns'],
+                        'BUTTONSOURCE' => 'osCommerce22_Default_PRO2DP');
+
+        if ( ($HTTP_POST_VARS['cc_type'] == '9') || ($HTTP_POST_VARS['cc_type'] == 'S') ) {
+          $params['CARDISSUE'] = $HTTP_POST_VARS['cc_issue_nh-dns'];
+        }
+
+        if (is_numeric($sendto) && ($sendto > 0)) {
+          $params['SHIPTOFIRSTNAME'] = $order->delivery['firstname'];
+          $params['SHIPTOLASTNAME'] = $order->delivery['lastname'];
+          $params['SHIPTOSTREET'] = $order->delivery['street_address'];
+          $params['SHIPTOCITY'] = $order->delivery['city'];
+          $params['SHIPTOSTATE'] = tep_get_zone_code($order->delivery['country']['id'], $order->delivery['zone_id'], $order->delivery['state']);
+          $params['SHIPTOCOUNTRY'] = $order->delivery['country']['iso_code_2'];
+          $params['SHIPTOZIP'] = $order->delivery['postcode'];
+        }
+
+        $post_string = '';
+
+        foreach ($params as $key => $value) {
+          $post_string .= $key . '[' . strlen(trim($value)) . ']=' . trim($value) . '&';
+        }
+
+        $post_string = substr($post_string, 0, -1);
+
+        $response = $this->sendTransactionToGateway($api_url, $post_string, array('X-VPS-REQUEST-ID: ' . md5($cartID . tep_session_id() . rand())));
+        $response_array = array();
+        parse_str($response, $response_array);
+
+        if ($response_array['RESULT'] != '0') {
+          switch ($response_array['RESULT']) {
+            case '1':
+            case '26':
+              $error_message = MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_CFG_ERROR;
+              break;
+
+            case '7':
+              $error_message = MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_ADDRESS;
+              break;
+
+            case '12':
+              $error_message = MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_DECLINED;
+              break;
+
+            case '23':
+            case '24':
+              $error_message = MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_INVALID_CREDIT_CARD;
+              break;
+
+            default:
+              $error_message = MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_GENERAL;
+              break;
+          }
+
+          tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'error_message=' . urlencode($error_message), 'SSL'));
+        }
+      } else {
+        tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'error_message=' . MODULE_PAYMENT_PAYPAL_UK_DIRECT_ERROR_ALL_FIELDS_REQUIRED, 'SSL'));
+      }
+    }
+
+    function after_process() {
+      return false;
+    }
+
+    function get_error() {
+      return false;
+    }
+
+    function check() {
+      if (!isset($this->_check)) {
+        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_STATUS'");
+        $this->_check = tep_db_num_rows($check_query);
+      }
+      return $this->_check;
+    }
+
+    function install() {
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable PayPal Direct (UK)', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_STATUS', 'False', 'Do you want to accept PayPal Direct (UK) payments?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Vendor', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_VENDOR', '', 'Your merchant login ID that you created when you registered for the Website Payments Pro account.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('User', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_USERNAME', '', 'If you set up one or more additional users on the account, this value is the ID of the user authorised to process transactions. If, however, you have not set up additional users on the account, USER has the same value as VENDOR.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Password', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_PASSWORD', '', 'The 6- to 32-character password that you defined while registering for the account.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Partner', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_PARTNER', 'PayPalUK', 'The ID provided to you by the authorised PayPal Reseller who registered you for the Payflow SDK. If you purchased your account directly from PayPal, use PayPalUK.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Server', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_TRANSACTION_SERVER', 'Live', 'Use the live or testing (sandbox) gateway server to process transactions?', '6', '0', 'tep_cfg_select_option(array(\'Live\', \'Sandbox\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Method', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_TRANSACTION_METHOD', 'Sale', 'The processing method to use for each transaction.', '6', '0', 'tep_cfg_select_option(array(\'Authorization\', \'Sale\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value.', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('cURL Program Location', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_CURL', '/usr/bin/curl', 'The location to the cURL program application.', '6', '0' , now())");
+   }
+
+    function remove() {
+      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
+    }
+
+    function keys() {
+      return array('MODULE_PAYMENT_PAYPAL_UK_DIRECT_STATUS', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_VENDOR', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_USERNAME', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_PASSWORD', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_PARTNER', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_TRANSACTION_SERVER', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_TRANSACTION_METHOD', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_ZONE', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_ORDER_STATUS_ID', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_SORT_ORDER', 'MODULE_PAYMENT_PAYPAL_UK_DIRECT_CURL');
+    }
+
+    function sendTransactionToGateway($url, $parameters, $headers = null) {
+      $header = array();
+
+      $server = parse_url($url);
+
+      if (!isset($server['port'])) {
+        $server['port'] = ($server['scheme'] == 'https') ? 443 : 80;
+      }
+
+      if (!isset($server['path'])) {
+        $server['path'] = '/';
+      }
+
+      if (isset($server['user']) && isset($server['pass'])) {
+        $header[] = 'Authorization: Basic ' . base64_encode($server['user'] . ':' . $server['pass']);
+      }
+
+      if (!empty($headers) && is_array($headers)) {
+        $header = array_merge($header, $headers);
+      }
+
+      if (function_exists('curl_init')) {
+        $curl = curl_init($server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : ''));
+        curl_setopt($curl, CURLOPT_PORT, $server['port']);
+        curl_setopt($curl, CURLOPT_HEADER, 0);
+        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
+        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+        curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
+        curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
+        curl_setopt($curl, CURLOPT_POST, 1);
+        curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);
+
+        if (!empty($header)) {
+          curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
+        }
+
+        $result = curl_exec($curl);
+
+        curl_close($curl);
+      } else {
+        exec(escapeshellarg(MODULE_PAYMENT_PAYPAL_UK_DIRECT_CURL) . ' -d ' . escapeshellarg($parameters) . ' "' . $server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : '') . '" -P ' . $server['port'] . ' -k' . (!empty($header) ? ' -H ' . escapeshellarg(implode("\r\n", $header)) : ''), $result);
+        $result = implode("\n", $result);
+      }
+
+      return $result;
+    }
+
+// format prices without currency formatting
+    function format_raw($number, $currency_code = '', $currency_value = '') {
+      global $currencies, $currency;
+
+      if (empty($currency_code) || !$this->is_set($currency_code)) {
+        $currency_code = $currency;
+      }
+
+      if (empty($currency_value) || !is_numeric($currency_value)) {
+        $currency_value = $currencies->currencies[$currency_code]['value'];
+      }
+
+      return number_format(tep_round($number * $currency_value, $currencies->currencies[$currency_code]['decimal_places']), $currencies->currencies[$currency_code]['decimal_places'], '.', '');
+    }
+  }
+?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/paypal_uk_express.php 2.2rc2.src/includes/modules/payment/paypal_uk_express.php
--- 2.2ms2-060817.src/includes/modules/payment/paypal_uk_express.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/paypal_uk_express.php	2008-01-11 12:16:37.000000000 -0600
@@ -0,0 +1,289 @@
+<?php
+/*
+  $Id: paypal_uk_express.php 1803 2008-01-11 18:16:37Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  class paypal_uk_express {
+    var $code, $title, $description, $enabled;
+
+// class constructor
+    function paypal_uk_express() {
+      global $order;
+
+      $this->signature = 'paypal|paypal_uk_express|1.0|2.2';
+
+      $this->code = 'paypal_uk_express';
+      $this->title = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_PUBLIC_TITLE;
+      $this->description = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_DESCRIPTION;
+      $this->sort_order = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_SORT_ORDER;
+      $this->enabled = ((MODULE_PAYMENT_PAYPAL_UK_EXPRESS_STATUS == 'True') ? true : false);
+
+      if ((int)MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ORDER_STATUS_ID > 0) {
+        $this->order_status = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ORDER_STATUS_ID;
+      }
+
+      if (is_object($order)) $this->update_status();
+    }
+
+// class methods
+    function update_status() {
+      global $order;
+
+      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ZONE > 0) ) {
+        $check_flag = false;
+        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
+        while ($check = tep_db_fetch_array($check_query)) {
+          if ($check['zone_id'] < 1) {
+            $check_flag = true;
+            break;
+          } elseif ($check['zone_id'] == $order->delivery['zone_id']) {
+            $check_flag = true;
+            break;
+          }
+        }
+
+        if ($check_flag == false) {
+          $this->enabled = false;
+        }
+      }
+    }
+
+    function checkout_initialization_method() {
+      global $language;
+
+      if (file_exists(DIR_FS_CATALOG . 'ext/modules/payment/paypal/images/btn_express_' . basename($language) . '.gif')) {
+        $image = 'ext/modules/payment/paypal/images/btn_express_' . basename($language) . '.gif';
+      } else {
+        $image = 'ext/modules/payment/paypal/images/btn_express.gif';
+      }
+
+      $string = '<a href="' . tep_href_link('ext/modules/payment/paypal/express_uk.php', '', 'SSL') . '"><img src="' . $image . '" border="0" alt="" title="' . tep_output_string_protected(MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_BUTTON) . '" /></a>';
+
+      return $string;
+    }
+
+    function javascript_validation() {
+      return false;
+    }
+
+    function selection() {
+      return array('id' => $this->code,
+                   'module' => $this->public_title);
+    }
+
+    function pre_confirmation_check() {
+      if (!tep_session_is_registered('ppeuk_token')) {
+        tep_redirect(tep_href_link('ext/modules/payment/paypal/express_uk.php', '', 'SSL'));
+      }
+    }
+
+    function confirmation() {
+      global $comments;
+
+      if (!isset($comments)) {
+        $comments = null;
+      }
+
+      $confirmation = false;
+
+      if (empty($comments)) {
+        $confirmation = array('fields' => array(array('title' => MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TEXT_COMMENTS,
+                                                      'field' => tep_draw_textarea_field('ppecomments', 'soft', '60', '5', $comments))));
+      }
+
+      return $confirmation;
+    }
+
+    function process_button() {
+      return false;
+    }
+
+    function before_process() {
+      global $order, $sendto, $ppeuk_token, $ppeuk_payerid, $HTTP_POST_VARS, $comments;
+
+      if (empty($comments)) {
+        if (isset($HTTP_POST_VARS['ppecomments']) && tep_not_null($HTTP_POST_VARS['ppecomments'])) {
+          $comments = tep_db_prepare_input($HTTP_POST_VARS['ppecomments']);
+
+          $order->info['comments'] = $comments;
+        }
+      }
+
+      if (MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TRANSACTION_SERVER == 'Live') {
+        $api_url = 'https://payflowpro.verisign.com/transaction';
+      } else {
+        $api_url = 'https://pilot-payflowpro.verisign.com/transaction';
+      }
+
+      $params = array('USER' => (tep_not_null(MODULE_PAYMENT_PAYPAL_UK_EXPRESS_USERNAME) ? MODULE_PAYMENT_PAYPAL_UK_EXPRESS_USERNAME : MODULE_PAYMENT_PAYPAL_UK_EXPRESS_VENDOR),
+                      'VENDOR' => MODULE_PAYMENT_PAYPAL_UK_EXPRESS_VENDOR,
+                      'PARTNER' => MODULE_PAYMENT_PAYPAL_UK_EXPRESS_PARTNER,
+                      'PWD' => MODULE_PAYMENT_PAYPAL_UK_EXPRESS_PASSWORD,
+                      'TENDER' => 'P',
+                      'TRXTYPE' => ((MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TRANSACTION_METHOD == 'Sale') ? 'S' : 'A'),
+                      'EMAIL' => $order->customer['email_address'],
+                      'TOKEN' => $ppeuk_token,
+                      'ACTION' => 'D',
+                      'PAYERID' => $ppeuk_payerid,
+                      'AMT' => $this->format_raw($order->info['total']),
+                      'CURRENCY' => $order->info['currency'],
+                      'BUTTONSOURCE' => 'osCommerce22_Default_PRO2EC');
+
+      if (is_numeric($sendto) && ($sendto > 0)) {
+        $params['SHIPTOSTREET'] = $order->delivery['street_address'];
+        $params['SHIPTOCITY'] = $order->delivery['city'];
+        $params['SHIPTOSTATE'] = tep_get_zone_code($order->delivery['country']['id'], $order->delivery['zone_id'], $order->delivery['state']);
+        $params['SHIPTOCOUNTRY'] = $order->delivery['country']['iso_code_2'];
+        $params['SHIPTOZIP'] = $order->delivery['postcode'];
+      }
+
+      $post_string = '';
+
+      foreach ($params as $key => $value) {
+        $post_string .= $key . '[' . strlen(trim($value)) . ']=' . trim($value) . '&';
+      }
+
+      $post_string = substr($post_string, 0, -1);
+
+      $response = $this->sendTransactionToGateway($api_url, $post_string, array('X-VPS-REQUEST-ID: ' . md5($cartID . tep_session_id() . rand())));
+      $response_array = array();
+      parse_str($response, $response_array);
+
+      if ($response_array['RESULT'] != '0') {
+        switch ($response_array['RESULT']) {
+          case '1':
+          case '26':
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_CFG_ERROR;
+            break;
+
+          case '7':
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_ADDRESS;
+            break;
+
+          case '12':
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_DECLINED;
+            break;
+
+          case '1000':
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_EXPRESS_DISABLED;
+            break;
+
+          default:
+            $error_message = MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ERROR_GENERAL;
+            break;
+        }
+
+        tep_redirect(tep_href_link(FILENAME_SHOPPING_CART, 'error_message=' . urlencode($error_message), 'SSL'));
+      }
+    }
+
+    function after_process() {
+      tep_session_unregister('ppeuk_token');
+      tep_session_unregister('ppeuk_payerid');
+    }
+
+    function get_error() {
+      return false;
+    }
+
+    function check() {
+      if (!isset($this->_check)) {
+        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_STATUS'");
+        $this->_check = tep_db_num_rows($check_query);
+      }
+      return $this->_check;
+    }
+
+    function install() {
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable PayPal Express Checkout (UK)', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_STATUS', 'False', 'Do you want to accept PayPal Express Checkout (UK) payments?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Vendor', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_VENDOR', '', 'Your merchant login ID that you created when you registered for the Website Payments Pro account.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('User', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_USERNAME', '', 'If you set up one or more additional users on the account, this value is the ID of the user authorised to process transactions. If, however, you have not set up additional users on the account, USER has the same value as VENDOR.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Password', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_PASSWORD', '', 'The 6- to 32-character password that you defined while registering for the account.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Partner', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_PARTNER', 'PayPalUK', 'The ID provided to you by the authorised PayPal Reseller who registered you for the Payflow SDK. If you purchased your account directly from PayPal, use PayPalUK.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Server', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TRANSACTION_SERVER', 'Live', 'Use the live or testing (sandbox) gateway server to process transactions?', '6', '0', 'tep_cfg_select_option(array(\'Live\', \'Sandbox\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Method', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TRANSACTION_METHOD', 'Sale', 'The processing method to use for each transaction.', '6', '0', 'tep_cfg_select_option(array(\'Authorization\', \'Sale\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value.', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('cURL Program Location', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_CURL', '/usr/bin/curl', 'The location to the cURL program application.', '6', '0' , now())");
+   }
+
+    function remove() {
+      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
+    }
+
+    function keys() {
+      return array('MODULE_PAYMENT_PAYPAL_UK_EXPRESS_STATUS', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_VENDOR', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_USERNAME', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_PASSWORD', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_PARTNER', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TRANSACTION_SERVER', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_TRANSACTION_METHOD', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ZONE', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_ORDER_STATUS_ID', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_SORT_ORDER', 'MODULE_PAYMENT_PAYPAL_UK_EXPRESS_CURL');
+    }
+
+    function sendTransactionToGateway($url, $parameters, $headers = null) {
+      $header = array();
+
+      $server = parse_url($url);
+
+      if (!isset($server['port'])) {
+        $server['port'] = ($server['scheme'] == 'https') ? 443 : 80;
+      }
+
+      if (!isset($server['path'])) {
+        $server['path'] = '/';
+      }
+
+      if (isset($server['user']) && isset($server['pass'])) {
+        $header[] = 'Authorization: Basic ' . base64_encode($server['user'] . ':' . $server['pass']);
+      }
+
+      if (!empty($headers) && is_array($headers)) {
+        $header = array_merge($header, $headers);
+      }
+
+      if (function_exists('curl_init')) {
+        $curl = curl_init($server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : ''));
+        curl_setopt($curl, CURLOPT_PORT, $server['port']);
+        curl_setopt($curl, CURLOPT_HEADER, 0);
+        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
+        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+        curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
+        curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
+        curl_setopt($curl, CURLOPT_POST, 1);
+        curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);
+
+        if (!empty($header)) {
+          curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
+        }
+
+        $result = curl_exec($curl);
+
+        curl_close($curl);
+      } else {
+        exec(escapeshellarg(MODULE_PAYMENT_PAYPAL_UK_EXPRESS_CURL) . ' -d ' . escapeshellarg($parameters) . ' "' . $server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : '') . '" -P ' . $server['port'] . ' -k' . (!empty($header) ? ' -H ' . escapeshellarg(implode("\r\n", $header)) : ''), $result);
+        $result = implode("\n", $result);
+      }
+
+      return $result;
+    }
+
+// format prices without currency formatting
+    function format_raw($number, $currency_code = '', $currency_value = '') {
+      global $currencies, $currency;
+
+      if (empty($currency_code) || !$this->is_set($currency_code)) {
+        $currency_code = $currency;
+      }
+
+      if (empty($currency_value) || !is_numeric($currency_value)) {
+        $currency_value = $currencies->currencies[$currency_code]['value'];
+      }
+
+      return number_format(tep_round($number * $currency_value, $currencies->currencies[$currency_code]['decimal_places']), $currencies->currencies[$currency_code]['decimal_places'], '.', '');
+    }
+  }
+?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/pm2checkout.php 2.2rc2.src/includes/modules/payment/pm2checkout.php
--- 2.2ms2-060817.src/includes/modules/payment/pm2checkout.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/pm2checkout.php	2008-01-13 06:53:40.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: pm2checkout.php,v 1.19 2003/01/29 19:57:15 hpdl Exp $
+  $Id: pm2checkout.php 1813 2008-01-13 12:53:40Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -17,8 +17,11 @@
     function pm2checkout() {
       global $order;
 
+      $this->signature = '2checkout|pm2checkout|1.1|2.2';
+
       $this->code = 'pm2checkout';
       $this->title = MODULE_PAYMENT_2CHECKOUT_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_2CHECKOUT_TEXT_PUBLIC_TITLE;
       $this->description = MODULE_PAYMENT_2CHECKOUT_TEXT_DESCRIPTION;
       $this->sort_order = MODULE_PAYMENT_2CHECKOUT_SORT_ORDER;
       $this->enabled = ((MODULE_PAYMENT_2CHECKOUT_STATUS == 'True') ? true : false);
@@ -29,7 +32,7 @@
 
       if (is_object($order)) $this->update_status();
 
-      $this->form_action_url = 'https://www.2checkout.com/cgi-bin/Abuyers/purchase.2c';
+      $this->form_action_url = 'https://www.2checkout.com/2co/buyer/purchase';
     }
 
 // class methods
@@ -56,122 +59,69 @@
     }
 
     function javascript_validation() {
-      $js = '  if (payment_value == "' . $this->code . '") {' . "\n" .
-            '    var cc_number = document.checkout_payment.pm_2checkout_cc_number.value;' . "\n" .
-            '    if (cc_number == "" || cc_number.length < ' . CC_NUMBER_MIN_LENGTH . ') {' . "\n" .
-            '      error_message = error_message + "' . MODULE_PAYMENT_2CHECKOUT_TEXT_JS_CC_NUMBER . '";' . "\n" .
-            '      error = 1;' . "\n" .
-            '    }' . "\n" .
-            '  }' . "\n";
-
-      return $js;
+      return false;
     }
 
     function selection() {
-      global $order;
-
-      for ($i=1; $i < 13; $i++) {
-        $expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000)));
-      }
-
-      $today = getdate(); 
-      for ($i=$today['year']; $i < $today['year']+10; $i++) {
-        $expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
-      }
-
-      $selection = array('id' => $this->code,
-                         'module' => $this->title,
-                         'fields' => array(array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_FIRST_NAME,
-                                                 'field' => tep_draw_input_field('pm_2checkout_cc_owner_firstname', $order->billing['firstname'])),
-                                           array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_LAST_NAME,
-                                                 'field' => tep_draw_input_field('pm_2checkout_cc_owner_lastname', $order->billing['lastname'])),
-                                           array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_NUMBER,
-                                                 'field' => tep_draw_input_field('pm_2checkout_cc_number')),
-                                           array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_EXPIRES,
-                                                 'field' => tep_draw_pull_down_menu('pm_2checkout_cc_expires_month', $expires_month) . '&nbsp;' . tep_draw_pull_down_menu('pm_2checkout_cc_expires_year', $expires_year)),
-                                           array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_CHECKNUMBER,
-                                                 'field' => tep_draw_input_field('pm_2checkout_cc_cvv', '', 'size="4" maxlength="3"') . '&nbsp;<small>' . MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_CHECKNUMBER_LOCATION . '</small>')));
-
-      return $selection;
+      return array('id' => $this->code,
+                   'module' => $this->public_title . (strlen(MODULE_PAYMENT_2CHECKOUT_TEXT_PUBLIC_DESCRIPTION) > 0 ? ' (' . MODULE_PAYMENT_2CHECKOUT_TEXT_PUBLIC_DESCRIPTION . ')' : ''));
     }
 
     function pre_confirmation_check() {
-      global $HTTP_POST_VARS;
-
-      include(DIR_WS_CLASSES . 'cc_validation.php');
-
-      $cc_validation = new cc_validation();
-      $result = $cc_validation->validate($HTTP_POST_VARS['pm_2checkout_cc_number'], $HTTP_POST_VARS['pm_2checkout_cc_expires_month'], $HTTP_POST_VARS['pm_2checkout_cc_expires_year']);
-
-      $error = '';
-      switch ($result) {
-        case -1:
-          $error = sprintf(TEXT_CCVAL_ERROR_UNKNOWN_CARD, substr($cc_validation->cc_number, 0, 4));
-          break;
-        case -2:
-        case -3:
-        case -4:
-          $error = TEXT_CCVAL_ERROR_INVALID_DATE;
-          break;
-        case false:
-          $error = TEXT_CCVAL_ERROR_INVALID_NUMBER;
-          break;
-      }
-
-      if ( ($result == false) || ($result < 1) ) {
-        $payment_error_return = 'payment_error=' . $this->code . '&error=' . urlencode($error) . '&pm_2checkout_cc_owner_firstname=' . urlencode($HTTP_POST_VARS['pm_2checkout_cc_owner_firstname']) . '&pm_2checkout_cc_owner_lastname=' . urlencode($HTTP_POST_VARS['pm_2checkout_cc_owner_lastname']) . '&pm_2checkout_cc_expires_month=' . $HTTP_POST_VARS['pm_2checkout_cc_expires_month'] . '&pm_2checkout_cc_expires_year=' . $HTTP_POST_VARS['pm_2checkout_cc_expires_year'];
-
-        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, $payment_error_return, 'SSL', true, false));
-      }
-
-      $this->cc_card_type = $cc_validation->cc_type;
-      $this->cc_card_number = $cc_validation->cc_number;
-      $this->cc_expiry_month = $cc_validation->cc_expiry_month;
-      $this->cc_expiry_year = $cc_validation->cc_expiry_year;
+      return false;
     }
 
     function confirmation() {
-      global $HTTP_POST_VARS;
-
-      $confirmation = array('title' => $this->title . ': ' . $this->cc_card_type,
-                            'fields' => array(array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER,
-                                                    'field' => $HTTP_POST_VARS['pm_2checkout_cc_owner_firstname'] . ' ' . $HTTP_POST_VARS['pm_2checkout_cc_owner_lastname']),
-                                              array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_NUMBER,
-                                                    'field' => substr($this->cc_card_number, 0, 4) . str_repeat('X', (strlen($this->cc_card_number) - 8)) . substr($this->cc_card_number, -4)),
-                                              array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_EXPIRES,
-                                                    'field' => strftime('%B, %Y', mktime(0,0,0,$HTTP_POST_VARS['pm_2checkout_cc_expires_month'], 1, '20' . $HTTP_POST_VARS['pm_2checkout_cc_expires_year'])))));
-
-      return $confirmation;
+      return false;
     }
 
     function process_button() {
-      global $HTTP_POST_VARS, $order;
+      global $HTTP_POST_VARS, $currencies, $currency, $order, $languages_id;
+
+      $process_button_string = tep_draw_hidden_field('sid', MODULE_PAYMENT_2CHECKOUT_LOGIN) .
+                               tep_draw_hidden_field('total', number_format($order->info['total'], 2)) .
+                               tep_draw_hidden_field('cart_order_id', date('YmdHis')) .
+                               tep_draw_hidden_field('fixed', 'Y') .
+                               tep_draw_hidden_field('card_holder_name', $order->billing['firstname'] . ' ' . $order->billing['lastname']) .
+                               tep_draw_hidden_field('street_address', $order->billing['street_address']) .
+                               tep_draw_hidden_field('city', $order->billing['city']) .
+                               tep_draw_hidden_field('state', $order->billing['state']) .
+                               tep_draw_hidden_field('zip', $order->billing['postcode']) .
+                               tep_draw_hidden_field('country', $order->billing['country']['title']) .
+                               tep_draw_hidden_field('email', $order->customer['email_address']) .
+                               tep_draw_hidden_field('phone', $order->customer['telephone']) .
+                               tep_draw_hidden_field('ship_street_address', $order->delivery['street_address']) .
+                               tep_draw_hidden_field('ship_city', $order->delivery['city']) .
+                               tep_draw_hidden_field('ship_state', $order->delivery['state']) .
+                               tep_draw_hidden_field('ship_zip', $order->delivery['postcode']) .
+                               tep_draw_hidden_field('ship_country', $order->delivery['country']['title']);
+
+      for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+        $process_button_string .= tep_draw_hidden_field('c_prod_' . ($i+1), (int)$order->products[$i]['id'] . ',' . (int)$order->products[$i]['qty']) .
+                                  tep_draw_hidden_field('c_name_' . ($i+1), $order->products[$i]['name']) .
+                                  tep_draw_hidden_field('c_description_' . ($i+1), $order->products[$i]['name']) .
+                                  tep_draw_hidden_field('c_price_' . ($i+1), tep_round(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax']), $currencies->currencies[$currency]['decimal_places']));
+      }
+
+      $process_button_string .= tep_draw_hidden_field('id_type', '1');
+
+      if (MODULE_PAYMENT_2CHECKOUT_TESTMODE == 'Test') {
+        $process_button_string .= tep_draw_hidden_field('demo', 'Y');
+      }
+
+      $process_button_string .= tep_draw_hidden_field('return_url', tep_href_link(FILENAME_SHOPPING_CART));
+
+      $lang_query = tep_db_query("select code from " . TABLE_LANGUAGES . " where languages_id = '" . (int)$languages_id . "'");
+      $lang = tep_db_fetch_array($lang_query);
+
+      switch (strtolower($lang['code'])) {
+        case 'es':
+          $process_button_string .= tep_draw_hidden_field('lang', 'sp');
+          break;
+      }
 
-      $process_button_string = tep_draw_hidden_field('x_login', MODULE_PAYMENT_2CHECKOUT_LOGIN) .
-                               tep_draw_hidden_field('x_amount', number_format($order->info['total'], 2)) .
-                               tep_draw_hidden_field('x_invoice_num', date('YmdHis')) .
-                               tep_draw_hidden_field('x_test_request', ((MODULE_PAYMENT_2CHECKOUT_TESTMODE == 'Test') ? 'Y' : 'N')) .
-                               tep_draw_hidden_field('x_card_num', $this->cc_card_number) .
-                               tep_draw_hidden_field('cvv', $HTTP_POST_VARS['pm_2checkout_cc_cvv']) .
-                               tep_draw_hidden_field('x_exp_date', $this->cc_expiry_month . substr($this->cc_expiry_year, -2)) .
-                               tep_draw_hidden_field('x_first_name', $HTTP_POST_VARS['pm_2checkout_cc_owner_firstname']) .
-                               tep_draw_hidden_field('x_last_name', $HTTP_POST_VARS['pm_2checkout_cc_owner_lastname']) .
-                               tep_draw_hidden_field('x_address', $order->customer['street_address']) .
-                               tep_draw_hidden_field('x_city', $order->customer['city']) .
-                               tep_draw_hidden_field('x_state', $order->customer['state']) .
-                               tep_draw_hidden_field('x_zip', $order->customer['postcode']) .
-                               tep_draw_hidden_field('x_country', $order->customer['country']['title']) .
-                               tep_draw_hidden_field('x_email', $order->customer['email_address']) .
-                               tep_draw_hidden_field('x_phone', $order->customer['telephone']) .
-                               tep_draw_hidden_field('x_ship_to_first_name', $order->delivery['firstname']) .
-                               tep_draw_hidden_field('x_ship_to_last_name', $order->delivery['lastname']) .
-                               tep_draw_hidden_field('x_ship_to_address', $order->delivery['street_address']) .
-                               tep_draw_hidden_field('x_ship_to_city', $order->delivery['city']) .
-                               tep_draw_hidden_field('x_ship_to_state', $order->delivery['state']) .
-                               tep_draw_hidden_field('x_ship_to_zip', $order->delivery['postcode']) .
-                               tep_draw_hidden_field('x_ship_to_country', $order->delivery['country']['title']) .
-                               tep_draw_hidden_field('x_receipt_link_url', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) .
-                               tep_draw_hidden_field('x_email_merchant', ((MODULE_PAYMENT_2CHECKOUT_EMAIL_MERCHANT == 'True') ? 'TRUE' : 'FALSE'));
+      $process_button_string .= tep_draw_hidden_field('cart_brand_name', 'oscommerce') .
+                                tep_draw_hidden_field('cart_version_name', PROJECT_VERSION);
 
       return $process_button_string;
     }
@@ -179,22 +129,39 @@
     function before_process() {
       global $HTTP_POST_VARS;
 
-      if ($HTTP_POST_VARS['x_response_code'] != '1') {
+      if ($HTTP_POST_VARS['credit_card_processed'] != 'Y') {
         tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR_MESSAGE), 'SSL', true, false));
       }
     }
 
     function after_process() {
-      return false;
-    }
+      global $HTTP_POST_VARS, $order, $insert_id;
 
-    function get_error() {
-      global $HTTP_GET_VARS;
+      if (MODULE_PAYMENT_2CHECKOUT_TESTMODE == 'Test') {
+        $sql_data_array = array('orders_id' => (int)$insert_id, 
+                                'orders_status_id' => (int)$order->info['order_status'], 
+                                'date_added' => 'now()', 
+                                'customer_notified' => '0',
+                                'comments' => MODULE_PAYMENT_2CHECKOUT_TEXT_WARNING_DEMO_MODE);
+
+        tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+      }
+
+      if (tep_not_null(MODULE_PAYMENT_2CHECKOUT_SECRET_WORD) && (MODULE_PAYMENT_2CHECKOUT_TESTMODE == 'Production')) {
+        if (md5(MODULE_PAYMENT_2CHECKOUT_SECRET_WORD . MODULE_PAYMENT_2CHECKOUT_LOGIN . $HTTP_POST_VARS['order_number'] . number_format($order->info['total'], 2)) != $HTTP_POST_VARS['key']) {
+          $sql_data_array = array('orders_id' => (int)$insert_id, 
+                                  'orders_status_id' => (int)$order->info['order_status'], 
+                                  'date_added' => 'now()', 
+                                  'customer_notified' => '0',
+                                  'comments' => MODULE_PAYMENT_2CHECKOUT_TEXT_WARNING_TRANSACTION_ORDER);
 
-      $error = array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR,
-                     'error' => stripslashes(urldecode($HTTP_GET_VARS['error'])));
+          tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+        }
+      }
+    }
 
-      return $error;
+    function get_error() {
+      return false;
     }
 
     function check() {
@@ -206,12 +173,12 @@
     }
 
     function install() {
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable 2CheckOut Module', 'MODULE_PAYMENT_2CHECKOUT_STATUS', 'True', 'Do you want to accept 2CheckOut payments?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Login/Store Number', 'MODULE_PAYMENT_2CHECKOUT_LOGIN', '18157', 'Login/Store Number used for the 2CheckOut service', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable 2CheckOut', 'MODULE_PAYMENT_2CHECKOUT_STATUS', 'False', 'Do you want to accept 2CheckOut payments?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Seller ID', 'MODULE_PAYMENT_2CHECKOUT_LOGIN', '', 'Seller ID used for the 2CheckOut service', '6', '0', now())");
       tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Mode', 'MODULE_PAYMENT_2CHECKOUT_TESTMODE', 'Test', 'Transaction mode used for the 2Checkout service', '6', '0', 'tep_cfg_select_option(array(\'Test\', \'Production\'), ', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Merchant Notifications', 'MODULE_PAYMENT_2CHECKOUT_EMAIL_MERCHANT', 'True', 'Should 2CheckOut e-mail a receipt to the store owner?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_2CHECKOUT_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_2CHECKOUT_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Secret Word', 'MODULE_PAYMENT_2CHECKOUT_SECRET_WORD', '', 'The secret word to confirm transactions with (must be the same as defined on the merchat account configuration page', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_PAYMENT_2CHECKOUT_SORT_ORDER', '0', 'Sort order of display (lowest is displayed first)', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_2CHECKOUT_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
       tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_2CHECKOUT_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
     }
 
@@ -220,7 +187,7 @@
     }
 
     function keys() {
-      return array('MODULE_PAYMENT_2CHECKOUT_STATUS', 'MODULE_PAYMENT_2CHECKOUT_LOGIN', 'MODULE_PAYMENT_2CHECKOUT_TESTMODE', 'MODULE_PAYMENT_2CHECKOUT_EMAIL_MERCHANT', 'MODULE_PAYMENT_2CHECKOUT_ZONE', 'MODULE_PAYMENT_2CHECKOUT_ORDER_STATUS_ID', 'MODULE_PAYMENT_2CHECKOUT_SORT_ORDER');
+      return array('MODULE_PAYMENT_2CHECKOUT_STATUS', 'MODULE_PAYMENT_2CHECKOUT_LOGIN', 'MODULE_PAYMENT_2CHECKOUT_TESTMODE', 'MODULE_PAYMENT_2CHECKOUT_SECRET_WORD', 'MODULE_PAYMENT_2CHECKOUT_ZONE', 'MODULE_PAYMENT_2CHECKOUT_ORDER_STATUS_ID', 'MODULE_PAYMENT_2CHECKOUT_SORT_ORDER');
     }
   }
 ?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/psigate.php 2.2rc2.src/includes/modules/payment/psigate.php
--- 2.2ms2-060817.src/includes/modules/payment/psigate.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/psigate.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: psigate.php,v 1.17 2003/06/30 20:30:37 hpdl Exp $
+  $Id: psigate.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/payment/secpay.php 2.2rc2.src/includes/modules/payment/secpay.php
--- 2.2ms2-060817.src/includes/modules/payment/secpay.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/secpay.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: secpay.php,v 1.31 2003/01/29 19:57:15 hpdl Exp $
+  $Id: secpay.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/payment/sofortueberweisung_direct.php 2.2rc2.src/includes/modules/payment/sofortueberweisung_direct.php
--- 2.2ms2-060817.src/includes/modules/payment/sofortueberweisung_direct.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/sofortueberweisung_direct.php	2008-01-09 19:10:52.000000000 -0600
@@ -0,0 +1,610 @@
+<?php
+/*
+  $Id: sofortueberweisung_direct.php 1782 2008-01-10 01:10:52Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2006 - 2007 Henri Schmidhuber (http://www.in-solution.de)
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  class sofortueberweisung_direct {
+    var $code, $title, $description, $enabled;
+
+// class constructor
+    function sofortueberweisung_direct() {
+      global $order;
+
+      $this->code = 'sofortueberweisung_direct';
+      $this->title = MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_PUBLIC_TITLE;
+      $this->description = MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION;
+      $this->sort_order = MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_SORT_ORDER;
+      $this->enabled = ((MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STATUS == 'True') ? true : false);
+
+      if ((int)MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_PREPARE_ORDER_STATUS_ID > 0) {
+        $this->order_status = MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_PREPARE_ORDER_STATUS_ID;
+      }
+
+      if (is_object($order)) $this->update_status();
+
+      $this->email_footer = MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_EMAIL_FOOTER;
+
+      $this->form_action_url = 'https://www.sofort-ueberweisung.de/payment.php';
+    }
+
+// class methods
+    function update_status() {
+      global $order;
+
+      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ZONE > 0) ) {
+        $check_flag = false;
+        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
+        while ($check = tep_db_fetch_array($check_query)) {
+          if ($check['zone_id'] < 1) {
+            $check_flag = true;
+            break;
+          } elseif ($check['zone_id'] == $order->billing['zone_id']) {
+            $check_flag = true;
+            break;
+          }
+        }
+
+        if ($check_flag == false) {
+          $this->enabled = false;
+        }
+      }
+    }
+
+    function javascript_validation() {
+      return false;
+    }
+
+    function selection() {
+      global $cart_Sofortueberweisung_Direct_ID;
+
+      if (tep_session_is_registered('cart_Sofortueberweisung_Direct_ID')) {
+        $order_id = substr($cart_Sofortueberweisung_Direct_ID, strpos($cart_Sofortueberweisung_Direct_ID, '-')+1);
+
+        $check_query = tep_db_query('select orders_id from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '" limit 1');
+
+        if (tep_db_num_rows($check_query) < 1) {
+          tep_db_query('delete from ' . TABLE_ORDERS . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_TOTAL . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_DOWNLOAD . ' where orders_id = "' . (int)$order_id . '"');
+
+          tep_session_unregister('cart_Sofortueberweisung_Direct_ID');
+        }
+      }
+
+      return array('id' => $this->code,
+                   'module' => $this->public_title,
+                   'fields' => array(array('title' => MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION_CHECKOUT_PAYMENT)));
+    }
+
+    function pre_confirmation_check() {
+      global $cartID, $cart;
+
+      // We need the cartID
+      if (empty($cart->cartID)) {
+        $cartID = $cart->cartID = $cart->generate_cart_id();
+      }
+
+      if (!tep_session_is_registered('cartID')) {
+        tep_session_register('cartID');
+      }
+    }
+
+    function confirmation() {
+      global $cartID, $cart_Sofortueberweisung_Direct_ID, $customer_id, $languages_id, $order, $order_total_modules;
+
+      $insert_order = false;
+
+      if (tep_session_is_registered('cart_Sofortueberweisung_Direct_ID')) {
+        $order_id = substr($cart_Sofortueberweisung_Direct_ID, strpos($cart_Sofortueberweisung_Direct_ID, '-')+1);
+
+        $curr_check = tep_db_query("select currency from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
+        $curr = tep_db_fetch_array($curr_check);
+
+        if ( ($curr['currency'] != $order->info['currency']) || ($cartID != substr($cart_Sofortueberweisung_Direct_ID, 0, strlen($cartID))) ) {
+          $check_query = tep_db_query('select orders_id from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '" limit 1');
+
+          if (tep_db_num_rows($check_query) < 1) {
+            tep_db_query('delete from ' . TABLE_ORDERS . ' where orders_id = "' . (int)$order_id . '"');
+            tep_db_query('delete from ' . TABLE_ORDERS_TOTAL . ' where orders_id = "' . (int)$order_id . '"');
+            tep_db_query('delete from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '"');
+            tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS . ' where orders_id = "' . (int)$order_id . '"');
+            tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . ' where orders_id = "' . (int)$order_id . '"');
+            tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_DOWNLOAD . ' where orders_id = "' . (int)$order_id . '"');
+          }
+
+          $insert_order = true;
+        }
+      } else {
+        $insert_order = true;
+      }
+
+      if ($insert_order == true) {
+        $order_totals = array();
+        if (is_array($order_total_modules->modules)) {
+          reset($order_total_modules->modules);
+          while (list(, $value) = each($order_total_modules->modules)) {
+            $class = substr($value, 0, strrpos($value, '.'));
+            if ($GLOBALS[$class]->enabled) {
+              for ($i=0, $n=sizeof($GLOBALS[$class]->output); $i<$n; $i++) {
+                if (tep_not_null($GLOBALS[$class]->output[$i]['title']) && tep_not_null($GLOBALS[$class]->output[$i]['text'])) {
+                  $order_totals[] = array('code' => $GLOBALS[$class]->code,
+                                          'title' => $GLOBALS[$class]->output[$i]['title'],
+                                          'text' => $GLOBALS[$class]->output[$i]['text'],
+                                          'value' => $GLOBALS[$class]->output[$i]['value'],
+                                          'sort_order' => $GLOBALS[$class]->sort_order);
+                }
+              }
+            }
+          }
+        }
+
+        $sql_data_array = array('customers_id' => $customer_id,
+                                'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
+                                'customers_company' => $order->customer['company'],
+                                'customers_street_address' => $order->customer['street_address'],
+                                'customers_suburb' => $order->customer['suburb'],
+                                'customers_city' => $order->customer['city'],
+                                'customers_postcode' => $order->customer['postcode'],
+                                'customers_state' => $order->customer['state'],
+                                'customers_country' => $order->customer['country']['title'],
+                                'customers_telephone' => $order->customer['telephone'],
+                                'customers_email_address' => $order->customer['email_address'],
+                                'customers_address_format_id' => $order->customer['format_id'],
+                                'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],
+                                'delivery_company' => $order->delivery['company'],
+                                'delivery_street_address' => $order->delivery['street_address'],
+                                'delivery_suburb' => $order->delivery['suburb'],
+                                'delivery_city' => $order->delivery['city'],
+                                'delivery_postcode' => $order->delivery['postcode'],
+                                'delivery_state' => $order->delivery['state'],
+                                'delivery_country' => $order->delivery['country']['title'],
+                                'delivery_address_format_id' => $order->delivery['format_id'],
+                                'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
+                                'billing_company' => $order->billing['company'],
+                                'billing_street_address' => $order->billing['street_address'],
+                                'billing_suburb' => $order->billing['suburb'],
+                                'billing_city' => $order->billing['city'],
+                                'billing_postcode' => $order->billing['postcode'],
+                                'billing_state' => $order->billing['state'],
+                                'billing_country' => $order->billing['country']['title'],
+                                'billing_address_format_id' => $order->billing['format_id'],
+                                'payment_method' => $order->info['payment_method'],
+                                'cc_type' => $order->info['cc_type'],
+                                'cc_owner' => $order->info['cc_owner'],
+                                'cc_number' => $order->info['cc_number'],
+                                'cc_expires' => $order->info['cc_expires'],
+                                'date_purchased' => 'now()',
+                                'orders_status' => $order->info['order_status'],
+                                'currency' => $order->info['currency'],
+                                'currency_value' => $order->info['currency_value']);
+
+        tep_db_perform(TABLE_ORDERS, $sql_data_array);
+
+        $insert_id = tep_db_insert_id();
+
+        for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
+          $sql_data_array = array('orders_id' => $insert_id,
+                                  'title' => $order_totals[$i]['title'],
+                                  'text' => $order_totals[$i]['text'],
+                                  'value' => $order_totals[$i]['value'],
+                                  'class' => $order_totals[$i]['code'],
+                                  'sort_order' => $order_totals[$i]['sort_order']);
+
+          tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
+        }
+
+        for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+          $sql_data_array = array('orders_id' => $insert_id,
+                                  'products_id' => tep_get_prid($order->products[$i]['id']),
+                                  'products_model' => $order->products[$i]['model'],
+                                  'products_name' => $order->products[$i]['name'],
+                                  'products_price' => $order->products[$i]['price'],
+                                  'final_price' => $order->products[$i]['final_price'],
+                                  'products_tax' => $order->products[$i]['tax'],
+                                  'products_quantity' => $order->products[$i]['qty']);
+
+          tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);
+
+          $order_products_id = tep_db_insert_id();
+
+          $attributes_exist = '0';
+          if (isset($order->products[$i]['attributes'])) {
+            $attributes_exist = '1';
+            for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
+              if (DOWNLOAD_ENABLED == 'true') {
+                $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
+                                     from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                     left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                     on pa.products_attributes_id=pad.products_attributes_id
+                                     where pa.products_id = '" . $order->products[$i]['id'] . "'
+                                     and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
+                                     and pa.options_id = popt.products_options_id
+                                     and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
+                                     and pa.options_values_id = poval.products_options_values_id
+                                     and popt.language_id = '" . $languages_id . "'
+                                     and poval.language_id = '" . $languages_id . "'";
+                $attributes = tep_db_query($attributes_query);
+              } else {
+                $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
+              }
+              $attributes_values = tep_db_fetch_array($attributes);
+
+              $sql_data_array = array('orders_id' => $insert_id,
+                                      'orders_products_id' => $order_products_id,
+                                      'products_options' => $attributes_values['products_options_name'],
+                                      'products_options_values' => $attributes_values['products_options_values_name'],
+                                      'options_values_price' => $attributes_values['options_values_price'],
+                                      'price_prefix' => $attributes_values['price_prefix']);
+
+              tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);
+
+              if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) {
+                $sql_data_array = array('orders_id' => $insert_id,
+                                        'orders_products_id' => $order_products_id,
+                                        'orders_products_filename' => $attributes_values['products_attributes_filename'],
+                                        'download_maxdays' => $attributes_values['products_attributes_maxdays'],
+                                        'download_count' => $attributes_values['products_attributes_maxcount']);
+
+                tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);
+              }
+            }
+          }
+        }
+
+        $cart_Sofortueberweisung_Direct_ID = $cartID . '-' . $insert_id;
+        tep_session_register('cart_Sofortueberweisung_Direct_ID');
+      }
+
+      return array('title' => MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_DESCRIPTION_CHECKOUT_CONFIRMATION);
+    }
+
+    function process_button() {
+      global $order, $cart, $customer_id, $currencies, $cart_Sofortueberweisung_Direct_ID;
+
+      $order_id = substr($cart_Sofortueberweisung_Direct_ID, strpos($cart_Sofortueberweisung_Direct_ID, '-')+1);
+
+      $parameter= array();
+      $parameter['kdnr']	= MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_KDNR;  // Reprsentiert Ihre Kundennummer bei der Sofortberweisung
+      $parameter['projekt'] = MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_PROJEKT;  // Die verantwortliche Projektnummer bei der Sofortberweisung, zu der die Zahlung gehrt
+      $parameter['betrag'] = number_format($order->info['total'] * $currencies->get_value('EUR'), 2, '.','');  // Beziffert den Zahlungsbetrag, der an Sie bermittelt werden soll
+      $vzweck1 = str_replace('{{orderid}}', $order_id, MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_V_ZWECK_1);
+      $vzweck2 = str_replace('{{orderid}}', $order_id, MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_V_ZWECK_2);
+
+      $vzweck1 = str_replace('{{order_date}}', strftime(DATE_FORMAT_SHORT), $vzweck1);
+      $vzweck2 = str_replace('{{order_date}}', strftime(DATE_FORMAT_SHORT), $vzweck2);
+
+      $vzweck1 = str_replace('{{customer_id}}', $customer_id, $vzweck1);
+      $vzweck2 = str_replace('{{customer_id}}', $customer_id, $vzweck2);
+
+      $vzweck1 = str_replace('{{customer_name}}', $order->customer['firstname'] . ' ' . $order->customer['lastname'], $vzweck1);
+      $vzweck2 = str_replace('{{customer_name}}', $order->customer['firstname'] . ' ' . $order->customer['lastname'], $vzweck2);
+
+      $vzweck1 = str_replace('{{customer_company}}', $order->customer['company'], $vzweck1);
+      $vzweck2 = str_replace('{{customer_company}}', $order->customer['company'], $vzweck2);
+
+      $vzweck1 = str_replace('{{customer_email}}', $order->customer['email_address'], $vzweck1);
+      $vzweck2 = str_replace('{{customer_email}}', $order->customer['email_address'], $vzweck2);
+
+      // Krzen auf 27 Zeichen
+      $vzweck1 = substr($vzweck1, 0, 27);
+      $vzweck2 = substr($vzweck2, 0, 27);
+
+      $parameter['v_zweck_1'] = tep_output_string($vzweck1);  // Definieren Sie hier Ihre Verwendungszwecke
+      $parameter['v_zweck_2'] = tep_output_string($vzweck2);  // Definieren Sie hier Ihre Verwendungszwecke
+
+      $parameter['kunden_var_0'] = tep_output_string($order_id);  // Eindeutige Identifikation der Zahlung, z.B. Session ID oder Auftragsnummer.
+      $parameter['kunden_var_1'] = tep_output_string($customer_id);
+      $parameter['kunden_var_2'] = tep_output_string(tep_session_id());
+      $parameter['kunden_var_3'] = tep_output_string($cart->cartID);
+      $parameter['kunden_var_4'] = '';
+      $parameter['kunden_var_5'] = '';
+      // $parameter['Partner'] = '';
+
+      if (strlen(MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_INPUT_PASSWORT) > 0) {
+        $tmparray = array(
+          $parameter['betrag'],
+          $parameter['v_zweck_1'],
+          $parameter['v_zweck_2'],
+          '', // von_konto_inhaber
+          '', // von_konto_nr
+          '', // von_konto_blz
+          $parameter['kunden_var_0'],
+          $parameter['kunden_var_1'],
+          $parameter['kunden_var_2'],
+          $parameter['kunden_var_3'],
+          $parameter['kunden_var_4'],
+          $parameter['kunden_var_5'],
+          MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_INPUT_PASSWORT);
+        $parameter['key'] = md5(implode("|", $tmparray));
+      }
+      $process_button_string = '';
+      reset($parameter);
+      while (list($key, $value) = each($parameter)) {
+        $process_button_string .= tep_draw_hidden_field($key, $value). "\n";
+      }
+
+      return $process_button_string;
+    }
+
+    function before_process() {
+      global $HTTP_GET_VARS, $customer_id, $order, $order_totals, $sendto, $billto, $languages_id, $payment, $currencies, $cart, $cart_Sofortueberweisung_Direct_ID;
+      global $$payment;
+
+      $md5var4 = md5($HTTP_GET_VARS['sovar3'] . MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_CNT_PASSWORT);
+      // Statusupdate nur wenn keine Cartnderung vorgenommen
+      $order_total_integer = number_format($order->info['total'] * $currencies->get_value('EUR'), 2, '.','')*100;
+      if ($order_total_integer < 1) {
+        $order_total_integer = '000';
+      } elseif ($order_total_integer < 10) {
+        $order_total_integer = '00' . $order_total_integer;
+      } elseif ($order_total_integer < 100) {
+        $order_total_integer = '0' . $order_total_integer;
+      }
+
+      $order_id = substr($cart_Sofortueberweisung_Direct_ID, strpos($cart_Sofortueberweisung_Direct_ID, '-')+1);
+
+      $check_query = tep_db_query("select orders_status from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
+      if (tep_db_num_rows($check_query)) {
+        $check = tep_db_fetch_array($check_query);
+
+        if ($check['orders_status'] == MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_PREPARE_ORDER_STATUS_ID) {
+          $sql_data_array = array('orders_id' => $order_id,
+                                  'orders_status_id' => MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_PREPARE_ORDER_STATUS_ID,
+                                  'date_added' => 'now()',
+                                  'customer_notified' => '0',
+                                  'comments' => '');
+
+          if (($md5var4 == $HTTP_GET_VARS['sovar4']) && ((int)$HTTP_GET_VARS['betrag_integer'] == (int)$order_total_integer)) {
+            $sql_data_array['comments'] = 'Zahlung durch Sofortberweisung Weiter-Button/Weiterleitung besttigt!';
+          } else {
+            $sql_data_array['comments'] = MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_CHECK_ERROR . '\n' . ($HTTP_GET_VARS['betrag_integer']/100) . '!=' . ($order_total_integer/100);
+          }
+
+          if (MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STORE_TRANSACTION_DETAILS == 'True') {
+            $sql_data_array['comments'] = (!empty($sql_data_array['comments']) ? $sql_data_array['comments'] . "\n\n" : '') . serialize($HTTP_GET_VARS) . "\n" . serialize($HTTP_POST_VARS);
+          }
+
+          tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+        }
+      }
+
+      tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . (MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID) . "', last_modified = now() where orders_id = '" . (int)$order_id . "'");
+
+      $sql_data_array = array('orders_id' => $order_id,
+                              'orders_status_id' => (MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID),
+                              'date_added' => 'now()',
+                              'customer_notified' => (SEND_EMAILS == 'true') ? '1' : '0',
+                              'comments' => $order->info['comments']);
+
+      tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+
+// initialized for the email confirmation
+      $products_ordered = '';
+      $subtotal = 0;
+      $total_tax = 0;
+
+      for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+// Stock Update - Joao Correia
+        if (STOCK_LIMITED == 'true') {
+          if (DOWNLOAD_ENABLED == 'true') {
+            $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
+                                FROM " . TABLE_PRODUCTS . " p
+                                LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                ON p.products_id=pa.products_id
+                                LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                ON pa.products_attributes_id=pad.products_attributes_id
+                                WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";
+// Will work with only one option for downloadable products
+// otherwise, we have to build the query dynamically with a loop
+            $products_attributes = $order->products[$i]['attributes'];
+            if (is_array($products_attributes)) {
+              $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";
+            }
+            $stock_query = tep_db_query($stock_query_raw);
+          } else {
+            $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+          }
+          if (tep_db_num_rows($stock_query) > 0) {
+            $stock_values = tep_db_fetch_array($stock_query);
+// do not decrement quantities if products_attributes_filename exists
+            if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
+              $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];
+            } else {
+              $stock_left = $stock_values['products_quantity'];
+            }
+            tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+            if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
+              tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+            }
+          }
+        }
+
+// Update products_ordered (for bestsellers list)
+        tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+
+//------insert customer choosen option to order--------
+        $attributes_exist = '0';
+        $products_ordered_attributes = '';
+        if (isset($order->products[$i]['attributes'])) {
+          $attributes_exist = '1';
+          for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
+            if (DOWNLOAD_ENABLED == 'true') {
+              $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
+                                   from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                   left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                   on pa.products_attributes_id=pad.products_attributes_id
+                                   where pa.products_id = '" . $order->products[$i]['id'] . "'
+                                   and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
+                                   and pa.options_id = popt.products_options_id
+                                   and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
+                                   and pa.options_values_id = poval.products_options_values_id
+                                   and popt.language_id = '" . $languages_id . "'
+                                   and poval.language_id = '" . $languages_id . "'";
+              $attributes = tep_db_query($attributes_query);
+            } else {
+              $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
+            }
+            $attributes_values = tep_db_fetch_array($attributes);
+
+            $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];
+          }
+        }
+//------insert customer choosen option eof ----
+        $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
+        $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
+        $total_cost += $total_products_price;
+
+        $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
+      }
+
+// lets start with the email confirmation
+      $email_order = STORE_NAME . "\n" .
+                     EMAIL_SEPARATOR . "\n" .
+                     EMAIL_TEXT_ORDER_NUMBER . ' ' . $order_id . "\n" .
+                     EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $order_id, 'SSL', false) . "\n" .
+                     EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
+      if ($order->info['comments']) {
+        $email_order .= tep_db_output($order->info['comments']) . "\n\n";
+      }
+      $email_order .= EMAIL_TEXT_PRODUCTS . "\n" .
+                      EMAIL_SEPARATOR . "\n" .
+                      $products_ordered .
+                      EMAIL_SEPARATOR . "\n";
+
+      for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
+        $email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
+      }
+
+      if ($order->content_type != 'virtual') {
+        $email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
+                        EMAIL_SEPARATOR . "\n" .
+                        tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
+      }
+
+      $email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
+                      EMAIL_SEPARATOR . "\n" .
+                      tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
+
+      if (is_object($$payment)) {
+        $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
+                        EMAIL_SEPARATOR . "\n";
+        $payment_class = $$payment;
+        $email_order .= $payment_class->title . "\n\n";
+        if ($payment_class->email_footer) {
+          $email_order .= $payment_class->email_footer . "\n\n";
+        }
+      }
+
+      tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
+
+// send emails to other people
+      if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
+        tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
+      }
+
+// load the after_process function from the payment modules
+      $this->after_process();
+
+      $cart->reset(true);
+
+// unregister session variables used during checkout
+      tep_session_unregister('sendto');
+      tep_session_unregister('billto');
+      tep_session_unregister('shipping');
+      tep_session_unregister('payment');
+      tep_session_unregister('comments');
+
+      tep_session_unregister('cart_Sofortueberweisung_Direct_ID');
+
+      tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
+    }
+
+    function after_process() {
+       return false;
+    }
+
+    function get_error() {
+      global $HTTP_GET_VARS;
+
+      $error = array('title' => MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_ERROR_HEADING,
+                     'error' => MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_TEXT_ERROR_MESSAGE);
+
+      return $error;
+    }
+
+
+    function check() {
+      if (!isset($this->_check)) {
+        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STATUS'");
+        $this->_check = tep_db_num_rows($check_query);
+      }
+      return $this->_check;
+    }
+
+    function install() {
+      global $HTTP_GET_VARS;
+
+      $kdnr = (isset($HTTP_GET_VARS['kdnr']) && !empty($HTTP_GET_VARS['kdnr'])) ? tep_db_prepare_input($HTTP_GET_VARS['kdnr']) : '10000';
+      $projekt = (isset($HTTP_GET_VARS['projekt']) && !empty($HTTP_GET_VARS['projekt'])) ? tep_db_prepare_input($HTTP_GET_VARS['projekt']) : '500000';
+      $input_passwort = (isset($HTTP_GET_VARS['input_passwort']) && !empty($HTTP_GET_VARS['input_passwort'])) ? tep_db_prepare_input($HTTP_GET_VARS['input_passwort']) : '';
+      $bna_passwort = (isset($HTTP_GET_VARS['bna_passwort']) && !empty($HTTP_GET_VARS['bna_passwort'])) ? tep_db_prepare_input($HTTP_GET_VARS['bna_passwort']) : '';
+      $cnt_passwort = (isset($HTTP_GET_VARS['cnt_passwort']) && !empty($HTTP_GET_VARS['cnt_passwort'])) ? tep_db_prepare_input($HTTP_GET_VARS['cnt_passwort']) : '';
+
+      $check_query = tep_db_query("select orders_status_id from " . TABLE_ORDERS_STATUS . " where orders_status_name = 'Sofortberweisung Vorbereitung' limit 1");
+
+      if (tep_db_num_rows($check_query) < 1) {
+        $status_query = tep_db_query("select max(orders_status_id) as status_id from " . TABLE_ORDERS_STATUS);
+        $status = tep_db_fetch_array($status_query);
+
+        $status_id = $status['status_id']+1;
+
+        $languages = tep_get_languages();
+
+        for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
+          tep_db_query("insert into " . TABLE_ORDERS_STATUS . " (orders_status_id, language_id, orders_status_name) values ('" . $status_id . "', '" . $languages[$i]['id'] . "', 'Sofortberweisung Vorbereitung')");
+        }
+
+        $flags_query = tep_db_query("describe " . TABLE_ORDERS_STATUS . " public_flag");
+        if (tep_db_num_rows($flags_query) == 1) {
+          tep_db_query("update " . TABLE_ORDERS_STATUS . " set public_flag = 0 and downloads_flag = 0 where orders_status_id = '" . $status_id . "'");
+        }
+      } else {
+        $check = tep_db_fetch_array($check_query);
+
+        $status_id = $check['orders_status_id'];
+      }
+
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Sofortberweisung direkter Modus aktivieren', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STATUS', 'True', 'Bezahlung per Sofortberweisung acceptieren?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now());");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Kundennummer:', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_KDNR', '" . (int)$kdnr . "', 'Ihre Kundennummer bei der Sofortberweisung', '6', '1', now());");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Projektnummer:', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_PROJEKT', '" . (int)$projekt . "', 'Die verantwortliche Projektnummer bei der Sofortberweisung, zu der die Zahlung gehrt', '6', '1', now());");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Input-Passwort:', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_INPUT_PASSWORT', '" . tep_db_input($input_passwort) . "', 'Das Input-Passwort (unter Nicht nderbare Parameter / Input-Passwort)', '6', '1', now());");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Benachrichtigung-Passwort:', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_BNA_PASSWORT', '" . tep_db_input($bna_passwort) . "', 'Das Benachrichtigung-Passwort (unter Benachrichtigungen festlegen)', '6', '1', now());");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Contentpasswort:', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_CNT_PASSWORT', '" . tep_db_input($cnt_passwort) . "', 'Das Contentpasswort (unter Content-Passwort)', '6', '1', now());");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Preparing Order Status', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_PREPARE_ORDER_STATUS_ID', '" . (int)$status_id . "', 'Order Status vor Eingang Bestellung', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ORDER_STATUS_ID', '0', 'Order Status nach Eingang Bestellung', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Store Transactiondetails', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STORE_TRANSACTION_DETAILS', 'False', 'Transactionsdetails bei Benachrichtigung in das Kommentarfeld speichern (zum debuggen, ist fr Kunden via Konto sichtbar)', '6', '2', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now());");
+    }
+
+    function remove() {
+      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
+    }
+
+    function keys() {
+      return array('MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STATUS', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_KDNR', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_PROJEKT', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_INPUT_PASSWORT', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_BNA_PASSWORT', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_CNT_PASSWORT', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_STORE_TRANSACTION_DETAILS', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ZONE', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_PREPARE_ORDER_STATUS_ID', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_ORDER_STATUS_ID', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_DIRECT_SORT_ORDER');
+    }
+  }
+?>
diff -ruN 2.2ms2-060817.src/includes/modules/payment/worldpay_junior.php 2.2rc2.src/includes/modules/payment/worldpay_junior.php
--- 2.2ms2-060817.src/includes/modules/payment/worldpay_junior.php	1969-12-31 18:00:00.000000000 -0600
+++ 2.2rc2.src/includes/modules/payment/worldpay_junior.php	2008-01-12 18:50:08.000000000 -0600
@@ -0,0 +1,576 @@
+<?php
+/*
+  $Id: worldpay_junior.php 1807 2008-01-13 00:50:08Z hpdl $
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2008 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+  class worldpay_junior {
+    var $code, $title, $description, $enabled;
+
+// class constructor
+    function worldpay_junior() {
+      global $order;
+
+      $this->signature = 'worldpay|worldpay_junior|1.0|2.2';
+
+      $this->code = 'worldpay_junior';
+      $this->title = MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_TITLE;
+      $this->public_title = MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_PUBLIC_TITLE;
+      $this->description = MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_DESCRIPTION;
+      $this->sort_order = MODULE_PAYMENT_WORLDPAY_JUNIOR_SORT_ORDER;
+      $this->enabled = ((MODULE_PAYMENT_WORLDPAY_JUNIOR_STATUS == 'True') ? true : false);
+
+      if ((int)MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID > 0) {
+        $this->order_status = MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID;
+      }
+
+      if (is_object($order)) $this->update_status();
+
+      $this->form_action_url = 'https://select.worldpay.com/wcc/purchase';
+    }
+
+// class methods
+    function update_status() {
+      global $order;
+
+      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_WORLDPAY_JUNIOR_ZONE > 0) ) {
+        $check_flag = false;
+        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_WORLDPAY_JUNIOR_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
+        while ($check = tep_db_fetch_array($check_query)) {
+          if ($check['zone_id'] < 1) {
+            $check_flag = true;
+            break;
+          } elseif ($check['zone_id'] == $order->billing['zone_id']) {
+            $check_flag = true;
+            break;
+          }
+        }
+
+        if ($check_flag == false) {
+          $this->enabled = false;
+        }
+      }
+    }
+
+    function javascript_validation() {
+      return false;
+    }
+
+    function selection() {
+      global $cart_Worldpay_Junior_ID;
+
+      if (tep_session_is_registered('cart_Worldpay_Junior_ID')) {
+        $order_id = substr($cart_Worldpay_Junior_ID, strpos($cart_Worldpay_Junior_ID, '-')+1);
+
+        $check_query = tep_db_query('select orders_id from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '" limit 1');
+
+        if (tep_db_num_rows($check_query) < 1) {
+          tep_db_query('delete from ' . TABLE_ORDERS . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_TOTAL . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . ' where orders_id = "' . (int)$order_id . '"');
+          tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_DOWNLOAD . ' where orders_id = "' . (int)$order_id . '"');
+
+          tep_session_unregister('cart_Worldpay_Junior_ID');
+        }
+      }
+
+      return array('id' => $this->code,
+                   'module' => $this->public_title);
+    }
+
+    function pre_confirmation_check() {
+      global $cartID, $cart;
+
+      if (empty($cart->cartID)) {
+        $cartID = $cart->cartID = $cart->generate_cart_id();
+      }
+
+      if (!tep_session_is_registered('cartID')) {
+        tep_session_register('cartID');
+      }
+    }
+
+    function confirmation() {
+      global $cartID, $cart_Worldpay_Junior_ID, $customer_id, $languages_id, $order, $order_total_modules;
+
+      $insert_order = false;
+
+      if (tep_session_is_registered('cart_Worldpay_Junior_ID')) {
+        $order_id = substr($cart_Worldpay_Junior_ID, strpos($cart_Worldpay_Junior_ID, '-')+1);
+
+        $curr_check = tep_db_query("select currency from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
+        $curr = tep_db_fetch_array($curr_check);
+
+        if ( ($curr['currency'] != $order->info['currency']) || ($cartID != substr($cart_Worldpay_Junior_ID, 0, strlen($cartID))) ) {
+          $check_query = tep_db_query('select orders_id from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '" limit 1');
+
+          if (tep_db_num_rows($check_query) < 1) {
+            tep_db_query('delete from ' . TABLE_ORDERS . ' where orders_id = "' . (int)$order_id . '"');
+            tep_db_query('delete from ' . TABLE_ORDERS_TOTAL . ' where orders_id = "' . (int)$order_id . '"');
+            tep_db_query('delete from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '"');
+            tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS . ' where orders_id = "' . (int)$order_id . '"');
+            tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . ' where orders_id = "' . (int)$order_id . '"');
+            tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_DOWNLOAD . ' where orders_id = "' . (int)$order_id . '"');
+          }
+
+          $insert_order = true;
+        }
+      } else {
+        $insert_order = true;
+      }
+
+      if ($insert_order == true) {
+        $order_totals = array();
+        if (is_array($order_total_modules->modules)) {
+          reset($order_total_modules->modules);
+          while (list(, $value) = each($order_total_modules->modules)) {
+            $class = substr($value, 0, strrpos($value, '.'));
+            if ($GLOBALS[$class]->enabled) {
+              for ($i=0, $n=sizeof($GLOBALS[$class]->output); $i<$n; $i++) {
+                if (tep_not_null($GLOBALS[$class]->output[$i]['title']) && tep_not_null($GLOBALS[$class]->output[$i]['text'])) {
+                  $order_totals[] = array('code' => $GLOBALS[$class]->code,
+                                          'title' => $GLOBALS[$class]->output[$i]['title'],
+                                          'text' => $GLOBALS[$class]->output[$i]['text'],
+                                          'value' => $GLOBALS[$class]->output[$i]['value'],
+                                          'sort_order' => $GLOBALS[$class]->sort_order);
+                }
+              }
+            }
+          }
+        }
+
+        $sql_data_array = array('customers_id' => $customer_id,
+                                'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
+                                'customers_company' => $order->customer['company'],
+                                'customers_street_address' => $order->customer['street_address'],
+                                'customers_suburb' => $order->customer['suburb'],
+                                'customers_city' => $order->customer['city'],
+                                'customers_postcode' => $order->customer['postcode'],
+                                'customers_state' => $order->customer['state'],
+                                'customers_country' => $order->customer['country']['title'],
+                                'customers_telephone' => $order->customer['telephone'],
+                                'customers_email_address' => $order->customer['email_address'],
+                                'customers_address_format_id' => $order->customer['format_id'],
+                                'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],
+                                'delivery_company' => $order->delivery['company'],
+                                'delivery_street_address' => $order->delivery['street_address'],
+                                'delivery_suburb' => $order->delivery['suburb'],
+                                'delivery_city' => $order->delivery['city'],
+                                'delivery_postcode' => $order->delivery['postcode'],
+                                'delivery_state' => $order->delivery['state'],
+                                'delivery_country' => $order->delivery['country']['title'],
+                                'delivery_address_format_id' => $order->delivery['format_id'],
+                                'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
+                                'billing_company' => $order->billing['company'],
+                                'billing_street_address' => $order->billing['street_address'],
+                                'billing_suburb' => $order->billing['suburb'],
+                                'billing_city' => $order->billing['city'],
+                                'billing_postcode' => $order->billing['postcode'],
+                                'billing_state' => $order->billing['state'],
+                                'billing_country' => $order->billing['country']['title'],
+                                'billing_address_format_id' => $order->billing['format_id'],
+                                'payment_method' => $order->info['payment_method'],
+                                'cc_type' => $order->info['cc_type'],
+                                'cc_owner' => $order->info['cc_owner'],
+                                'cc_number' => $order->info['cc_number'],
+                                'cc_expires' => $order->info['cc_expires'],
+                                'date_purchased' => 'now()',
+                                'orders_status' => $order->info['order_status'],
+                                'currency' => $order->info['currency'],
+                                'currency_value' => $order->info['currency_value']);
+
+        tep_db_perform(TABLE_ORDERS, $sql_data_array);
+
+        $insert_id = tep_db_insert_id();
+
+        for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
+          $sql_data_array = array('orders_id' => $insert_id,
+                                  'title' => $order_totals[$i]['title'],
+                                  'text' => $order_totals[$i]['text'],
+                                  'value' => $order_totals[$i]['value'],
+                                  'class' => $order_totals[$i]['code'],
+                                  'sort_order' => $order_totals[$i]['sort_order']);
+
+          tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
+        }
+
+        for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+          $sql_data_array = array('orders_id' => $insert_id,
+                                  'products_id' => tep_get_prid($order->products[$i]['id']),
+                                  'products_model' => $order->products[$i]['model'],
+                                  'products_name' => $order->products[$i]['name'],
+                                  'products_price' => $order->products[$i]['price'],
+                                  'final_price' => $order->products[$i]['final_price'],
+                                  'products_tax' => $order->products[$i]['tax'],
+                                  'products_quantity' => $order->products[$i]['qty']);
+
+          tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);
+
+          $order_products_id = tep_db_insert_id();
+
+          $attributes_exist = '0';
+          if (isset($order->products[$i]['attributes'])) {
+            $attributes_exist = '1';
+            for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
+              if (DOWNLOAD_ENABLED == 'true') {
+                $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
+                                     from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                     left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                     on pa.products_attributes_id=pad.products_attributes_id
+                                     where pa.products_id = '" . $order->products[$i]['id'] . "'
+                                     and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
+                                     and pa.options_id = popt.products_options_id
+                                     and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
+                                     and pa.options_values_id = poval.products_options_values_id
+                                     and popt.language_id = '" . $languages_id . "'
+                                     and poval.language_id = '" . $languages_id . "'";
+                $attributes = tep_db_query($attributes_query);
+              } else {
+                $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
+              }
+              $attributes_values = tep_db_fetch_array($attributes);
+
+              $sql_data_array = array('orders_id' => $insert_id,
+                                      'orders_products_id' => $order_products_id,
+                                      'products_options' => $attributes_values['products_options_name'],
+                                      'products_options_values' => $attributes_values['products_options_values_name'],
+                                      'options_values_price' => $attributes_values['options_values_price'],
+                                      'price_prefix' => $attributes_values['price_prefix']);
+
+              tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);
+
+              if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) {
+                $sql_data_array = array('orders_id' => $insert_id,
+                                        'orders_products_id' => $order_products_id,
+                                        'orders_products_filename' => $attributes_values['products_attributes_filename'],
+                                        'download_maxdays' => $attributes_values['products_attributes_maxdays'],
+                                        'download_count' => $attributes_values['products_attributes_maxcount']);
+
+                tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);
+              }
+            }
+          }
+        }
+
+        $cart_Worldpay_Junior_ID = $cartID . '-' . $insert_id;
+        tep_session_register('cart_Worldpay_Junior_ID');
+      }
+
+      return false;
+    }
+
+    function process_button() {
+      global $order, $currency, $languages_id, $language, $customer_id, $cart_Worldpay_Junior_ID;
+
+      $order_id = substr($cart_Worldpay_Junior_ID, strpos($cart_Worldpay_Junior_ID, '-')+1);
+
+      $lang_query = tep_db_query("select code from " . TABLE_LANGUAGES . " where languages_id = '" . (int)$languages_id . "'");
+      $lang = tep_db_fetch_array($lang_query);
+
+      $process_button_string = tep_draw_hidden_field('instId', MODULE_PAYMENT_WORLDPAY_JUNIOR_INSTALLATION_ID) .
+                               tep_draw_hidden_field('amount', $this->format_raw($order->info['total'])) .
+                               tep_draw_hidden_field('currency', $currency) .
+                               tep_draw_hidden_field('hideCurrency', 'true') .
+                               tep_draw_hidden_field('cartId', $order_id) .
+                               tep_draw_hidden_field('desc', STORE_NAME) .
+                               tep_draw_hidden_field('name', $order->billing['firstname'] . ' ' . $order->billing['lastname']) .
+                               tep_draw_hidden_field('address', $order->billing['street_address']) .
+                               tep_draw_hidden_field('postcode', $order->billing['postcode']) .
+                               tep_draw_hidden_field('country', $order->billing['country']['iso_code_2']) .
+                               tep_draw_hidden_field('tel', $order->customer['telephone']) .
+                               tep_draw_hidden_field('email', $order->customer['email_address']) .
+                               tep_draw_hidden_field('fixContact', 'Y') .
+                               tep_draw_hidden_field('lang', strtoupper($lang['code'])) .
+                               tep_draw_hidden_field('signatureFields', 'amount:currency:cartId') .
+                               tep_draw_hidden_field('signature', md5(MODULE_PAYMENT_WORLDPAY_JUNIOR_MD5_PASSWORD . ':' . $this->format_raw($order->info['total']) . ':' . $currency . ':' . $order_id)) .
+                               tep_draw_hidden_field('MC_callback', substr(tep_href_link('ext/modules/payment/worldpay/junior_callback.php', '', 'NONSSL', false, false), strpos(tep_href_link('ext/modules/payment/worldpay/junior_callback.php', '', 'NONSSL', false, false), '://')+3));
+
+      if (MODULE_PAYMENT_WORLDPAY_JUNIOR_TRANSACTION_METHOD == 'Pre-Authorization') {
+        $process_button_string .= tep_draw_hidden_field('authMode', 'E');
+      }
+
+      if (MODULE_PAYMENT_WORLDPAY_JUNIOR_TESTMODE == 'True') {
+        $process_button_string .= tep_draw_hidden_field('testMode', '100');
+      }
+
+      $process_button_string .= tep_draw_hidden_field('M_sid', tep_session_id()) .
+                                tep_draw_hidden_field('M_cid', $customer_id) .
+                                tep_draw_hidden_field('M_lang', $language) .
+                                tep_draw_hidden_field('M_hash', md5(tep_session_id() . $customer_id . $order_id . $language . number_format($order->info['total'], 2) . MODULE_PAYMENT_WORLDPAY_JUNIOR_MD5_PASSWORD));
+
+      return $process_button_string;
+    }
+
+    function before_process() {
+      global $customer_id, $language, $order, $order_totals, $sendto, $billto, $languages_id, $payment, $currencies, $cart, $cart_Worldpay_Junior_ID;
+      global $$payment;
+
+      $order_id = substr($cart_Worldpay_Junior_ID, strpos($cart_Worldpay_Junior_ID, '-')+1);
+
+      $check_query = tep_db_query("select orders_status from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
+      if (tep_db_num_rows($check_query)) {
+        $check = tep_db_fetch_array($check_query);
+
+        if ($check['orders_status'] == MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID) {
+          $hash_result = false;
+
+          if (isset($HTTP_GET_VARS['hash']) && !empty($HTTP_GET_VARS['hash']) && ($HTTP_GET_VARS['hash'] == md5(tep_session_name() . $customer_id . $order_id . $language . number_format($order->info['total'], 2) . MODULE_PAYMENT_WORLDPAY_JUNIOR_MD5_PASSWORD))) {
+            $hash_result = true;
+          }
+
+          $sql_data_array = array('orders_id' => $order_id,
+                                  'orders_status_id' => MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID,
+                                  'date_added' => 'now()',
+                                  'customer_notified' => '0',
+                                  'comments' => (($hash_result == true) ? 'WorldPay: Transaction Verified' : 'WorldPay: Incorrect Transaction Hash'));
+
+          tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+
+          if (MODULE_PAYMENT_WORLDPAY_JUNIOR_TESTMODE == 'True') {
+            $sql_data_array = array('orders_id' => $order_id,
+                                    'orders_status_id' => MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID,
+                                    'date_added' => 'now()',
+                                    'customer_notified' => '0',
+                                    'comments' => MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_WARNING_DEMO_MODE);
+
+            tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+          }
+        }
+      }
+
+      tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . (MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID) . "', last_modified = now() where orders_id = '" . (int)$order_id . "'");
+
+      $sql_data_array = array('orders_id' => $order_id,
+                              'orders_status_id' => (MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID),
+                              'date_added' => 'now()',
+                              'customer_notified' => (SEND_EMAILS == 'true') ? '1' : '0',
+                              'comments' => $order->info['comments']);
+
+      tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
+
+// initialized for the email confirmation
+      $products_ordered = '';
+      $subtotal = 0;
+      $total_tax = 0;
+
+      for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
+// Stock Update - Joao Correia
+        if (STOCK_LIMITED == 'true') {
+          if (DOWNLOAD_ENABLED == 'true') {
+            $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
+                                FROM " . TABLE_PRODUCTS . " p
+                                LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                ON p.products_id=pa.products_id
+                                LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                ON pa.products_attributes_id=pad.products_attributes_id
+                                WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";
+// Will work with only one option for downloadable products
+// otherwise, we have to build the query dynamically with a loop
+            $products_attributes = $order->products[$i]['attributes'];
+            if (is_array($products_attributes)) {
+              $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";
+            }
+            $stock_query = tep_db_query($stock_query_raw);
+          } else {
+            $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+          }
+          if (tep_db_num_rows($stock_query) > 0) {
+            $stock_values = tep_db_fetch_array($stock_query);
+// do not decrement quantities if products_attributes_filename exists
+            if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
+              $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];
+            } else {
+              $stock_left = $stock_values['products_quantity'];
+            }
+            tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+            if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
+              tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+            }
+          }
+        }
+
+// Update products_ordered (for bestsellers list)
+        tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
+
+//------insert customer choosen option to order--------
+        $attributes_exist = '0';
+        $products_ordered_attributes = '';
+        if (isset($order->products[$i]['attributes'])) {
+          $attributes_exist = '1';
+          for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
+            if (DOWNLOAD_ENABLED == 'true') {
+              $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
+                                   from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
+                                   left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
+                                   on pa.products_attributes_id=pad.products_attributes_id
+                                   where pa.products_id = '" . $order->products[$i]['id'] . "'
+                                   and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
+                                   and pa.options_id = popt.products_options_id
+                                   and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
+                                   and pa.options_values_id = poval.products_options_values_id
+                                   and popt.language_id = '" . $languages_id . "'
+                                   and poval.language_id = '" . $languages_id . "'";
+              $attributes = tep_db_query($attributes_query);
+            } else {
+              $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
+            }
+            $attributes_values = tep_db_fetch_array($attributes);
+
+            $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];
+          }
+        }
+//------insert customer choosen option eof ----
+        $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
+        $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
+        $total_cost += $total_products_price;
+
+        $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
+      }
+
+// lets start with the email confirmation
+      $email_order = STORE_NAME . "\n" .
+                     EMAIL_SEPARATOR . "\n" .
+                     EMAIL_TEXT_ORDER_NUMBER . ' ' . $order_id . "\n" .
+                     EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $order_id, 'SSL', false) . "\n" .
+                     EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
+      if ($order->info['comments']) {
+        $email_order .= tep_db_output($order->info['comments']) . "\n\n";
+      }
+      $email_order .= EMAIL_TEXT_PRODUCTS . "\n" .
+                      EMAIL_SEPARATOR . "\n" .
+                      $products_ordered .
+                      EMAIL_SEPARATOR . "\n";
+
+      for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
+        $email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
+      }
+
+      if ($order->content_type != 'virtual') {
+        $email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
+                        EMAIL_SEPARATOR . "\n" .
+                        tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
+      }
+
+      $email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
+                      EMAIL_SEPARATOR . "\n" .
+                      tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
+
+      if (is_object($$payment)) {
+        $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
+                        EMAIL_SEPARATOR . "\n";
+        $payment_class = $$payment;
+        $email_order .= $payment_class->title . "\n\n";
+        if ($payment_class->email_footer) {
+          $email_order .= $payment_class->email_footer . "\n\n";
+        }
+      }
+
+      tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
+
+// send emails to other people
+      if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
+        tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
+      }
+
+// load the after_process function from the payment modules
+      $this->after_process();
+
+      $cart->reset(true);
+
+// unregister session variables used during checkout
+      tep_session_unregister('sendto');
+      tep_session_unregister('billto');
+      tep_session_unregister('shipping');
+      tep_session_unregister('payment');
+      tep_session_unregister('comments');
+
+      tep_session_unregister('cart_Worldpay_Junior_ID');
+
+      tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
+    }
+
+    function after_process() {
+      return false;
+    }
+
+    function get_error() {
+      return false;
+    }
+
+    function check() {
+      if (!isset($this->_check)) {
+        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_WORLDPAY_JUNIOR_STATUS'");
+        $this->_check = tep_db_num_rows($check_query);
+      }
+      return $this->_check;
+    }
+
+    function install() {
+      $check_query = tep_db_query("select orders_status_id from " . TABLE_ORDERS_STATUS . " where orders_status_name = 'Preparing [WorldPay]' limit 1");
+
+      if (tep_db_num_rows($check_query) < 1) {
+        $status_query = tep_db_query("select max(orders_status_id) as status_id from " . TABLE_ORDERS_STATUS);
+        $status = tep_db_fetch_array($status_query);
+
+        $status_id = $status['status_id']+1;
+
+        $languages = tep_get_languages();
+
+        for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
+          tep_db_query("insert into " . TABLE_ORDERS_STATUS . " (orders_status_id, language_id, orders_status_name) values ('" . $status_id . "', '" . $languages[$i]['id'] . "', 'Preparing [WorldPay]')");
+        }
+
+        $flags_query = tep_db_query("describe " . TABLE_ORDERS_STATUS . " public_flag");
+        if (tep_db_num_rows($flags_query) == 1) {
+          tep_db_query("update " . TABLE_ORDERS_STATUS . " set public_flag = 0 and downloads_flag = 0 where orders_status_id = '" . $status_id . "'");
+        }
+      } else {
+        $check = tep_db_fetch_array($check_query);
+
+        $status_id = $check['orders_status_id'];
+      }
+
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable WorldPay Select Junior', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_STATUS', 'False', 'Do you want to accept WorldPay Select Junior payments?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Installation ID', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_INSTALLATION_ID', '', 'Your WorldPay Installation ID', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Callback Password', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_CALLBACK_PASSWORD', '', 'A password that is sent back in the callback response (specified in the WorldPay Customer Management System)', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('MD5 Password', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_MD5_PASSWORD', '', 'The MD5 secret encryption password used to validate transaction responses with (specified in the WorldPay Customer Management System)', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Method', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_TRANSACTION_METHOD', 'Capture', 'The processing method to use for each transaction', '6', '0', 'tep_cfg_select_option(array(\'Pre-Authorization\', \'Capture\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Test Mode', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_TESTMODE', 'True', 'Process transactions in test mode?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Preparing Order Status', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID', '" . (int)$status_id . "', 'Set the status of prepared orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
+    }
+
+    function remove() {
+      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
+    }
+
+    function keys() {
+      return array('MODULE_PAYMENT_WORLDPAY_JUNIOR_STATUS', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_INSTALLATION_ID', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_CALLBACK_PASSWORD', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_MD5_PASSWORD', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_TRANSACTION_METHOD', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_TESTMODE', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_ZONE', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_SORT_ORDER');
+    }
+
+// format prices without currency formatting
+    function format_raw($number, $currency_code = '', $currency_value = '') {
+      global $currencies, $currency;
+
+      if (empty($currency_code) || !$this->is_set($currency_code)) {
+        $currency_code = $currency;
+      }
+
+      if (empty($currency_value) || !is_numeric($currency_value)) {
+        $currency_value = $currencies->currencies[$currency_code]['value'];
+      }
+
+      return number_format(tep_round($number * $currency_value, $currencies->currencies[$currency_code]['decimal_places']), $currencies->currencies[$currency_code]['decimal_places'], '.', '');
+    }
+  }
+?>
diff -ruN 2.2ms2-060817.src/includes/modules/product_listing.php 2.2rc2.src/includes/modules/product_listing.php
--- 2.2ms2-060817.src/includes/modules/product_listing.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/product_listing.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_listing.php,v 1.44 2003/06/09 22:49:59 hpdl Exp $
+  $Id: product_listing.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/shipping/flat.php 2.2rc2.src/includes/modules/shipping/flat.php
--- 2.2ms2-060817.src/includes/modules/shipping/flat.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/shipping/flat.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: flat.php,v 1.40 2003/02/05 22:41:52 hpdl Exp $
+  $Id: flat.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/shipping/item.php 2.2rc2.src/includes/modules/shipping/item.php
--- 2.2ms2-060817.src/includes/modules/shipping/item.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/shipping/item.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: item.php,v 1.39 2003/02/05 22:41:52 hpdl Exp $
+  $Id: item.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/shipping/table.php 2.2rc2.src/includes/modules/shipping/table.php
--- 2.2ms2-060817.src/includes/modules/shipping/table.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/shipping/table.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: table.php,v 1.27 2003/02/05 22:41:52 hpdl Exp $
+  $Id: table.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/shipping/usps.php 2.2rc2.src/includes/modules/shipping/usps.php
--- 2.2ms2-060817.src/includes/modules/shipping/usps.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/shipping/usps.php	2008-01-09 19:16:16.000000000 -0600
@@ -1,11 +1,11 @@
 <?php
 /*
-  $Id: usps.php,v 1.47 2003/04/08 23:23:42 dgw_ Exp $
+  $Id: usps.php 1783 2008-01-10 01:16:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2008 osCommerce
 
   Released under the GNU General Public License
 */
@@ -43,21 +43,20 @@
         }
       }
 
-      $this->types = array('Express' => 'Express Mail',
-                           'First Class' => 'First-Class Mail',
-                           'Priority' => 'Priority Mail',
-                           'Parcel' => 'Parcel Post');
-
-      $this->intl_types = array('GXG Document' => 'Global Express Guaranteed Document Service',
-                                'GXG Non-Document' => 'Global Express Guaranteed Non-Document Service',
-                                'Express' => 'Global Express Mail (EMS)',
-                                'Priority Lg' => 'Global Priority Mail - Flat-rate Envelope (large)',
-                                'Priority Sm' => 'Global Priority Mail - Flat-rate Envelope (small)',
-                                'Priority Var' => 'Global Priority Mail - Variable Weight Envelope (single)',
-                                'Airmail Letter' => 'Airmail Letter Post',
-                                'Airmail Parcel' => 'Airmail Parcel Post',
-                                'Surface Letter' => 'Economy (Surface) Letter Post',
-                                'Surface Post' => 'Economy (Surface) Parcel Post');
+      $this->types = array('EXPRESS' => 'Express Mail',
+                           'FIRST CLASS' => 'First-Class Mail',
+                           'PRIORITY' => 'Priority Mail',
+                           'PARCEL' => 'Parcel Post');
+
+      $this->intl_types = array('Global Express Guaranteed',
+                                'Global Express Guaranteed Non-Document Rectangular',
+                                'Global Express Guaranteed Non-Document Non-Rectangular',
+                                'Express Mail International (EMS)',
+                                'Express Mail International (EMS) Flat Rate Envelope',
+                                'Priority Mail International',
+                                'Priority Mail International Flat Rate Envelope',
+                                'Priority Mail International Flat Rate Box',
+                                'First-Class Mail International');
 
       $this->countries = $this->country_list();
     }
@@ -128,7 +127,6 @@
       tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable USPS Shipping', 'MODULE_SHIPPING_USPS_STATUS', 'True', 'Do you want to offer USPS shipping?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
       tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Enter the USPS User ID', 'MODULE_SHIPPING_USPS_USERID', 'NONE', 'Enter the USPS USERID assigned to you.', '6', '0', now())");
       tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Enter the USPS Password', 'MODULE_SHIPPING_USPS_PASSWORD', 'NONE', 'See USERID, above.', '6', '0', now())");
-      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Which server to use', 'MODULE_SHIPPING_USPS_SERVER', 'production', 'An account at USPS is needed to use the Production server', '6', '0', 'tep_cfg_select_option(array(\'test\', \'production\'), ', now())");
       tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Handling Fee', 'MODULE_SHIPPING_USPS_HANDLING', '0', 'Handling fee for this shipping method.', '6', '0', now())");
       tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Tax Class', 'MODULE_SHIPPING_USPS_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");
       tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Shipping Zone', 'MODULE_SHIPPING_USPS_ZONE', '0', 'If a zone is selected, only enable this shipping method for that zone.', '6', '0', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
@@ -140,7 +138,7 @@
     }
 
     function keys() {
-      return array('MODULE_SHIPPING_USPS_STATUS', 'MODULE_SHIPPING_USPS_USERID', 'MODULE_SHIPPING_USPS_PASSWORD', 'MODULE_SHIPPING_USPS_SERVER', 'MODULE_SHIPPING_USPS_HANDLING', 'MODULE_SHIPPING_USPS_TAX_CLASS', 'MODULE_SHIPPING_USPS_ZONE', 'MODULE_SHIPPING_USPS_SORT_ORDER');
+      return array('MODULE_SHIPPING_USPS_STATUS', 'MODULE_SHIPPING_USPS_USERID', 'MODULE_SHIPPING_USPS_PASSWORD', 'MODULE_SHIPPING_USPS_HANDLING', 'MODULE_SHIPPING_USPS_TAX_CLASS', 'MODULE_SHIPPING_USPS_ZONE', 'MODULE_SHIPPING_USPS_SORT_ORDER');
     }
 
     function _setService($service) {
@@ -208,25 +206,19 @@
         $request = 'API=IntlRate&XML=' . urlencode($request);
       }
 
-      switch (MODULE_SHIPPING_USPS_SERVER) {
-        case 'production': $usps_server = 'production.shippingapis.com';
-                           $api_dll = 'shippingapi.dll';
-                           break;
-        case 'test':
-        default:           $usps_server = 'testing.shippingapis.com';
-                           $api_dll = 'ShippingAPITest.dll';
-                           break;
-      }
-
       $body = '';
 
+      if (!class_exists('httpClient')) {
+        include('includes/classes/http_client.php');
+      }
+
       $http = new httpClient();
-      if ($http->Connect($usps_server, 80)) {
-        $http->addHeader('Host', $usps_server);
+      if ($http->Connect('production.shippingapis.com', 80)) {
+        $http->addHeader('Host', 'production.shippingapis.com');
         $http->addHeader('User-Agent', 'osCommerce');
         $http->addHeader('Connection', 'Close');
 
-        if ($http->Get('/' . $api_dll . '?' . $request)) $body = $http->getBody();
+        if ($http->Get('/shippingapi.dll?' . $request)) $body = $http->getBody();
 
         $http->Disconnect();
       } else {
diff -ruN 2.2ms2-060817.src/includes/modules/shipping/zones.php 2.2rc2.src/includes/modules/shipping/zones.php
--- 2.2ms2-060817.src/includes/modules/shipping/zones.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/shipping/zones.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,7 +1,7 @@
 <?php
 /*
 
-  $Id: zones.php,v 1.20 2003/06/15 19:48:09 thomasamoulton Exp $
+  $Id: zones.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/modules/upcoming_products.php 2.2rc2.src/includes/modules/upcoming_products.php
--- 2.2ms2-060817.src/includes/modules/upcoming_products.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/modules/upcoming_products.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: upcoming_products.php,v 1.24 2003/06/09 22:49:59 hpdl Exp $
+  $Id: upcoming_products.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/includes/spiders.txt 2.2rc2.src/includes/spiders.txt
--- 2.2ms2-060817.src/includes/spiders.txt	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/spiders.txt	2007-12-19 18:52:16.000000000 -0600
@@ -1,4 +1,4 @@
-$Id: spiders.txt,v 1.2 2003/05/05 17:58:17 dgw_ Exp $
+$Id: spiders.txt 1739 2007-12-20 00:52:16Z hpdl $
 almaden.ibm.com
 appie 1.1
 architext
diff -ruN 2.2ms2-060817.src/includes/tld.txt 2.2rc2.src/includes/tld.txt
--- 2.2ms2-060817.src/includes/tld.txt	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/includes/tld.txt	2007-12-19 18:52:16.000000000 -0600
@@ -1,4 +1,4 @@
-# $Id: tld.txt,v 1.2 2003/02/10 22:30:57 hpdl Exp $
+# $Id: tld.txt 1739 2007-12-20 00:52:16Z hpdl $
 #
 # osCommerce, Open Source E-Commerce Solutions
 # http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/index.php 2.2rc2.src/index.php
--- 2.2ms2-060817.src/index.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/index.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: index.php,v 1.1 2003/06/11 17:37:59 hpdl Exp $
+  $Id: index.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -188,7 +188,7 @@
       }
     }
 
-    if ( (!isset($HTTP_GET_VARS['sort'])) || (!ereg('[1-8][ad]', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) {
+    if ( (!isset($HTTP_GET_VARS['sort'])) || (!ereg('^[1-8][ad]$', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) {
       for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
         if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
           $HTTP_GET_VARS['sort'] = $i+1 . 'a';
@@ -199,28 +199,28 @@
     } else {
       $sort_col = substr($HTTP_GET_VARS['sort'], 0 , 1);
       $sort_order = substr($HTTP_GET_VARS['sort'], 1);
-      $listing_sql .= ' order by ';
+
       switch ($column_list[$sort_col-1]) {
         case 'PRODUCT_LIST_MODEL':
-          $listing_sql .= "p.products_model " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
+          $listing_sql .= " order by p.products_model " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
           break;
         case 'PRODUCT_LIST_NAME':
-          $listing_sql .= "pd.products_name " . ($sort_order == 'd' ? 'desc' : '');
+          $listing_sql .= " order by pd.products_name " . ($sort_order == 'd' ? 'desc' : '');
           break;
         case 'PRODUCT_LIST_MANUFACTURER':
-          $listing_sql .= "m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
+          $listing_sql .= " order by m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
           break;
         case 'PRODUCT_LIST_QUANTITY':
-          $listing_sql .= "p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
+          $listing_sql .= " order by p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
           break;
         case 'PRODUCT_LIST_IMAGE':
-          $listing_sql .= "pd.products_name";
+          $listing_sql .= " order by pd.products_name";
           break;
         case 'PRODUCT_LIST_WEIGHT':
-          $listing_sql .= "p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
+          $listing_sql .= " order by p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
           break;
         case 'PRODUCT_LIST_PRICE':
-          $listing_sql .= "final_price " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
+          $listing_sql .= " order by final_price " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
           break;
       }
     }
@@ -253,7 +253,7 @@
           $options[] = array('id' => $filterlist['id'], 'text' => $filterlist['name']);
         }
         echo tep_draw_pull_down_menu('filter_id', $options, (isset($HTTP_GET_VARS['filter_id']) ? $HTTP_GET_VARS['filter_id'] : ''), 'onchange="this.form.submit()"');
-        echo '</form></td>' . "\n";
+        echo tep_hide_session_id() . '</form></td>' . "\n";
       }
     }
 
diff -ruN 2.2ms2-060817.src/info_shopping_cart.php 2.2rc2.src/info_shopping_cart.php
--- 2.2ms2-060817.src/info_shopping_cart.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/info_shopping_cart.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: info_shopping_cart.php,v 1.19 2003/02/13 03:01:48 hpdl Exp $
+  $Id: info_shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/login.php 2.2rc2.src/login.php
--- 2.2ms2-060817.src/login.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/login.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: login.php,v 1.80 2003/06/05 23:28:24 hpdl Exp $
+  $Id: login.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/logoff.php 2.2rc2.src/logoff.php
--- 2.2ms2-060817.src/logoff.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/logoff.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: logoff.php,v 1.13 2003/06/05 23:28:24 hpdl Exp $
+  $Id: logoff.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/password_forgotten.php 2.2rc2.src/password_forgotten.php
--- 2.2ms2-060817.src/password_forgotten.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/password_forgotten.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: password_forgotten.php,v 1.50 2003/06/05 23:28:24 hpdl Exp $
+  $Id: password_forgotten.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/popup_image.php 2.2rc2.src/popup_image.php
--- 2.2ms2-060817.src/popup_image.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/popup_image.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: popup_image.php,v 1.18 2003/06/05 23:26:23 hpdl Exp $
+  $Id: popup_image.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/popup_search_help.php 2.2rc2.src/popup_search_help.php
--- 2.2ms2-060817.src/popup_search_help.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/popup_search_help.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: popup_search_help.php,v 1.4 2003/06/05 23:26:23 hpdl Exp $
+  $Id: popup_search_help.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/privacy.php 2.2rc2.src/privacy.php
--- 2.2ms2-060817.src/privacy.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/privacy.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: privacy.php,v 1.22 2003/06/05 23:26:23 hpdl Exp $
+  $Id: privacy.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/product_info.php 2.2rc2.src/product_info.php
--- 2.2ms2-060817.src/product_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/product_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_info.php,v 1.97 2003/07/01 14:34:54 hpdl Exp $
+  $Id: product_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/product_reviews_info.php 2.2rc2.src/product_reviews_info.php
--- 2.2ms2-060817.src/product_reviews_info.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/product_reviews_info.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews_info.php,v 1.50 2003/06/20 14:25:58 hpdl Exp $
+  $Id: product_reviews_info.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/product_reviews.php 2.2rc2.src/product_reviews.php
--- 2.2ms2-060817.src/product_reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/product_reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews.php,v 1.50 2003/06/09 23:03:55 hpdl Exp $
+  $Id: product_reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/product_reviews_write.php 2.2rc2.src/product_reviews_write.php
--- 2.2ms2-060817.src/product_reviews_write.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/product_reviews_write.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: product_reviews_write.php,v 1.55 2003/06/20 14:25:58 hpdl Exp $
+  $Id: product_reviews_write.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/products_new.php 2.2rc2.src/products_new.php
--- 2.2ms2-060817.src/products_new.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/products_new.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: products_new.php,v 1.27 2003/06/09 22:35:33 hpdl Exp $
+  $Id: products_new.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
@@ -90,7 +90,7 @@
             <td align="right" valign="middle" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_NEW, tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $products_new['products_id']) . '">' . tep_image_button('button_in_cart.gif', IMAGE_BUTTON_IN_CART) . '</a>'; ?></td>
           </tr>
           <tr>
-            <td colspan="3"><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
+            <td colspan="3"><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
           </tr>
 <?php
     }
diff -ruN 2.2ms2-060817.src/redirect.php 2.2rc2.src/redirect.php
--- 2.2ms2-060817.src/redirect.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/redirect.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: redirect.php,v 1.10 2003/06/05 23:31:31 hpdl Exp $
+  $Id: redirect.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/reviews.php 2.2rc2.src/reviews.php
--- 2.2ms2-060817.src/reviews.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/reviews.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: reviews.php,v 1.51 2003/06/09 23:03:55 hpdl Exp $
+  $Id: reviews.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/shipping.php 2.2rc2.src/shipping.php
--- 2.2ms2-060817.src/shipping.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/shipping.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: shipping.php,v 1.22 2003/06/05 23:26:23 hpdl Exp $
+  $Id: shipping.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/shopping_cart.php 2.2rc2.src/shopping_cart.php
--- 2.2ms2-060817.src/shopping_cart.php	2006-08-16 12:17:08.000000000 -0500
+++ 2.2rc2.src/shopping_cart.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,17 +1,22 @@
 <?php
 /*
-  $Id: shopping_cart.php,v 1.73 2003/06/09 23:03:56 hpdl Exp $
+  $Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
-  Copyright (c) 2003 osCommerce
+  Copyright (c) 2007 osCommerce
 
   Released under the GNU General Public License
 */
 
   require("includes/application_top.php");
 
+  if ($cart->count_contents() > 0) {
+    include(DIR_WS_CLASSES . 'payment.php');
+    $payment_modules = new payment;
+  }
+
   require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_SHOPPING_CART);
 
   $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_SHOPPING_CART));
@@ -202,6 +207,29 @@
         </table></td>
       </tr>
 <?php
+    $initialize_checkout_methods = $payment_modules->checkout_initialization_method();
+
+    if (!empty($initialize_checkout_methods)) {
+?>
+      <tr>
+        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
+      </tr>
+      <tr>
+        <td align="right" class="main" style="padding-right: 50px;"><?php echo TEXT_ALTERNATIVE_CHECKOUT_METHODS; ?></td>
+      </tr>
+<?php
+      reset($initialize_checkout_methods);
+      while (list(, $value) = each($initialize_checkout_methods)) {
+?>
+      <tr>
+        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
+      </tr>
+      <tr>
+        <td align="right" class="main"><?php echo $value; ?></td>
+      </tr>
+<?php
+      }
+    }
   } else {
 ?>
       <tr>
diff -ruN 2.2ms2-060817.src/specials.php 2.2rc2.src/specials.php
--- 2.2ms2-060817.src/specials.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/specials.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: specials.php,v 1.49 2003/06/09 22:35:33 hpdl Exp $
+  $Id: specials.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/ssl_check.php 2.2rc2.src/ssl_check.php
--- 2.2ms2-060817.src/ssl_check.php	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/ssl_check.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: ssl_check.php,v 1.1 2003/03/10 23:32:20 hpdl Exp $
+  $Id: ssl_check.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/stylesheet.css 2.2rc2.src/stylesheet.css
--- 2.2ms2-060817.src/stylesheet.css	2006-03-27 11:49:35.000000000 -0600
+++ 2.2rc2.src/stylesheet.css	2007-12-19 18:52:16.000000000 -0600
@@ -1,5 +1,5 @@
 /*
-  $Id: stylesheet.css,v 1.56 2003/06/30 20:04:02 hpdl Exp $
+  $Id: stylesheet.css 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
diff -ruN 2.2ms2-060817.src/tell_a_friend.php 2.2rc2.src/tell_a_friend.php
--- 2.2ms2-060817.src/tell_a_friend.php	2006-08-17 09:19:02.000000000 -0500
+++ 2.2rc2.src/tell_a_friend.php	2007-12-19 18:52:16.000000000 -0600
@@ -1,6 +1,6 @@
 <?php
 /*
-  $Id: $
+  $Id: tell_a_friend.php 1739 2007-12-20 00:52:16Z hpdl $
 
   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
