#!/usr/bin/perl

################################################################################
#
# PROGRAM:  Admin.pl - from closedShop - Open Shopping Cart 
#
# RCSID:  $Id$
#
# DESCRIPTION: Admininstration for shopping cart
#
# INPUTS:  user input from the web, relational database (mSQL), filesystem
#
# OUTPUTS:  web output, relational database (mSQL)
#
# SPECIAL NOTES:  
#
################################################################################
#
# MODIFICATION HISTORY
#
# 2001-05-03   cbf    Created
# 2001-06-07   cbf    Added attributes to products
# 2001-06-09   cbf    Added a field for product id specified by merchant
# 2001-06-11   cbf    Removed image file if file was not uploaded
# 2001-06-20   cbf    Added ability to change program variables
# 2001-06-22   cbf    Added ability to change filenames
# 2001-06-24   cbf    When displaying order, filename wasn't correct on a link
# 2001-07-24   cbf    Mailprogram can be customized
# 2001-08-05   cbf    Attributes weren't showing in admin screen
#                     All input is validated
# 2001-08-12   cbf    Added instructions about "processing orders"
# 2001-09-08   cbf    Added SecureImageURL variable use
# 2001-09-13   cbf    Made Edit/Delete list be sorted by category, put edit
#                      button next to each item, to reduce scroll time
# 2001-09-17   cbf    Let admin remove customers from cust. list
# 2001-09-18   cbf    Let admin email all customers a la mail program
# 2001-09-27   dsb    Change variables takes account of Merchant/Admin uname
# 2001-10-18   cbf    Added database location
# 2002-01-20   cbf    Each category now has variables to be edited
# 2002-01-29   cbf    Rudimentary Download Order History Log
# 2002-02-11   cbf    Let categories be public or private
# 2002-05-12   cbf    Added minimum order amount, added continue shopping vars,
#                       final return vars
# 2002-05-12   cbf    Removed extra space from customer section
# 2003-01-06   cbf    Added Item list to Download order history log
# 2003-02-27   cbf    Added Show shipping prices option
# 2003-03-01   cbf    Added Important links back, it went away somehow
# 2003-04-01   cbf    Added currency marker, different taxing
#                     Added new taxing options (state,national,internat)
# 2003-04-02   cbf    Added gift certificates, country listings, pay by check
# 2003-07-10   cbf    Added ip address for orders
# 2003-07-11   cbf    Added mySQL data backup
# 2003-08-23   cbf    Added Ebay Possibilities
# 2003-08-23   cbf    Added access to Admin page restrict to IP
# 2003-08-25   cbf    Added importing capabilities
# 2003-08-25   cbf    Added different language support
# 2003-10-17   cbf    Added Template support for Items and Category
# 2004-02-18   cbf    Fixed annoying category problem where the cat doesn't show
################################################################################

use CGI::Carp(fatalsToBrowser);
use closedShop;
use strict;
use CGI;
use DBI;
use Fcntl ':flock';

closedShop::Initialize();

###############################################################################
## PROGRAM SPECIFIC VARS ##
my $query = new CGI;
my $program_name = "$closedShop::FileNames{admin}";
	
my %actions = (AddProduct => $closedShop::TEXT{'ADD_PROD'},
           EditProduct => "$closedShop::TEXT{'EDIT'} $closedShop::TEXT{'PROD'}",
	   DeleteProduct => $closedShop::TEXT{'DEL_PROD'},
	   ViewOrders => $closedShop::TEXT{'VIEW_PROC'},
	   ViewCustomers => $closedShop::TEXT{'VIEW_CUST'},
	   AdminScreen => $closedShop::TEXT{'ADMIN_PAN'},
	   ChangeVariables => $closedShop::TEXT{'ED_PROG'},
	   EditCategories => "$closedShop::TEXT{'EDIT'} $closedShop::TEXT{'CAT'}",
	   DownloadOrder => $closedShop::TEXT{'DL_HIS'},
	   ViewLinks => $closedShop::TEXT{'VIEW_LNK'},
	   GiftCertificate => $closedShop::TEXT{'GC_MNG'},
	   BackupSQL => $closedShop::TEXT{'BK_SQL'},
	   ImportProducts => $closedShop::TEXT{'IMPORT'},
	   PrintEbaySubCategory => "Print Ebay Sub Categories"
		);
################################################################################


Main();
closedShop::Cleanup();

################################################################################
# FUNCTION:  Main
# DESCRIPTION: Find out what the user wants to do and execute the appropriate
#              sub routine
################################################################################
# MODIFICATION HISTORY
# 2000-07-25   cbf    Created subroutine
################################################################################
sub Main
{
	my $action = $query->param('action');
	$action = "cs" if (!defined($action));

	my $IP = $closedShop::IPAccess;
	if ($IP) {
	  if ($ENV{'REMOTE_ADDR'} ne $IP
		&& $ENV{'REMOTE_HOST'} !~ /$IP/) {
	    return closedShop::ErrorMessage("$closedShop::TEXT{'NO_IP'} 
		$ENV{'REMOTE_ADDR'}");
	  }
	}

	if ($action eq "Login") {
	  Login();
	}
	elsif ($actions{$action} eq "") {
          my ($session,$uid) = closedShop::GetSessionCookie();
          if (closedShop::Authenticate($session,"admin")) {
	    AdminScreen();
          }
	  else {
	    LoginScreen($closedShop::TEXT{'PLS_LOGIN'});  
          }
	}
	else {
          my ($session,$uid) = closedShop::GetSessionCookie();
	  if (!closedShop::Authenticate($session,"admin")) {
	    return LoginScreen($closedShop::TEXT{'IMPROP_LOGIN'});
	  }
	  else {
 	    eval ($action);
          }
	}
}

###############################################################################
# FUNCTION:  ImportProducts
# DESCRIPTION: imports a list of products
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub ImportProducts
{
  my $excelmesg = $closedShop::TEXT{'EXCEL_MESG'};

  if ($query->param("selected") == 1) {
    my $category = $query->param("category");
    my $file = $query->param("file");

    my @data = ();
    if ($file) {
      while (<$file>) {  push @data,$_;  }
    }
    my @file = split(/\./,$file);
    my $numcount = 0;

    if ($file[$#file] =~ /xls/) {
    eval("use Spreadsheet::ParseExcel");
   if ($@) {
        return AdminScreen($excelmesg);
      }
      else {
        open(FILE,">tmplist.xls");
        print FILE @data;
        close(FILE);
       #use Spreadsheet::ParseExcel;
        my $oBook = Spreadsheet::ParseExcel::Workbook->Parse('tmplist.xls');
        my($iR, $iC, $oWkS, $oWkC);
        foreach my $oWkS (@{$oBook->{Worksheet}}) {
          for(my $iR = $oWkS->{MinRow}+1 ;
            defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ; $iR++) {
 	    my $SQL= qq| insert into $closedShop::sql_tables{"item"} set
              category="$category",|;
            my $j = 0;
            for(my $iC = $oWkS->{MinCol} ;
              defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ; $iC++) {
               $oWkC = $oWkS->{Cells}[$iR][$iC];
               my $field = $oWkS->{Cells}[$oWkS->{MinRow}][$iC];
	       $SQL .= $field->Value . qq|="| . $oWkC->Value . qq|"|;
               if ($j != $oWkS->{MaxCol}) { $SQL .= qq|,|; }
               $j++;
             }
           my $sth = closedShop::DatabaseQuery($SQL);
           $numcount++;
          }
        }
      }
    }
    else {
     my @fieldlist = split(/\",\"/,$data[0]);
     for (my $k = 1; $k < @data; $k++) {
       chomp($data[$k]); if (!$data[$k]) { next; }
       my @list = split(/\",\"/,$data[$k]);
       my $SQL= qq| insert into $closedShop::sql_tables{"item"} set
	category="$category",|;
       for (my $j = 0; $j < @fieldlist; $j++) {
         $fieldlist[$j] =~ s/"//g;
         $list[$j] =~ s/"//g;
         $SQL .= qq|$fieldlist[$j]="$list[$j]"|;
         if ($j != $#fieldlist) { $SQL .= qq|,|; }
       }
       $numcount++;
       my $sth = closedShop::DatabaseQuery($SQL);
      }
     }

     return AdminScreen($closedShop::TEXT{'DONE_IM'} . $numcount);
  }
  else {
    closedShop::Header();
   print qq|
                <font class="main">
          <form action="$program_name"
enctype="multipart/form-data" method="POST">
          <input type="hidden" name="action" value="ImportProducts">
          <input type="hidden" name="selected" value="1">
          <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="2">
          <font class="head">$closedShop::TEXT{'IMPORT'}</th></tr>
           <tr class="mainrow">
                 <td><font class="main"> $closedShop::TEXT{'SELECT'} $closedShop::TEXT{'CAT'}:</td>
	<td> <font class="main">|;
          closedShop::PrintCategoryList("category",0,"ALL");
          print qq|
            </td></tr>
    <tr class="mainrow">
	<td><font class="main"> $closedShop::TEXT{'CH_FILE'}:</td>
	<td><font class="main"> <input type="file" name="file" size="20"><BR>
	$closedShop::TEXT{'SEE_IN'}
    </tr>
            <tr class="mainrow"><td colspan="2"><centeR>
               <input type="submit" value="$closedShop::TEXT{'IMPORT'}"></td></tr>
            <tr class="mainrow"><td colspan="2">
<font class="main">
$closedShop::TEXT{'IMP_IN1'}
<BR>
<code>
<dd>"name","description","product_code","price","shipping_price"</dd><BR>
<dd>"Green Widgets","This is a green 
widget","GW123","32.50","2.00"</dd><BR>
<dd>"Blue Widgets","This is a blue widget","BW123","10.50",""</dd><BR>
</code><BR><font class="main">
$closedShop::TEXT{'IMP_IN2'}<BR><BR>

	</td></tr>

	<tr class="headrow"><td colspan="2">&nbsp;</td></tr>
	</table>
        <div align="center"></form><form action="$program_name" method="POST">
            <input type="hidden" name="action" value="AdminScreen">
            <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></div></center>
                 |;
     closedShop::Footer();

  }

}

###############################################################################
# FUNCTION:  PrintEbaySubCategory
# DESCRIPTION: prints teh ebay sub cat
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub PrintEbaySubCategory
{
  my $main = $query->param("main");
  my $sub1 = $query->param("sub1"); 
  if (!$sub1) { $sub1 = -1; }
  my $sub2 = $query->param("sub2");
  if (!$sub2) { $sub2 = -1; }
  my $sub3 = $query->param("sub3");
  if (!$sub3) { $sub3 = -1; }
  my $sub4 = $query->param("sub4");
  if (!$sub4) { $sub4 = -1; }
  my $sub5 = $query->param("sub5");
  if (!$sub5) { $sub5 = -1; }

  my $SQL = qq|select name from $closedShop::sql_tables{"ebay"}
	where id="$main"|;
  my $sth = closedShop::DatabaseQuery($SQL);
  my ($mname) = $sth->fetchrow_array();

  print $closedShop::HTML_HEADER;
  print qq|<html>
	<head>|;
  closedShop::WriteStyleSheets();
  print qq|<script language="JavaScript">
	<!--
	function MakeNewList() {
	 var sub1 = document.subform1.sub1.value;
	 var sub2 = document.subform1.sub2.value;
	 var sub3 = document.subform1.sub3.value;
	 var sub4 = document.subform1.sub4.value;
	 var sub5 = document.subform1.sub5.value;
         var url = "$closedShop::FileNames{"admin"}?action=PrintEbaySubCategory&main=$main&sub1="+sub1+"&sub2="+sub2+"&sub3="+sub3+"&sub4="+sub4;
	 window.location.href = url;
	}
	function Submitted() {
	   if (document.subform1.sub1.value != "") {
             var w = document.subform1.sub1.selectedIndex;
	     var text = document.subform1.sub1.options[w].text;
             window.opener.document.stockForm.CategoryMenu1.value = document.subform1.sub1.value;
             window.opener.document.stockForm.subcat1.value = text;
           }
	   else {
	     window.opener.document.stockForm.subcat1.value = "";
	     window.opener.document.stockForm.CategoryMenu1.value = "";
	   }
	   if (document.subform1.sub2.value != "") {
             var w = document.subform1.sub2.selectedIndex;
	     var text = document.subform1.sub2.options[w].text;
             window.opener.document.stockForm.CategoryMenu2.value = document.subform1.sub2.value;
             window.opener.document.stockForm.subcat2.value = text;
           }
	   else {
	     window.opener.document.stockForm.subcat2.value = "";	
	     window.opener.document.stockForm.CategoryMenu2.value = "";
	   }

	   if (document.subform1.sub3.value != "") {
             var w = document.subform1.sub3.selectedIndex;
	     var text = document.subform1.sub3.options[w].text;
             window.opener.document.stockForm.CategoryMenu3.value = document.subform1.sub3.value;
             window.opener.document.stockForm.subcat3.value = text;
           }
	   else {
	     window.opener.document.stockForm.subcat3.value = "";	
	     window.opener.document.stockForm.CategoryMenu3.value = "";
	   }

	   if (document.subform1.sub4.value != "") {
             var w = document.subform1.sub4.selectedIndex;
	     var text = document.subform1.sub4.options[w].text;
             window.opener.document.stockForm.CategoryMenu4.value = document.subform1.sub4.value;
             window.opener.document.stockForm.subcat4.value = text;
           }
	   else {
	     window.opener.document.stockForm.subcat4.value = "";	
	     window.opener.document.stockForm.CategoryMenu4.value = "";
	   }

	   if (document.subform1.sub5.value != "") {
             var w = document.subform1.sub5.selectedIndex;
	     var text = document.subform1.sub5.options[w].text;
             window.opener.document.stockForm.CategoryMenu5.value = document.subform1.sub5.value;
             window.opener.document.stockForm.subcat5.value = text;
           }
	   else {
	     window.opener.document.stockForm.subcat5.value = "";	
	     window.opener.document.stockForm.CategoryMenu5.value = "";
	   }

	 self.close();
	}
	-->
	</script>
	</head>
	<body bgcolor='white'><center>
  <table border="0" width="90%"><tr class="headrow"><td
colspan="2"><font class="head">
<center>$closedShop::TEXT{'SELECT'} $closedShop::TEXT{'SUBCAT'}
   for<BR>$mname</center></td></tr>
   <form name="subform1" action="javascript:Submitted()">
	<input type="hidden" name="main" value="$main">
  <tr class="mainrow"><td><font class="main">
  Sub-Category 1: </td><td><font class="main">|;
  closedShop::PrintEbaySubCat("sub1",$sub1,$main);
  print qq|</td></tr><tr  class="mainrow"><td>
  <font class="main"> Sub-Category 2:</td><td><font class="main">|;
  closedShop::PrintEbaySubCat("sub2",$sub2,$sub1);
  print qq|</td></tr><tr class="mainrow"><td>
  <font class="main"> Sub-Category 3:</td><td><font class="main">|;
  closedShop::PrintEbaySubCat("sub3",$sub3,$sub2);
  print qq|</td></tr><tr  class="mainrow"><td>
  <font class="main"> Sub-Category 4:</td><td><font class="main">|;
  closedShop::PrintEbaySubCat("sub4",$sub4,$sub3);
  print qq|</td></tr><tr  class="mainrow"><td>
  <font class="main"> Sub-Category 5:</td><td><font class="main">|;
  closedShop::PrintEbaySubCat("sub5",$sub5,$sub4);
  print qq| </td></tr></table><BR><input type="submit" value="$closedShop::TEXT{'ENT_SUB'}"></form>
   </body></html> |;
}

###############################################################################
# FUNCTION:  BackupSQL
# DESCRIPTION: backup SQL database
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub BackupSQL
{
  if ($query->param("selected") == 1) {
    my $file = $query->param("file");
    open(FILE,">$file") || closedShop::ErrorMessage("can't open $file");
    my $run = "mysqldump -u$closedShop::DatabaseUsername -p$closedShop::DatabasePassword --databases $closedShop::DatabaseName > $file";
    $run = `$run`;
    return AdminScreen("$closedShop::TEXT{'BCK_MESG'}<BR>" . `pwd` . "/$file");
  }
  else {
   closedShop::Header();
   print qq|
    		<font class="main">
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="BackupSQL">
	  <input type="hidden" name="selected" value="1">
	  <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="2">
	  <font class="head"> $closedShop::TEXT{'BK_SQL'}</th></tr>
    <tr class="mainrow">
		 <td><font class="main"> $closedShop::TEXT{'BKSQL_MESG'}</td>
       <td><font class="main">
	 <input type="text" name="file" size="25" value="csBackupSQL.sql"></td>
	   </tr>   
	     <tr class="headrow"><td colspan="2"><centeR>
	       <input type="submit" value="$closedShop::TEXT{'BK_SQL'}"></td></tr></table>
	<div align="center"><form action="$program_name" method="POST">
	    <input type="hidden" name="action" value="AdminScreen">
	    <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></div></center>
		 |;
     closedShop::Footer();
  }
}

###############################################################################
# FUNCTION:  GiftCertificate
# DESCRIPTION: gift certificate management
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub GiftCertificate
{
 		if ($query->param("selected") eq "Denomination") {
		  my @denom = $query->param("denom");
			my $d = join("~",@denom);
			open(FILE,">$closedShop::gcfile");
			flock(FILE,LOCK_EX);
			print FILE $d;
			flock(FILE,LOCK_UN);
			close(FILE);
		  return AdminScreen($closedShop::TEXT{'GC_UP'});
		}
		elsif ($query->param("selected") eq "Enable") {
		  my $id = closedShop::ValidateInput($query->param("id"));
      my $SQL = qq|update $closedShop::sql_tables{"gc"} set active="Y" 
	             where id="$id"|;
	    my $sth = closedShop::DatabaseQuery($SQL);
      $query = new CGI({});
			return GiftCertificate($closedShop::TEXT{'GC_EN'});

		}
		else {
		  my $mesg = $_[0];
		closedShop::Header();
		my @denoms = closedShop::GetGiftCertificateInfo();
		my %marks = ();
		foreach (@denoms) {
		  $marks{"$_"} = "checked";
		}
 		
	  print qq|
		<font class="main">
		<font color="red">$mesg</font>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="GiftCertificate">
	  <input type="hidden" name="selected" value="Denomination">
	  <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="2">
	  <font class="head"> $closedShop::TEXT{'GC_MNG'}</th></tr>
    <tr class="mainrow">
		 <td colspan="2"><font class="main"> $closedShop::TEXT{'GC_MESG2'}<BR>
		 |;
		 my $url = "$closedShop::FileNames{item}?action=ShowGiftCertificates";
		 if ($url !~ /^http/) {
		   $url = $closedShop::urltofolder . $url;
		 }
     print qq|<a href="$url">$url</a><BR>	</td>	</tr>
		<tr class="mainrow">
		 <td width="180"><font class="main"> $closedShop::TEXT{'GC_MESG3'}</td>
	    <td><font class="main"> 
			<input type="checkbox" name="denom" | . $marks{"5.00"} . qq| value="5.00">$closedShop::CurrencyMarker 5.00<BR>
			<input type="checkbox" name="denom" | . $marks{"10.00"} . qq| value="10.00">$closedShop::CurrencyMarker 10.00<BR>
			<input type="checkbox" name="denom" | . $marks{"25.00"} . qq| value="25.00">$closedShop::CurrencyMarker 25.00<BR>
			<input type="checkbox" name="denom" | . $marks{"50.00"} . qq| value="50.00">$closedShop::CurrencyMarker 50.00<BR>
			<input type="checkbox" name="denom" | . $marks{"100.00"} . qq| value="100.00">$closedShop::CurrencyMarker 100.00<BR>
			<input type="checkbox" name="denom" | . $marks{"200.00"} . qq| value="200.00">$closedShop::CurrencyMarker 200.00<BR>
			<input type="checkbox" name="denom" | . $marks{"500.00"} . qq| value="500.00">$closedShop::CurrencyMarker 500.00<BR>
			<BR>
			<input type="submit" value="$closedShop::TEXT{'NEW_DNM'}">
			</td></form>
		</tr>	
			<tr class="mainrow">
		 <td><font class="main"> $closedShop::TEXT{'O_GC'} </td>
	    <td><font class="main"> 
			|;
			my $SQL = qq|select id,amount_left,initial_amount,customer_name,customer_id,
				 				DATE_FORMAT(date_bought,"%M %e %Y"),gc_code,active from
								$closedShop::sql_tables{"gc"} where closed != 'Y' 
								order by date_bought ASC|;
			my $sth = closedShop::DatabaseQuery($SQL);
			my $k;
			for ($k = 1; my (@ary) = $sth->fetchrow_array(); $k++) {
			  my $style = "#ffe4c4";
				my $active = qq|<a href="$closedShop::FileNames{admin}?action=GiftCertificate&selected=Enable&id=$ary[0]">$closedShop::TEXT{'ENABLE'} $closedShop::TEXT{'GC'}</a>|;
				if ($ary[7] eq "Y") {
				  $active = $closedShop::TEXT{'ACTI'};
				}
				if ($k % 2) { $style = "#faebd7"; }
				print qq| <Center><table  class="main"" cellpadding="0" 
				   cellspacing="2" width="100%"><tr bgcolor="$style"><td>
					 <font class="main">
					 $k) $ary[3] ($closedShop::TEXT{'BO_ON'} $ary[5])<BR> $closedShop::TEXT{'RM_BC'}: $closedShop::CurrencyMarker
					 $ary[1] / $closedShop::CurrencyMarker $ary[2]<BR>
					 GC Code: $ary[6] - $active</td></tr></table>|;
			}
			
			if ($k == 1) {
			  print qq|<font class="main"> $closedShop::TEXT{'NO_OGC'}|;
			}
			
			print qq|</td></tr>
	<tr class="headrow"><td colspan="2">&nbsp;</td></tr></table>
			<div align="center"><form action="$program_name" method="POST">
	    <input type="hidden" name="action" value="AdminScreen">
	    <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></div></center>|;
	  closedShop::Footer();
		
		}
}


###############################################################################
# FUNCTION:  DownloadOrder
# DESCRIPTION: download order log
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub DownloadOrder
{
	print "Content-type: text/html \n\n";

	my $SQL	= qq| select id,DATE_FORMAT(date_bought,"%W, %M %d %Y"),
	              total,b_name,b_address,b_city,b_state,
                  b_zip,b_country,b_phone,s_name,s_address,s_city,s_state,
                  s_zip,s_country,s_phone,cc_name,cc,cc_num,cc_month,cc_year,item_ids,
		    ip_address  from $closedShop::sql_tables{"order"} 
		          where complete="Y" order by date_bought  |;
	my $sth = closedShop::DatabaseQuery($SQL);
	
	foreach (qw/ID Date_Bought Total Billing_Name Billing_Address Billing_City
			Billing_State Billing_Zip Billing_Country Billing_Phone Shipping_Name
			Shipping_Address Shipping_City Shipping_State
			Shipping_Zip Shipping_Country Shipping_Phone CC_Name Credit_Card
			CC_Number CC_Month CC_Year Items IP_Address/) {
		print qq|"$_",|;		
	}
	print qq|"Count"<BR>\n|;
	
	my $k = 1;
	while (my (@ary) = $sth->fetchrow_array()) {
	  my $j = 0;
          foreach (@ary) {
		if ($j == 22) {
		my @items = split(/~/,$_);
		my $t = 1;
		print qq|"|;	  
  	   	foreach my $its (@items) {
		  	  my ($iid,$qty,$attr) = split(/\|/,$its);
	 	  	  if ($iid eq "gc") {
			    my ($id,$recipient_name,$recipient_email,$gc_amount) = split(/\|/,$its);
				print qq|Gift Certificate for $recipient_name for $closedShop::CurrencyMarker $gc_amount; |;
			  }
			  else {
			    my $SQL2 = qq| select name,price,shipping_price,description,
	                    category,product_code from $closedShop::sql_tables{"item"} where
				  id="$iid" |;
	   	          my $sth2 = closedShop::DatabaseQuery($SQL2);
	                  my ($name,$price,$ship,$desc,$cat,$code) = $sth2->fetchrow_array();
		              my $total = sprintf("%.2f",$qty * ($price+$ship));
	                  print qq|$name ($code) x $qty ($attr) ($closedShop::categories{$cat}) Total Cost: $closedShop::CurrencyMarker $total; |;	
	               }
				}
		       print qq|",|; 	
		}
		else {
			print qq|"$_",|;
		}
		$j++;
	  }
	  print qq|"$k"<BR>\n|;
	  $k++;
	}
}

###############################################################################
# FUNCTION:  EmailCustomers
# DESCRIPTION: emails all customers
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub EmailCustomers
{
	my ($subject,$body) = @_;
	my $k = 0;
	my $pid = fork();

	if ($pid) {
	  return;
	}
	else {
	  close (STDOUT);
	  my $SQL = qq| select email from $closedShop::sql_tables{"user"}
	  where email != "" order by name|;
          my $sth = closedShop::DatabaseQuery($SQL);
	  while (my ($em) = $sth->fetchrow_array()) {
	    closedShop::SendEmail($em,$subject,$body);
	    $k++;
	  }
	}	
}

###############################################################################
# FUNCTION:  EditCategories
# DESCRIPTION: add a product to database
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub EditCategories
{
  if ($query->param("selected") eq "RemoveCategory") {
    if ($query->param("delete") eq "Y") {
      my $cat = closedShop::ValidateInput($query->param("category"));
      my $SQL = qq|select parent,children,id from $closedShop::sql_tables{"cat"}
	where code="$cat"|;
      my $sth = closedShop::DatabaseQuery($SQL);
      my ($pa,$ch,$id) = $sth->fetchrow_array();
      
      my @child = split(/~/,$ch);
      foreach (@child) {
        if (!$_) { next; }
	$SQL = qq|update $closedShop::sql_tables{"cat"} set parent="$pa"
	  where id="$_"|;
	$sth = closedShop::DatabaseQuery($SQL);
      }

      $SQL = qq|select children from $closedShop::sql_tables{"cat"} 
	  where id="$pa"|;
      $sth = closedShop::DatabaseQuery($SQL);
      my ($oldch) = $sth->fetchrow_array();
      
      $oldch =~ s/~$id~//g;
      $oldch .= $ch;

      $SQL = qq|update $closedShop::sql_tables{"cat"} set children="$oldch"
	where id="$pa"|;
      $sth = closedShop::DatabaseQuery($SQL);

      $SQL = qq|delete from $closedShop::sql_tables{"cat"} where
	code = "$cat" |;
      $sth = closedShop::DatabaseQuery($SQL);
      $SQL = qq|delete from $closedShop::sql_tables{"item"} where
	category = "$cat" |;
      $sth = closedShop::DatabaseQuery($SQL);
      return AdminScreen($closedShop::TEXT{'SUCC_RMC'});
    }
    return AdminScreen($closedShop::TEXT{'FAIL_RMC'});
  }
  elsif ($query->param("selected") eq "AddSubCategory") {
    my $cat = $query->param("category");
    my $sub = $query->param("subcat");
    my $SQL = qq|select id,children from $closedShop::sql_tables{"cat"} where
	code = "$cat" |;
    my $sth = closedShop::DatabaseQuery($SQL);
    my ($parent,$children) = $sth->fetchrow_array();
    my $code = closedShop::GetNewCategoryCode($sub);

    $SQL = qq|insert into $closedShop::sql_tables{"cat"} set name="$sub",
      parent="$parent",code="$code",status="PUBLIC",style="text"|;
    $sth = closedShop::DatabaseQuery($SQL);
    my $newid = $sth->{'mysql_insertid'}; 

    $children .= "~$newid~";
    $SQL = qq|update $closedShop::sql_tables{"cat"} set children="$children"
      where id ="$parent"|;
    $sth = closedShop::DatabaseQuery($SQL);

    return AdminScreen($closedShop::TEXT{'SUCC_ADDSUB'});
  }
  elsif ($query->param("selected") == 1) {
	  foreach (sort keys %closedShop::categories) {
	    my $intro = closedShop::ValidateInput($query->param("intro_$_")); 
	      $intro =~ s/"/'/g;
            my $name = closedShop::ValidateInput($query->param("name_$_"));
              $name =~ s/"/'/g;
	    my $style = closedShop::ValidateInput($query->param("style_$_"));
	      $style =~ s/"/'/g;
	    my $numimages = closedShop::ValidateInput($query->param("numimages_$_"));
	    my $status = closedShop::ValidateInput($query->param("status_$_"));

            my $SQL = qq|update $closedShop::sql_tables{"cat"} set name="$name",
               intro="$intro",style="$style",numimages="$numimages",status="$status"
               where code="$_"|;
            my $sth = closedShop::DatabaseQuery($SQL);
	  }

	  return AdminScreen($closedShop::TEXT{'SUCC_EDC'});
	}
	else {
	  closedShop::Header();
	 print qq|<font class="main"><b>$closedShop::TEXT{'JM_C'}</b>: |;
          my $t = 0;
	  foreach (sort keys %closedShop::categories) {
	    print qq|<A href="#$_">$closedShop::categories{$_}</a>|;
	    if ($t % 3 == 2) { print "<BR>"; }
	    else { print " - "; }
	    $t++;
	  }
	    print qq|
	      <Table  class="main" width="$closedShop::TableWidth"><tr><td>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="EditCategories">
	  <input type="hidden" name="selected" value="1">
	  <table width="60%"  class="main"><tr class="headrow"><th>
	  <font class="head">$closedShop::TEXT{'EDIT'} $closedShop::TEXT{'CAT'}</th></tr>
      |;
	 
	  
	  foreach (sort keys %closedShop::categories) {
	    my ($intro,$style,$numimages,$status,$name,$child,$parent) = 
                closedShop::GetCategoryInfo($_);
	    my $SQL1 = qq|select name,code from $closedShop::sql_tables{"cat"} 
	      where id="$parent"|;
	    my $sth1 = closedShop::DatabaseQuery($SQL1);
	    my ($parent_name,$pcode) = $sth1->fetchrow_array();

	    my $checktext = ""; my $checkthumb = "";
	    my $checkprivate = ""; my $checkpublic = "";
		if ($style eq "thumbnail") { $checkthumb = "checked"; }
		else { $checktext = "checked"; }
		
		if ($status eq "PRIVATE") { $checkprivate = "checked"; }
		else { $checkpublic = "checked"; }
		
		print qq|
          <tr class="mainrow"><td>
		  <font class="main"> <A name="$_">$closedShop::TEXT{'CAT'} $closedShop::TEXT{'NAME'}</a>:
		    <BR><input type="text" name="name_$_" 
                  value="$closedShop::categories{$_}" size="25"><BR>|;
	    if ($parent_name) { print qq|$closedShop::TEXT{'PARENT'} $closedShop::TEXT{'CAT'}:
			     <a href="#$pcode">$parent_name</a><BR>|; }
	    print qq|
	      <b>$closedShop::TEXT{'INT_TXT'}</b><br>
		  <textarea rows="5" cols="35" name="intro_$_">$intro</textarea><br>
		  <br>
		  <b>$closedShop::TEXT{'CAT'} $closedShop::TEXT{'DSP_T'}</b><br>
		  <input type="radio" name="style_$_" $checktext value="text"> $closedShop::TEXT{'TXT_D'}
		  &nbsp;&nbsp;&nbsp;
		  <input type="radio" name="style_$_" $checkthumb value="thumbnail"> $closedShop::TEXT{'THM_D'}<br>
		  $closedShop::TEXT{'NUM_THM'}: <select name="numimages_$_">
		  |;
		  if ($numimages) {
		    print qq|<option value="$numimages">$numimages $closedShop::TEXT{'ITMS'}</option>|;
		  }
		  print qq|
		  <option value="16">16 $closedShop::TEXT{'ITMS'}</option>
		  <option value="8">8 $closedShop::TEXT{'ITMS'}</option>
		  <option value="4">4 $closedShop::TEXT{'ITMS'}</option>
		  <option value="2">2 $closedShop::TEXT{'ITMS'}</option>
		  <option value="1">1 $closedShop::TEXT{'ITMS'}</option>
		  </select><br>
		  
		  <br><strong>$closedShop::TEXT{'CAT'} $closedShop::TEXT{'STAT'}</strong><br>
		  <input type="radio" name="status_$_" $checkpublic value="PUBLIC"> $closedShop::TEXT{'PUBV'}
		  &nbsp;&nbsp;&nbsp;
		  <input type="radio" name="status_$_" $checkprivate value="PRIVATE">
		  $closedShop::TEXT{'PRIVH'}<br>
		  </td></tr>
		|;
	  }
	  
	  print qq|
	  <tr class="headrow">
	  <td colspan="2"><div align="center"><input type="submit" value="$closedShop::TEXT{'EDIT'} $closedShop::TEXT{'CAT'}"></div></td>
	  </tr></form></table>
	    </td><td width="5">&nbsp;</td>
	      <form action="$program_name" method="POST">
		<input type="hidden" name="action" value="EditCategories">
		<input type="hidden" name="selected" value="AddSubCategory">
	      <td valign="top">
		 <table width="35%"  class="main"><tr class="headrow"><th colspan="2">
	  <font class="main"> <font size="3"><font color="blue">$closedShop::TEXT{'ENT_SUB'}</font></th></tr>
	    <tr class="mainrow"><td> <font class="main">$closedShop::TEXT{'SELECT'} $closedShop::TEXT{'CAT'}:</td>
	      <td> <font class="main">|;

	  closedShop::PrintCategoryList("category",0,"ALL");

	  print qq|
	    </td></tr>
	    <tr class="mainrow"><td> <font class="main"> $closedShop::TEXT{'SUBCAT'} $closedShop::TEXT{'NAME'}:</td>
	    <td><input type="text" name="subcat" size="15"></td></tr>
	    <tr class="headrow">
	    <td colspan="2"><center> <font class="main"><input type="submit" value="$closedShop::TEXT{'ENT_SUB'}"></td>
	    </tr></form></table>
	    <BR><form action="$program_name" method="POST">
	    <input type="hidden" name="selected" value="RemoveCategory">
           <input type="hidden" name="action" value="EditCategories">
            <table width="35%"  class="main"><tr class="headrow"><th colspan="2">
	    <font class="head"> $closedShop::TEXT{'REM'} $closedShop::TEXT{'CAT'}</th></tr>
	    <tr class="mainrow"><td> <font class="main"> $closedShop::TEXT{'SELECT'} $closedShop::TEXT{'CAT'}:</td>
	    <td> <font class="main">|;

	  closedShop::PrintCategoryList("category",0,"ALL");

	  print qq|</td></tr>
	  <tr class="mainrow"><td> <font class="main"> $closedShop::TEXT{'CNF_DELMESG'}</td>
	    <td> <font class="main"><input type="radio" name="delete" value="Y">$closedShop::TEXT{'YES'} <BR>
	    <input type="radio" name="delete" value="N" checked> $closedShop::TEXT{'NO'}</td></tr>
	    <tr class="headrow">
	    <td colspan="2"> <font class="main"><center><input type="submit" value="$closedShop::TEXT{'REM'} $closedShop::TEXT{'CAT'}"></td>
	    </tr></form>

	    </table>
	    <BR>
	  <div align="center"><form action="$program_name" method="POST">
	    <input type="hidden" name="action" value="AdminScreen">
	    <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></div></center>
	      </td></tr></table>
	      |;
	  closedShop::Footer();
	}
}

###############################################################################
# FUNCTION:  ViewCustomers
# DESCRIPTION: add a product to database
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub ViewCustomers
{
	my $mesg = "";
	if ($query->param("selected") eq "RemoveCustomer") {
	  my $id = $query->param("id");
	  my $SQL2	= qq| delete from $closedShop::sql_tables{"user"}
	  where id = "$id" |;
      my $sth2 = closedShop::DatabaseQuery($SQL2);
	  $mesg = qq|<div align="center"><font class="main">
	  <font color="red">$closedShop::TEXT{'RM_CUST'}</font></div><br>|;
	}
	elsif ($query->param("selected") eq "EmailCustomer") {
	  my $subject = $query->param("subject");
	  my $body = $query->param("body");
	  EmailCustomers($subject,$body);
	  $mesg = qq|<div align="center"><font class="main">
	  <font color="red">$closedShop::TEXT{'SUCCEM_CUST'}</font></div><br>|;
	}
	elsif ($query->param("selected") eq "EmailCustomerDisplay") {
	closedShop::Header();
	  print qq|
	  <form action="$program_name" method="POST">
	   <input type="hidden" name="action" value="ViewCustomers">
	   <input type="hidden" name="selected" value="EmailCustomer">
	   <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="2">
	  <font class="head">$closedShop::TEXT{'EM_CUST'} </th></tr>
 	  <tr class="mainrow">
		<td><font class="main"> $closedShop::TEXT{'SUBJECT'}</td>
		<td><font class="main"> <input type="text" name="subject" size="30"></td></tr>
	  <tr class="mainrow"><td><font class="main"> $closedShop::TEXT{'BODY'}</td>
	  <td><font class="main"> <textarea name="body" cols="30" rows="5" wrap="physical"></textarea></td>
	  <tr class="headrow">
	  <td colspan="2"><div align="center"><input type="submit" value="$closedShop::TEXT{'EM_CUST'}"></div></td>
	  </tr></form></table>
	  <div align="center"><form action="$program_name" method="POST">
	    <input type="hidden" name="action" value="AdminScreen">
	    <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></div></center>|;
	  return closedShop::Footer();
	}

	closedShop::Header();

	  print qq|$mesg
	  <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="5">
	  <font class="main"> <font size="3"><font color="blue">$closedShop::TEXT{'VIEW_CUST'}</font></th></tr>
 	  <tr class="mainrow">
		<td><font class="main"><b>Name</b></td><td><font class="main"><b>$closedShop::TEXT{'EMAIL'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'ADDRESS'}/<br>$closedShop::TEXT{'PHONE'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'TOT'} $closedShop::TEXT{'PURCHASE'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'REM'}</b></td>
	  </tr>|;

	   my $SQL3 = qq| select name,email,address,city,state,country,zip,phone,id
	  from $closedShop::sql_tables{"user"} where email != "" order by name|;
      	 my $sth3 = closedShop::DatabaseQuery($SQL3);

	  my $k = 0;
	  while (my ($name,$email,$address,$city,
	  $state,$country,$zip,$phone,$id) = $sth3->fetchrow_array()) {
	   print qq|
	   <tr class="mainrow">

		<td><form action="$program_name" method="POST">
	   <input type="hidden" name="action" value="ViewCustomers">
	   <input type="hidden" name="selected" value="RemoveCustomer">
	   <input type="hidden" name="id" value="$id"><font class="main"> $name</td>

		<td><font class="main"><a href="mailto:$email">$email</a></td>
	    <td><font class="main"> $address<br>$city, $state $zip<br>
		<BR>$country<BR>$phone</td>
	    |;

	  my $SQL2 = qq| select sum(total) from $closedShop::sql_tables{"order"} where
	  date_processed is NOT NULL and user_id = "$id"|;
	  my $sth2 = closedShop::DatabaseQuery($SQL2);
	  my ($sum) = $sth2->fetchrow_array();
	  if (!$sum) { $sum = "0.00"; }

	  print qq|<td><font class="main"> $closedShop::CurrencyMarker $sum</td>
	  <td><font class="main"> <input type="submit" value="$closedShop::TEXT{'REM'}"></td></form>
	  </tr>|;
	  $k++;
	 }

	 print qq|<tr class="headrow">
		<td colspan="5"><font class="main"> <div align="center"><b>$closedShop::TEXT{'TOT'} $closedShop::TEXT{'CUST'}: $k</b></div></td></tr>
	    </table></form>
		<br>
		
		<div align="center"><form action="$program_name" method="POST">
	   <input type="hidden" name="action" value="ViewCustomers">
	   <input type="hidden" name="selected" value="EmailCustomerDisplay">
	   <input type="submit" value="$closedShop::TEXT{'EM_CUST'}"></form></div></center>
	   
	   </div>
				
		<div align="center"><form action="$program_name" method="POST">
	    <input type="hidden" name="action" value="AdminScreen">
	    <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></div></center>|;
	  closedShop::Footer();

}

###############################################################################
# FUNCTION:  AddProduct
# DESCRIPTION: add a product to database
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub AddProduct
{
	my $mesg = shift;
	if ($query->param("selected") == 1) {
	  my $name = $query->param("name");
	    $name = closedShop::ValidateInput($name);
	  my $category = $query->param("category");
	    $category = closedShop::ValidateInput($category);
	  my $price = $query->param("price");
	    $price = closedShop::ValidateInput($price);
	  my $code = $query->param("code");
	    $code = closedShop::ValidateInput($code);
	  my $shipping = $query->param("shipping");
	    $shipping = closedShop::ValidateInput($shipping);
	  my $rshipping = $query->param("ReducedShipping");
	    $rshipping = closedShop::ValidateInput($rshipping);
	  my $quantity = $query->param("quantity");
	    $quantity =~ tr/0-9//cd;
	    $quantity = 1 if (!$quantity);
	  my $desc = $query->param("desc");
	    $desc = closedShop::ValidateInput($desc);
	  my $image = $query->param("image");

	  if (!$name || !$price || !$category) {
	    $query = new CGI({});
	    return AddProduct($closedShop::TEXT{'FLL_ALL'});
	  }

          my $EbayItemTitle = closedShop::ValidateInput($query->param("EbayItemTitle"));
	  if (!$EbayItemTitle) { $EbayItemTitle = $name; }
          my $EbayItemDesc = closedShop::ValidateInput($query->param("EbayItemDesc"));
	  if (!$EbayItemDesc) { $EbayItemDesc = $desc; }
          my $EbayQuantity = closedShop::ValidateInput($query->param("EbayQuantity"));
	  if (!$EbayQuantity) { $EbayQuantity = $quantity; }
          my $EbayDuration = closedShop::ValidateInput($query->param("EbayDuration"));
          my $EbayStartingPrice = 
	       closedShop::ValidateInput($query->param("EbayStartingPrice"));
	  if (!$EbayStartingPrice) { $EbayStartingPrice = $price; }	  

          my $Category1Option = closedShop::ValidateInput($query->param("Category1Option"));
          my $CategoryMenu1 = closedShop::ValidateInput($query->param("CategoryMenu1"));
          my $CategoryMenu2 = closedShop::ValidateInput($query->param("CategoryMenu2"));
          my $CategoryMenu3 = closedShop::ValidateInput($query->param("CategoryMenu3"));
          my $CategoryMenu4 = closedShop::ValidateInput($query->param("CategoryMenu4"));
          my $CategoryMenu5 = closedShop::ValidateInput($query->param("CategoryMenu5"));

          my $PayInstructions = closedShop::ValidateInput($query->param("PayInstructions"));
	  
	  my @attr1 = (); my @attr2 = (); my @attr3 = ();
	  my $k = 1;
	  while ($query->param("attribute1_$k")) {
	    my $tmp = $query->param("attribute1_$k"); $tmp =~ s/~/*/g;
	    push @attr1,$tmp;
		$k++;
	  }
	  $k = 1;
	  while ($query->param("attribute2_$k")) {
	    my $tmp = $query->param("attribute2_$k"); $tmp =~ s/~/*/g;
	    push @attr2,$tmp;
		$k++;
	  }
	  $k = 1;
	  while ($query->param("attribute3_$k")) {
	    my $tmp = $query->param("attribute3_$k"); $tmp =~ s/~/*/g;
	    push @attr3,$tmp;
		$k++;
	  }
	  
	  my $attr1 = join("~",@attr1); $attr1 =~ s/\|/=/g;
	  $attr1 = $query->param("attribute1_name") . "~" . $attr1;
	  my $attr2 = join("~",@attr2); $attr2 =~ s/\|/=/g;
	  $attr2 = $query->param("attribute2_name") . "~" . $attr2;
	  my $attr3 = join("~",@attr3); $attr3 =~ s/\|/=/g;
  	  $attr3 = $query->param("attribute3_name") . "~" . $attr3;
	  
	  my $attr = $attr1 . "|" . $attr2 . "|" . $attr3;
	  
	  my $SQL= qq| insert into $closedShop::sql_tables{"item"} set 
             name="$name",
	     price="$price",shipping_price="$shipping",description="$desc",
	     category="$category",attributes="$attr",product_code="$code",
	     quantity="$quantity",reduced_shipping_price="$rshipping" |;
	  my $sth = closedShop::DatabaseQuery($SQL);
	  my $new_id = $sth->{'mysql_insertid'};
	  
	  if ($image) {
	    open (OUTFILE,">$closedShop::IMAGEPATH/$new_id.jpg") ||
		  closedShop::ErrorMessage("$closedShop::TEXT{'CANT_UP'} $closedShop::IMAGEPATH<BR>
            $closedShop::TEXT{'CANT_UPMESG'} $closedShop::IMAGEPATH'");
	    while (<$image>) {  print OUTFILE;  }
	    close(OUTFILE);
		
		if (!(stat("$closedShop::IMAGEPATH/$new_id.jpg"))[7]) {
		  unlink ("$closedShop::IMAGEPATH/$new_id.jpg");
		}
		
	  }

	my $appendmesg = "";
	  if ($query->param("DoEbay") eq "Y") {
	     my $pid = $$;
	     if(defined (my $cid = fork()) ) {
	       if($cid ==0) {
		PostEbayItem($EbayItemTitle,$EbayItemDesc,$EbayQuantity,
		$EbayDuration,$EbayStartingPrice,$Category1Option,$CategoryMenu1,
		$CategoryMenu2,$CategoryMenu3,$CategoryMenu4,$CategoryMenu5,
		$PayInstructions,$new_id);
   	       }
	       else {
		$appendmesg = $closedShop::TEXT{'EBAY_THREAD'};
   	       }
	     } 
	     else {
		$appendmesg = $closedShop::TEXT{'EBAY_BADTHREAD'};
	     }    
	  }	  

	  return AdminScreen("$closedShop::TEXT{'SUCC_ADDI'} $appendmesg");

	}
	else {
	  closedShop::Header();
	  print qq|<font class='main' color='red'>$mesg</font>
	  <form action="$program_name" method="POST" enctype="multipart/form-data"
		name="stockForm">
	  <input type="hidden" name="action" value="AddProduct">
	  <input type="hidden" name="selected" value="1">
	  <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="2">
	  <font class="head"> $closedShop::TEXT{'ADD_PROD'}</th></tr>
 	 
	  <tr class="mainrow"><td><center><font class="main"> $closedShop::TEXT{'PROD'} $closedShop::TEXT{'NAME'}:</td>
	  <td><font class="main"> <input type="text" name="name" size="20"></td></tr>
	  <tr class="mainrow"><td><center><font class="main"> $closedShop::TEXT{'PROD'} Code/Id:</td>
	  <td><font class="main"> <input type="text" name="code" size="20"></td></tr>
	  <tr class="mainrow"><td><center><font class="main"> $closedShop::TEXT{'CAT'}:</td>
	  <td><font class="main"> |;
	  closedShop::PrintCategoryList("category",0,"ALL");
	  print qq|
	  </td></tr>
	  <tr class="mainrow"><td><center><font class="main"> $closedShop::TEXT{'PROD'} $closedShop::TEXT{'PRC'}:</td>
	  <td><font class="main"> $closedShop::CurrencyMarker <input type="text" name="price" size="6"></td></tr>
	  <tr class="mainrow"><td><center><font class="main"> $closedShop::TEXT{'SHP_PRC'}:</td>
	  <td><font class="main"> $closedShop::CurrencyMarker <input type="text" name="shipping" size="6"></td></tr>
	  <tr class="mainrow"><td><center><font class="main"> 
		$closedShop::TEXT{'REDUCE'} $closedShop::TEXT{'SHP_PRC'}:</td>
	  <td><font class="main"> $closedShop::CurrencyMarker <input
type="text" name="ReducedShipping" size="6" value="">
<BR>$closedShop::TEXT{'REDU_MESG'}</td>
</td></tr>
	  <tr class="mainrow"><td><center><font class="main"> $closedShop::TEXT{'QTY'} $closedShop::TEXT{'INSTOCK'}:</td>
	  <td><font class="main"> <input type="text" value="1" name="quantity" size="4"></td></tr>
	  <tr class="mainrow"><td><center><font class="main"> $closedShop::TEXT{'PROD'} $closedShop::TEXT{'DESC'}:</td>
	  <td><font class="main"> <textarea name="desc" cols="35" rows="4"></textarea></td></tr>
  	  
	  <tr class="mainrow"><td><center><font class="main"> $closedShop::TEXT{'IMAGE'}:<br>
	  (JPEG Format)</td>
	  <td><font class="main"> <input type="file" name="image" size="20"></td></tr>
	  
	   <tr class="mainrow"><td><center><font class="main"> $closedShop::TEXT{'ADD'} $closedShop::TEXT{'ATTR'}:</td>
	  <td><font class="main">
	  <table  class="main" width="100%"><tr>
	  |;
	  for (my $j = 1; $j < 4; $j++) {
	  print qq|<td><font class="main">
	  $closedShop::TEXT{'ATTR'} $j:<br>
	  $closedShop::TEXT{'ATTR'} $closedShop::TEXT{'NAME'}: <input type="text" name="attribute$j| . qq|_name" size="10"><br>
	    <br>
	    1. <input type="text" name="attribute$j| . qq|_1" size="6"><br>
	    2. <input type="text" name="attribute$j| . qq|_2" size="6"><br>
	    3. <input type="text" name="attribute$j| . qq|_3" size="6"><br>
	    4. <input type="text" name="attribute$j| . qq|_4" size="6"><br>
	    5. <input type="text" name="attribute$j| . qq|_5" size="6"><br>
	    </td>
	  |;
	  }
	  print qq|</tr></table>|;

	if ($closedShop::EbayAuction eq "Y") {
          eval("use LWP::UserAgent");
   	  if ($@) {
  	    print qq|<tr class="mainrow"><td colspan="2">
        	<center><font class="main"> <b>Ebay $closedShop::TEXT{'ERR'}</b></td></tr>
        	<tr class="mainrow">
          	<td colspan="2"><font class="main"> $closedShop::TEXT{'POST_EBAY_ERR'}:<BR>
		<li>LWP::UserAgent
		<li>HTTP::Request::Common
		which can be found at 
		<a href="http://search.cpan.org">http://search.cpan.org</a> </td></tr>
		|;
	  }
	  else {
	    DisplayEbayData();
          }
	}

	print qq|
	  <tr class="headrow"><th colspan="2">
	  <font class="main"> <input type="submit" value="$closedShop::TEXT{'ADD'} $closedShop::TEXT{'PROD'}"></th></tr>
	  </form></table><br><br><font class="main"><center>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="AdminScreen">
	  <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></center>
	  |;
	  closedShop::Footer();
	}
}

###############################################################################
# FUNCTION:  PostEbayItem
# DESCRIPTION: sends the data to Ebay 
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub PostEbayItem
{
  my ($EbayItemTitle,$EbayItemDesc,$EbayQuantity,
   $EbayDuration,$EbayStartingPrice,$Category1Option,$CategoryMenu1,
   $CategoryMenu2,$CategoryMenu3,$CategoryMenu4,$CategoryMenu5,
	$PayInstructions,$id) = @_;
 
  use HTTP::Request;
  use HTTP::Request::Common qw(POST GET);
  use LWP::UserAgent;
  use HTTP::Cookies;

  my $cat1 = $Category1Option; my $CAT = $cat1;
  my $sub1 = $CategoryMenu1; if ($sub1) { $CAT = $sub1; }
  my $sub2 = $CategoryMenu2;  if ($sub2) { $CAT = $sub2; }
  my $sub3 = $CategoryMenu3; if ($sub3) { $CAT = $sub3; }
  my $sub4 = $CategoryMenu4; if ($sub4) { $CAT = $sub4; }
  my $sub5 = $CategoryMenu5;    if ($sub5) { $CAT = $sub4; }

  my $itemtitle = $EbayItemTitle;
  my $itemdesc = $EbayItemDesc;

  my $photourl = "";
  if (-e "$closedShop::IMAGEPATH/$id.jpg") {
    $photourl = $closedShop::IMAGEURL . "/$id.jpg";
  }
  elsif (-e "$closedShop::SIMAGEPATH/$id.jpg") {
    $photourl = $closedShop::SecureImageURL . "/$id.jpg";
  }
  my $duration = $EbayDuration;
  my $quantity = $EbayQuantity;
  my $startprice = $EbayStartingPrice;
  my $citystate = "$closedShop::CompanyCity, $closedShop::CompanyState";
  my $region = "0";
  my $country = closedShop::ReturnEbayCountryCode($closedShop::CompanyCountry);

  my ($paypal,$visa,$discover,$amex) = ();

  if ($closedShop::PayPalEmail) {
    $paypal = "&PaymentMethodPaypal=Paypal&PaymentMethodPaypalEmail=cbf\@duke.edu";
  }

  if ($closedShop::AcceptedCards{"visa"}) {  
    $visa = "&PaymentMethodCreditCardVisaMaster=VisaMaster";
  }
  if ($closedShop::AcceptedCards{"discover"}) {
    $discover = "&PaymentMethodCreditCardDiscover=Discover";
  }
  
  if ($closedShop::AcceptedCards{"amex"}) {
    $amex = "&PaymentMethodCreditCardAmEx=AmEx";
  }

  my $file = "ebaycookies.txt";
  my $cookie_jar = HTTP::Cookies->new(
   file => $file, 
   ignore_discards => 1,
    hide_cookie2 => 1
  );

  my @sites = ("http://signin.ebay.com/aw-cgi/eBayISAPI.dll?SignIn",        
	"http://signin.ebay.com/aw-cgi/eBayISAPI.dll?SignInWelcome&userid=fleizach&Pass=8der754b&keepMeSignInOption=1&rememberMeForSellBid=y",
	"http://cgi5.ebay.com/ws2/eBayISAPI.dll?SellItem&sspagename=h%3Ah%3Asyi%3AUS",
	"http://cgi5.ebay.com/ws2/eBayISAPI.dll?SellItem&SaleFormat=1&CurrentPage=SyiFormat&AuctionFormat=1",
	"http://cgi5.ebay.com/ws2/eBayISAPI.dll?SellItem&SaleFormat=1&CurrentPage=SyiMetaCategory&ShowCategory=1&CategorySelectorStyle=Javascript&Category1Option=$cat1&ButtonContinue=Continue+%3E",
	"http://cgi5.ebay.com/ws2/eBayISAPI.dll?SellItem&SaleFormat=1&CurrentPage=SyiLeafCategory&ShowCategory=1&CategorySelectorStyle=Javascript&Category1Option=$cat1&CategoryMenu1=$sub1&CategoryMenu2=$sub2&CategoryMenu3=$sub3&CategoryMenu4=$sub4&CategoryMenu5=$sub5&Category1=$CAT&ButtonContinue=Continue+%3E",
	"http://cgi5.ebay.com/ws2/eBayISAPI.dll?SellItem&SaleFormat=1&CurrentPage=SyiTitle&UseRichTextEditor=false&ItemTitle=$itemtitle&ItemDescription=$itemdesc&ShowCategory=1&ButtonContinue=Continue+%3E",
	"http://cgi5.ebay.com/ws2/eBayISAPI.dll?SellItem&SaleFormat=1&ListingCurrencyId=1&CurrentPage=SyiDetails&PhotoBrowseStyle=SELLER_HOSTED&PhotoPersist=$photourl&PhotoUrlChanged=true&EpsBetaOption=In&RelistPhoto=1&ListingDuration=$duration&QuantityListed=$quantity&AuctionStartPrice=$startprice&ItemCityState=$citystate&ItemRegion=$region&ItemCountry=$country&photoDisplayType=0&PictureUrl=$photourl&ThemeId=10&LayoutId=10000&GalleryURL=http%3A%2F%2F&Gallery=0&ShowAsGift=0&CounterStyle=1&ButtonContinue=via_Pics_SELLER_HOSTED",
	"http://cgi5.ebay.com/ws2/eBayISAPI.dll?SellItem&SaleFormat=1&CurrentPage=SyiPayment&AutoPayRequest=false&ButtonToggle=0$paypal$visa$discover$amex&PaymentMethodGenericCheck=Check&PaymentMethodGenericMOCashiers=MOCashiers&PaymentMethodGenericSeeItemDescription=SeeItemDescription&ShippingWhoPays=1&ShippingCostsSpecified=false&SingleItemShippingAndHandling=2.75&ShippingInsuranceAvailability=NONE&ShippingInsurancePerItem=0.00&TaxPercent=0.0&PaymentInstructions=$PayInstructions&ShipToType=2&EscrowType=0&ButtonContinue=Continue+%3E",
	"http://cgi5.ebay.com/ws2/eBayISAPI.dll?SellItem&SaleFormat=2&ListingCurrencyId=1&CurrentPage=SyiVerify&ButtonContinue=Submit%20Listing",
  );

  my $ua = LWP::UserAgent->new;
  $ua->cookie_jar($cookie_jar);
  $ua->agent("Mozilla/5.0");
  open(FILE,">$file"); close(FILE);

  for (my $k = 0; $k < @sites; $k++) {
    my $req = GET "$sites[$k]";
    $cookie_jar->add_cookie_header($req);
    $req->header ('Connection: Keep-Alive');
    $req->referer($sites[$k-1]);
    $req->content_type('application/x-www-form-urlencoded');

    my $content = $ua->request($req);
    open(FILE,">$file");
    print FILE $cookie_jar->as_string(); 
    close(FILE);
  
    # GET SESSION ID
    if ($k > 1) { 
      my $data = $content->as_string();
      my $sp = qq|id="SessionId" type="hidden" value="|;
      my @data = split(/$sp/,$data);
      $data = substr($data[1],0,index($data,"\""));
      $data = substr($data,0,index($data,"\">"));
      $sites[$k+1] .= "&SessionId=$data";
    }
    if ($k == $#sites-1) {
	# time before submit get values
      my $alldata = $content->as_string();
      my $data = $alldata;
      my $sp = qq|id="tokenstring" type="hidden" value="|;
      my @data = split(/$sp/,$data);
      $data = substr($data[1],0,index($data,"\""));
      $data = substr($data,0,index($data,"\">"));
      $sites[$#sites] .= "&tokenstring=$data";

      my $data1 = $alldata;
      $sp = qq|id="tokentext" type="hidden" value="|;
      my @data1 = split(/$sp/,$data1);
      $data1 = substr($data1[1],0,index($data1,"\""));
      $data1 = substr($data1,0,index($data1,"\">"));
      $sites[$#sites] .= "&tokentext=$data1";
    }
  
    if ($k == $#sites) {
	open(FILE,">ebay.status");
	print FILE "<b>Ebay Submission Status</b>: The item has been successfully 
submitted to eBay and you will receive an email from eBay confirming this status.";
	close(FILE);
    }
    else {
	open(FILE,">ebay.status");
	print FILE "<b>Ebay Submission Status</b>: The item is still in the process 
of being submitted to eBay. Currently, it is on step $k of $#sites";
	close(FILE);
    }
 
  }
}

###############################################################################
# FUNCTION:  DisplayEbayData
# DESCRIPTION: diplays Ebay data
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub DisplayEbayData
{
	my ($itemtitle,$startingprice,$itemdesc,$quantity) = @_;
           print qq|
	   <tr class="mainrow"><td colspan="2">
	<center><font class="main"> <b>Ebay Auction Data</b></td></tr>
	<tr class="mainrow">
	  <td><font class="main"> Post Ebay Auction: </td>
	  <td><font class="main"> <input type="radio" name="DoEbay" 
           value="N" checked>Do not post to Ebay<BR>
	   <input type="radio" name="DoEbay" value="Y">Post to Ebay
	</td></tr>

	<tr class="mainrow">
	  <td><font class="main"> $closedShop::TEXT{'ITM_TITLE'}: </td>
	  <td><font class="main"> <input type="text" name="EbayItemTitle" 
           value="$itemtitle" size="25"><BR>
           $closedShop::TEXT{'EBAY_TITLEMESG'}</td></tr>
	<tr class="mainrow">
	  <td><font class="main"> $closedShop::TEXT{'ITEM'} $closedShop::TEXT{'DESC'}: </td>
	  <td><font class="main"> <textarea rows="3" 
cols="25" name="EbayItemDesc">$itemdesc</textarea><BR>
           $closedShop::TEXT{'EBAY_DESCMESG'}</td></tr>
	<tr class="mainrow">
	  <td><font class="main"> $closedShop::TEXT{'AUC_DUR'}: </td>
	  <td><font class="main"> <select name="EbayDuration">
	<option value="3">3 Days</option>
	<option value="5">5 Days</option>
	<option value="7">7 Days</option>
	<option value="10">10 Days</option>
	</select>
           </td></tr>
	<tr class="mainrow">
	  <td><font class="main"> $closedShop::TEXT{'QTY'}: </td>
	  <td><font class="main"> <input type="text" name="EbayQuantity"
	value="$quantity" size="3"></td></tr>
	<tr class="mainrow">
	  <td><font class="main"> $closedShop::TEXT{'STRT'} $closedShop::TEXT{'PRC'}: </td>
	  <td><font class="main"> \$<input type="text" name="EbayStartingPrice"
	value="$startingprice"><BR>
	$closedShop::TEXT{'EBAY_PRCMESG'}
           </td></tr>
	<tr class="mainrow">
	  <td><font class="main"> Select Main $closedShop::TEXT{'CAT'}: </td>
	  <td><font class="main"> |;
	closedShop::PrintEbayCategoryMain();
	print qq|<BR>
	Sub-Category 1: <input type="text" name="subcat1" size="25" disabled><BR>
	  <input type="hidden" name="CategoryMenu1" value="">
	Sub-Category 2: <input type="text" name="subcat2" size="25" disabled><BR>
	  <input type="hidden" name="CategoryMenu2" value="">
	Sub-Category 3: <input type="text" name="subcat3" size="25" disabled><BR>
	  <input type="hidden" name="CategoryMenu3" value="">
	Sub-Category 4: <input type="text" name="subcat4" size="25" disabled><BR>
	  <input type="hidden" name="CategoryMenu4" value="">
	Sub-Category 5: <input type="text" name="subcat5" size="25" disabled><BR>
	  <input type="hidden" name="CategoryMenu5" value="">
	 </td></tr>
	<tr class="mainrow">
	  <td><font class="main"> $closedShop::TEXT{'PAY_IN'}: </td>
	  <td><font class="main"> <textarea name="PayInstructions" cols="30"
	rows="3">Preferred payment is through PayPal. See listing for further details.</textarea></td></tr>|;

}

###############################################################################
# FUNCTION:  ViewLinks
# DESCRIPTION: Views important links
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub ViewLinks
{
	closedShop::Header();
	my $search = $closedShop::FileNames{"item"};
	my $user = $closedShop::FileNames{"user"};
	my $cart = $closedShop::FileNames{"cart"};
	if ($search !~ /http/) { 
		 $search = $closedShop::urltofolder . "/" . $closedShop::FileNames{"item"};	}
	if ($user !~ /http/) { 
		 $user = $closedShop::urltofolder . "/" . $closedShop::FileNames{"user"};	}
	if ($cart !~ /http/) { 
		 $cart = $closedShop::urltofolder . "/" . $closedShop::FileNames{"cart"};	
	}		
     
	my $gc = $search . "?action=ShowGiftCertificates";
	my $showallcats = $search . "?action=ShowAllCategories";
	 
	print qq|
  <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="2">
  <font class="head"> $closedShop::TEXT{'IM_LINKS'}</th></tr>

  <tr class="mainrow"><td><font class="main">$closedShop::TEXT{'SRCH'} $closedShop::TEXT{'LINK'}:</td>
  <td><font class="main"> <input type="text" size="40" value="$search"></td></tr>
	<tr class="mainrow"><td><font class="main">$closedShop::TEXT{'USR_LOG'} $closedShop::TEXT{'LINK'}:</td>
  <td><font class="main"> <input type="text" size="40" value="$user"></td></tr>
	<tr class="mainrow"><td><font class="main">$closedShop::TEXT{'SHP_CRT'} $closedShop::TEXT{'LINK'}:</td>
  <td><font class="main"> <input type="text" size="40" value="$cart"></td></tr>
	<tr class="mainrow"><td><font class="main">$closedShop::TEXT{'GC'} $closedShop::TEXT{'LINK'}:</td>
  <td><font class="main"> <input type="text" size="40" value="$gc"></td></tr>
<tr class="mainrow"><td><font class="main">  $closedShop::TEXT{'DSP'} $closedShop::TEXT{'ALL'}  $closedShop::TEXT{'CATS'} $closedShop::TEXT{'LINK'}:</td>
	  <td><font class="main"> <input type="text" size="40" value="$showallcats"></td></tr>
	<tr class="mainrow"><td colspan="2"><center><font class="main"> 
	<b> $closedShop::TEXT{'CAT'}  $closedShop::TEXT{'LNKS'}</b></td></tr>
|;
		
foreach (sort keys %closedShop::categories) {
    my ($intro,$style,$numimages,$status) = closedShop::GetCategoryInfo($_);
      if ($status ne "PRIVATE") {
     	 print qq|<tr class="mainrow"><td><font class="main"> 
	 $closedShop::TEXT{'CAT'} $closedShop::categories{$_}:</td>
	<td><font class="main"> <input type="text" size="40" value="$search?action=ShowCategory&category=$_"></td></tr>|;
       }
  }
		
	print qq|
	<Tr class="headrow"><td colspan="2">&nbsp;</td></tr>	
	</table><br><br><font class="main"><center>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="AdminScreen">
	  <input type="submit" value=" $closedShop::TEXT{'ADMIN_PAN'}"></form></center>
	  |;
	  closedShop::Footer();
}


###############################################################################
# FUNCTION:  EditProduct
# DESCRIPTION: edit a product
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub EditProduct
{
	if ($query->param("selected") == 3) {
	  my $name = $query->param("name"); 
	    $name = closedShop::ValidateInput($name);
	  my $category = $query->param("category"); 
	    $category = closedShop::ValidateInput($category);
	  my $price = $query->param("price"); 
	    $price = closedShop::ValidateInput($price);
	  my $code = $query->param("code"); 
	    $code = closedShop::ValidateInput($code);
	  my $shipping = $query->param("shipping"); 
	    $shipping = closedShop::ValidateInput($shipping);
	  my $rshipping = $query->param("ReducedShipping"); 
	    $rshipping = closedShop::ValidateInput($rshipping);
	  my $quantity = $query->param("quantity"); 
	    $quantity =~ tr/0-9//cd;
	    $quantity = 1 if (!$quantity);
	  my $desc = $query->param("desc"); 
	    $desc = closedShop::ValidateInput($desc);
	  my $image = $query->param("image"); 
	  my $id = $query->param("id"); 
	  $id =~ tr/0-9//cd;

         my $EbayItemTitle = closedShop::ValidateInput($query->param("EbayItemTitle"));
          if (!$EbayItemTitle) { $EbayItemTitle = $name; }
          my $EbayItemDesc = closedShop::ValidateInput($query->param("EbayItemDesc"));
          if (!$EbayItemDesc) { $EbayItemDesc = $desc; }
          my $EbayQuantity = closedShop::ValidateInput($query->param("EbayQuantity"));
          if (!$EbayQuantity) { $EbayQuantity = $quantity; }
          my $EbayDuration = closedShop::ValidateInput($query->param("EbayDuration"));
          my $EbayStartingPrice = closedShop::ValidateInput($query->param("EbayStartingPrice"));
          if (!$EbayStartingPrice) { $EbayStartingPrice = $price; }
         my $Category1Option = closedShop::ValidateInput($query->param("Category1Option"));
          my $CategoryMenu1 = closedShop::ValidateInput($query->param("CategoryMenu1"));
          my $CategoryMenu2 = closedShop::ValidateInput($query->param("CategoryMenu2"));
          my $CategoryMenu3 = closedShop::ValidateInput($query->param("CategoryMenu3"));
          my $CategoryMenu4 = closedShop::ValidateInput($query->param("CategoryMenu4"));
          my $CategoryMenu5 = closedShop::ValidateInput($query->param("CategoryMenu5"));

          my $PayInstructions = closedShop::ValidateInput($query->param("PayInstructions"));


	  
	  my @attr1 = (); my @attr2 = (); my @attr3 = ();
	  my $k = 1;
	  while ($query->param("attribute1_$k")) {
	    my $tmp = $query->param("attribute1_$k"); $tmp =~ s/~/*/g;
	    push @attr1,$tmp;
		$k++;
	  }
	  $k = 1;
	  while ($query->param("attribute2_$k")) {
	    my $tmp = $query->param("attribute2_$k"); $tmp =~ s/~/*/g;
	    push @attr2,$tmp;
		$k++;
	  }
	  $k = 1;
	  while ($query->param("attribute3_$k")) {
	    my $tmp = $query->param("attribute3_$k"); $tmp =~ s/~/*/g;
	    push @attr3,$tmp;
		$k++;
	  }
	  
	  my $attr1 = join("~",@attr1); $attr1 =~ s/\|/=/g;
	  $attr1 = $query->param("attribute1_name") . "~" . $attr1;
	  my $attr2 = join("~",@attr2); $attr2 =~ s/\|/=/g;
	  $attr2 = $query->param("attribute2_name") . "~" . $attr2;
	  my $attr3 = join("~",@attr3); $attr3 =~ s/\|/=/g;
  	  $attr3 = $query->param("attribute3_name") . "~" . $attr3;

	  my $attr = $attr1 . "|" . $attr2 . "|" . $attr3;

	  my $SQL = qq| update $closedShop::sql_tables{"item"} set name="$name",
	                price="$price",shipping_price="$shipping",description="$desc",
			category="$category",attributes="$attr",product_code="$code",
			quantity="$quantity",reduced_shipping_price="$rshipping"
			where id = "$id"|;
	  my $sth = closedShop::DatabaseQuery($SQL);

	  if ($image) {
	    open (OUTFILE,">$closedShop::IMAGEPATH/$id.jpg") || ErrorMessage("$closedShop::TEXT{'ERR'} $!");
	    while (<$image>) {  print OUTFILE;  }
	    close(OUTFILE) || ErrorMessage("$closedShop::TEXT{'ERR'} $!");


		if (!(stat("$closedShop::IMAGEPATH/$id.jpg"))[7]) {
		print "<br> unlinking $closedShop::IMAGEPATH/$id.jpg" . ((stat("$closedShop::IMAGEPATH/$id.jpg"))[7]);
		  unlink ("$closedShop::IMAGEPATH/$id.jpg");
		}
	  }

         my $appendmesg = "";
          if ($query->param("DoEbay") eq "Y") {
             my $pid = $$;
             if(defined (my $cid = fork()) ) {
               if($cid ==0) {
                PostEbayItem($EbayItemTitle,$EbayItemDesc,$EbayQuantity,
                $EbayDuration,$EbayStartingPrice,$Category1Option,$CategoryMenu1,
                $CategoryMenu2,$CategoryMenu3,$CategoryMenu4,$CategoryMenu5,
                $PayInstructions,$id);
               }
               else {
                $appendmesg = $closedShop::TEXT{'EBAY_THREAD'};
               }
             }
             else {
                $appendmesg =  $closedShop::TEXT{'EBAY_BADTHREAD'};
             }
          }

	  return AdminScreen("$closedShop::TEXT{'SUCC_EDITI'} $name $appendmesg");
	}
	elsif ($query->param("selected") == 2) {
	  my $id = $query->param("id"); $id =~ tr/0-9//cd;
	  if ($id == 0 || !$id) {
	    goto START;
	  }
	  my $SQL = qq| select name,price,shipping_price,description,
			category,attributes,product_code,quantity,
			reduced_shipping_price
	                from $closedShop::sql_tables{"item"} where id = "$id" |;
	  my $sth = closedShop::DatabaseQuery($SQL);
 	  my ($name,$price,$shipping_price,$description,
	  $category,$attr,$code,$quantity,$ReducedShipping) = $sth->fetchrow_array();

	  my @attr = split(/\|/,$attr);
	  my @attr1 = split(/~/,$attr[0]);
	  my @attr2 = split(/~/,$attr[1]);
	  my @attr3 = split(/~/,$attr[2]);

	  closedShop::Header();
	  print qq|
	  <form action="$program_name" method="POST" enctype="multipart/form-data"
	name="stockForm">
	  <input type="hidden" name="action" value="EditProduct">
	  <input type="hidden" name="selected" value="3">
	  <input type="hidden" name="id" value="$id">
	  <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="2">
	  <font class="head">$closedShop::TEXT{'EDIT'} $closedShop::TEXT{'PROD'}</th></tr>
 	  <tr class="mainrow"><td><center><font class="main">  $closedShop::TEXT{'PROD'}  $closedShop::TEXT{'NAME'}:</td>
	  <td><font class="main"> <input type="text" name="name" value="$name" size="20"></td></tr>
	  <tr class="mainrow"><td><center><font class="main">  $closedShop::TEXT{'PROD'} Code/Id:</td>
	  <td><font class="main"> <input type="text" name="code" value="$code" size="20"></td></tr>
	  <tr class="mainrow"><td><center><font class="main">  $closedShop::TEXT{'CAT'}:</td>
	  <td><font class="main"> |;

	  closedShop::PrintCategoryList("category",0,"ALL","","$category");

	  print qq|
	  </td></tr>
	  <tr class="mainrow"><td><center><font class="main">  $closedShop::TEXT{'PROD'}  $closedShop::TEXT{'PRC'}:</td>
	  <td><font class="main"> <input type="text" value="$price" name="price" size="6"></td></tr>
	  <tr class="mainrow"><td><center><font class="main">  $closedShop::TEXT{'SHP_PRC'}:</td>
	  <td><font class="main"> <input type="text" value="$shipping_price" name="shipping" size="6"></td></tr>
         <tr class="mainrow"><td><center><font class="main">$closedShop::TEXT{'REDUCE'} $closedShop::TEXT{'SHP_PRC'}:</td>
          <td><font class="main"> $closedShop::CurrencyMarker <input
type="text" name="ReducedShipping" size="6" 
value="$ReducedShipping"><BR>$closedShop::TEXT{'REDU_MESG'}</td>
</td></tr>
	  <tr class="mainrow"><td><center><font class="main">  $closedShop::TEXT{'QTY'}  $closedShop::TEXT{'INSTOCK'}:</td>
	  <td><font class="main"> <input type="text" value="$quantity" name="quantity" size="4"></td></tr>
	  <tr class="mainrow"><td><center><font class="main">  $closedShop::TEXT{'PROD'}  $closedShop::TEXT{'DESC'}:</td>
	  <td><font class="main"> <textarea name="desc" cols="35" rows="4">$description</textarea></td></tr>
  	  <tr class="mainrow"><td><center><font class="main">  $closedShop::TEXT{'IMAGE'}:</td>
	  <td><font class="main"> |;
	  
	  if (-e "$closedShop::IMAGEPATH/$id.jpg"  ||
                -e "$closedShop::SIMAGEPATH/$id.jpg") {
	    if ($closedShop::FileNames{"item"} =~ /https/) {
		  print qq|<img src="$closedShop::SecureImageURL/$id.jpg"><br>\n|;
		}
	    else {
	      print qq|<img src="$closedShop::IMAGEURL/$id.jpg"><br>\n|;
		}
	  }
	  else {
	    print qq|<font class="main"><b>$closedShop::TEXT{'NOIMAGE'}</b><br>\n|;
	  }

	  print qq|
	  <input type="file" name="image" size="20"><br>
	  (JPEG Format)</td></tr>
	   <tr class="mainrow"><td><center><font class="main">$closedShop::TEXT{'ADD'}  $closedShop::TEXT{'ATTR'}:</td>
	  <td><font class="main">
	  <table  class="main"  width="100%"><tr>|;
	  for (my $j = 1; $j < 4; $j++) {
	    print qq|<td><font class="main">
	  	$closedShop::TEXT{'ATTR'} $j:<br>
	  $closedShop::TEXT{'ATTR'} $closedShop::TEXT{'NAME'}: <input type="text" name="attribute$j| . qq|_name"  value="$attr1[0]"  size="10"><br>
	  <br>
	  1. <input type="text" name="attribute$j| . qq|_1" value="$attr1[1]" size="6"><br>
	  2. <input type="text" name="attribute$j| . qq|_2"  value="$attr1[2]" size="6"><br>
	  3. <input type="text" name="attribute$j| . qq|_3"  value="$attr1[3]" size="6"><br>
	  4. <input type="text" name="attribute$j| . qq|_4"  value="$attr1[4]" size="6"><br>
	  5. <input type="text" name="attribute$j| . qq|_5"  value="$attr1[5]" size="6"><br>
	  </td>|;
	  }
	  print qq|  </tr></table>  </td></tr>|;
       if ($closedShop::EbayAuction eq "Y") {
          eval("use LWP::UserAgent");
          if ($@) {
            print qq|<tr class="mainrow"><td colspan="2">
                <center><font class="main"> <b>Ebay $closedShop::TEXT{'ERR'}</b></td></tr>
                <tr class="mainrow">
                <td colspan="2"><font class="main">$closedShop::TEXT{'POST_EBAY_ERR'}<BR>
                <li>LWP::UserAgent
                <li>HTTP::Request::Common
                which can be found at
                <a href="http://search.cpan.org">http://search.cpan.org</a> </td></tr>
                |;
          }
          else {
            DisplayEbayData($name,$price,$description,$quantity);
          }
        }


	  print qq|
	  <tr class="headrow"><th colspan="2">
	  <font class="main"> <font size="3"><input type="submit" value="$closedShop::TEXT{'EDIT'} $closedShop::TEXT{'PROD'}"></th></tr>
	  </form></table><br><br><font class="main"><center>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="AdminScreen">
	  <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></center>
	  |;
	  closedShop::Footer();
	}
	elsif ($query->param("selected") == 1) {
	  my $cate = $query->param("category");
	  closedShop::Header();
	  print qq|
	  <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="6">
	  <font class="head">$closedShop::TEXT{'EDIT'} $closedShop::TEXT{'PROD'}
		in $closedShop::TEXT{'CAT'}: $closedShop::Categories{$cate}</font></th></tr>
	  <tr class="mainrow">
	  <td><font class="main"><b>$closedShop::TEXT{'NAME'}</b></td>
	  <td><font class="main"><b>Code/Id</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'PRC'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'QTY'} $closedShop::TEXT{'INSTOCK'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'EDIT'}</b></td>
	  </tr>|;
	  
	  my $SQL = qq| select name,price,id,product_code,quantity from
	                $closedShop::sql_tables{"item"} where category="$cate"
	                order by name |;

	  my $sth = closedShop::DatabaseQuery($SQL);
          my $icount = 0;
 	  while (my ($name,$price,$id,$code,$quantity) = $sth->fetchrow_array()) {
		  print qq|
		    <tr class="mainrow">
			<td><font class="main"> $name</td>
			<td><font class="main"> $code</td>
			<td><font class="main"> $closedShop::CurrencyMarker $price</td>
			<td><font class="main"> $quantity</td>
			  <form action="$program_name" method="POST" 
           			enctype="multipart/form-data">
	 		 <input type="hidden" name="action" value="EditProduct">
	  		<input type="hidden" name="selected" value="2">
			<input type="hidden" name="id" value="$id">
			<td><font class="main"> <input type="submit" value="Edit"></td>
			</tr>\n |;
		$icount++;
	}
		
	  print qq|
        <tr class="headrow"><td colspan="5">
	<font class="main"><center><b>$closedShop::TEXT{'TOT'} 
$closedShop::TEXT{'PRODS'}: $icount</td></tr>
		</table></form><br><br><font class="main"><center>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="AdminScreen">
	  <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></center>|;
	  closedShop::Footer();
	}
	else {
	  START:
	  closedShop::Header();
	  print qq|
	<form action="$program_name" method="POST" enctype="multipart/form-data">
	  <input type="hidden" name="action" value="EditProduct">
	  <input type="hidden" name="selected" value="1">
	  <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="2">
	  <font class="head"> $closedShop::TEXT{'SELECT'} $closedShop::TEXT{'CAT'}</font></th></tr>
	 <tr class="mainrow"><td><center><font class="main"> $closedShop::TEXT{'CAT'}:</td>
	  <td><font class="main"> |;
	 
	  closedShop::PrintCategoryList("category",0,"ALL");

	  print qq|
	 </td></tr>
	    <tr class="headrow"><td colspan="2"><center><input 
		type="submit" value="$closedShop::TEXT{'EDIT'}"></td></tr>
		</table></form><br><br><font class="main"><center>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="AdminScreen">
	  <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></center>|;
	  closedShop::Footer();
	}
}

###############################################################################
# FUNCTION:  ViewOrders
# DESCRIPTION: allows merchant to view / process orders
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub ViewOrders
{
    my $mesg = shift;
	if ($query->param("selected") == 2) {
	  if ($query->param("process")) {
	    my $id = $query->param("id"); $id =~ tr/0-9//cd;

	    my $tracking = closedShop::ValidateInput($query->param("tracking"));
 	    my $trackno = closedShop::ValidateInput($query->param($tracking . "No"));
	    my $trackname = (split(/~~~/,$closedShop::ShippingCompanies{$tracking}))[0];
	    my $trackurl = (split(/~~~/,$closedShop::ShippingCompanies{$tracking}))[1];
	    $trackurl =~ s/<NUMBER>/$trackno/g;
	    if (!$trackname) { 
              $trackname = closedShop::ValidateInput($query->param("OtherName")); 
	      $tracking = $trackname;
	    }
	    my $trackmesg = "";
	    if ($tracking) {
	      $trackmesg = qq|\n\n$closedShop::TEXT{'ORD_SHP'} $trackname, $closedShop::TEXT{'W_TRK'} $trackno\n\n|;
	    }
	    if ($tracking ne "Other") {
	      $trackmesg .= qq|$closedShop::TEXT{'FOL_PROG'} $trackurl|;
	    }

	    my $SQL = qq|update $closedShop::sql_tables{"order"} set
	      date_processed=CURDATE(),tracking="$tracking",
	      trackno="$trackno"where id = "$id" |;
	    my $sth = closedShop::DatabaseQuery($SQL);

	    $SQL = qq|select user_id,item_ids from $closedShop::sql_tables{"order"}
	              where id = "$id" |;
	    $sth = closedShop::DatabaseQuery($SQL);
	    my ($user_id,$item_ids) = $sth->fetchrow_array();

	     my @ary = split(/~/,$item_ids);
             foreach (@ary) {
               my ($id,$qty,$attr) = split(/\|/,$_);
               if ($id ne "gc") {
		 $SQL = qq|update $closedShop::sql_tables{"item"}
                      set quantity=quantity-$qty where id = "$id" |;
            	 $sth = closedShop::DatabaseQuery($SQL);
	       }
	     }

		$SQL = qq|select email,name,DATE_FORMAT(CURDATE(),"%W, %M %d %Y")
		          from $closedShop::sql_tables{"user"} where id = "$user_id" |;
	    $sth = closedShop::DatabaseQuery($SQL);
		my ($email,$name,$now) = $sth->fetchrow_array();
		my $body = qq|
$name,

$closedShop::TEXT{'YR_ORD'} (# $id) from $closedShop::CompanyName
$closedShop::TEXT{'PROCNSHP'} $now.

$closedShop::TEXT{'FUR_NFO'}
$closedShop::website
$closedShop::TEXT{'LG_CALL'} $closedShop::CompanyPhone
$trackmesg
$closedShop::TEXT{'THANK'},
$closedShop::CompanyName
$closedShop::CompanyEmail
|;
	    # send followup email to customer
	    closedShop::SendEmail($email,$closedShop::TEXT{'ORD_PROC'},$body);
		$query = new CGI({});
		return ViewOrders($closedShop::TEXT{'SUCC_PROC'});
	  }
	  elsif ($query->param("viewold")) {
	    my $id = $query->param("id"); $id =~ tr/0-9//cd;
		if (!$id) { goto ListAllOldOrders; }
		closedShop::Header();

		DisplayIndividualOrder($id);

		print qq|
		</table></form>\n
		<form action="$program_name" method="POST">
	    <input type="hidden" name="action" value="AdminScreen">
	    <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></center>|;

		closedShop::Footer();
	  }
		elsif ($query->param("deleteold")) {
		  my $id = $query->param("id"); $id =~ tr/0-9//cd;
			my $SQL = qq|delete from $closedShop::sql_tables{"order"} where id="$id"|;
			my $sth = closedShop::DatabaseQuery($SQL);
			goto ListAllOldOrders;
		}
	  else {
	    $query = new CGI({});
	    return ViewOrders();
	  }
	}
	elsif ($query->param("selected") == 1) {
	  if ($query->param("process")) {
	    my $id = $query->param("id"); $id =~ tr/0-9//cd;
		if (!$id) { goto ListAllOrders; }
		closedShop::Header();

		DisplayIndividualOrder($id);

		print qq|
		<tr class="mainrow">
	        <td><font class="main"> $closedShop::TEXT{'PCK_TRK'}</div></td>
		<td><font class="main">
		<input type="radio" name="tracking" value="" checked> $closedShop::TEXT{'NONE'}<br>|;
		foreach (keys %closedShop::ShippingCompanies) {
		  my @tmp = split(/~~~/,$closedShop::ShippingCompanies{$_});
	          my $tmpname = $tmp[0];
		  print qq| <input type="radio" name="tracking"
		    value="$_"> $tmpname No: <input type="text"
		    name="| . $_ . qq|No" size="20"><BR>|;
		}

		print qq|
		<input type="radio" name="tracking"
		value="Other"> $closedShop::TEXT{'OTH_SHP'}: $closedShop::TEXT{'NAME'}: <input
		type="text" name="OtherName" size="20"><BR>
		$closedShop::TEXT{'OTH_SHP'} $closedShop::TEXT{'TRK'} #:<input type="text"
		name="OtherNo" size="20">
		</tr>

		<tr class="headrow">
	        <td align="" colspan="2"><font class="main"><div align="center">
		<input type="submit" name="process" value="$closedShop::TEXT{'PROC'} $closedShop::TEXT{'ORD'}"></div>
		</td></tr></table></form>
		<form action="$program_name" method="POST">
	    <input type="hidden" name="action" value="AdminScreen">
	    <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></center>|;
		closedShop::Footer();
	  }
		elsif ($query->param("deleteorder")) {
		  my $id = $query->param("id"); $id =~ tr/0-9//cd;
		  if (!$id) { goto ListAllOrders; }
		  my $SQL = qq|delete from $closedShop::sql_tables{"order"}
			             where id = "$id" |;
	    my $sth = closedShop::DatabaseQuery($SQL);
			goto ListAllOrders;
		}
	  else {
	    ListAllOldOrders:
	    closedShop::Header();
	  	print qq|
	 	 <font class="main"><font color="red">$mesg</font>
	 	 <form action="$program_name" method="POST" enctype="multipart/form-data">
	  	<input type="hidden" name="action" value="ViewOrders">
	  	<input type="hidden" name="selected" value="2">
	  	<table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="5">
	 	 <font class="head">$closedShop::TEXT{'VW_OORD'}</font></th></tr>
	 	 <tr class="mainrow">
	  	<td><font class="main"><b>$closedShop::TEXT{'VW_DET'}</b></td>
	  	<td><font class="main"><b>$closedShop::TEXT{'DBOUGHT'}</b></td>
	 	 <td><font class="main"><b>$closedShop::TEXT{'NAME'}</b></td>
	 	 <td><font class="main"><b>$closedShop::TEXT{'EMAIL'}</b></td>
	 	 <td><font class="main"><b>$closedShop::TEXT{'TOT'}</b></td></tr>|;

	 	 my $SQL = qq| select id,DATE_FORMAT(date_bought,"%W, %M %d %Y"),user_id,
	                total from $closedShop::sql_tables{"order"}
	                where complete="Y" and date_processed is NOT NULL order by date_bought DESC |;

	 	 my $sth = closedShop::DatabaseQuery($SQL);
	 	 my $k = 0;
		 my $alltotal = 0;
 	 	 while (my ($oid,$date_bought,$uid,$total) = $sth->fetchrow_array()) {
	   	   $alltotal += $total;
		   my $SQL2 = qq| select name,email from $closedShop::sql_tables{"user"}
	                where id="$uid" |;

	   	   my $sth2 = closedShop::DatabaseQuery($SQL2);
 	       my ($name,$email) = $sth2->fetchrow_array();
		   my $check = "checked";
		   if ($k != 0) { $check = ""; }
		   print qq|
		     <tr class="mainrow">
			 <td><font class="main"><input type="radio" name="id" value="$oid" $check></td>
			 <td><font class="main"> $date_bought</td>
			 <td><font class="main"> $name</td>
			 <td><font class="main"> <a href="mailto:$email">$email</a></td>
			 <td><font class="main"> $closedShop::CurrencyMarker  $total</td></tr>\n |;
		   $k++;
	  	 }

	    print qq|
        <tr class="headrow"><td colspan="2"><font class="main"><center><input
		type="submit" name="viewold" value="$closedShop::TEXT{'VW_DET'}"><BR><BR>
		<input type="submit" name="deleteold" value="$closedShop::TEXT{'DEL_OORD'}"></td>
		<td>&nbsp;</td><td><b><font class="main"> $closedShop::TEXT{'TOT'}: </td>
		<td><font class="main"> $closedShop::CurrencyMarker $alltotal</b></td>
		</tr>
		</table></form><br><br><font class="main"><center>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="AdminScreen">
	  <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></center>|;
	  closedShop::Footer();
	  }
	}
	else {
	  ListAllOrders:
	  closedShop::Header();
	  print qq|
	  <font class="main"><font color="red">$mesg</font>
	  <form action="$program_name" method="POST" enctype="multipart/form-data">
	  <input type="hidden" name="action" value="ViewOrders">
	  <input type="hidden" name="selected" value="1">
	  <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="5">
	  <font class="head">$closedShop::TEXT{'PROC'} $closedShop::TEXT{'ORD'}</font></th></tr>
	  <tr class="mainrow">
	  <td><font class="main"><b>$closedShop::TEXT{'PROC'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'DBOUGHT'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'NAME'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'EMAIL'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'TOT'}</b></td></tr>|;
	  
	  my $SQL = qq| select id,DATE_FORMAT(date_bought,"%W, %M %d %Y"),user_id,
	                total from $closedShop::sql_tables{"order"} 
	                where complete="Y" and date_processed is NULL order by date_bought |;

	  my $sth4 = closedShop::DatabaseQuery($SQL);
	  my $k = 0;
 	  while (my ($oid,$date_bought,$uid,$total) = $sth4->fetchrow_array()) {
	    my $SQL2 = qq| select name,email from $closedShop::sql_tables{"user"} 
	                where id="$uid" |;

	    my $sth2 = closedShop::DatabaseQuery($SQL2);
 	    my ($name,$email) = $sth2->fetchrow_array();
		my $check = "checked";
		if ($k != 0) { $check = ""; }
		  print qq|
		    <tr class="mainrow">
			<td><font class="main"><input type="radio" name="id" value="$oid" $check></td>
			<td><font class="main"> $date_bought</td>
			<td><font class="main"> $name</td>
			<td><font class="main"> <a href="mailto:$email">$email</a></td>
			<td><font class="main"> $closedShop::CurrencyMarker $total</td></tr>\n |;
		$k++;
	  }
		
	  print qq|
		 <tr class="mainrow"><td colspan="5"><font class="main">
		 $closedShop::TEXT{'PROCMESG'}
		 </td>
		</tr>
        <tr class="headrow"><td colspan="2"><font 
		class="main"><center><input
		type="submit" name="process" value="$closedShop::TEXT{'VIEW_PROC'}"><br><br>
    		<input
		type="submit" name="deleteorder" value="$closedShop::TEXT{'REM'} $closedShop::TEXT{'ORD'}"></td>
		<td>&nbsp;</td><td colspan="2"><font class="main"><center><input
		type="submit" name="viewold" value="$closedShop::TEXT{'VW_OORD'}"></td>
		</tr>
		</table></form><br><br><font class="main"><center>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="AdminScreen">
	  <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></center>|;
	  closedShop::Footer();
	}
}

###############################################################################
# FUNCTION:  DisplayIndividualOrder
# DESCRIPTION: info
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub DisplayIndividualOrder
{
	my $id = shift;
	print qq|<form action="$program_name" method="POST"><font class="main">
	    <input type="hidden" name="action" value="ViewOrders">
	    <input type="hidden" name="selected" value="2">
		<input type="hidden" name="id" value="$id">
		<table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="2">
	    <font class="head">$closedShop::TEXT{'ORD'} # $id </font></th></tr>

		<tr class="mainrow">
        <td ><font class="main">
		<strong>$closedShop::TEXT{'BILL_NFO'}</strong><br>
		|;
		my $SQL	= qq| select b_name,b_address,b_city,b_state,b_country,
                  b_zip,b_phone,s_name,s_address,s_city,s_state,s_country,
                  s_zip,s_phone,item_ids,cc_name,cc,cc_num,cc_month,cc_year,
		  amount_gc_used,total,sub_total,ship_total,tax,ip_address,
		  tracking,trackno
	          from $closedShop::sql_tables{"order"} where id="$id"  |;
	    my $sth = closedShop::DatabaseQuery($SQL);
	    my ($b_name,$b_address,$b_city,$b_state,$b_country,$b_zip,$b_phone,$s_name,$s_address,
	    $s_city,$s_state,$s_country,$s_zip,$s_phone,$item_ids,$cc_name,$card,
		$cc_num,$cc_month,$cc_year,$amount_gc_used,$total_cost,$sub_total,
		$ship_total,$tax_total,$ip_address,$tracking,$trackno) =
		$sth->fetchrow_array();

		print qq|
		$b_name<br>
		$b_address<br>
		$b_city, $b_state $b_zip<br>
		$b_country<BR>
		$b_phone<BR><b>IP Address</b>: $ip_address
		</td>
		<td ><font class="main">
		<strong>$closedShop::TEXT{'SHIP'} $closedShop::TEXT{'NFO'}</strong><br>
		$s_name<br>
		$s_address<br>
		$s_city, $s_state $s_zip<br>
		$s_country<BR>
		$s_phone
		</td></tr>
		<tr class="mainrow">
        <td colspan="2"><font class="main">
		<strong>$closedShop::TEXT{'PAY_NFO'}</strong><br>
		|;
		if ($card eq "check") {
		  print qq|$closedShop::TEXT{'PAY_METH'}: Check<BR>|;
		}
	        elsif ($card eq "paypal") {
		  print qq|$closedShop::TEXT{'PAY_METH'}: PayPal<BR>|;
	        }
		else {
		  print qq|
		$closedShop::TEXT{'CC'}: $card<br>
		$closedShop::TEXT{'CC'} $closedShop::TEXT{'NAME'}: $cc_name<br>
		$closedShop::TEXT{'CC_NUM'}: $cc_num<br>
		$closedShop::TEXT{'EXP_DATE'}: $cc_month / $cc_year
		  |;
		}
		print qq|
		</td></tr>
		<tr class="mainrow"><td colspan="2">
		<font class="main">
		<b>$closedShop::TEXT{'PROD'} $closedShop::TEXT{'NFO'}</b>
		<center>
		<table width="100%"  class="main" cellpadding="0" cellspacing="0">
		<tr class="mainrow">
		<td><font class="main"><strong>$closedShop::TEXT{'NAME'}</strong></td>
		<td><font class="main"><strong>Code</strong></td>
		<td><font class="main"><strong>$closedShop::TEXT{'QTY'}</strong></td>
		<td><font class="main"><strong>$closedShop::TEXT{'ATT'}</strong></td>
		<td><font class="main"><strong>$closedShop::TEXT{'PRC'}</strong></td>
		<td><font class="main"><strong>$closedShop::TEXT{'SHP_PRC'}</strong></td>
		<td><font class="main"><strong>$closedShop::TEXT{'TOT'}</strong></td>
		</tr>
		|;

		my @ary = split(/~/,$item_ids);
		my $k = 1;

		foreach (@ary) {
	  	  my ($iid,$qty,$attr) = split(/\|/,$_);
				if ($iid eq "gc") {
				  my ($id,$recipient_name,$recipient_email,$gc_amount) = split(/\|/,$_);

	       print qq|
	   	  <tr class="mainrow">
		  <td><font class="main"> $closedShop::TEXT{'GC'} ($closedShop::CurrencyMarker $gc_amount)</td>
		  <td><font class="main"> GC</td>
		  <td><font class="main"> 1</td>
		  <td><font class="main"> &nbsp;</td>
		  <td><font class="main"> $qty x $closedShop::CurrencyMarker $gc_amount</td>
		  <td><font class="main"> $qty x $closedShop::CurrencyMarker 0.00</td>
		  <td><font class="main"> $closedShop::CurrencyMarker $gc_amount</td>
			|;
		   $k++;
		    next;
		}

	  	  $SQL	= qq| select name,price,shipping_price,description,
	              category,product_code,reduced_shipping_price from
			$closedShop::sql_tables{"item"} where id="$iid" |;
	      $sth = closedShop::DatabaseQuery($SQL);
	      my ($name,$price,$ship,$desc,$cat,$code,$rship) = $sth->fetchrow_array();

	      my $total = sprintf("%.2f",$qty*$price);
	      my $shiptotal = 0;

 	      if ($qty > 1 && $rship) {
		$shiptotal = sprintf("%.2f",$ship+(($qty-1)*$rship));
	      }
	      else {
		$shiptotal = sprintf("%.2f",$ship*$qty);
	      }

              if ($closedShop::ShowShipping ne "N") {
	        $total += sprintf("%.2f",$shiptotal);
	      }
		my @attr = split(/\?/,$attr); $attr = join("<br>",@attr);
	      print qq|
	   	  <tr class="mainrow">
		  <td><font class="main"> <a
		  href="$closedShop::FileNames{item}?action=ShowItem&id=$iid">$name</a></td>
		  <td><font class="main"> $code</td>
		  <td><font class="main"> <Center>$qty</center></td>
		  <td><font class="main"> $attr&nbsp;</td>
		  <td><font class="main"> $qty x $closedShop::CurrencyMarker $price</td>
		  |;
			if ($closedShop::ShowShipping eq "N") {
			   print qq|
			   <td><font class="main"> $closedShop::CurrencyMarker 0.00</td>
				 |;
			}
			else {
			  if ($qty > 1 && $rship) {
			   print qq|<td><font class="main"> 1 x
				$closedShop::CurrencyMarker $ship<BR>| . eval($qty-1) . qq| x
				$closedShop::CurrencyMarker $rship</td> |;
			  }
			  else {
			   print qq|<td><font class="main"> $qty x $closedShop::CurrencyMarker $ship</td> |;
			   }
			}
			print qq|
		  <td><font class="main"> $closedShop::CurrencyMarker | . sprintf("%.2f",$total) . qq|</td>
		  </tr>  |;
	    }


		my $vrate = ($closedShop::TaxRate * 100);
	    print qq|<tr class="mainrow">
		<td colspan="4" align="right">&nbsp;</td><td colspan="2"><font class="main">
     	<strong>Sub $closedShop::TEXT{'TOT'}: </td><td><font class="main"> $closedShop::CurrencyMarker $sub_total</strong></td></tr>

		 <tr class="mainrow"><td colspan="4" align="right">&nbsp;</td>
		  <td colspan="2"><font class="main"> <strong>$closedShop::TEXT{'SHIP'} $closedShop::TEXT{'TOT'}:</td>
      <td><font class="main"> $closedShop::CurrencyMarker $ship_total</strong> </td></tr>

		 <tr class="mainrow"><td colspan="4" align="right">&nbsp;</td>
		  <td colspan="2"><font class="main"> <strong>$closedShop::TEXT{'TAX'} $closedShop::TEXT{'TOT'}:</td>
      <td><font class="main"> $closedShop::CurrencyMarker $tax_total</strong> </td></tr>
		|;


		if ($amount_gc_used > 0) {
		  print qq|
		  <tr class="mainrow"><td colspan="4" align="right">&nbsp;</td>
			<td  colspan="2"><font class="main">
     	<strong>$closedShop::TEXT{'GC'} $closedShop::TEXT{'DED'}:</td><td><font class="main">
		  <strong>$closedShop::CurrencyMarker <font color="red">-($amount_gc_used)</font></strong></strong></td></tr>
		 |;
		}

		print qq|
		<tr class="mainrow"><td colspan="4" align="right">&nbsp;</td>
		<td  colspan="2"><font class="main">
		    <strong>Grand $closedShop::TEXT{'TOT'} (amount to charge):</td><td><font class="main">
		<strong>$closedShop::CurrencyMarker $total_cost</strong></strong></td></tr>
		</table></td></tr>|;

		if ($tracking) {
		  my @tmp = split(/~~~/,$closedShop::ShippingCompanies{"$tracking"});
		  my $trackname = $tmp[0]; my $trackurl = $tmp[1];
		  if (!$trackname) { $trackname = $tracking; }
		  $trackurl =~ s/<NUMBER>/$trackno/g;
		  if ($trackurl) { 
		    $trackurl = qq|<a href="$trackurl" 
			target="_blank">$closedShop::TEXT{'PCK_TRK'}</a> (No. $trackno)|;
 		  }
		  else {
		   $trackurl = qq|$closedShop::TEXT{'TRK'} #: $trackno|;
		  }

		  print qq|
  		    <tr class="mainrow"><td colspan="2">
                    <font class="main"><b>$closedShop::TEXT{'TRK'} $closedShop::TEXT{'NFO'}</b>
                <center></td></tr>
		<tr class="mainrow"><td><font class="main">
		$closedShop::TEXT{'SHIP_CO'}</td><td><font class="main"> $trackname
		</td></tr><tr class="mainrow"><td><font class="main">
		$closedShop::TEXT{'PCK_TRK'}:</td><td><font class="main"> $trackurl</td></tr>
		<tr class="headrow"><Td colspan="2">&nbsp;</td></tr>
		|;
	}
}

###############################################################################
# FUNCTION:  DeleteProduct
# DESCRIPTION: edit a product
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub DeleteProduct
{
	if ($query->param("selected") == 2) {
	  my $id = $query->param("id"); $id =~ tr/0-9//cd;
	  if ($id == 0 || !$id) {
	    goto START;
	  }
	  my $SQL = qq| delete from $closedShop::sql_tables{"item"} where id = "$id" |;
	  my $sth = closedShop::DatabaseQuery($SQL);

	  return AdminScreen($closedShop::TEXT{'SUCC_DELP'});
	}
	elsif ($query->param("selected") == 1) {
	  my $cate = $query->param("category");
	  closedShop::Header();
	  print qq|
	  <form action="$program_name" method="POST" enctype="multipart/form-data">
	  <input type="hidden" name="action" value="DeleteProduct">
	  <input type="hidden" name="selected" value="2">
	  <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="6">
	  <font class="head">$closedShop::TEXT{'DEL_PROD'}</font></th></tr>
	  <tr class="mainrow">
	  <td><font class="main"><b>$closedShop::TEXT{'REM'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'CAT'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'NAME'}</b></td>
	  <td><font class="main"><b>Code/Id</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'PRC'}</b></td>
	  <td><font class="main"><b>$closedShop::TEXT{'REM'}</b></td>
	  </tr>|;

	  my $SQL = qq| select name,price,id,category,product_code from $closedShop::sql_tables{"item"}
	                where category = "$cate" order by name |;

	  my $sth = closedShop::DatabaseQuery($SQL);
 	  while (my ($name,$price,$id,$category,$code) = $sth->fetchrow_array()) {
		  print qq|
		    <tr class="mainrow">
			<td><font class="main"><input type="radio" name="id" value="$id"></td>
			<td><font class="main"> $closedShop::categories{$category}</td>
			<td><font class="main"> $name</td>
			<td><font class="main"> $code</td>
			<td><font class="main"> $closedShop::CurrencyMarker $price</td>
			<td><font class="main"><input type="submit" value="$closedShop::TEXT{'REM'}"></td>
			</tr>\n |;
		}

	  print qq|
        <tr class="headrow"><td colspan="6"><center><input
		type="submit" value="$closedShop::TEXT{'DEL_PROD'}"></td></tr>
		</table></form><br><br>
		<font class="main"><center>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="AdminScreen">
	  <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></center>|;
	  closedShop::Footer();
	}
	else {
	  START:
	  closedShop::Header();
	  print qq|
	<form action="$program_name" method="POST" enctype="multipart/form-data">
	  <input type="hidden" name="action" value="DeleteProduct">
	  <input type="hidden" name="selected" value="1">
	  <table width="$closedShop::TableWidth" class="main"><tr class="headrow"><th colspan="2">
	  <font class="main"> <font size="3"><font color="blue">$closedShop::TEXT{'SELECT'} $closedShop::TEXT{'CAT'}</font></th></tr>
	 <tr class="mainrow"><td><center><font class="main"> $closedShop::TEXT{'CAT'}:</td>
	  <td><font class="main"> |;

	  closedShop::PrintCategoryList("category",0,"ALL");

	  print qq|
	  </td></tr>
	    <tr class="headrow"><td colspan="2"><center><input
		type="submit" value="$closedShop::TEXT{'SELECT'} $closedShop::TEXT{'ITMS'}"></td></tr>
		</table></form><br><br><font class="main"><center>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="AdminScreen">
	  <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></center>|;
	  closedShop::Footer();
	}
}

###############################################################################
# FUNCTION:  ChangeVariables
# DESCRIPTION: change variables of the program
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub ChangeVariables
{
	my ($session,$uid) = closedShop::GetSessionCookie();
	if ($query->param("selected") == 1) {
 	  open(FILE,">$closedShop::varsfile");
	  foreach ($query->param()) {
	    my @var = $query->param("$_");
	    my $var = join(",",@var); $var =~ s/~~~/*/g;
	    $var =~ s/\n/<BR>/g;
	    if ($_ =~ /category/) { next; }
	    print FILE qq|$_~~~$var\n|;
	  }
	  close(FILE);

	  my $k = 1;
          foreach (sort keys %closedShop::categories) {
	     my $catname = $query->param("category_$_");
	     my ($intro,$style,$numimages,$status,
	       $name,$children,$parent) = closedShop::GetCategoryInfo($_);
	     if (!$catname || $parent) { next; }
	     my $SQL = qq|update $closedShop::sql_tables{"cat"} set name="$catname"
	       where code="$_"|;
	     my $sth = closedShop::DatabaseQuery($SQL);
	     $k++;
	   }
	  for (; $k < $closedShop::MaxCats; $k++) {
	    my $catname = $query->param("category$k");
	    if ($catname) {
	      my $short =  closedShop::GetNewCategoryCode($catname);
	      my $SQL = qq|insert into $closedShop::sql_tables{"cat"} set name="$catname",
	        code="$short",status="PUBLIC",style="text"|;
	      my $sth = closedShop::DatabaseQuery($SQL);
	    }
	  }
	  return AdminScreen($closedShop::TEXT{'SUCC_VAR'});
	}
	else {
	  closedShop::Header();
	  print qq|<br>

	<table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><td colspan="2" >
	<font class="head">$closedShop::TEXT{'INSTALL'} - $closedShop::TEXT{'COMP'} $closedShop::TEXT{'NFO'}</font></td></tr>
	<form action="$program_name" method="POST" enctype="multipart/form-data">
	<input type="hidden" name="action" value="ChangeVariables">
	<input type="hidden" name="selected" value="1">

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'COMP'} $closedShop::TEXT{'NAME'}</b>: </font></td><td><font class="main">
	<input type="text" name="CompanyName" value="$closedShop::CompanyName" size="20"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'COMP'} $closedShop::TEXT{'EMAIL'}</b>: </font></td><td><font class="main">
	<input type="text" name="CompanyEmail" value="$closedShop::CompanyEmail" size="20"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'COMP'} $closedShop::TEXT{'PHONE'}</b>: </font></td><td><font class="main">
	<input type="text" name="CompanyPhone" value="$closedShop::CompanyPhone" size="20"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'COMP'} $closedShop::TEXT{'FAX'}</b>: </font></td><td><font class="main">
	<input type="text" name="CompanyFax" value="$closedShop::CompanyFax" size="20"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'COMP'} $closedShop::TEXT{'ADDRESS'}</b>: </font></td><td><font class="main">
	<textarea name="CompanyAddress" cols="30" rows="3">$closedShop::CompanyAddress</textarea></td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'COMP'} $closedShop::TEXT{'CITY'}</b>: </font></td><td><font class="main">
	<input type="text" name="CompanyCity" value="$closedShop::CompanyCity" size="40"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'COMP'} $closedShop::TEXT{'STATE'}</b>: </font></td><td><font class="main">
	|;
	closedShop::ListStates("CompanyState",$closedShop::CompanyState);
	print qq|</td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'COMP'} $closedShop::TEXT{'ZIP'}</b>: </font></td><td><font class="main">
	<input type="text" name="CompanyZip" value="$closedShop::CompanyZip" size="20"></td></tr>
	
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'COMP'} $closedShop::TEXT{'COUNTRY'}</b>: </font></td><td><font class="main">
	|;
	closedShop::ListCountries("CompanyCountry",$closedShop::CompanyCountry);
	print qq|</td></tr>
	
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'STATE'} $closedShop::TEXT{'TXRATE'}</b>: </font></td><td><font class="main">
	<input type="text" name="TaxRate" value="$closedShop::TaxRate" size="5"> <i>Example: for 5.07\% enter .0507</i></td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'COUNTRY'} $closedShop::TEXT{'TXRATE'}</b>: <BR>
	If left blank, will not appear</font></td><td><font class="main">
	<input type="text" value="$closedShop::TaxRateCountry" name="TaxRateCountry" size="5"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'INTNATL'} $closedShop::TEXT{'TXRATE'}</b>: <BR>
	If left blank, will not appear</font></td><td><font class="main">
	<input type="text" value="$closedShop::TaxRateInt" name="TaxRateInt" size="5"></td></tr>


	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'CURRMRK'}</b>: </font></td><td><font class="main">
	<select name="CurrencyMarker">
	<option value="$closedShop::CurrencyMarker">$closedShop::CurrencyMarker</option>
	<option value="\$">\$</option>
	<option value="&pound;">&pound;</option>
	<option value="&#8364;">&#8364;</option>
	<option value="&yen;">&yen;</option>
	<option value="&cent;">&cent;</option>
	<option value="&#8224;">&#8224;</option>
  </select>
	</td></tr>


	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'MINAM'} </font></td><td><font class="main"> $closedShop::CurrencyMarker
	<input type="text" name="MinimumOrder" value="$closedShop::MinimumOrder" size="5"></td></tr>


	 <tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'SELECT'} $closedShop::TEXT{'ACCEPT'} $closedShop::TEXT{'CCS'}</b>:</td><td><font class="main">
	  |;

	  my ($mcheck,$vcheck,$dcheck,$acheck,$dicheck,$ccheck,$pcheck);

	  if ($closedShop::AcceptedCards{"check"}) { $ccheck = "checked"; }
	  if ($closedShop::AcceptedCards{"mastercard"}) { $mcheck = "checked"; }
	  if ($closedShop::AcceptedCards{"visa"}) { $vcheck = "checked"; }
	  if ($closedShop::AcceptedCards{"discover"}) { $dcheck = "checked"; }
	  if ($closedShop::AcceptedCards{"amex"}) { $acheck = "checked"; }
	  if ($closedShop::AcceptedCards{"diner"}) { $dicheck = "checked"; }
          if ($closedShop::AcceptedCards{"paypal"}) { $pcheck = "checked"; }

	  print qq|
	<input type="checkbox" $pcheck name="creditcard" value="paypal">PayPal<br>
	<input type="checkbox" $ccheck name="creditcard" value="check">Checks<br>
	<input type="checkbox" $mcheck name="creditcard" value="mastercard">Mastercard<br>
	<input type="checkbox" $vcheck name="creditcard" value="visa">Visa<br>
	<input type="checkbox" $dcheck name="creditcard" value="discover">Discover<br>
	<input type="checkbox" $acheck name="creditcard" value="amex">American Express<br>
	<input type="checkbox" $dicheck name="creditcard" value="diner">Diner's Club<br>

	 </td></tr>

	 <tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'CRE_CAT'}
           </td><td><font class="main"> |;

	 my $j = 1;
	 foreach (sort keys %closedShop::categories) {
            my ($intro,$style,$numimages,$status,$name,
	        $children,$parent) = closedShop::GetCategoryInfo($_);
            if (!$parent) {
              print qq|Category $j: <input size="20" type="text"
                value="$closedShop::categories{$_}" name="category_$_"><BR>\n|;
	      $j++;
           }
	 }

	for (; $j < $closedShop::MaxCats; $j++) {
	  print qq|$closedShop::TEXT{'CAT'} $j: <input type="text" name="category$j" value="" size="20"><br>\n|;
	 }

	print qq|</td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'SHW_SHPP'}:</b>
	 </font></td><td><font class="main">
	 |;
	 my ($yescheck,$nocheck) = "";
	 if ($closedShop::ShowShipping eq "N") { $nocheck = "checked"; }
	 else { $yescheck = "checked"; }

	 print qq|
	 <input type="radio" name="ShowShipping" value="Y" $yescheck> $closedShop::TEXT{'YES'}<BR>
	 <input type="radio" name="ShowShipping" value="N" $nocheck > $closedShop::TEXT{'NO'}
	 </td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'SHW_TAX'}:</b>
	 </font></td><td><font class="main">
	 |;
	 if ($closedShop::ShowTax eq "N") {  $nocheck = "checked"; }
	 else {   $yescheck = "checked"; }
	 
	 print qq|
	 <input type="radio" name="ShowTax" value="Y" $yescheck> $closedShop::TEXT{'YES'}<BR>
	 <input type="radio" name="ShowTax" value="N" $nocheck > $closedShop::TEXT{'NO'}
	 </td></tr>
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'ENAB_INV'}
	 </font></td><td><font class="main">
	 |;
	 if ($closedShop::EnableInventory eq "Y") {  $yescheck = "checked"; }
	 else {   $nocheck = "checked"; }
	 
	 print qq|
	 <input type="radio" name="EnableInventory" value="Y" $yescheck> $closedShop::TEXT{'ENABLE'}<BR>
	 <input type="radio" name="EnableInventory" value="N" $nocheck > $closedShop::TEXT{'DISABLE'}
	 </td></tr>
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'FIN_MESG'}
	  </font></td><td><font class="main"> 
	<textarea name="FinalMessage" rows="4" cols="30">$closedShop::FinalMessage</textarea></td></tr>	
	<tr class="headrow"><td colspan="2">&nbsp;</td></tr>
	
	</table> <br><br>

	 <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><td colspan="2" >
	<font class="head"> $closedShop::TEXT{'INSTALL'} - PayPal Payment</font></td></tr>

	<tr class="mainrow"><td><font class="main"><b>
	PayPal $closedShop::TEXT{'EMAIL'}</b><BR>$closedShop::TEXT{'PP_MESG2'}</td>
	<td><font class="main"> <input type="text" name="PayPalEmail"
         value="$closedShop::PayPalEmail" size="20"></td></tr>
	</table>

	 <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><td colspan="2" >
	<font class="head">$closedShop::TEXT{'INSTALL'} - Ebay Auctions</font></td></tr>
	|;
        my ($ebaycheckyes,$ebaycheckno) = ();
	if ($closedShop::EbayAuction eq "Y") { $ebaycheckyes = "checked"; }
	elsif ($closedShop::EbayAuction eq "N") { $ebaycheckno = "checked"; }


	print qq|
	<tr class="mainrow"><td><font class="main">
 	<b>$closedShop::TEXT{'ENABLE'} Ebay Auctions</b></td>
	<td><font class="main">
	<input type="radio" name="EbayAuction" $ebaycheckyes value="Y">$closedShop::TEXT{'ENABLE'}<BR>
	<input type="radio" $ebaycheckno name="EbayAuction" value="N">$closedShop::TEXT{'DISABLE'}<BR>
	</td></tr>
	<tr class="mainrow"><td><font class="main"><b>
	Ebay Username</b></td>
	<td><font class="main"> <input type="text" name="EbayUsername"
         value="$closedShop::EbayUsername" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>
	Ebay $closedShop::TEXT{'PASS'}</b></td>
	<td><font class="main"> <input type="text" name="EbayPassword"
         value="$closedShop::EbayPassword" size="20"></td></tr>
	<tr class="headrow"><td colspan="2">&nbsp;</td></tr>

	</table>

	|;

	if ($uid == 1) {
			print qq|
	<BR><BR>

	 <table width="$closedShop::TableWidth" class="main"><tr class="headrow"><td colspan="2">
	<font class="head">$closedShop::TEXT{'INSTALL'}  - SQL $closedShop::TEXT{'DB'} $closedShop::TEXT{'NFO'}</font></td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'DB'} $closedShop::TEXT{'NAME'}</b>: </font></td><td><font class="main">
	<input type="text" name="DatabaseName" value="$closedShop::DatabaseName" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'DB'} Username</b>: </font></td><td><font class="main">
	<input type="text" name="DatabaseUsername" value="$closedShop::DatabaseUsername" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'DB'} $closedShop::TEXT{'PASS'}</b>: </font></td><td><font class="main">
	<input type="password" name="DatabasePassword" value="$closedShop::DatabasePassword" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'DB'} Location</b><br>
	<i>Only change if you know what you are doing</i>: </font></td><td><font class="main">
	<input type="text" name="DatabaseLocation" value="$closedShop::DatabaseLocation" size="20"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'DB'} Table Names</b>: </font></td><td><font class="main">
	Admin $closedShop::TEXT{'TBL'}: <input type="text" name="admintable" value="$closedShop::sql_tables{admin}" size="20"><br>
	Item $closedShop::TEXT{'TBL'}: <input type="text" name="itemtable" value="$closedShop::sql_tables{item}" size="20"><br>
	Order $closedShop::TEXT{'TBL'}: <input type="text" name="ordertable" value="$closedShop::sql_tables{order}" size="20"><br>
	User $closedShop::TEXT{'TBL'}: <input type="text" name="usertable" value="$closedShop::sql_tables{user}" size="20"><br>
	Gift Certificate $closedShop::TEXT{'TBL'}: <input type="text" name="gctable" value="$closedShop::sql_tables{gc}" size="20"><br>
	Categories $closedShop::TEXT{'TBL'}: <input type="text" name="cattable" value="$closedShop::sql_tables{cat}" size="20"><br>
	Ebay $closedShop::TEXT{'TBL'}: <input type="text" name="ebaytable" value="$closedShop::sql_tables{ebay}" size="20"><br>
	</td></tr>
	<tr class="headrow"><td colspan="2">&nbsp;</td></tr>
	</table><br><br>

	 <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><td colspan="2">
	<font class="head"> $closedShop::TEXT{'INSTALL'} - Server
Specifics</font></td></tr>

       <tr class="mainrow"><td><font class="main"><b>IP Access</b>:<BR>
        $closedShop::TEXT{'IP_MESG'}</font></td>
        <td><font class="main"> <input type="text" name="IPAccess"
value="$closedShop::IPAccess" size="20"><BR>
        Examples 192.168.0.1</td></tr>

        <tr class="mainrow"><td><font class="main">
	<b>$closedShop::TEXT{'DEF_LANG'}</b>:</font></td>
        <td><font class="main"> <select name="Language">
	<option value="$closedShop::Language">$closedShop::Language</option>
	<option value="$closedShop::Language">------</option>
	|;
        foreach (keys %closedShop::Languages) {
	  print qq|<option value="$_">$_</option>\n|;
        }
        print qq|</select></td></tr>



	<tr class="mainrow"><td><font class="main"><b>Website URL</b>: <br>
	No Trailing Slash</font></td><td><font class="main">
	<input type="text" name="website" value="$closedShop::website" size="30"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>URL to closedShop Folder</b>: <br>
	No Trailing Slash</font></td><td><font class="main">
	<input type="text" name="urltofolder" value="$closedShop::urltofolder" size="30"></td></tr>

		<tr class="mainrow"><td><font class="main"><b>URL to Continue Shopping Link</b>:<br>
  (If blank, will return to search page) <br>
	To make it go to the last page put:
<BR><dd><code>javascript:history.go(-1);</code></dd>
	<br>No Trailing Slash</font></td><td><font class="main">
	<input type="text" name="ContinueShoppingURL" value="$closedShop::ContinueShoppingURL" size="30"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>URL to Final link after completed order</b>:<br>
  (If blank, will return to homepage of website) <br>
	No Trailing Slash</font></td><td><font class="main">
	<input type="text" name="CompletedOrderURL" value="$closedShop::CompletedOrderURL" size="30"></td></tr>


	<tr class="mainrow"><td><font class="main"><b>Server Path to Image Folder</b>: <br>
	No Trailing Slash</font></td><td><font class="main">
	<input type="text" name="IMAGEPATH" value="$closedShop::IMAGEPATH" size="30"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>SECURE Server Path to Image Folder</b>: <br>
	No Trailing Slash<BR>
	Optional</font></td><td><font class="main">
	<input type="text" name="SIMAGEPATH" value="$closedShop::SIMAGEPATH" size="30"></td></tr>


	<tr class="mainrow"><td><font class="main"><b>URL to Image Folder</b>: <br>
	No Trailing Slash</font></td><td><font class="main">
	<input type="text" name="IMAGEURL" value="$closedShop::IMAGEURL" size="30"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>URL to <b>SECURE</b> Image Folder</b>: <br>
	No Trailing Slash</font></td><td><font class="main">
	<input type="text" name="SecureImageURL" value="$closedShop::SecureImageURL" size="30"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>Path to Header File</b>: </font></td><td><font class="main">
	<input type="text" name="header" value="$closedShop::header" size="30"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>Path to Footer File</b>: </font></td><td><font class="main">
	<input type="text" name="footer" value="$closedShop::footer" size="30"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>SECURE Path to Header File</b><BR>Optional </font></td><td><font class="main">
	<input type="text" name="sheader" value="$closedShop::sheader" size="30"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>SECURE Path to Footer File</b><BR>Optional </font></td><td><font class="main">
	<input type="text" name="sfooter" value="$closedShop::sfooter" size="30"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>Item Template Filename</b></font></td><td><font class="main">
	<input type="text" name="item_template" value="$closedShop::item_template" size="30"></td></tr>

	<tr class="mainrow"><td><font class="main"><b>Category Template Filename</b></font></td><td><font class="main">
	<input type="text" name="cat_template" value="$closedShop::cat_template" size="30"></td></tr>


	<tr class="mainrow"><td><font class="main"><b>Mail Program</b>: </font></td><td><font class="main">
	<input type="text" name="mailprog" value="$closedShop::mailprog" size="30"></td></tr>
	<tr class="headrow"><td colspan="2">&nbsp;</td></tr>

	</table><br><br>
	|;
		}
		else {
			print qq|
	<input type="hidden" name="DatabaseName" value="$closedShop::DatabaseName">
	<input type="hidden" name="DatabaseUsername" value="$closedShop::DatabaseUsername">
	<input type="hidden" name="DatabasePassword" value="$closedShop::DatabasePassword">
	<input type="hidden" name="DatabaseLocation" value="$closedShop::DatabaseLocation">
	<input type="hidden" name="admintable" value="$closedShop::sql_tables{admin}">
	<input type="hidden" name="itemtable" value="$closedShop::sql_tables{item}">
	<input type="hidden" name="ordertable" value="$closedShop::sql_tables{order}">
	<input type="hidden" name="usertable" value="$closedShop::sql_tables{user}">
	<input type="hidden" name="gctable" value="$closedShop::sql_tables{gc}">
	<input type="hidden" name="ebaytable" value="$closedShop::sql_tables{ebay}">
	<input type="hidden" name="cattable" value="$closedShop::sql_tables{cat}">
	<input type="hidden" name="website" value="$closedShop::website">
	<input type="hidden" name="urltofolder" value="$closedShop::urltofolder">
	<input type="hidden" name="SecureImageURL" value="$closedShop::SecureImageURL">
	<input type="hidden" name="IMAGEPATH" value="$closedShop::IMAGEPATH">
	<input type="hidden" name="SIMAGEPATH" value="$closedShop::SIMAGEPATH">
	<input type="hidden" name="IMAGEURL" value="$closedShop::IMAGEURL">
	<input type="hidden" name="header" value="$closedShop::header">
	<input type="hidden" name="footer" value="$closedShop::footer">
	<input type="hidden" name="sheader" value="$closedShop::sheader">
	<input type="hidden" name="sfooter" value="$closedShop::sfooter">
	<input type="hidden" name="mailprog" value="$closedShop::mailprog">
	<input type="hidden" name="item_template" value="$closedShop::item_template">
	<input type="hidden" name="cat_template" value="$closedShop::cat_template">
			|;
		}

		print qq|

	 <table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><td colspan="2" >
	<font class="head">$closedShop::TEXT{'INSTALL'} - $closedShop::TEXT{'STYLE'}</font></td></tr>

	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'TBL'} Top Colors</b>: </font></td><td><font class="main">
	<input type="text" name="headrow_color" value="$closedShop::headrow_color" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'TBL'} Main Colors</b>: </font></td><td><font class="main">
	<input type="text" name="mainrow_color" value="$closedShop::mainrow_color" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'TBL'} Width</b>: </font></td><td><font class="main">
	<input type="text" name="TableWidth" value="$closedShop::TableWidth" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'TBL'} Border Style</b>: </font></td><td><font class="main">
	<input type="text" name="table_border" value="$closedShop::table_border" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'TBL'} Border Spacing</b>: </font></td><td><font class="main">
	<input type="text" name="table_borderspacing" value="$closedShop::table_borderspacing" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>$closedShop::TEXT{'TBL'} Background Image</b>: <BR><i>URL of image</i></font></td><td><font class="main">
	<input type="text" name="table_backgroundimage" value="$closedShop::table_backgroundimage" size="20"></td></tr>


	<tr class="mainrow"><td><font class="main"><b>Main $closedShop::TEXT{'FONT'} Face</b>: </font></td><td><font class="main">
	<input type="text" name="fontmain_family" value="$closedShop::fontmain_family" size="30"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>Main $closedShop::TEXT{'FONT'} Color</b>: </font></td><td><font class="main">
	<input type="text" name="fontmain_color" value="$closedShop::fontmain_color" size="30"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>Main $closedShop::TEXT{'FONT'} Size</b>: </font></td><td><font class="main">
	<input type="text" name="fontmain_size" value="$closedShop::fontmain_size" size="30"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>Main $closedShop::TEXT{'FONT'} Style</b>: </font></td><td><font class="main">
	<select name="fontmain_style"><option value="$closedShop::fontmain_style">$closedShop::fontmain_style</option>
	<option value="normal">normal</option><option value="italic">italic</option>
	<option value="oblique">oblique</option></select></td></tr>
	<tr class="mainrow"><td><font class="main"><b>Main $closedShop::TEXT{'FONT'} Variant</b>: </font></td><td><font class="main">
	<select name="fontmain_variant"><option value="$closedShop::fontmain_variant">$closedShop::fontmain_variant</option>
	<option value="normal">normal</option><option value="small-caps">small-caps</option>
	</select></td></tr>

	<tr class="mainrow"><td><font class="main"><b>Header $closedShop::TEXT{'FONT'} Face</b>: </font></td><td><font class="main">
	<input type="text" name="fonthead_family" value="$closedShop::fonthead_family" size="30"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>Header $closedShop::TEXT{'FONT'} Color</b>: </font></td><td><font class="main">
	<input type="text" name="fonthead_color" value="$closedShop::fonthead_color" size="30"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>Header $closedShop::TEXT{'FONT'} Size</b>: </font></td><td><font class="main">
	<input type="text" name="fonthead_size" value="$closedShop::fonthead_size" size="30"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>Header $closedShop::TEXT{'FONT'} Style</b>: </font></td><td><font class="main">
	<select name="fonthead_style"><option value="$closedShop::fonthead_style">$closedShop::fonthead_style</option>
	<option value="normal">normal</option><option value="italic">italic</option>
	<option value="oblique">oblique</option></select></td></tr>
	<tr class="mainrow"><td><font class="main"><b>Header $closedShop::TEXT{'FONT'} Variant</b>: </font></td><td><font class="main">
	<select name="fonthead_variant"><option value="$closedShop::fonthead_variant">$closedShop::fonthead_variant</option>
	<option value="normal">normal</option><option value="small-caps">small-caps</option>
	</select></td></tr>
	<tr class="headrow"><td colspan="2">&nbsp;</td></tr>

	</table><br><br>
	
	|;
	
	if($uid == 1) {
			print qq|

	<table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><td colspan="2" >
	<font class="head"> $closedShop::TEXT{'INSTALL'} - Filenames</font></td></tr>

	<tr class="mainrow"><td><font class="main"><b>URL for Admin.pl</b>: </font></td><td><font class="main"> 
	<input type="text" name="FileName_admin" value="$closedShop::FileNames{admin}" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>URL for Cart.pl</b>: </font></td><td><font class="main"> 
	<input type="text" name="FileName_cart" value="$closedShop::FileNames{cart}" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>URL for User.pl</b>: </font></td><td><font class="main"> 
	<input type="text" name="FileName_user" value="$closedShop::FileNames{user}" size="20"></td></tr>
	<tr class="mainrow"><td><font class="main"><b>URL for Item.pl</b>: </font></td><td><font class="main"> 
	<input type="text" name="FileName_item" value="$closedShop::FileNames{item}" size="20"></td></tr>
	<tr class="headrow"><td colspan="2">&nbsp;</td></tr>

	</table><br><br>|;
		}
		else {
			print qq|
	<input type="hidden" name="FileName_admin" value="$closedShop::FileNames{admin}">
	<input type="hidden" name="FileName_cart" value="$closedShop::FileNames{cart}">
	<input type="hidden" name="FileName_user" value="$closedShop::FileNames{user}">
	<input type="hidden" name="FileName_item" value="$closedShop::FileNames{item}">
			|;
		}

		print qq|


	 <table width="$closedShop::TableWidth"  class="main"><tr><td colspan="2" class="headrow"><center>
	<font class="main"> <font color="blue"><b><input type="submit" value="$closedShop::TEXT{'ED_PROG'}"></b></font></td></tr>
	</table></form>

	</center></div>
	<font class="main"><center>
	  <form action="$program_name" method="POST">
	  <input type="hidden" name="action" value="AdminScreen">
	  <input type="submit" value="$closedShop::TEXT{'ADMIN_PAN'}"></form></center>|;
	  closedShop::Footer();
	}
}

###############################################################################
# FUNCTION:  Login
# DESCRIPTION: The user will log in, sending the username and password
################################################################################
# MODIFICATION HISTORY
# 2000-07-24   cbf    Created
##############################################################################
sub Login
{
	my $username = closedShop::ValidateInput($query->param('username'));
	my $password = closedShop::ValidateInput($query->param('password'));
	
	my $SQL	= qq| select id from $closedShop::sql_tables{"admin"} where username = "$username" and
	              password = "$password" |;
	my $sth = closedShop::DatabaseQuery($SQL);
	my ($uid) = $sth->fetchrow_array();

	if (!$uid) {	
		return LoginScreen($closedShop::TEXT{'BAD_EM'});
	}
	else {	
	  LoginTheAdmin($uid);
	}
}

################################################################################
# FUNCTION:  AdminScreen
# DESCRIPTION: Displays the admin screen
################################################################################
# MODIFICATION HISTORY
# 2000-07-25   cbf    created
################################################################################
sub AdminScreen
{
	my $message = shift;
	closedShop::Header($message);
	$message = "" if ($message eq "nohttp");

	my $mtime = (stat("ebay.status"))[9];
        my $now = time();
	
	my $ebay = "";

	if (($now - $mtime) < 720) {
	  open(FILE,"ebay.status");
	  my @ebay = <FILE>;  $ebay = join("",@ebay) . "<BR><BR>";
	  close(FILE);	
	}

	my $date = localtime;
	print qq|<br><center>
	<font class="head">	$closedShop::TEXT{'ADM_MESG'}<br>
	<br>$ebay
	<font color="red">$message</font><br><font class="main">
	<table width="$closedShop::TableWidth"  class="main"><tr class="headrow"><th colspan="2">
	<font class="head"> Administration Options</font></th></tr>
	|;

	my $k = 0;
        my @act = keys %actions;
        my $totalactions = $#act-1;
	foreach (sort keys %actions) {
	  unless ($_ eq "AdminScreen" || $_ eq "PrintEbaySubCategory") {
            my $colspan = qq|colspan="1" align="center"|;
            if ($k == $totalactions && ($k % 2) == 0) {
              $colspan = qq|colspan="2" align="center"|;
            }
	    if (($k % 2) == 0) {
		    print qq|<tr class="mainrow">|;
		  }
		print qq|
	    <form action="$program_name" METHOD="POST">
	    <input type="hidden" name="action" value="$_">
	    <td $colspan><center><font class="main">
		<input type="submit" value="$actions{$_}">
	    </center></td></form>|;
		if (($k % 2) == 1) {
		  print qq|</tr>|;
		}
		$k++;
	 }
	}

	if (($k % 2) == 0) { print qq|</tr>|; }
	
	print qq|
	<tr class="headrow"><td colspan="2">&nbsp;</td></tr>
        </table></center></div>|;

	closedShop::Footer();
}

################################################################################
# FUNCTION:  LoginScreen
# DESCRIPTION: login screen for admin
################################################################################
# MODIFICATION HISTORY
# 2000-05-19   cbf    Validated input, cleaned up sql statements
################################################################################
sub LoginScreen
{
    my $mesg = shift;
	closedShop::Header();
	print qq| <form action="$program_name" method="POST">
	<input type="hidden" name="action" value="Login">
	<font class="main">
	<font color="red">$mesg</font>
	<table  class="main"><tr class="headrow"><td colspan="2">
	<font class="head">
	<div align="center">$closedShop::TEXT{'LOGIN'}</div></td></tr><tr class="mainrow"><td><font class="main">
	Username: </td><td><input type="text" name="username" size="10"></td></tr>
	<tr class="mainrow"><td><font class="main">
	$closedShop::TEXT{'PASS'}: </td><td><input type="password" name="password" size="10"></td></tr>
	<tr class="mainrow"><td  colspan="2">
	<div align="center"><input type="submit" name="admin_login" value="$closedShop::TEXT{'LOGIN'}"></div>
	</td></tr></table>
	<br></form>
	|;

	closedShop::Footer();
}

################################################################################
# FUNCTION:  LoginTheAdmin
# DESCRIPTION: process screen
################################################################################
# MODIFICATION HISTORY
# 2000-05-19   cbf    Validated input, cleaned up sql statements
################################################################################
sub LoginTheAdmin
{
      my $uid = shift;
	  my $session = closedShop::CreateSession();
	  my $SQL = qq| update $closedShop::sql_tables{"admin"} set session="$session" where id = "$uid" |;
	  my $sth = closedShop::DatabaseQuery($SQL);
	  closedShop::SetSessionCookie($session,$uid);
	  AdminScreen("nohttp");
}
