#!/usr/bin/perl
#!c:/Perl/bin/Perl.exe







BEGIN {
    my $b__dir = (-d '/home/loyaltyh/perl'?'/home/loyaltyh/perl':( getpwuid($>) )[7].'/perl');
    unshift @INC,$b__dir.'5/lib/perl5',$b__dir.'5/lib/perl5/x86_64-linux-thread-multi',map { $b__dir . $_ } @INC;
}

# swap the first line and second line if the script runs on UNIX System
###############################################
### copyright 2004-2012    
### John Jan Popovic, http://1stmuse.com
###        
###     
###############################################


use CGI qw (:standard);
use CGI::Carp qw(fatalsToBrowser);
use lib qw(.);
use CGI qw(nph);

#use utf8;
###############################################
###  Set Configurations Below
###############################################

# $root_ = "/data/20/1/128/63/1943063/user/2120061/htdocs";
$root_ = "$ENV{'DOCUMENT_ROOT'}";
$script_name ="$ENV{'SCRIPT_NAME'}";		 # This script name
$folder_ = "hermes";
$server = "http://www.loyalty.hr";
$web_site = "$server/";
$hermes_image_path ="$server/hermes/";
$image_path = "$server/$folder_";
$upload_y_URL ="./upload_hermes.cgi";

$database = "$root_/$folder_/hermes_.txt";	# DBASE name and path

$upload_path = "$root_/hermes/images/";

### Specify database ADONIS fields in the array below 
@fields = 
(
"ITEM_price",
"ITEM_quantity",
"TAXONOMY_item_name", # synonyms: Title, Article Name
"TAXONOMY_subtitle",
"TAXONOMY_cathegory",
"TAXONOMY_context_path",
"TAXONOMY_metacathegory", # TAXONOMY_metacathegory is a chief cathegory of TAXONOMY_cathegories and TAXONOMY_cathegory
"TAXONOMY_cathegories", # TAXONOMY_cathegory must be in the list, and TAXONOMY_cathegories list are subcathegories of TAXONOMY_metacathegory
"TAXONOMY_subcathegories", # TAXONOMY_cathegory is a Metacathegory for the TAXONOMY_subcathegories list

"ITEM_description",
"ITEM_chapter",
"ITEM_URL",

"ICONOGRAFIA_file_web",
"ICONOGRAFIA_gallery",

"Data_Ora",
"rendering_mode",
"header_type",
"visibility_mode"

);






### Set URL and email fields to be hyperlinks 
### The number used corresponds to its placement in the array above 
	 
$homedir = $root_;


$copyright_note= "<center><p>All rights reserved. <a href=\"http://www.1stmuse.com\">1stMuse</a><br>\&copy\; MMXIII Etranet, 1stMuse \&copy\; MMXIII JJP<br><br></center>";


### 

$db_name = "Loyalty gifts";	 # The database name
$table_width = "90%";		 # The display width of the entire table
$record_width = "80%";			 # The display width of the database records
$max_records_returned = "100";	 	 # Max number of rows displayed per page
$filter_html_tags = "no";		 # Removes HTML tags from record entries
$user_file = "$root_/adonis_users.txt";			 # User file name and path
$check_user_duplicates = "yes";		 # Checks for duplicate user names in user file
@extra_user_fields = ("Email");	 # Additional info needed when registering users
$use_external_html = "no";		 # Set to "yes" to use your own html template
$external_html_header = "header.html"; # File name and path to html template header
$external_html_footer = "footer.html";	 # File name and path to html template footer
$authenticate = "yes";			 # Prompts users for a user name and password
$register     = "no";		 # Allows new user registration
$record_ownership = "yes";		 # Users can modify/delete only their records
$admin_user_name = "admin";		 # This is the default Administrator user name
$default_user_permission_search = "yes"; # Gives newly registered users Search permission
$default_user_permission_add = "yes";	 # Gives newly registered users Add permission
$default_user_permission_modify = "no"; # Gives newly registered users Modify permission
$default_user_permission_delete = "no"; # Gives newly registered users Delete permission
$defult_search_index = "0";


###############################################
### Change Nothing Below This Line  
###############################################

############## Global Viariables ##################
$q = new CGI;
$field_count = @fields;
$colspan = $field_count+1;
$EXCLUSIVE = 2;
$UNLOCK = 8;
$user = $q->param(user);
$user = $q->cookie(user) if($user eq "");
$user_search = $q->param(user_search);
$user_search = "yes" if($authenticate eq "no");
$user_add = $q->param(user_add);
$user_add = "yes" if($authenticate eq "no");
$user_trans = $q->param(user_trans);
$user_trans = "yes" if($authenticate eq "no");
$user_modify = $q->param(user_modify);
$user_modify = "yes" if($authenticate eq "no");
$user_delete = $q->param(user_delete);
$user_delete = "yes" if($authenticate eq "no");
$selected_user = $q->param(selected_user);
$admin_add = $q->param(admin_add);
$sort = $q->param(sort_on);
$search_for = $q->param(search_for);
$ITEM_type = $q->param(ITEM_type);
$ITEM_url = $q->param(ITEM_URL);
$search_field = $q->param(search_field);
$action = $q->param(action);
$display = $q->param(display);
@keys = $q->param(key);
$key = $q->param(key);
$customer = $q->param(customer);
$file_name_convention = $q->param(file_name_convention);
$myfile = $q->param(myfile);
$key_matches = @keys;

$update_mode = $q->param(update_mode);
$update_mode = "conserve" if($update_mode eq "");

$archive_mode = $q->param(archive_mode);
$archive_mode = "principale" if($archive_mode eq "");

$rendering_COMPLEX = $q->param(rendering_mode);
$rendering_COMPLEX .="~";
($rendering_mode,$disqus_mode,@altro ) =split(/\~/,$rendering_COMPLEX);
$rendering_mode = "classic" if($rendering_mode eq "");

$header_type = $q->param(header_type);
$header_type = "classic" if($header_type eq "");

$search_field = "all" if($search_field eq "");
$search_for = '.' if ($search_for eq "");
$action = $q->param(which_search) if($action =~ /^View/i);



################# Main Logic ##################
if($q->param('operation') eq 'ADONIS') { $action='ADONIS'};
if($q->param('operation') eq 'logout') { $action='logout'};
if($q->param('operation') eq 'main_menu') { $action='Main Menu'};

if($action =~ /add administrator/i){ &add_user; exit;}
if ($authenticate eq "yes"){ unless (-e $user_file){ $title="Set Administrative Password"; &create_admin; } }
if($register eq "yes" && $action =~ /register/i){ &register; exit;}
if($action =~ /add user/i){ &add_user; exit;}
if($action =~ /submit login/i){ &authenticate; exit;}
if ($authenticate eq "yes" && $user eq ""){ &login; exit;}
if($action =~ /logout/i){ &logout; exit;}

if($authenticate eq "yes"){
	if($q->param('operation') eq 'search') { 
	 $action='search';
	 my $buffer;
	 my $id = 0;
	 my $filter_ = $q->param('filter_');
	 my $find_ = $q->param('find_');
	 my $id_   = $q->param('id_');
	 my $user_ = $q->param('user_');
	 $search_for = $find_;
	 $user=$user_;
	 $id = 12345;
	}
	

	if($q->param('operation') eq 'flipflop_visibility')	{ 
	 $key = $q->param('find_');
	 $action='flip_flop';
	}

	
## To perform search NADJI, click here:
## http://localhost/cgi-bin/adonis.cgi?operation=nadji&find_=1938


	if($q->param('operation') eq 'nadji')	{ 
	  $action='nadji';
	  my $buffer;
	  my $find_ = $q->param('find_');
          $sort_on="10";
          $display="rows"; 
          $search_for = $find_;
          $search_for =~ s/\./\>/g;
          $search_for =~ s/\s//g;
          $search_field ="10";
	}

## To perform search GIFTS, click here:
## http://localhost/cgi-bin/adonis.cgi?operation=gifts&customer_=1938


	if($q->param('operation') eq 'gifts')	{ 
	  $action='gifts';
	  my $buffer;
          $user="admin";
	  $customer = $q->param('customer_');
	}
	
	
	
## http://localhost/cgi-bin/hermes.cgi?operation=edit_record&find_=$record_key


	if($q->param('operation') eq 'edit_record')	{ 
	  $action='edit_item'; 
	  my $buffer;
	  $key = $q->param('find_');
	}
	

	if($q->param('operation') eq 'decrementq')	{ 
	  $product_key = $q->param('product_');
	  $action='ajax_decrementq';
	}


	if($q->param('operation') eq 'incrementq')	{ 
	  $product_key = $q->param('product_');
	  $action='ajax_incrementq';
	}

		
	if($q->param('operation') eq 'main_menu')
	 { 
	 $action='main_menu';
	 my $buffer;
	 my $user_ = $q->param('user_');
	 $search_for = $find_;
	 $user=$user_;
	}

	if($q->param('operation') eq 'upload_1x') 	 { 
	 $action='upload_1x';
	 my $buffer;
	 my $user_ = $q->param('user_');
	 $search_for = $find_;
	 $user=$user_;
	}
	

	if($q->param('operation') eq 'upload_1y') 	 { 
	 $action='upload_1y';
	 my $buffer;
	 my $user_ = $q->param('user_');
	 $search_for = $find_;
	 $user=$user_;
	}	

	

	 
if($action =~ /nuova_item/i){ &print_add_item;}
elsif($action =~ /conferma_item/i){ &add_record; $message="New record was stored."; $title="Main Menu"; &print_default($title, $message);}
elsif($action =~ /nuova_card/i){ &print_add_screen;}
elsif($action =~ /conferma_card/i){  &add_record; 
   $message="New record was stored.";
   &access_problem if($key < 1); &search_db($key); 
   &print_layout_page; &jump_to_url; }
   
elsif($action =~ /upload_1x/i){ $title="upload 1 of 3"; &print_upload_1x_page;}
elsif($action =~ /upload_1y/i){ $title="upload 2 of 3"; &print_upload_1y_page;}
elsif($action =~ /upload_z/i) { $title="upload 3 of 3"; &print_upload_z_page;}

elsif($action =~ /advanced_search/i){ $what='advanced_search'; $title="Ricerca avanzata"; &advanced_search($title);}

elsif($action =~ /backup/i){ $title="Backup Adonis Archive"; &backup_adonis; $message="Il backup è stato effetuato"; $title="Menu Principale"; &print_default($title, $message);}

elsif($action =~ /conferma_pura_modifica/i){ $message="Il record è stato modificato"; 
	if ($modify_record eq "Eliminate"){&delete_records};  $key=$keys[0]; &modify_record; &update_records($key);
	$title="Main Menu"; &search_db($key); &print_layout_page; &jump_to_url;
	}


elsif($action =~ /search compact/i){ $what='search - modify & delete'; &search_db($search_for,$search_field); $title="Loyalty nagrade"; $button_text="Edit Record"; $choose="modify"; &search_results;}


elsif($action =~ /card/i){ $title="Wienerberger Loyalty Gifts"; $button_text="card Prodotto"; $choose="modify"; &access_problem if($key < 1); $temp=$search_field; $search_field = "all"; &search_db($key);$search_field = $temp; &search_results;}
elsif($action =~ /search - modify & delete/i){ $what='search - modify & delete'; &search_db($search_for,$search_field); $title="Loyalty nagrade"; $button_text="Edit Record"; $choose="modify"; &search_results;}
# elsif($action =~ /ADONIS/i){ $title="ADONISUS"; &print_default_ADONIS($title,$message); }

elsif($action =~ /edit_item/i){ $title="Edittion Error"; $error_message="You forgot to select a record to modify!"; &access_problem if($key < 1); &search_db($key); &print_modify_page;}
elsif($action =~ /flip_flop/i){ &ajax_flip_visibility($key);}
elsif($action =~ /decrementq/i){ &ajax_decrementq($product_key);}
elsif($action =~ /incrementq/i){ &ajax_incrementq($product_key);}

elsif($action =~ /vedi_item/i){ &access_problem if($key < 1); &search_db($key); &print_layout_page; &jump_to_url;}
elsif($action =~ /modify this record/i){ $title="Modify"; &delete_records; $key=$keys[0]; &add_record; &print_default($title);}
elsif($action =~ /conferma_modifica/i){ $title="Modify"; &delete_records; $key=$keys[0]; &add_record; &print_default($title);}
elsif($action =~ /delete record/i){ $title="Delete Record"; $error_message="You forgot to select a record to delete!"; &access_problem if($key < 1); &delete_records; $message="Il record è stato cancellato"; $title="Main Menu"; &print_default($title, $message);}
elsif($action =~ /modify/i){ &search_db($search_for); $title="Modify Which Record?"; $button_text="Edit Record"; $choose="modify"; &search_results;}
elsif($action =~ /delete/i){ &search_db($search_for); $title="Delete Which Record?"; $button_text="Eliminate card"; $choose="delete"; &search_results;}
elsif($action =~ /search/i){ &search_db($search_for); $title="Wienerberger Loyalty Gifts "; $button_text = ""; $choose="search"; $what="search"; &search_results;}
elsif($action =~ /user manager/i){ $title="User Manager"; &user_manager;}
elsif($action =~ /create new user/i){ $title="User Manager - Create New User"; $perform="add"; $button_text ="Add User"; &edit_user;}
elsif($action =~ /edit selected user/i){ $title="User Manager - Edit Selected User"; $perform="edit"; $button_text ="Edit User"; &edit_user;}
elsif($action =~ /edit user/i){ $old_password = $q->param(old_password); &delete_user; $perform="edit"; &add_user;}
elsif($action =~ /remove selected user/i){ $perform="delete"; &delete_user; $title="User Manager"; &user_manager;}
elsif($action =~ /advanced_search/i){ $what='advanced_search'; $title="Ricerca avanzata"; &advanced_search($title);}
elsif($action =~ /nadji/i){  $what='search - modify & delete';$choose ="modify"; &search_taxonomy($search_for,$search_field); $title="Wienerberger Loyalty Gifts "; $button_text = ""; $choose="search"; $what="search"; &search_results_hermes;}
elsif($action =~ /gifts/i){  $what='search - modify & delete';$choose ="modify"; &search_all; $title="Wienerberger Loyalty Gifts "; $button_text = ""; $choose="search"; $what="search"; &all_products;}

else { $title="Main Menu"; &print_default($title); }
exit;
}

################# Add Record ##################

sub add_record {
 foreach $required (@required){
 if($q->param($required) eq "") { 
 $title = "Add A Record"; $error_message = "You did not fill out the required information!"; &access_problem($error_message); exit; } }
 $when_added = &get_date;
 $key = time(); 
 $record=$key;
 $record .= "\|$user";
 $record .= "\|$when_added";
 foreach $field (@fields){ ${$field} = $q->param($field); ${$field} = &filter(${$field}); $record .= "\|${$field}"; }
 unless (-e $database){ open (DB, ">$database") || die "Error creating database. $!\n"; }
 else { open (DB, ">>$database") || die "Error opening database. $! $database\n"; }
 flock DB, $EXCLUSIVE;
 seek DB, 0, 2;
 print DB "$record\n";
 flock DB, $UNLOCK;
 close(DB);
} # End of add_record subroutine.



################# Modify Record ##################

sub modify_record {
 foreach $required (@required){
 if($q->param($required) eq "") { 
 $title = "Add A Record"; $error_message = "You did not fill out the required information!"; &access_problem($error_message); exit; } }
 $when_added = &get_date;
# Eliminatendo_la_card_precedente or conservendo_la_card_precedente -- may be or not conserved the modification history
 if ($update_mode eq "conserve") { 	$key = time()	}; 
 $record=$key;
 $record .= "\|$user";
 $record .= "\|$when_added";
 foreach $field (@fields){ ${$field} = $q->param($field); ${$field} = &filter(${$field}); $record .= "\|${$field}"; }
 unless (-e $database){ open (DB, ">$database") || die "Error creating database. $!\n"; }
 else { open (DB, ">>$database") || die "Error opening database. $! $database\n"; }
 flock DB, $EXCLUSIVE;
 seek DB, 0, 2;
 print DB "$record\n";
 flock DB, $UNLOCK;
 close(DB);
} # End of modify_record subroutine.














############## Delete Records #################

sub delete_records { 
 open (DATABASE, "$database") or die "Error opening file: $!\n";
 while (<DATABASE>)
 {
 $line = $_;
 chop $line;
 @dbfields = split (/\|/, $line);
 $deleted = "no";
 if ($dbfields[0] eq $q->param(key)) { $deleted = "yes"; if ($user eq $dbfields[1]) { $security_satisfied = "yes"; } }
 elsif ($deleted ne "yes") { $new_data .= "$line\n"; }
 } #end of while
 close (DATABASE);
 if ($authenticate ne "yes") { $security_satisfied = "yes"; }
 if ($security_satisfied ne "yes" && $record_ownership eq "yes" && $admin_user_name ne "$user")
 {
 $error_message = "Lei non ha le permessi necessari per modificare questa card!";
 &access_problem($error_message);
 exit;
 } else {
 flock DATABASE, $EXCLUSIVE;
 open (DATABASE, ">$database") or die "Error opening file: $!\n";
 print DATABASE "$new_data";
 close (DATABASE);
 flock DATABASE, $UNLOCK;
 }
 }
 
############## Delete Records @ AGGIORNAMENTO #################













############### Modify card Screen ################
sub print_modify_page{
 ($key,$dbuser,$when_added,@field_vals) = split(/\|/, $results[0]); 
$title="Edit Record";
&html_header($title);

# assign the values to the variables of each field in the record
$x=0;
foreach $field (@fields){
 ${$field} = &unwrap($field_vals[$x]);
 $x++;
} 
$img_file =$ICONOGRAFIA_file_web; 
# End of foreach assign field loop.


$TAXONOMY_cathegories =~ s/\<br\>/\~/g; # break to tilde
$TAXONOMY_cathegories_broken = $TAXONOMY_cathegories;
$TAXONOMY_cathegories_broken =~ s/\~/\n/g; # tilde_to_break

$rendering_COMPLEX ="$rendering_mode~";
($rendering_mode,$disqus_mode,@altro ) =split(/\~/,$rendering_COMPLEX);
$rendering_mode = "classic" if($rendering_mode eq "");
$disqus_mode = "absent" if($disqus_mode eq "");

$readonly ="";
(@file_web) = split (/\,/,$ICONOGRAFIA_gallery);

print<<HTML;

<style type="text/css">
<!--
.Stile1 {
	color: #FFFFFF;
	font-weight: bold;
}
-->
 </style>
</head>
<SCRIPT LANGUAGE="JavaScript">
<!-- This script generates automatic date field -->
var timerID = null;
var timerRunning = false;

var old_url ="$ITEM_URL";

function stopclock (){
 if(timerRunning)
 clearTimeout(timerID);
 timerRunning = false;

}




function showdate () {


// Array of day names
var dayNames = new Array();
dayNames[0] = "Sunday";
dayNames[1] = "Moday";
dayNames[2] = "Tuesday";
dayNames[3] = "Wednesday";
dayNames[4] = "Thursday";
dayNames[5] = "Friday";
dayNames[6] = "Saturday";

// Array of month Names
var monthNames = new Array();
monthNames[0] = "January";
monthNames[1] = "February";
monthNames[2] = "March";
monthNames[3] = "Openl";
monthNames[4] = "May";
monthNames[5] = "June";
monthNames[6] = "July";
monthNames[7] = "August";
monthNames[8] = "September";
monthNames[9] = "October";
monthNames[10] = "November";
monthNames[11] = "December";

// Array of Dates
var dateNames = new Array();
for(i = 1 ; i < 10 ; i++)
 dateNames[i]="0"+i;
for(i = 10 ; i < 32 ; i++)
 dateNames[i]=i;


// Elements of Date object assigned to variables
var now = new Date();
var day = now.getDay();
var month = now.getMonth();
var year = now.getFullYear();
var date = now.getDate();


 var hours = now.getHours();
 var minutes = now.getMinutes();
 var seconds = now.getSeconds()
// var timeValue = "" + ((hours >12) ? hours -12 :hours)
 var timeValue = "" + hours
 timeValue += ((minutes < 10) ? ":0" : ":") + minutes
// timeValue += (hours >= 12) ? " p.m." : " a.m."


// Code to assign fully formatted date and time values(e.g., Lunedì, 23/Luglio/2001)
 _date = dateNames[date] + "/" + monthNames[month] +"/" + year;
 document.myForm.Data_Ora.value = _date + " at " + timeValue;
// document.myForm.A_Delivery_date.value = document.myForm.Invoice_date.value;
// document.myForm.A_Delivery_time.value = timeValue;


 timerID = setTimeout("showdate()",1000000);
 timerRunning = true;
}

function startclock () {

 // Make sure the clock is stopped

 stopclock();
 showdate();
}


function change_image() {
 var GALLERY_ = new Array();
		GALLERY_CX = document.myForm.ICONOGRAFIA_gallery.value;
		inputstr = GALLERY_CX;
 GALLERY_CX = inputstr.replace(/\^\\,/,""); // Regex substitute leading comma into nil
 document.myForm.ICONOGRAFIA_gallery.value =GALLERY_CX;
		GALLERY_ = GALLERY_CX.split(',');
		 
		 
 document.img0.src = "$hermes_image_path/" + GALLERY_[0];
 document.img1.src = "$hermes_image_path/" + GALLERY_[1];
 document.img2.src = "$hermes_image_path/" + GALLERY_[2];
 document.img3.src = "$hermes_image_path/" + GALLERY_[3];
 document.img4.src = "$hermes_image_path/" + GALLERY_[4];
 document.img5.src = "$hermes_image_path/" + GALLERY_[5]; 
 document.img6.src = "$hermes_image_path/" + GALLERY_[6];
 document.img7.src = "$hermes_image_path/" + GALLERY_[7]; 
 
 
 document.myForm.ICONOGRAFIA_file_web.value = GALLERY_[0];
}



var myWind = ""

function doNew_x() {
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {

 pics = window.open("$script_name?operation=upload_1x","subWindow","HEIGHT=200,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}



function setURL() {
 var CONTEXT_ = new Array();
 CONTEXT_CX = document.myForm.TAXONOMY_context_path.value;
 inputstr = CONTEXT_CX;
 CONTEXT_CX = inputstr.replace(/\\ /gi,""); // Regex substitute -- space into nil	.toLowerCase().replace(/\b[a-z]/g	
 inputstr = CONTEXT_CX;
 CONTEXT_CX = inputstr.toLowerCase();
 CONTEXT_ = CONTEXT_CX.split('>');
 nn = CONTEXT_.length;
 
 folder = CONTEXT_[0]; 
 name_element1 = CONTEXT_[1];

 var inputstr = name_element1;
 title_name = document.myForm.TAXONOMY_item_name.value;
 if (title_name != "") {inputstr =title_name};
 inputstr = inputstr.replace(/\\u017D/g,"z");
 inputstr = inputstr.replace(/\\u017E/g,"z");
 inputstr = inputstr.replace(/\\u0161/g,"s");
 inputstr = inputstr.replace(/\\u0160/g,"s");

 inputstr = inputstr.replace(/\\u010C/g,"c");
 inputstr = inputstr.replace(/\\u010D/g,"c");
 inputstr = inputstr.replace(/\\u0106/g,"c");
 inputstr = inputstr.replace(/\\u0107/g,"c");

 inputstr = inputstr.replace(/\\u0111/g,"d");
 inputstr = inputstr.replace(/\\u0110/g,"d");
 name_element1 = inputstr.replace(/\\W\+/gi,"_"); // Regex substitute -- strange chars into underscore
 name_element1 = name_element1.toLowerCase(); 

 //document.myForm.TAXONOMY_context_path.value =folder + ">" + name_element1;
 
 web_page_URL = folder + "/" + name_element1;
 document.myForm.ITEM_URL.value = web_page_URL;


 if ((web_page_URL === old_url) || (old_url === "url") ) {
    document.myForm.update_mode.value ='Eliminate';
 }
 else {
    document.myForm.update_mode.value ='conserve';
 }
 
}




<!-- end of automatic date field -->
</SCRIPT>


<BODY bgcolor="white" onLoad="startclock(); timerONE=window.setTimeout">

 <script language="javascript" src="$image_path/js/global.js"></script>	
	<script language="javascript" src="$image_path/js/style.js"></script>
<script type="text/javascript">
// Copyright John J. Popovic, 2007 1stmuse.com
var s0, s, tax1= 0.;

function Modify_Classe(form) {
	form.Classe.value = form.Classe_m.value;
}

function Modify_Modalita_pagamento(form) {
	form.Modalita_pagamento.value = form.Modalita_pagamento_m.value;
}

function Modify_operazione(form) {
	form.operazione.value = form.operazione_m.value;
}

function Modify_Provenienza(form) {
	form.Provenienza.value = form.Provenienza_m.value;
}

<!-- This script locksout <CR> i.e. Enter Key and requires the SUBMIT button to be clicked to send form -->
<!-- Begin

function tabOnEnter (field, evt) {
      var keyCode = document.layers ? evt.which : document.all ? 
     evt.keyCode : evt.keyCode;
      if (keyCode != 13)
        return true;
      else {
        getNextElement(field).focus();
        return false;
      }
}


function getNextElement (field) 
{
    var frm = field.form;
    var again = false;
    for (var e=0;e<frm.length;e++)
    {
      if(frm[e].type!="hidden" && again) return frm.elements[e];
      if (field==frm[e]) again=true;
    }
}

// JavaScript Order Calculator
// Copyright John J. Popovic, 2004 1stmuse.com
var s0, s, tax1= 0.;

function twoPlaces(amount) {
	// returns the amount in the .99 format
        round(amount,2);
	return (amount == Math.floor(amount)) ? amount + '.00' : (  (amount*10 == Math.floor(amount*10)) ? amount + '0' : amount);
	}

function round(number,X) {
	// rounds number to X decimal places, defaults to 3
	X = (!X ? 3 : X);
	return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
	}

function totals(num) {
	return twoPlaces(Math.floor((num - 0.) * 100) / 100);
	}

function RoundMultiply(a,b)
{ result=parseFloat(a * b);
return round(result,2);
};

function IncrementTotal(t,a)
{ result=t + parseFloat(a);
return round(result,2);
};


function uncheckAll(form) {
box = eval(form.scorpora1); 
}


function Calc_status(form) {
	
// assign values for Status
 document.myForm.Status.value =  form.status_description.value;
// end of assign values for ICONOGRAFIA_liberatorie_disponibili

}




function Calc(form) {
// assign values for PROPOSAL_amenities
/*


*/
        x1 = '';
        x2 = '';
        x3 = '';
        x4 = '';
        x5 = '';
        x6 = '';
        x7 = '';
        x8 = '';
        x9 = '';
        x10 = '';
        x11 = '';
        x12 = '';
        x13 = '';
        x14 = '';
        x15 = '';
        x16 = '';
        x17 = '';
        x18 = '';
        x19 = '';
        x20 = '';
        x21 = '';
        x22 = '';


	if (form.concierge.checked)    {x1='Concierge, ';};
	if (form.newspapers.checked)   {x2='Complimentary newspapers, ';};
	if (form.bar.checked)    {x3='Bar, ';};
	if (form.conference_room.checked) {x4='Conference room, ';};
	if (form.dry_cleaning.checked)    {x5='Dry cleaning, ';};
	if (form.air_condition.checked)   {x6='Air condition, ';};
	if (form.lift.checked)    {x7='Lift, ';};
	if (form.internet.checked)    {x8='Internet access, ';};
	if (form.breakfast.checked)   {x9='Complimentary breakfast, ';};
	if (form.checkin.checked)   {x10='Express checkin, ';};
	if (form.checkout.checked)   {x11='Express checkout, ';};
	if (form.fitness.checked)   {x12='Fitness equipment, ';};
	if (form.parking.checked)   {x13='Parking nearby, ';};	
	if (form.room_service.checked)   {x14='Room service 24 hours, ';};
	if (form.TV.checked)   {x15='TV, ';};
	if (form.dishwasher.checked)   {x16='Dishwasher, ';};
	if (form.maid.checked)   {x17='Maid Service Available, ';};
	if (form.microwave.checked)   {x18='Microwave, ';};
	if (form.washer.checked)   {x19='Washer, ';};
	if (form.towels.checked)   {x20='Linen and towels, ';};
	if (form.kitchen.checked)   {x21='Full Kitchen, ';};
	if (form.DVD.checked)   {x22='DVD, ';};
	
  document.myForm.PROPOSAL_amenities.value =  x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + 
                                              x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19  + x20 + x21 + x22;

// end of assign values for PROPOSAL_amenities
                 
             
}



function Hnt(form,f) {

	var text = "No Hint available for this field!";

		if (f == "ICONOGRAFIA_riproduzioni_disponibili") {

			text = "Compilare o spuntare le cassele sotto";
			form.ICONOGRAFIA_riproduzioni_disponibili.value = text;

		}

		if (f == "ICONOGRAFIA_liberatorie_disponibili") {

			text = "Compilare o spuntare le cassele sotto";
			form.ICONOGRAFIA_liberatorie_disponibili.value = text;

		}


		

	}

function ValueTransfer(f) {
	self.opener.document.myForm.ICONOGRAFIA_file_web.value = f;
	}


function ValueTransfer_email(f) {
	self.opener.document.myForm.email_to.value = f;
	}
	

var myWind = ""

function doNew_x() {
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {

           pics = window.open("$script_name?operation=upload_1x","subWindow","HEIGHT=200,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}


function doNew_y() {
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {

           pics = window.open("$script_name?operation=upload_1y","subWindow","HEIGHT=200,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}



function openphotos(file,input,width,height) {
        attr = "top=5,left=75,width=" + width + ",height=" + height + ",resizable=1,scrollbars=yes";
        window.open(file, input, attr);
}




// end -->
</script>
 <center>
 <b>
 
<INPUT TYPE=HIDDEN NAME=key value="$key">
 			<table border="0" cellpadding="2" cellspacing="1" width="80%">
 <tbody>
 <tr>

 <td colspan="2" bgcolor="#e0e0e0"><div align="center"><strong>card</strong></div></td>

 </tr>
 <tr bgcolor="#F5F5F5">
 <td colspan="2">
 <table width="660" border="0" cellspacing="0">

 <tbody>
 <tr>
 <td width="106" ><b>Price:</b></td>
 <td width="144" ><input name="ITEM_price" value="$ITEM_price" onKeyDown="return tabOnEnter (this, event);" type="text"></td>
 <td width="50" ><div align="left"><b>Quantity:</b></div></td>
 <td width="500" ><input name="ITEM_quantity" value="$ITEM_quantity" onKeyDown="return tabOnEnter (this, event);" type="text" size=8></td>
 </tr>
 </tbody>
 </table>
 </td>

 </tr>
 <tr>
 <td colspan="2" bgcolor="#009900">
 <div align="center"><span class="Stile1">TITLE & NAVIGATION TAXONOMY CONTEXT</span>
 <br>
 <img id="img0" name="img0" src="$hermes_image_path/$file_web[0]" align=left border="1" height="100" onclick="change_image();">
 <img id="img1" name="img1" src="$hermes_image_path/$file_web[1]" align=left border="1" height="100" onclick="change_image();">
 <img id="img2" name="img2" src="$hermes_image_path/$file_web[2]" align=left border="1" height="100" onclick="change_image();">
 <img id="img3" name="img3" src="$hermes_image_path/$file_web[3]" align=left border="1" height="100" onclick="change_image();">
 <img id="img4" name="img4" src="$hermes_image_path/$file_web[4]" align=left border="1" height="100" onclick="change_image();">
 <img id="img5" name="img5" src="$hermes_image_path/$file_web[5]" align=left border="1" height="100" onclick="change_image();">
 <img id="img6" name="img6" src="$hermes_image_path/$file_web[6]" align=left border="1" height="100" onclick="change_image();">
 <img id="img7" name="img7" src="$hermes_image_path/$file_web[7]" align=left border="1" height="100" onclick="change_image();">
 
 </div>
 </td>
 </tr>
 <tr>
 <td bgcolor="#d5ffd5"><table border="0" cellspacing="0">

 <tbody>
 <tr>
 <td colspan="2"><div align="center"><b>TITLE & NAVIGATION TAXONOMY CONTEXT</b></div></td>
 </tr>
 <tr>

 <td><div align="left"><b>Name:</b></div></td>
 <td><input name="TAXONOMY_item_name" value="$TAXONOMY_item_name" size="40" onkeydown="return tabOnEnter (this, event);" type="text"></td>
 </tr>



 <tr>
 <td><div align="left"><b>Subtitle:</b></div></td>
 <td><input name="TAXONOMY_subtitle" value="$TAXONOMY_subtitle" size="40" onkeydown="return tabOnEnter (this, event);" type="text"></td>
 </tr>
 

 

  
 </tbody>
 </table></td>
 <td bgcolor="#d5ffd5" width="100%"><table border="0" cellspacing="0">

 <tbody>
 <tr>
 <td width="164"><div align="left"><b>Filesystem path:</b></div></td>
 <td width="187"><input name="TAXONOMY_context_path" value="$TAXONOMY_context_path" size="30" onkeydown="return tabOnEnter (this, event);" type="text"></td>
 </tr>
 <tr>
 <td><div align="left"><b><a href="javascript:doNew_x()" onMouseOver="window.status='File Upload y'; return true;">Image file</a>:</b></div></td>
 <td><input name="ICONOGRAFIA_file_web" value="$ICONOGRAFIA_file_web" size="18" onChange="change_image();" onClick="change_image();" $readonly type="text">
 <INPUT onclick="change_image();doNew_x()" type=button value="Upload" name=storage></td>
 </tr>
 <tr>
 <td width="164"><div align="left"><b>photo gallery:</b></div></td>
 <td width="187"><input name="ICONOGRAFIA_gallery" value="$ICONOGRAFIA_gallery" size="30" onkeydown="return tabOnEnter (this, event);" type="text"></td>
 </tr>
 </tbody>
 
 </table></td>
 </tr>



 



 <tr>
 <td colspan="2" bgcolor="#990033" ><div align="center" class="Stile1">TAXONOMY & CONTEXT CATEGORIES</div></td>

 </tr>
 <tr>

 <td colspan="2" bgcolor="#ffd5d5" ><b>Metacathegory: </b>
 <input name="TAXONOMY_metacathegory" value="$TAXONOMY_metacathegory" size="52" onkeydown="return tabOnEnter (this, event);" type="text">
  chapter - section name<br>
  


</td>
</tr>

 <tr>
 <td><div align="left"><b>Cathegory</b> / this page name</div>
 <input name="TAXONOMY_cathegory" value="$TAXONOMY_cathegory" size="40" onkeydown="return tabOnEnter(this, event);" type="text">
 </td>
 </tr>
 <tr>
 <td bgcolor="#ffd5d5" ><table border="0" cellspacing="0">
 <tbody>

 <tr>
 <td>&nbsp;</td>
 <td>Related Categories / same taxonomy links <textarea name="TAXONOMY_cathegories" cols="70" rows="7" >$TAXONOMY_cathegories_broken</textarea></td>
 </tr>

 </tbody>
 </table></td>

 <td bgcolor="#ffd5d5" width="100%">
 Related SubCategories<textarea name="TAXONOMY_subcathegories" cols="70" rows="7" >$TAXONOMY_subcathegories</textarea></td>
 </td>
 </tr>

 
</td>
 

<tr bgcolor="#879D1C">

 <td colspan="2"><div align="center"><span class="Stile1">DESCRIPTIVE INFORMATION</span></div></td>
 </tr>
 <tr>
 <td bgcolor="#dcec91"><table border="0" cellspacing="0">
 <tbody>
 <tr>

 <td valign="top"><b>Description:<br>
  <textarea name="ITEM_description" cols="70" rows="16">$ITEM_description</textarea>
 </b></td>
 <td valign="top">&nbsp; </td>
 </tr>
 
 <tr>
 
 <td valign="top">&nbsp;				 </td>
 </tr>
 </tbody>
  </table></td>
 <td bgcolor="#dcec91"><table border="0" cellspacing="0">
 <tbody>


 <tr>
 <td valign="top"><strong>Taxonomy Path - breadcrumbs:<br>

 </strong>
 <textarea name="ITEM_chapter" cols="70" rows="7" >$ITEM_chapter</textarea></td>
 </tr>

 </tbody>
 </table></td>
 </tr>

 <tr bgcolor="#9AC886">
 <td colspan="2"><div align="center" class="Stile1">LAST UPDATE</div></td>

 </tr>
 <tr bgcolor="#dcecd5">
 <td colspan="2"> <table border="0" cellspacing="0">
 <tbody>
 <tr>
  <td width="85"><b>Date and time:</b></td>
  <td ><input name="Data_Ora" value="$Data_Ora" onClick="startclock(); timerONE=window.setTimeout" size="54" onKeyDown="return tabOnEnter (this, event);" readonly></td>
 </tr>
 <tr>
  <td width="85"><b>URL:</b></td>
  <td ><input name="ITEM_URL" value="$ITEM_URL" onClick="setURL();" size="54" onKeyDown="return tabOnEnter (this, event);" readonly></td>
 </tr>
 <tr>
  <td width="85"><b>header_type:</b></td>
  <td >
  <input name="header_type" value="classic" type="hidden">
 <input name="header_" type="radio" value="classic" checked onClick="header_type.value ='classic';" >Classic
 <input name="header_" type="radio" value="menu" onClick="header_type.value ='menu';" >Menu
  </td>
 </tr> 


 <tr>
  <td width="85"><b>web visibility:</b></td>
  <td >
  <input name="visibility_mode" value="no" type="hidden">
 <input name="visibility_" type="radio" value="no" checked onClick="visibility_mode.value ='no';" >No
 <input name="visibility_" type="radio" value="yes" onClick="visibility_mode.value ='yes';" >Yes
 </td>
 </tr>

 </tbody>
 </table></td>
 </tr>
 <tr bgcolor="#F5F5F5">
 <td colspan="2" align="center"><br>
 <INPUT TYPE=button onClick="setURL();startclock();timerONE=window.setTimeout;myForm.action.value='Conferma_pura_modifica';this.form.submit();" VALUE="Save card" > 
 <br>
<input name="update_mode" value="conserve" type="text" readonly size="6">
 </td>

 </tr>
 </tbody>
 </table>
<br>

</b>

	</td></tr>
 
</center>
<INPUT TYPE="hidden" NAME="archive_mode" VALUE="$archive_mode">
HTML
&html_footer;
}
############# end of Modify Screen ################







############### Check item #################

sub check_item{
 $r_val = $_[0];
 $index = $_[1];
 if($r_val =~ /^\s*$/){$r_val="&nbsp;"; return($r_val);}
 if( ($index_of_image_url ne "") && (($index eq $index_of_image_url)|($index eq $index2_of_image_url)) ) { 
 if ($r_val =~ /http:\/\//i){ $link = "$r_val"; }  
 else { $link = "$image_path/"; $link .= "$r_val"; }
 $r_val2 = "<a href=\"$link\">$r_val</a>"; $r_val = $r_val2; 
 }
 if($index_of_email ne "" && $index eq $index_of_email) { $r_val2 = "<a href=\"mailto:$r_val\">$r_val</a>"; $r_val = $r_val2; }
 return($r_val);
}
################### Login ###################
sub login {
$message = $_[0];
$title = "Login";
&html_header($title,$message);
print<<HTML;
<TABLE><TR>
<TD><B>User Name</B><BR><INPUT TYPE="text" NAME="user" SIZE="30"></TD></TR>
<TR><TD><B>Password</B><BR><INPUT TYPE="password" NAME="password" SIZE="30" onkeydown="if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13))
 {myForm.action.value='Submit Login';this.form.submit( );return false;} 
 else return true;"></TD>
</TR>
<TR><TD ALIGN=MIDDLE><BR>
<INPUT TYPE=button onClick=\" myForm.action.value='Submit Login';this.form.submit( );\" VALUE="Submit Login" >
HTML
if($register eq "yes") { print "<INPUT TYPE=button onClick=\" myForm.action.value='Register';this.form.submit( );\" VALUE=\"Register\">"; }
print<<HTML;
</TD>
</TR>
</TABLE>
HTML
$footer = "login";
&html_footer;
}

################ Authenticate ################

sub authenticate {
 $form_password = $q->param(password);
 open (USERFILE, "$user_file") || die "Error opening user file. $!\n";
 $user_matched = 0;
 while (<USERFILE>) {
	chop($_);
	($password, $user, $u_search, $u_add, $u_modify, $u_delete, @extra_user_fields) = split(/\|/, $_);
	if ($q->param(user) eq $user) {
	 $user_matched = 1;
	 $username = $user;
	 $user_add = $u_add;
	 $user_modify = $u_modify;
	 $user_search = $u_search;
	 $user_delete = $u_delete;
	if (&auth_encrypt ($form_password, $password) eq $password) {
 	 $cookie = cookie(-NAME=>'user',-VALUE=>"$user",-EXPIRES=>'+3d');
	} # End of if passwords match
	} # End of if username matches
 } # End of While
 close (USERFILE);
 if ($user_matched == 1 && $cookie eq "") {
	 $footer = "login";
	 $title = "Login";
	 $error_message = "Wrong Password and/or User name!";
	 &access_problem($error_message);
	 exit; }
 if ($user_matched == 0) {
	 $footer = "login";
	 $title = "Login";
	 $error_message = "Your user name was not found!";
	 &access_problem($error_message);
	 exit; }
print header(-cookie=>[$cookie]);
$set_cookie = "yes";
$message = "User \"$username\" is now logged in";
$title = "Main Menu"; 
$user = $username;
&print_default($title, $message);
exit;
}

############### Register Form ################

sub register {
$title = "Register A New User";
&html_header($title);
 print<<HTML;
<TABLE><TR>
<TD><B>User Name</B><BR><INPUT TYPE="text" NAME="user" SIZE="30"></TD></TR>
<TR><TD><B>Password</B><BR><INPUT TYPE="password" NAME="password" SIZE="30"></TD></TR>
<TR><TD><B>Re-Type Password</B><BR><INPUT TYPE="password" NAME="password2" SIZE="30"></TD></TR>
HTML
 foreach $extra (@extra_user_fields){
 print "<TR><TD><B>\u$extra</B><BR><INPUT TYPE=\"text\" NAME=\"$extra\" SIZE=\"30\"></TD></TR>";
 }
 print<<HTML;
<TR><TD ALIGN=MIDDLE><BR>
<INPUT TYPE="hidden" NAME="search" value="$default_user_permission_search">
<INPUT TYPE="hidden" NAME="add" value="$default_user_permission_add">
<INPUT TYPE="hidden" NAME="modify" value="$default_user_permission_modify">
<INPUT TYPE="hidden" NAME="delete" value="$default_user_permission_delete">
<INPUT TYPE=button onClick=" myForm.action.value='Add User';this.form.submit( );" VALUE="Add User" >
<INPUT TYPE=button onClick=" myForm.action.value='Back To Login';this.form.submit( );" VALUE="Back To Login" >
</TD>
</TR>
</TABLE>
HTML
$footer = "login";
&html_footer;
}

################ Add User ##################

sub add_user {
$user = $q->param(user);
$password = $q->param(password);
$password2 = $q->param(password2);
if ($perform eq "edit" && $password eq "") { $use_old = "yes"; $password = "$old_password"; $password2 = "$old_password";}
	if ($password ne $password2 || $password eq "" || $password2 eq "") {
	 $footer = "login";
	 $title = "Register A New User";
	 $error_message = "Your passwords didn't match!";
	 &access_problem($error_message);
	 exit;	}
@form_vars = ('user', 'search', 'add', 'modify', 'delete', @extra_user_fields);
 foreach $x (@form_vars) {
	if ($q->param($x) eq "" || $q->param($x) =~ /\|/) {
 $footer = "login";
	 $title = "Register A New User";
	 $error_message = "You must fill in all of the fields in the registration form!";
	 &access_problem($error_message);
	 exit;	} }
 if ($check_user_duplicates eq "yes") {
	open (USERFILE, "$user_file");
	$user_matched = 0;
	while (<USERFILE>) {
	 chop($_);
	 @f = split(/\|/, $_);
	 if ($f[1] eq $user) {
		$user_matched = 1;
		last;	 }	} # End of while userfile open
	close (USERFILE);
	if ($user_matched == 1) {
	 $footer = "login";
	 $title = "Register A New User";
	 $error_message = "That user name is already taken!";
	 &access_problem($error_message);
	 exit;	} # End of user matched (found duplicate) 
	} # End of if check duplicates on
 srand(time|$$);
 $random = "abcdefghijklmnopqrstuvwxyz1234567890";
 $real_password = $password;
 $salt = "";
 for (1..2) { $salt .= substr($random,int(rand(36)),1); }
 if ($use_old ne "yes") { $password = &auth_encrypt ($password, $salt); }
 $auth=$password;
 foreach $field (@form_vars){
 ${$field} = $q->param($field);
 $auth .= "\|${$field}"; }
 unless (-e $user_file){
 open (AUTH_FILE, ">$user_file") || die "Error creating user file. $!\n";
 } else {
 open (AUTH_FILE, ">>$user_file") || die "Error opening user file. $!\n";
 }
 flock AUTH_FILE, $EXCLUSIVE;
 seek AUTH_FILE, 0, 2;
 print AUTH_FILE "$auth\n";
 flock AUTH_FILE, $UNLOCK;
 close(AUTH_FILE);
if ($admin_add eq ""){
 $message = "New User Added<br>You may now login with your new user name below.";
 &login($message);
 } else { 
 $title = "User Manager";
 $message = "User Added/Modified";
 &user_manager($message);
 }
}

################ Create Admin ###############

sub create_admin{
&html_header($title);
 print<<HTML;
<center><TABLE WIDTH=275>
<TR>
<TD>Please start out by setting the Administrator information below. When logged in as the below user, you will be able to access additional options which are only available to the database administrator.</TD>
</TR><TR>
<TD><br><B>User Name:</B> $admin_user_name<br>This can be changed in the script configurations.</TD></TR>
<TR><TD><br><B>Password</B><BR><INPUT TYPE="password" NAME="password" SIZE="30"></TD></TR>
<TR><TD><B>Re-Type Password</B><BR><INPUT TYPE="password" NAME="password2" SIZE="30"></TD></TR>
HTML
 foreach $extra (@extra_user_fields){
 print "<TR><TD><B>\u$extra</B><BR><INPUT TYPE=\"text\" NAME=\"$extra\" SIZE=\"30\"></TD></TR>";
 }
 print<<HTML;
<TR><TD ALIGN=MIDDLE><BR><INPUT TYPE="hidden" NAME="user" value="$admin_user_name">
<INPUT TYPE="hidden" NAME="search" value="yes">
<INPUT TYPE="hidden" NAME="add" value="yes">
<INPUT TYPE="hidden" NAME="modify" value="yes">
<INPUT TYPE="hidden" NAME="delete" value="yes">
<INPUT TYPE=button onClick=" myForm.action.value='Add Administrator';this.form.submit( );" VALUE="Add Administrator" >
</TD>
</TR>
</TABLE></center>
HTML
$footer = "login";
&html_footer;
exit;
}

################ User Manager ###############

sub user_manager{
$message = $_[0];
&html_header($title,$message);
 print<<HTML;
<center>
<TABLE>
<TR>
<TD><select name="selected_user" size=8>
HTML
 open (USERFILE, "$user_file") || die "Error opening user file. $!\n";
 while (<USERFILE>) {
	chop($_);
	($password, $user, $u_search, $u_add, $u_modify, $u_delete, @extra_user_fields) = split(/\|/, $_);
	print "<option value=\"$user\">$user</option>\n";
 } # End of While
 close (USERFILE);
 print<<HTML;
</select></TD>
<td valign=top>
<input TYPE=button onClick=" myForm.action.value='Create New User';this.form.submit( );" value="Create New User"><p>
<input TYPE=button onClick=" myForm.action.value='Edit Selected User';this.form.submit( );" value="Edit Selected User"><p>
<input TYPE=button onClick=" myForm.action.value='Remove Selected User';this.form.submit( );" value="Remove Selected User">
</TR>
</TABLE>
</center>
HTML
&html_footer;
exit;
}

############### Add/Edit User ################

sub edit_user {
if ($perform eq "edit" && $selected_user eq "" ) {
	 $title = "User Manager - Edit Selected User";
	 $error_message = "You forgot to select a user record to edit!";
	 &access_problem($error_message);
	 exit;
}
if ($perform eq "edit") {
 open (USERFILE, "$user_file") || die "Error opening user file. $!\n";
 while (<USERFILE>) {
	chop($_);
	($password, $userfound, $u_search, $u_add, $u_modify, $u_delete, @other_user_fields) = split(/\|/, $_);
	if ($selected_user eq $userfound) {
	 @found_other_fields = @other_user_fields;
	 $edit_user = $userfound;
	 $edit_user_add = $u_add;
	 $edit_user_modify = $u_modify;
	 $edit_user_search = $u_search;
	 $edit_user_delete = $u_delete;
	 $old_password = $password;
	} # End of if username matches
 } # End of While
 close (USERFILE);
}
&html_header($title);
 print<<HTML;
<TABLE><TR>
<TD><B>User Name</B><BR><INPUT TYPE="text" NAME="user" SIZE="30" value="$edit_user"></TD></TR>
HTML
if ($perform eq "edit") {
 print<<HTML;
<TR><TD><B>New Password</B><br>Leave blank if you aren't changing passwords.<BR><INPUT TYPE="password" NAME="password" SIZE="30"></TD></TR>
HTML
} else {
 print<<HTML;
<TR><TD><B>Password</B><BR><INPUT TYPE="password" NAME="password" SIZE="30"></TD></TR>
HTML
}
if ($perform eq "edit") {
 print<<HTML;
<TR><TD><B>Re-Type New Password</B><br>Leave blank if you aren't changing passwords.<BR><INPUT TYPE="password" NAME="password2" SIZE="30"></TD></TR>
HTML
} else {
 print<<HTML;
<TR><TD><B>Re-Type Password</B><BR><INPUT TYPE="password" NAME="password2" SIZE="30"></TD></TR>
HTML
}
$extra_fields_count = @found_other_fields;
 for($x=0;$x<$extra_fields_count;$x++){
print "<TR><TD><B>\u$extra_user_fields[$x]</B><BR><INPUT TYPE=\"text\" NAME=\"$extra_user_fields[$x]\" SIZE=\"30\" value=\"$found_other_fields[$x]\"></TD></TR>";
 }
if ($perform eq "add") {
 foreach $extra (@extra_user_fields){
 print "<TR><TD><B>\u$extra</B><BR><INPUT TYPE=\"text\" NAME=\"$extra\" SIZE=\"30\"></TD></TR>";
 }
}
 print<<HTML;
<tr><td><br><b>User Permissions</b></td></tr>
HTML

if ($edit_user_search eq "no"){
 print<<HTML;
<tr><td>Search: <input type="radio" name="search" value="yes"> Yes &nbsp;&nbsp;&nbsp;<input type="radio" name="search" value="no" checked> No</td></tr>
HTML
} else {
 print<<HTML;
<tr><td>Search: <input type="radio" name="search" value="yes" checked> Yes &nbsp;&nbsp;&nbsp;<input type="radio" name="search" value="no"> No</td></tr>
HTML
}
if ($edit_user_add eq "no"){
 print<<HTML;
<tr><td>Add: <input type="radio" name="add" value="yes"> Yes &nbsp;&nbsp;&nbsp;<input type="radio" name="add" value="no" checked> No</td></tr>
HTML
} else {
 print<<HTML;
<tr><td>Add: <input type="radio" name="add" value="yes" checked> Yes &nbsp;&nbsp;&nbsp;<input type="radio" name="add" value="no"> No</td></tr>
HTML
}
if ($edit_user_modify eq "no"){
 print<<HTML;
<tr><td>Modify: <input type="radio" name="modify" value="yes"> Yes &nbsp;&nbsp;&nbsp;<input type="radio" name="modify" value="no" checked> No</td></tr>
HTML
} else {
 print<<HTML;
<tr><td>Modify: <input type="radio" name="modify" value="yes" checked> Yes &nbsp;&nbsp;&nbsp;<input type="radio" name="modify" value="no"> No</td></tr>
HTML
}
if ($edit_user_delete eq "no"){
 print<<HTML;
<tr><td>Delete: <input type="radio" name="delete" value="yes"> Yes &nbsp;&nbsp;&nbsp;<input type="radio" name="delete" value="no" checked> No</td></tr>
HTML
} else {
 print<<HTML;
<tr><td>Delete: <input type="radio" name="delete" value="yes" checked> Yes &nbsp;&nbsp;&nbsp;<input type="radio" name="delete" value="no"> No</td></tr>
HTML
}
print<<HTML;
<TR><TD ALIGN=MIDDLE><BR><input type=hidden name="old_password" value="$old_password">
<input type=hidden name="selected_user" value="$edit_user">
<input type=hidden name="admin_add" value="yes">
<INPUT TYPE=button onClick=" myForm.action.value='$button_text';this.form.submit( );" VALUE="$button_text" >
<INPUT TYPE=button onClick=" myForm.action.value='User Manager';this.form.submit( );" VALUE="User Manager" >
</TD>
</TR>
</TABLE>
HTML
&html_footer;
}

################ Delete User ###############

sub delete_user{
if ($selected_user eq "" ) {
	 $title = "User Manager - Remove Selected User";
	 $error_message = "You forgot to select a user record to remove!";
	 &access_problem($error_message);
	 exit;
}
if ($selected_user eq "$admin_user_name" && $perform eq "delete") {
	 $title = "User Manager - Remove Selected User";
	 $error_message = "You are not allowed to remove the administrator!";
	 &access_problem($error_message);
	 exit;
}
 open (USERFILE, "$user_file") or die "Error opening file: $!\n";
 while (<USERFILE>)
 {
 $line = $_;
 chop $line;
 @dbfields = split (/\|/, $line);
 $deleted = "no";
 if ($dbfields[1] eq $selected_user) { $deleted = "yes"; }
 elsif ($deleted ne "yes") { $new_data .= "$line\n"; }
 } #end of while
 close (USERFILE);
 flock USERFILE, $EXCLUSIVE;
 open (USERFILE, ">$user_file") or die "Error opening file: $!\n";
 print USERFILE "$new_data";
 close (USERFILE);
}

################# Logout ###################

sub logout {
$cookie = cookie(-NAME=>'user',-VALUE=>"$user",-EXPIRES=>'-1d');
print header(-cookie=>[$cookie]);
$set_cookie = "yes";
$message = "User \"$user\" logged out";
&login($message);
 } # end of logout

############ Encrypt Password ###############

sub auth_encrypt {
 local ($field, $salt) = @_;
 $field = crypt ($field, $salt);
 $field;
 } # end of encrypt

############## Access Problem ##############

sub access_problem {
&html_header($title);
 print<<HTML;
<BR>
<FONT SIZE=4 FACE="ARIAL" COLOR=RED><B>Error!</B></FONT><P>
<FONT SIZE=4 FACE="ARIAL">$error_message</FONT><P>
<INPUT TYPE="button" VALUE=" Indietro " onClick="history.go(-1)"><br><br>
HTML
&html_footer;
exit;
}




################ Get Date ##################
sub get_date {
 local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst,$date); 
 local (@days, @months);
 @days = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
 @months = ('January','February','March','Openl','May','June','July','August','September','October','November','December');
 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
 if ($hour < 10) { $hour = "0$hour"; }
 if ($min < 10) { $min = "0$min"; }
 if ($sec < 10) { $sec = "0$sec"; }
 $mon++;
 $year += 1900;
 $date = "$mon/$mday/$year at $hour\:$min\:$sec";
 return $date;
}


################ Pick Datum ##################
sub pick_datum {
 local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst,$date); 
 local (@days, @months);
 @days = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
 @months = ('January','February','March','Openl','May','June','July','August','September','October','November','December');
 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
 $mon++;
 $year += 1900;
 $date = "$mday/$mon/$year";
 return $date;
}


############## Form Header #################
sub form_header {
print<<HTML;
<FORM name="myForm" METHOD="post" ACTION="$script_name">
<INPUT TYPE="hidden" NAME="action" VALUE="$action">
HTML
}

############## Form Footer #################

sub form_footer {
if($footer eq "default") {
# if ($user_search eq "yes") {print "<INPUT TYPE=button onClick=\"myForm.action.value='search';this.form.submit( );\" VALUE=\"search\" > "; }
# if ($user_add eq "yes") {print "<INPUT TYPE=button onClick=\" myForm.action.value='ADONIS';this.form.submit( );\" VALUE=\"ADONIS\" > "; }
if ($authenticate eq "yes") {print "<INPUT TYPE=button onClick=\"myForm.action.value='search compact';this.form.submit( );\" VALUE=\"search\" > "; }
if ($authenticate eq "yes") {print "<INPUT TYPE=button onClick=\" myForm.action.value='nuova_card';this.form.submit( );\" VALUE=\"new card\" > "; }
# if ($authenticate eq "yes") {print "<INPUT TYPE=button onClick=\" myForm.action.value='nuova_item';this.form.submit( );\" VALUE=\"new item\" > "; }
if ($authenticate eq "yes") { print "<INPUT TYPE=button onClick=\" myForm.action.value='Logout';this.form.submit( );\" VALUE=\"Logout\" >\n"; }
}
elsif($footer eq "login") { print "\&nbsp\;"; }
 else { print "<INPUT TYPE=button onClick=\" myForm.action.value='Main Menu';this.form.submit( );\" VALUE=\"Main Menu\" >";
if ($authenticate eq "yes") { print "<INPUT TYPE=button onClick=\"myForm.action.value='Logout';this.form.submit( );\" VALUE=\"Logout\" >";} }
print "<input type=hidden name=\"user_search\" value=\"$user_search\">\n";
print "<input type=hidden name=\"user_add\" value=\"$user_add\">\n";
print "<input type=hidden name=\"user_modify\" value=\"$user_modify\">\n";
print "<input type=hidden name=\"user_delete\" value=\"$user_delete\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"user\" VALUE=\"$user\">\n";
 print "<input type=hidden name=\"user_trans\" value=\"$user_trans\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"authenticate\" VALUE=\"$authenticate\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"message\" VALUE=\'$message\'>\n";
}


############## HTML Header #################

sub html_header{
print "Content-type:text/html; charset=utf8\n\n";

 print<<HTML;
<HTML><HEAD><meta http-equiv="content-type" content="text/html;  charset=utf8">
 <TITLE>$db_name - $_[0]</TITLE>
 </HEAD>
<BODY BGCOLOR="#FFFFFF">
 <script type="text/javascript" src="$image_path/js/global.js"></script>  
  <script type="text/javascript" src="$image_path/js/style.js"></script>
 <CENTER><B>
 $db_name
 </B><p><FONT SIZE=3 FACE="ARIAL" COLOR=RED><B>$_[1]</B></FONT></CENTER><P>
 <CENTER>
 <TABLE BORDER=1 WIDTH="$table_width" CELLSPACING="0" CELLPADDING="3">
 <TR> 
 <TD BGCOLOR="#e0e0e0"> 
 <CENTER> 
 <B>$_[0]</B>
 </CENTER>
 </TD>
 </TR>
 <TR> 
 <TD align=middle><BR>

HTML
&form_header;

}



############## HTML Footer #################

sub html_footer{
if($use_external_html eq "yes") { 
%external_variables = (title=>$title, message=>$message,);
&form_footer;
print html_template("$external_html_footer", \%external_variables); 
if ($user eq "$admin_user_name" && $footer ne "login" && $authenticate eq "yes") {
print "<center><INPUT TYPE=button onClick=\"myForm.action.value='User Manager';this.form.submit( );\" VALUE=\"User Manager\" ></center><p>";
}
} else {
 print<<HTML;
 <BR></TD></TR>
 <TR> 
 <TD BGCOLOR="#e0e0e0"><CENTER> 
HTML
&form_footer;
 print<<HTML;
 </CENTER>
 </TD>
 </TR>
</TABLE><P>
HTML
print $copyright_note;
if ($user eq "$admin_user_name" && $footer ne "login" && $authenticate eq "yes") {
print "<center><INPUT TYPE=button onClick=\"myForm.action.value='User Manager';this.form.submit( );\" VALUE=\"User Manager\" ></center><p>";
}

 print<<HTML;
<form name="myForm2">
<input type="hidden" value="Write" onClick="document.myForm.elements[0].focus(); "> 
</form>
</BODY></HTML>
HTML
	}
}

### To avoid usual situation like:
### After filling out the text field, user HAVE to click the specified button to 
### submit the form. If you press enter to submit the form it reloads the form.
### I have written small Javascript code in order to avoid previous behavior and to:
### Process the form by pressing the <ENTER> by putting the focus on the specified (default) button
### In the input field must be inserted the EVENT HANDLER
### like: <INPUT TYPE="text" NAME="search_for" SIZE="40" 
### onkeydown="if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13))
### {myForm.action.value='Logout';this.form.submit( );return false;} else return true;" >


############## HTML Footer item #################
sub html_footer_item{
if($use_external_html eq "yes") { 
%external_variables = (title=>$title, message=>$message,);
$footer="default_item";
&form_footer_item;
print html_template("$external_html_footer", \%external_variables); 
print $copyright_note;
} else {
 print<<HTML;
 <BR></TD></TR>
 <TR> 
 <TD BGCOLOR="#e0e0e0"><CENTER> 
HTML
&form_footer_item;
 print<<HTML;
 </CENTER>
 </TD>
 </TR>
</TABLE><P>
HTML
print $copyright_note;
print<<HTML;
</FORM>
 </CENTER>

<form name="myForm2">
<input type="hidden" value="Write" onClick="document.myForm.elements[0].focus(); "> 
</form>



</BODY></HTML>
HTML
	}
}



################ ADONIS 1 ##################

sub print_default_ADONIS {
&html_header;
 print<<HTML;
 <TABLE BORDER=0 CELLSPACING="0" CELLPADDING="3"><TR><TD COLSPAN=3>
<B>item numero:</B><BR><INPUT TYPE="text" NAME="search_for" SIZE="40" 
onkeydown="if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13))
 {myForm.action.value='Avanti';this.form.submit( );return false;} 
 else return true;" ></TD>
 </TR><TR> 
<BR>
</TD></TR></TABLE><br>
HTML
$footer="default";
&html_footer_item;
} # End of print_default_ADONIS subroutine.


############## Form Footer item #################

sub form_footer_item {
if($footer eq "default") {

if ($user_delete eq "yes") {print "<INPUT TYPE=button onClick=\"myForm.action.value='Delete';this.form.submit( );\" VALUE=\"Delete\" > "; }
}
elsif($footer eq "login") { print "\&nbsp\;"; }
 else { print "<INPUT TYPE=button onClick=\"myForm.action.value='Main Menu';this.form.submit( );\" VALUE=\"Main Menu\" >"; 
if ($authenticate eq "yes") { print " <INPUT TYPE=button onClick=\"myForm.action.value='Logout';this.form.submit( );\" VALUE=\"Logout\" >";} }
print "<input type=hidden name=\"user_search\" value=\"$user_search\">\n";
print "<input type=hidden name=\"user_add\" value=\"$user_add\">\n";
print "<input type=hidden name=\"user_modify\" value=\"$user_modify\">\n";
print "<input type=hidden name=\"user_delete\" value=\"$user_delete\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"user\" VALUE=\"$user\">\n";
 print "<input type=hidden name=\"user_trans\" value=\"$user_trans\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"authenticate\" VALUE=\"$authenticate\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"message\" VALUE=\'$message\'>\n";
}

############ Print Next Page Buttons ###########################
sub next_page_buttons {

if ($rows_left_to_view > 0 && $show ne "no") {
 print "<P><INPUT TYPE=\"hidden\" NAME=\"new_hits_seen\" VALUE=\"$new_hits_seen\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"which_search\" VALUE=\"$which_search\">";

if ($rows_left_to_view == 1){ 
print<<HTML;
<INPUT TYPE=button onClick=" myForm.action.value='$what';this.form.submit( );" VALUE="Vedi ultima card" >
HTML
}; 

if ( ($rows_left_to_view <= $max_records_returned) && ($rows_left_to_view > 1)){ 
print<<HTML;
<INPUT TYPE=button onClick=" myForm.action.value='$what';this.form.submit( );" VALUE="Vedi ultime $rows_left_to_view cards" >
HTML
};

if ($rows_left_to_view > $max_records_returned) { 
print<<HTML;
<INPUT TYPE=button onClick=" myForm.action.value='$what';this.form.submit( );" VALUE="Vedi seguente $max_records_returned cards" >
HTML
} ; 
}
}







############## Results Screen NEW ################
sub search_results{
&html_header($title);
 $rows_left_to_view = $total_row_count - $new_hits_seen;
 $start_hit = $hits_seen + 1;
 $end_hit = $new_hits_seen;
 $hits_displayed = $end_hit - $start_hit + 1;
 if ($total_row_count > 1) {
 print qq~<P>Found:<B>$total_row_count</B> cards, searched: <B>$search_for</B><br>~;
 if ($total_row_count > $max_records_returned) {
 if ($hits_displayed == 2) { print qq~<B>Last two</B> records (mostrate in questa schermata)<BR>~; }
 elsif ($hits_displayed == 1) { print qq~<B>Last</B> record (mostrate in questa schermata)<BR>~; }
 else { print qq~<B>$start_hit</B> - <B>$end_hit</B> (mostrate in questa schermata)<BR>~; }
 } #end if
 } #end if ... > 1
 else { print qq~<P>Found: <B>1</B> record\n~; }
print "<br>";
############### PRINT BUTTON which_search #######

print "<br>";
 print "<INPUT TYPE=button onClick=\" myForm.action.value='Main Menu';this.form.submit( );\" VALUE=\"Main Menu\" >";



$which_search = $choose;

&next_page_buttons($rows_left_to_view);
 print "<INPUT TYPE=\"hidden\" NAME=\"sort_on\" VALUE=\"$sort\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"display\" VALUE=\"$display\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"logic\" VALUE=\"$logic\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"update_mode\" VALUE=\"$update_mode\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"archive_mode\" VALUE=\"$archive_mode\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"rendering_mode\" VALUE=\"$rendering_mode\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"header_type\" VALUE=\"$header_type\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"search_for\" VALUE=\"$search_for\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"key\" VALUE='0'>\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"search_field\" VALUE=\"$search_field\">\n";


print<<JS;
 <script type="text/javascript">

function reverseVisibility(kljuc) {
 id = 'visibilityButton' + kljuc;
 document.getElementById(id).disabled=true;
 obj = document.getElementById(id);
 var url = '$script_name?operation=flipflop_visibility&find_=' + kljuc;
 if (window.ActiveXObject) { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); }
   else if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }  
 if( xmlhttp) {
  // requested results passing searchString as an URL parameter
  xmlhttp.open('GET',url, false);
  xmlhttp.send(null);
  if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
      ajaxResponse =	xmlhttp.responseText;
  		obj.value =	ajaxResponse;
  		document.getElementById(id).disabled=false;
  };
 }
}
  


function DeleteDilemma(record_key) {
  if (confirm('Forse non è necessario eliminare questa card. Si desidera comunque procedere?')){
    deleteRecord(record_key);
  }
}


function ModifyRecord(record_key) {
    window.location.href ="$script_name?operation=edit_record&find_=" + record_key;
}

function deleteRecord(kljuc) {
 id = 'deleteButton' + kljuc;
 document.getElementById(id).disabled=true;
 obj = document.getElementById(id);
 var url = '$script_name?operation=ajaxdelete&find_=' + kljuc;
 if (window.ActiveXObject) { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); }
   else if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }  
 if( xmlhttp) {
  // requested results passing searchString as an URL parameter
  xmlhttp.open('GET',url, false);
  xmlhttp.send(null);
  if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
      ajaxResponse =	xmlhttp.responseText;
  		obj.value =	ajaxResponse;

  };
 }
}


</script>
JS

######## Display ROWS ############
foreach $record (@results){
 ($key,$dbuser,$when_added,@field_vals) = split(/\|/, $record); 
print<<HTML;
 <P><TABLE BORDER=0 CELLSPACING=2 CELLPADDING=2 WIDTH=$record_width BGCOLOR=#eeeeee>
HTML

$modify_button ="<INPUT TYPE=button onClick=\" myForm.key.value='$key';myForm.search_field.value='all';myForm.action.value='Edit_item';this.form.submit( );\" VALUE=\"Open card\" >";
$view_button ="<INPUT TYPE=button onClick=\" myForm.key.value='$key';myForm.search_field.value='all';myForm.action.value='Vedi_item';this.form.submit( );\" VALUE=\"Display card\" >";


################ COMPACT Record logic ####################################
$x=0;
# assign only relevant values for COMPACT Record #
# assign the relevant values of each field in the record
$x=0;
foreach $field (@fields){
 ${$field} = $field_vals[$x];
 $x++;
} 
$img_file =$ICONOGRAFIA_file_web; 
# End of foreach assign field loop.
chomp $visibility_mode;

if ($visibility_mode eq "") {$visibility_    = "invisible"};
if ($visibility_mode eq "no") {$visibility_  = "invisible"};
if ($visibility_mode eq "yes") {$visibility_ = "visible"};

$visibility_button ="<INPUT TYPE=\"button\" id=\"visibilityButton$key\" onClick=\"reverseVisibility($key);\" VALUE=\"$visibility_\" > ";
$delete_button ="<INPUT TYPE=\"button\" id=\"deleteButton$key\" onClick=\"DeleteDilemma($key);\" onClick=\"Eliminate($key);\" VALUE=\"Elimina\" > ";


if($choose =~ /(modify|delete)/){
 print "
 <TR BGCOLOR=\"\#e0e0e0\">
 <TD ALIGN=CENTER COLSPAN=2> 
 $modify_button
 <INPUT TYPE=button onClick=\" myForm.key.value='$key';myForm.search_field.value='all';myForm.action.value='Delete Record';this.form.submit( );\" VALUE=\"Eliminate card\" >
  $visibility_button
</TD>
 </TR>
 <td>";
}

$popup_image = "
<a href=\"javascript:openphotos('$server/$folder_/$img_file', 'thor', '500', '600');\">
 <img src='$server/$folder_/$img_file' align=left height='112' hspace='5' vspace='1' border=0></a>
";





$popup_URL = "<a href=\"../$ITEM_URL\"> <img src=\"$hermes_image_path/$img_file\" align=left height=112 hspace='5' vspace='1' border=0></a>";

$HTML_line .= $popup_URL;
$HTML_line .= '<b>' . $TAXONOMY_item_name . '</b>, ' . ', ' . $TAXONOMY_subtitle;
$HTML_line .= '<br><br>quantity: ' . $ITEM_quantity;
$HTML_line .= '<br>valuex: ' . $ITEM_price . ' bodova ';

$HTML_line .= '<br><br>last update: '. $Data_Ora . ' <br><br>';
$HTML_line =~ s/\s+/ /g; # substitute spaces to the single blank character

print "$HTML_line<hr></TABLE><P>";
################ end of COMPACT Record logic ################## 

 $HTML_line = " ";
 } # End of foreach record loop.
 

$which_search = $choose;
if ($rows_left_to_view > 0 && $show ne "no") {
     &next_page_buttons($rows_left_to_view);
}
 print "<p>";
 &html_footer;
} ### End of search_results












################ Advanced_search ##################
sub advanced_search {

&html_header;
 print<<HTML;
 <TABLE BORDER=0 CELLSPACING="0" CELLPADDING="3"><TR><TD COLSPAN=3><B>Search:</B><BR>
<INPUT TYPE="text" NAME="search_for" SIZE="40" 
onkeydown="if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13))
 {myForm.action.value='search compact';this.form.submit( );return false;} 
else return true;" >
<INPUT TYPE=button onClick="myForm.action.value='search compact';this.form.submit( );" VALUE="Cerca" >
</TD>
 </TR><TR> 
 <TD><B>Cerca solo nel campo:</B><BR>
<select NAME="search_field">
<OPTION VALUE="all">All 
<OPTION VALUE=1 >img_file
<OPTION VALUE=2 >ITEM_quantity
<OPTION VALUE=3 >TAXONOMY_item_name
<OPTION VALUE=4 >TAXONOMY_subtitle
</SELECT>
</TD>
<TD><B>Ordina per:</B><BR>
<select NAME="sort_on">
<OPTION VALUE=1 >img_file
<OPTION VALUE=2 >ITEM_quantity
<OPTION VALUE=3 >TAXONOMY_item_name
<OPTION VALUE=4 >TAXONOMY_subtitle
</SELECT></TD>
<TD><B>Visualizza:</B><BR><SELECT NAME="display">
<OPTION VALUE="rows">cards
<OPTION VALUE="columns">Tabellone
</SELECT>
</TD></TR></TABLE>
<input name="archive_mode" value="principale" type="hidden">
HTML

print<<HTML;
 <BR></TD></TR>
 <TR> 
<TD BGCOLOR="#e0e0e0"><CENTER> 
<INPUT TYPE=button onClick="myForm.action.value='nuova_card';this.form.submit( );" VALUE="new card" >

<INPUT TYPE=button onClick=" myForm.action.value='Logout';this.form.submit( );" VALUE="Logout" >
<input type=hidden name="user_search" value="">
<input type=hidden name="user_add" value="">
<input type=hidden name="user_modify" value="">
<input type=hidden name="user_delete" value="">
<INPUT TYPE="hidden" NAME="user" VALUE="$user">
<input type=hidden name="user_trans" value="">
<INPUT TYPE="hidden" NAME="$authenticate" VALUE="yes">
<INPUT TYPE="hidden" NAME="message" VALUE=''>
</CENTER>
</TD>
</TR>
</TABLE><P>
<center>
HTML
if ($user eq "$admin_user_name" && $authenticate eq "yes") { 
	print<<HTML;
	<INPUT TYPE=button onClick="myForm.action.value='User Manager';this.form.submit( );" VALUE="User Manager" >
HTML
};

print<<HTML;
</center>
<p>
<form name="myForm2">
<input type="hidden" value="Write" onClick="document.myForm.elements[0].focus(); "> 
</form>
HTML
print $copyright_note;
} # End of Advanced_search subroutine.



################### Unwrap ####################
sub unwrap{
 $temp = $_[0];
 $temp =~ s/<br>/\r\n/ig;
 
 $temp =~ s/\&agrave\;/à/g;;
 $temp =~ s/\&eacute\;/é/g;
 $temp =~ s/\&egrave\;/è/g;
 $temp =~ s/\&igrave\;/ì/g;
 $temp =~ s/\&ccedil\;/ç/g;
 $temp =~ s/\&ograve\;/ò/g;
 $temp =~ s/\&ugrave\;/ù/g;
 $temp =~ s/\&Agrave\;/à/g;;
 $temp =~ s/\&Eacute\;/É/g;
 $temp =~ s/\&Egrave\;/È/g;
 $temp =~ s/\&Igrave\;/Ì/g;
 $temp =~ s/\&Ccedil\;/Ç/g;
 $temp =~ s/\&Ograve\;/Ò/g;
 $temp =~ s/\&Ugrave\;/Ù/g;
 $temp =~ s/\&euro\;//g;
 $temp =~ s/\&sect\;/§/g;
 $temp =~ s/\&copy\;/©/g;
 #$temp =~ s/(\d+)"/\1\&quot\;/g;

 $temp =~ s/\|//g;
 return ($temp);
}
############# end of Unwrap ####################





##########################
# ROUTINE > OPEN FILE #
##########################
sub Open_File
{
 # assign input parametres
 $FileName = $_[0];
 $FileModo = $_[1];
 $PerlFile = $_[2];
 $StringaFile = $FileModo.$FileName;
 unless (open($PerlFile, "$StringaFile"))
 {
 if (!(-e "$FileName"))
  { die ("File $FileName does not exist.\n"); }
 elsif (!(-r "$FileName"))
 
  { die ("You are not allowed to read $FileName.\n"); }
 else
  { die ("$FileName cannot be opened or create\n"); }
 }
}

###########################
#| end of OPEN FILE ROUTINE
###########################

############### Documents Screen ################
sub print_documents_page{
&merge_print;
$title="Documents Screen";
&html_header($title);
print "<a href=\"$image_path/lettera_.rtf\">Lettera</a><br><br>";
print "<a href=\"$image_path/certificato_.rtf\">Certificato di Possesso</a><br><br>";
&html_footer;
}
############# end of Documents Screen ################


################### Filter ####################
sub filter{
 $temp = $_[0];


# $temp =~ s/\'/\&\#0039\;/g;
 $temp =~ s/\(/\&\#0040\;/g;
 $temp =~ s/\)/\&\#0041\;/g;
 $temp =~ s/\*/\&\#0042\;/g;
 $temp =~ s/\+/\&\#0043\;/g;
# $temp =~ s/\,/\&\#0044\;/g;
# $temp =~ s/\-/\&\#0045\;/g;
# $temp =~ s/\./\&\#0046\;/g;
# $temp =~ s/\:/\&\#0058\;/g;
# $temp =~ s/\;/\&\#0059\;/g;
# $temp =~ s/\=/\&\#0061\;/g;
# $temp =~ s/\>/\&\#0062\;/g;
 $temp =~ s/\?/\&\#0063\;/g;
# $temp =~ s/\@/\&\#0064\;/g;
 $temp =~ s/\[/\&\#0091\;/g;
 $temp =~ s/\\/\&\#0092\;/g;
 $temp =~ s/\]/\&\#0093\;/g;
 $temp =~ s/\^/\&\#0094\;/g;
# $temp =~ s/\_/\&\#0095\;/g; 
 $temp =~ s/\`/\&\#0096\;/g; 
# $temp =~ s/\{/\&\#00123\;/g; 
 $temp =~ s/\|/\&\#00124\;/g; 
# $temp =~ s/\}/\&\#00125\;/g; 

 $temp =~ s/à/\&agrave\;/g;;
 $temp =~ s/é/\&eacute\;/g;
 $temp =~ s/è/\&egrave\;/g;
 $temp =~ s/ì/\&igrave\;/g;
 $temp =~ s/ç/\&ccedil\;/g;
 $temp =~ s/ò/\&ograve\;/g;
 $temp =~ s/ù/\&ugrave\;/g;
 $temp =~ s/à/\&Agrave\;/g;;
 $temp =~ s/É/\&Eacute\;/g;
 $temp =~ s/È/\&Egrave\;/g;
 $temp =~ s/Ì/\&Igrave\;/g;
 $temp =~ s/Ç/\&Ccedil\;/g;
 $temp =~ s/Ò/\&Ograve\;/g;
 $temp =~ s/Ù/\&Ugrave\;/g;
# $temp =~ s//\&euro\;/g;
 $temp =~ s/§/\&sect\;/g;
 $temp =~ s/©/\&copy\;/g;
 
 $temp =~ s/\'/\&\#0039\;/g;
 $temp =~ s/°/\&deg\;/g;
 
 $temp =~ s/\n/<br>/g;
 $temp =~ s/\r/<br>/g;
 $temp =~ s/<br><br>/<br>/g;

 $temp =~ s/\s+/ /g;
 $temp =~ s/ \./\./g;
 $temp =~ s/ \,/\,/g;
 $temp =~ s/\'//g;
 
 foreach $removed (@filter) { $temp =~ s/$removed/\?\$\%\&/gi; }
 if ($filter_html_tags eq "yes") { $temp =~ s/<[^>]*>//gs; }
 return ($temp);
}
############# end of Filter ####################


 



############## HTML upload Header #################

sub html_upload_header{
if($set_cookie eq "") { print $q->header; }
$set_cookie = "";
if($use_external_html eq "yes") { 
%external_variables = (title=>$title, message=>$message,);
print html_template("$external_html_header", \%external_variables); 
&form_header;
} else {
 print<<HTML;
<HTML><HEAD>
 <TITLE>$db_name - $_[0]</TITLE>
 </HEAD><BODY BGCOLOR="#FFFFFF">
 <script language="javascript" src="$image_path/js/global.js"></script>	
	<script language="javascript" src="$image_path/js/style.js"></script>
 <CENTER><B>
 $db_name
 </B><p><FONT SIZE=3 FACE="ARIAL" COLOR=RED><B>$_[1]</B></FONT></CENTER><P>
 <CENTER>
 <TABLE BORDER=1 WIDTH="$table_width" CELLSPACING="0" CELLPADDING="3">
 <TR> 
 <TD BGCOLOR="#e0e0e0"> 
 <CENTER> 
 <B>$_[0]</B>
 </CENTER>
 </TD>
 </TR>
 <TR> 
 <TD align=middle><BR>

<FORM enctype="multipart/form-data" METHOD="post" ACTION="$upload_2_URL">
HTML

}
}

############## end of HTML upload Header #################



sub myerr {
 print "Error: \n";
 print @ERRORS;
 exit 0;
}






















############### backup_adonis ################
sub backup_adonis{
# Author : John Jan Popovic
# Date : July, 
# Purpose: This procedure performs DBase adonis Backup



# Create %adonis_hash
 %DBADONIS_hash = ();
 @DB_line = ();
 $homedir = $root_ ;
 $database= "$homedir/$folder_/hermes_.txt"; 
 open (DB, "$database") || die "Error opening database. $! $database \n";
 @DB_line = <DB>;
 close (DB);

foreach $adonis_record (@DB_line){
   chomp $adonis_record;
   @altro =();
  ($key,$dbuser,$when_added,@altro) = split(/\|/, $adonis_record);
  $DBADONIS_hash{$key} = $adonis_record;
} ;
# end of creating of %adonis_hash

 $date_time = &get_date;
 $date_time =~ s/at/~/g;
 ($date,$day_time) = split (/\~/,$date_time);
 $date =~ s/[\s]//g;
 $date =~ s/[\/]/~/g;
 ($mm,$dd,$yy) = split (/\~/,$date);
 $backupdb = $root_ . "/backup/arhiv_hermes" . "$yy$mm" ."_$dd" . ".txt";

  # save ADONIS records
  my @ADONIS_line = ();
  @ADONIS_line = values (%DBADONIS_hash);

 flock DATABASE, $EXCLUSIVE;
 open (DATABASE, ">$database") or die "Error opening file: $!\n";

  foreach $adonis_line (@ADONIS_line){ 
    chomp $adonis_line;
    print DATABASE "$adonis_line\n";
  }

  # backup ADONIS records
 flock DATABASE, $EXCLUSIVE;
 open (DATABASE, ">$backupdb") or die "Error opening file: $!\n";

  foreach $adonis_line (@ADONIS_line){ 
    chomp $adonis_line;
    print DATABASE "$adonis_line\n";
  }

  close (DATABASE);
  flock DATABASE, $UNLOCK;
  # end of saving ADONIS backup records

  # save ADONIS records
  @ADONIS_line = ();
  @ADONIS_line = values (%DBADONIS_hash);

 flock DATABASE, $EXCLUSIVE;
 open (DATABASE, ">$database") or die "Error opening file: $!\n";

  foreach $adonis_line (@ADONIS_line){ 
    chomp $adonis_line;
    print DATABASE "$adonis_line\n";
  }

  close (DATABASE);
  flock DATABASE, $UNLOCK;
  # end of saving ADONIS db records



} # End of Backup_adonis subroutine.






########### Load_DBASE CAMPI #######
# Purpose Load database adonis
sub Load_DBASE_adonis{
 
 @DB_line = ();
 $homedir = $root_ ;
 $database= "$homedir/$folder_/hermes_.txt"; 

 open (DB, "$database") || die "Error opening database. $! $database \n";
 @DB_line = <DB>;
 close (DB);

} # End of Load_DBASE subroutine.
















































































############### View Proposal Screen ################
sub print_layout_page{
#	View Proposal Screen
#	and publish the corresponding static web page

 ($key,$dbuser,$when_added,@field_vals) = split(/\|/, $results[0]); 

my @category_vox = ();



# assign the values to the variables of each field in the record
$x=0;
foreach $field (@fields){
 ${$field} = &unwrap($field_vals[$x]);
 $item = ${$field};
 $item = filter($item);
 ${$field} = $item;
 $x++;
} 
$img_file =$ICONOGRAFIA_file_web; 
# End of foreach assign field loop.

$rendering_COMPLEX ="$rendering_mode~";
($rendering_mode,$disqus_mode,@altro ) =split(/\~/,$rendering_COMPLEX);
$rendering_mode = "classic" if($rendering_mode eq "");
$disqus_mode = "absent" if($disqus_mode eq "");

$TAXONOMY_cathegories =~ s/\<br\>/\~/g; # break to tilde
$TAXONOMY_cathegories_broken = $TAXONOMY_cathegories;
$TAXONOMY_cathegories_broken =~ s/\~/\<br\>/g; # tilde_to_break

$readonly ="";
(@img) = split (/\,/,$ICONOGRAFIA_gallery);
$path_elements = $ITEM_URL;
$path_elements =~ s/\s//g; # remove spaces
$gt_ ='&#0062;';
$path_elements =~ s/$gt_/\*/g;
$path_elements =~ s/\//\*/g;
$path_elements =~ tr/[A-Z]/[a-z]/; #Change everything to lower case

my @path_=();
@path_= split (/\*/,$path_elements);
$nn=@path_;
for($ii=0; $ii<=$nn; $ii++ ) {
	@path_[$ii] =~ s/\W/_/g;
}


my $home = $root_ . "/@path_[0]";
 $name_element1=@path_[1];
 $name_element2=@path_[2];
 $test_file_name = "$home/test.txt";
 
 if (open (TEST, "+>$test_file_name")){
 $err=0;
 close (TEST);
 } else {
 mkdir ($home, 0777);
 }
 
 $basic_name = $name_element1 . $name_element2;
 $basic_name =~ s/\W/_/gi;
 $file_name = $basic_name . ".html";
 $template_file_name = "$home/$basic_name/template.html";
 $web_page_name = "$home/$basic_name/index.php";
 $url_folder = "@path_[0]/$basic_name";


 
### create slideshow swf control files 
 $page_media_folder = "$home/$basic_name";
 $media_folder = "./$basic_name";
 $page_media_file1 = "$page_media_folder/" . "images.xml";
 
 if (open (MEDIA1, "+>$page_media_file1")){
 $err=0;
 } else {
 mkdir ($page_media_folder, 0777);
 }
 


$XML_FILE = qq~
<!-- 
'timer' :: number of seconds between each image transition
'order' :: how you want your wopere displayed. choose either 'sequential' or 'random'
'looping' :: if the slide show is in sequential mode, this stops the show at the last image (use 'yes' for looping, 'no' for not)
'fadeTime' :: velocity of image crossfade. Increment for faster fades, decrement for slower. Approximately equal to seconds.

'xpos' :: _x position of all loaded clips (0 is default)
'ypos' :: _y position of all loaded clips (0 is default)
-->
<gallery timer="5" order="sequential" fadetime="2" looping="yes" xpos="0" ypos="0">
~;

foreach $slide (@img) {
 if ($slide ne "") {
 	$XML_FILE .= qq~ <image path="$server/hermes/images/$slide" />\n~;
 }
}

$XML_FILE .= qq~
</gallery>
~;

 open (MEDIA1, "+>$page_media_file1") or "Error creating MEDIA $page_media_file1 $!\n";
 binmode MEDIA1;
 print MEDIA1 $XML_FILE; 
 close (MEDIA1);

 $adonis_folder = "$root_/$folder_";
 
# &copy("$adonis_folder/adonis_header.html", "$page_media_folder/adonis_header.html") or die("cannot copy adonis_header.html to folder: $page_media_folder\b"); 


 
### end of slideshow swf control files 
 
 
 if (open (HTML, "+>$template_file_name")){
 $err=0;
 } else {
 mkdir ($home, 0777);
 }
 
 open (HTML, "+>$template_file_name") or "Error creating HTML $template_file_name $!\n";
 open (PHP, "+>$web_page_name") or "Error creating PHP $web_page_name $!\n";
 binmode HTML;
 binmode PHP;

	 $count_changes = chmod 0755, $template_file_name, $web_page_name;

 if ($count_changes == 2){
 $err=0;
 } else {
 print "The mode 755 has NOT been successfully applied to the files ! \n";
 }



$margin =0;
$header_menu = qq||;
$logo = qq|<a href="$web_site"><img src="../../adonis_section/logo_icon.png" border="0" ></a>|; 
 	 
 if ($header_type =~ /menu/ ) {
 $logo = qq||;
 	 $header_menu = qq|include("adonis_header.html"); |; 
 };

$metacategoria_normalised = $TAXONOMY_metacathegory;
$metacategoria_normalised =~ s/\s//g;
$metacategoria_normalised =lc($metacategoria_normalised);

(@category_vox) = split(/\~/,$TAXONOMY_cathegories); 
$n_cathegories = @category_vox;




$WEB_PAGE = qq~<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://www.w3.org/1999/xhtml/vocab">
  <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
	<title>$TAXONOMY_metacathegory $TAXONOMY_item_name</title>
	<LINK REL="SHORTCUT ICON" HREF="http://1stmuse.com/favicon.gif">
 
	
	<link rel="stylesheet" type="text/css" href="../../adonis_section/adonis_styles.css">

	<script type="text/javascript" src="../../adonis_section/Animator.js"></script>
	<script type="text/javascript" src="../../adonis_section/Navigation.js"></script>
	<script type="text/javascript" src="../../adonis_section/Flash.js"></script>
	<script type="text/javascript" src="../../adonis_section/flashobject.js"></script>
	<script type="text/javascript" src="../../adonis_section/Scripts.js"></script>


 <style type="text/css">
<!--
.style4 {color: #488AE1}
.style5 {color: #EF1E00}
-->
 </style>
</head>
<body bgcolor="#ffffff" leftmargin="$margin" topmargin="$margin">
<table width="87%" border="0" align="left" cellpadding="0" cellspacing="0">
 <tr>
 <td width="15%" valign="top"><table border="0" cellpadding="0" cellspacing="0" width="195">
 <tbody>

 <tr>
 <td colspan="2"><img src="../../adonis_section/blank.gif" height="2" width="1">$logo</td>
 </tr>
 <tr>
 <td colspan="2"></td>
 </tr>
 <tr>
 <td width="15">&nbsp;</td>
 <td class="lefttext" width="180">$TAXONOMY_metacathegory</td>
 </tr>
 <tr>
 <td colspan="2"><img src="../../adonis_section/blank.gif" height="5" width="1"></td>
 </tr>
~;


$TAXONOMY_cathegory =~ s/^\s+//; # - trimming leading whitespace
$TAXONOMY_cathegory =~ s/\s+$//; # - trimming trailing whitespace

for ($ii=0; $ii<$n_cathegories; $ii++ ) { 
	 $vox =$category_vox[$ii];
	 $vox =~ s/^\s+//; # - trimming leading whitespace
 $vox =~ s/\s+$//; # - trimming trailing whitespace
 if ($vox =~ /\>/) {
 	$vox_complex=$vox;
 	($vox,$link_url) = split (/\>/,$vox_complex);
 	$link_url =~ s/^\s+//; # - trimming leading whitespace
 $vox =~ s/\s+$//; # - trimming trailing whitespace
 }
 else {
 	$link_url = "$frontend_script?operation=nadji&find_=$vox&campo_=5&lingua_=$localisation_language";
 }
 
	 if ($TAXONOMY_cathegory eq $vox) {
 $WEB_PAGE .= qq~	 
 <tr>
 <td width="15"><img src="$web_site/section_files/red_square_small.gif" height="12" width="8"></td>
 <td class="blueboldtext" width="180">$vox</td>
 </tr>
 ~;
	 } else {
 $WEB_PAGE .= qq~	 
 <tr>
 <td width="15"><img src="$web_site/section_files/blank.gif" height="12" width="8"></td>
 <td class="lefttext" width="180"><a href="$link_url">$vox</a></td>
 </tr>
 ~;
 }
} 


$WEB_PAGE .= qq~
 <tr>
 <td colspan="2"><img src="../../adonis_section/blank.gif" height="8" width="1"></td>
 </tr>
 <tr>
 <td colspan="2">
 <table border="0" cellpadding="0" cellspacing="0" width="145">
 <tbody>
 <tr>
  <td bgcolor="#7b8394"><img src="../../adonis_section/blank.gif" height="1" width="145"></td>
 </tr>
 </tbody>
 </table></td>
 </tr>
 </tbody>
 </table></td>
 <td width="85%" rowspan="2" valign="top"><table bgcolor="#ebedf2" border="0" cellpadding="0" cellspacing="0" width="822">
 <tbody>
 <tr bgcolor="#F9F9F9">
 <td height="20" colspan="3" align="left" class="titlebar1">
 <div class="blueboldtext" align="right">$ITEM_chapter &nbsp;</div></td>
 </tr>
 <tr bgcolor="#e6e6e6">
 <td colspan="3" class="titlebar1" align="left" height="27">
 <img src="../../adonis_section/news_bar.gif" width="745" height="10" vspace="8">
 </td>
 </tr>
 <tr>
 <td align="center" bgcolor="#F9F9F9" height="287" valign="top" width="12"> </td> 
 <td align="left" bgcolor="#f9fafb" valign="top" width="687" align="left" bgcolor="#f9fafb"><span class="clienttitle">
 $TAXONOMY_item_name<br></span>
 <span class="darkbluetext"> $TAXONOMY_subtitle<br><br>
~;


# rendering choice
$CLASSIC_WEB_PAGE = qq~<img src="$hermes_image_path/$img[0]" border="0" vspace="3" width="450">~;

if ($img[0] eq '') {	$CLASSIC_WEB_PAGE = '<br>';	};



$CLASSIC_BANNER = qq~<img src="$hermes_image_path/$img[0]" border="0" vspace="3" width="700">~;



if ($rendering_mode eq "classic" ) { 
	$WEB_PAGE .= $CLASSIC_WEB_PAGE;
};

 if ($rendering_mode eq "flash" ) {
 	 $WEB_PAGE .= $SLIDESHOW_WEB_PAGE; 
 };


 if ($disqus_mode eq "absent" ) {
 	$DISQUS_SCRIPT = ''; 
 };
# end of rendering choice

$update_URL = "$server/$script_name?operation=edit_record&find_=$key"; 
$aggiornamento = "<a href=\"$update_URL\" title=\"Extranet backdoor\"><img src=\"$image_path/extranet.gif\" border='0' alt='Extranet backdoor' vspace='8'></a>";

$ITEM_description = filter($ITEM_description);

$WEB_PAGE .= qq~ 
 <br>
 </span></p>
 <p class="darkbluetext"><b>$TAXONOMY_item_name</b><br>
 <span class="darkbluetext">$ITEM_description

<br>

</span></p>
<br>
</td>
 <td align="left" bgcolor="#ebedf2" valign="top" width="23">&nbsp;</td>
 </tr>
 </tbody>
 </table></td>
 </tr>

 <tr>
 <td align="center" valign="top">
~;


$nn=@img;
if ($rendering_mode !~ /banner/i){ 
 for ($ii = 1; $ii <= $nn; $ii++) { 
 	 if ($img[$ii] ne ""){ 
 $WEB_PAGE .= qq~ 
 <a href="javascript:openphotos('$hermes_image_path/$img[$ii]', 'thor', '500', '600')"> 
 <img src="$hermes_image_path/$img[$ii]" align="top" halign="center" border="0" hspace="2" vspace="2" width="100"></a>
 <br>
 <br>
 ~;
 }
 } 
 }
 
 
$CONTROL_buttons = qq~
<center>
<hr>
<FORM name="myForm" METHOD="post" ACTION="$script_name">
<INPUT TYPE="hidden" NAME="action" VALUE="Main">
<INPUT TYPE=HIDDEN NAME=key value="">
<INPUT TYPE=button onClick="myForm.action.value='Main Menu';this.form.submit();" VALUE="Main Menu" >
<INPUT TYPE=button onClick="myForm.action.value='Logout';this.form.submit();" VALUE="Logout" >
<input type=hidden name="user_search" value="">
<input type=hidden name="user_add" value="">
<input type=hidden name="user_modify" value="">
<input type=hidden name="user_delete" value="">
<INPUT TYPE="hidden" NAME="user" VALUE="admin">
<input type=hidden name="user_trans" value="">
<INPUT TYPE="hidden" NAME="authenticate" VALUE="yes">
<INPUT TYPE="hidden" NAME="message" VALUE=''>


</FORM>
</CENTER>
~;


$WEB_PAGE_FOOTER = qq~
<br>
 </td>
 </tr>
 <tr>
 <td colspan="2" valign="top">
 <div id="bottomnav">
 <ul>
 <li><a href="$server/privacy/">Privacy Statement</a></li>
 <li><a href="$server/terms/">Terms of use</a></li>
 <li>Copyright &copy; MMXIII Etranet, web crafted by © JJP 1stmuse.com</li>
 $aggiornamento
 </ul>
 </div>
 </td>
 </tr>

</table>
</BODY>



 </HTML>
~;
# end of WEB_PAGE_FOOTER


$PHP_PAGE = qq~
<?
$header_menu
// assign parametric data
\$context0 ="@path_[0]";
\$context1 ="@path_[1]";
\$context2 ="@path_[2]";
\$categorie ="$TAXONOMY_cathegories";
\$categoria ="$TAXONOMY_cathegory";

\$compressed_categorie = ereg_replace(" ", "", \$categorie); # trim spaces
\$compressed_categorie = ereg_replace("\W", "", \$compressed_categorie); # trim strange characters
\$compressed_categorie = strtolower(\$compressed_categorie);
\$compressed_categorie = ereg_replace("[^a-z0-9\;]", "", \$compressed_categorie); # trim italian characters

\$ccategoria = ereg_replace(" ", "", \$categoria); # trim spaces
\$ccategoria = ereg_replace("\W", "", \$ccategoria); # trim strange characters
\$ccategoria = strtolower(\$ccategoria);
\$ccategoria = ereg_replace("[^a-z0-9\;]", "", \$ccategoria); # trim italian characters

include("template.html"); 

?>
~;
# end of $PHP_PAGE


$CONTROL_PAGE_FOOTER = qq~
 <br>

 </td>
 </tr>
 <tr>
 <td colspan="2" valign="top">
 <div id="bottomnav">
 <ul>
 <li><a href="http://1stmuse.com/privacy.php">Privacy Statement</a></li>
 <li><a href="http://1stmuse.com/terms.php">Terms of use</a></li>
 <li>Copyright &copy; MMXIII Etranet, web crafted by © JJP 1stmuse.com</li>
 </ul>
 </div>
 </td>
 </tr>
 <tr>
 <td colspan="2" valign="top">

$CONTROL_buttons 

 </td>
 </tr>
</table>
</BODY> </HTML>
~;
# end of CONTROL_PAGE_FOOTER


$WEB_PAGE_0 = $WEB_PAGE . $WEB_PAGE_FOOTER;
$CONTROL_PAGE = $WEB_PAGE . $CONTROL_PAGE_FOOTER;

 print HTML $WEB_PAGE_0;
 print PHP $PHP_PAGE;
 
 close (HTML);
 close (PHP);

 $WEB_PAGE =~ s/\n//g;
 $WEB_PAGE =~ s/\r//g;
 $WEB_PAGE =~ s/\s+/ /g;
 

# print $CONTROL_PAGE;

}
############# end of VIEW Screen ################





sub jump_to_url {

 $jump_url = $web_site . $ITEM_url;
 print "Location: $jump_url\n\n";
 
}














################ Default Screen ##################
sub print_default {

&html_header;
print<<HTML;
 <TABLE BORDER=0 CELLSPACING="0" CELLPADDING="3"><TR><TD COLSPAN=3><B>Search:</B><BR>
<INPUT TYPE="text" NAME="search_for" SIZE="40" 
 onkeydown="if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {myForm.action.value='search compact';this.form.submit( );return false;} 
 else return true;" >
<INPUT TYPE=button onClick="myForm.action.value='search compact';this.form.submit( );" VALUE="search" >
<br>
<input name="archive_mode" value="principale" type="hidden">
HTML



print<<HTML;
</TD>
 <TD width="213"></TD>
</TR> 

<input type=hidden NAME="search_field" VALUE="all">
<input type=hidden NAME="sort_on" VALUE="5">
<input type=hidden NAME="display" VALUE="rows">
</TABLE>

<br>
 <BR></TD></TR>
 <TR> 
<TD BGCOLOR="#e0e0e0"><CENTER> 

<INPUT TYPE=button onClick="myForm.action.value='nuova_card';this.form.submit( );" VALUE="New card" >

<INPUT TYPE=button onClick="myForm.action.value='Backup';this.form.submit();" VALUE="Backup" > 
<INPUT TYPE=button onClick=" myForm.action.value='Logout';this.form.submit( );" VALUE="Logout" >
<input type=hidden name="user_search" value="$user_search">
<input type=hidden name="user_add" value="$user_add">
<input type=hidden name="user_modify" value="$user_modify">
<input type=hidden name="user_delete" value="$user_delete">
<INPUT TYPE="hidden" NAME="user" VALUE="$user">
<input type=hidden name="user_trans" value="$user_trans">
<INPUT TYPE="hidden" NAME="authenticate" VALUE="$authenticate">
<INPUT TYPE="hidden" NAME="message" VALUE=''>
</CENTER>
</TD>
</TR>
</TABLE><P>
<center>
HTML

if ($user eq "$admin_user_name" && $authenticate eq "yes") { 
	print<<HTML;
	<INPUT TYPE=button onClick="myForm.action.value='User Manager';this.form.submit( );" VALUE="User Manager" >
HTML
};

print<<HTML;
</center>
<p>

<form name="myForm2">
<input type="hidden" value="Write" onClick="document.myForm.elements[0].focus(); "> 
</form>
HTML
print $copyright_note;
} # End of print_default subroutine.





########### Search & Sort Database #############
sub search_db{
 my $search_for = $_[0];
 $search_for = &filter($search_for);

 (@search_for_vals) = split(/\s+/, $search_for);
 $search_atoms =@search_for_vals;
 unless (-e $database){ open (DB, ">$database") || die "Error creating database. $!\n"; }
 else { open (DB, "$database") || die "Error opening database. $!\n"; }
 while(<DB>){
 if($search_field =~ /all/i){
 if ($search_atoms <= 1) { if(/$search_for/oi) {push @results, $_};};
 if ($search_atoms == 2) { if((/$search_for_vals[0]/oi) && (/$search_for_vals[1]/oi)) {push @results, $_};};
 if ($search_atoms == 3) { if((/$search_for_vals[0]/oi) && (/$search_for_vals[1]/oi)&& (/$search_for_vals[2]/oi)) {push @results, $_};};
 if ($search_atoms == 4) { if((/$search_for_vals[0]/oi) && (/$search_for_vals[1]/oi)&& (/$search_for_vals[2]/oi)&& (/$search_for_vals[3]/oi)) {push @results, $_};};
 if ($search_atoms >= 5) { if((/$search_for_vals[0]/oi) && (/$search_for_vals[1]/oi)&& (/$search_for_vals[2]/oi)&& (/$search_for_vals[3]/oi)&& (/$search_for_vals[4]/oi)) {push @results, $_};};
 } else {
 ($key,$dbuser,$when_added,@field_vals) = split(/\|/, $_);
 if($field_vals[$search_field] =~ /$search_for/oi){ push @results, $_};
 } # End of else.
 } # End of while.
 close (DB);
 foreach $curr (@results){
 ($key,$dbuser,$when_added,@rest) = split(/\|/, $curr);
 $max = @fields;
 $code='$record{$key} = { key => "$key", ';
 $code .='dbuser => "$dbuser", ';
 $code .='when_added => "$when_added", ';
 for($x=0;$x<$max;$x++){
 $code .= "\$fields[$x] => \"\$rest[$x]\",\n";
 } # End of for
 $code .= '};';
 eval $code;
 } # End of foreach curr
 $sort =10; # 10 is taxonomy chapter
 $sort_on = "$fields[$sort]";
 @results=();
 foreach $rp (sort { $a->{$sort_on} cmp $b->{$sort_on} } values %record){
 $new_rec = $rp->{key};
 $new_rec .= "\|$rp->{dbuser}";
 $new_rec .= "\|$rp->{when_added}";
 for($x=0;$x<$max;$x++){
 $new_rec .= "\|$rp->{$fields[$x]}";
 } # End of for
 push @results, $new_rec;
 } # End of foreach
$count = @results;
if($count < 1){ 
 $message="No Matches Found For '$search_for'";
 $title="Main Menu";
 &print_default($title, $message); 
### intervention
 exit;
}
$total_row_count = @results;
if ($total_row_count > $max_records_returned) {
$hits_seen = $q->param(new_hits_seen);
 for ($i = 1; $i <= $hits_seen; $i++)
 { $seen_row = shift (@results); }
 $length_of_database_rows = @results;
 for ($i = $length_of_database_rows-1; $i >= $max_records_returned; $i--)
 { $extra_row = pop (@results); }
 $new_hits_seen = $hits_seen + @results; } else { $show="no"; }
} # End of search_db subroutine.












################# Add New RECORD ##################
sub print_add_screen{
$title="New web page record in the archive";

$key = time();
$dbuser="$admin_user_name";
$when_added = &get_date;

# ($key,$dbuser,$when_added,@field_vals) = split(/\|/, $results[0]); 

&html_header($title);

# assign the values to the variables of each field in the record
$x=0;
foreach $field (@fields){
 ${$field} = &unwrap($field_vals[$x]);
 $x++;
} 
$img_file =$ICONOGRAFIA_file_web; 
# End of foreach assign field loop.


$TAXONOMY_cathegories =~ s/\<br\>/\~/g; # break to tilde
$TAXONOMY_cathegories_broken = $TAXONOMY_cathegories;
$TAXONOMY_cathegories_broken =~ s/\~/\n/g; # tilde_to_break



$readonly ="";
(@file_web) = split (/\,/,$ICONOGRAFIA_gallery);

print<<HTML;

<style type="text/css">
<!--
.Stile1 {
	color: #FFFFFF;
	font-weight: bold;
}
-->
 </style>
</head>
<SCRIPT LANGUAGE="JavaScript">
<!-- This script generates automatic date field -->
var timerID = null;
var timerRunning = false;

var old_url ="$ITEM_URL";

function stopclock (){
 if(timerRunning)
 clearTimeout(timerID);
 timerRunning = false;

}




function showdate () {


// Array of day names
var dayNames = new Array();
dayNames[0] = "Sunday";
dayNames[1] = "Moday";
dayNames[2] = "Tuesday";
dayNames[3] = "Wednesday";
dayNames[4] = "Thursday";
dayNames[5] = "Friday";
dayNames[6] = "Saturday";

// Array of month Names
var monthNames = new Array();
monthNames[0] = "January";
monthNames[1] = "February";
monthNames[2] = "March";
monthNames[3] = "Openl";
monthNames[4] = "May";
monthNames[5] = "June";
monthNames[6] = "July";
monthNames[7] = "August";
monthNames[8] = "September";
monthNames[9] = "October";
monthNames[10] = "November";
monthNames[11] = "December";

// Array of Dates
var dateNames = new Array();
for(i = 1 ; i < 10 ; i++)
 dateNames[i]="0"+i;
for(i = 10 ; i < 32 ; i++)
 dateNames[i]=i;


// Elements of Date object assigned to variables
var now = new Date();
var day = now.getDay();
var month = now.getMonth();
var year = now.getFullYear();
var date = now.getDate();


 var hours = now.getHours();
 var minutes = now.getMinutes();
 var seconds = now.getSeconds()
// var timeValue = "" + ((hours >12) ? hours -12 :hours)
 var timeValue = "" + hours
 timeValue += ((minutes < 10) ? ":0" : ":") + minutes
// timeValue += (hours >= 12) ? " p.m." : " a.m."


// Code to assign fully formatted date and time values(e.g., Lunedì, 23/Luglio/2001)
 _date = dateNames[date] + "/" + monthNames[month] +"/" + year;
 document.myForm.Data_Ora.value = _date + " at " + timeValue;
// document.myForm.A_Delivery_date.value = document.myForm.Invoice_date.value;
// document.myForm.A_Delivery_time.value = timeValue;


 timerID = setTimeout("showdate()",1000000);
 timerRunning = true;
}

function startclock () {

 // Make sure the clock is stopped

 stopclock();
 showdate();
}


function change_image() {
 var GALLERY_ = new Array();
		GALLERY_CX = document.myForm.ICONOGRAFIA_gallery.value;
		inputstr = GALLERY_CX;
 GALLERY_CX = inputstr.replace(/\^\\,/,""); // Regex substitute leading comma into nil
 document.myForm.ICONOGRAFIA_gallery.value =GALLERY_CX;
		GALLERY_ = GALLERY_CX.split(',');
		 
 document.img0.src = "$hermes_image_path/" + GALLERY_[0];
 document.img1.src = "$hermes_image_path/" + GALLERY_[1];
 document.img2.src = "$hermes_image_path/" + GALLERY_[2];
 document.img3.src = "$hermes_image_path/" + GALLERY_[3];
 document.img4.src = "$hermes_image_path/" + GALLERY_[4];
 document.img5.src = "$hermes_image_path/" + GALLERY_[5]; 
 document.img6.src = "$hermes_image_path/" + GALLERY_[6];
 document.img7.src = "$hermes_image_path/" + GALLERY_[7]; 
 
 
 document.myForm.ICONOGRAFIA_file_web.value = GALLERY_[0];
}



var myWind = ""

function doNew_x() {
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {

 pics = window.open("$script_name?operation=upload_1x","subWindow","HEIGHT=200,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}



function setURL() {
 var CONTEXT_ = new Array();
 CONTEXT_CX = document.myForm.TAXONOMY_context_path.value;
 inputstr = CONTEXT_CX;
 CONTEXT_CX = inputstr.replace(/\\ /gi,""); // Regex substitute -- space into nil	.toLowerCase().replace(/\b[a-z]/g	
 inputstr = CONTEXT_CX;
 CONTEXT_CX = inputstr.toLowerCase();
 CONTEXT_ = CONTEXT_CX.split('>');
 nn = CONTEXT_.length;
 
 folder = CONTEXT_[0]; 
 name_element1 = CONTEXT_[1];

 var inputstr = name_element1;
 title_name = document.myForm.TAXONOMY_item_name.value;
 if (title_name != "") {inputstr =title_name};
 inputstr = inputstr.replace(/\\u017D/g,"z");
 inputstr = inputstr.replace(/\\u017E/g,"z");
 inputstr = inputstr.replace(/\\u0161/g,"s");
 inputstr = inputstr.replace(/\\u0160/g,"s");

 inputstr = inputstr.replace(/\\u010C/g,"c");
 inputstr = inputstr.replace(/\\u010D/g,"c");
 inputstr = inputstr.replace(/\\u0106/g,"c");
 inputstr = inputstr.replace(/\\u0107/g,"c");

 inputstr = inputstr.replace(/\\u0111/g,"d");
 inputstr = inputstr.replace(/\\u0110/g,"d");
 name_element1 = inputstr.replace(/\\W\+/gi,"_"); // Regex substitute -- strange chars into underscore
 name_element1 = name_element1.toLowerCase(); 

 //document.myForm.TAXONOMY_context_path.value =folder + ">" + name_element1;
 
 web_page_URL = folder + "/" + name_element1;
 document.myForm.ITEM_URL.value = web_page_URL; 



 if ((web_page_URL === old_url) || (old_url === "url") ) {
    document.myForm.update_mode.value ='Eliminate';
 }
 else {
    document.myForm.update_mode.value ='conserve';
 }
 

 
};


<!-- end of automatic date field -->
</SCRIPT>


<BODY bgcolor="white" onLoad="startclock(); timerONE=window.setTimeout">

 <script language="javascript" src="$image_path/js/global.js"></script>	
	<script language="javascript" src="$image_path/js/style.js"></script>


<script type="text/javascript">

// Copyright John J. Popovic, 2007 1stmuse.com
var s0, s, tax1= 0.;

function Modify_Classe(form) {
	form.Classe.value = form.Classe_m.value;
}

function Modify_Modalita_pagamento(form) {
	form.Modalita_pagamento.value = form.Modalita_pagamento_m.value;
}

function Modify_operazione(form) {
	form.operazione.value = form.operazione_m.value;
}

function Modify_Provenienza(form) {
	form.Provenienza.value = form.Provenienza_m.value;
}

<!-- This script locksout <CR> i.e. Enter Key and requires the SUBMIT button to be clicked to send form -->
<!-- Begin

function tabOnEnter (field, evt) {
      var keyCode = document.layers ? evt.which : document.all ? 
     evt.keyCode : evt.keyCode;
      if (keyCode != 13)
        return true;
      else {
        getNextElement(field).focus();
        return false;
      }
}


function getNextElement (field) 
{
    var frm = field.form;
    var again = false;
    for (var e=0;e<frm.length;e++)
    {
      if(frm[e].type!="hidden" && again) return frm.elements[e];
      if (field==frm[e]) again=true;
    }
}

// JavaScript Order Calculator
// Copyright John J. Popovic, 2004 1stmuse.com
var s0, s, tax1= 0.;

function twoPlaces(amount) {
	// returns the amount in the .99 format
        round(amount,2);
	return (amount == Math.floor(amount)) ? amount + '.00' : (  (amount*10 == Math.floor(amount*10)) ? amount + '0' : amount);
	}

function round(number,X) {
	// rounds number to X decimal places, defaults to 3
	X = (!X ? 3 : X);
	return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
	}

function totals(num) {
	return twoPlaces(Math.floor((num - 0.) * 100) / 100);
	}

function RoundMultiply(a,b)
{ result=parseFloat(a * b);
return round(result,2);
};

function IncrementTotal(t,a)
{ result=t + parseFloat(a);
return round(result,2);
};


function uncheckAll(form) {
box = eval(form.scorpora1); 
}


function Calc_status(form) {
	
// assign values for Status
 document.myForm.Status.value =  form.status_description.value;
// end of assign values for ICONOGRAFIA_liberatorie_disponibili

}




function Calc(form) {
// assign values for PROPOSAL_amenities
/*


*/
        x1 = '';
        x2 = '';
        x3 = '';
        x4 = '';
        x5 = '';
        x6 = '';
        x7 = '';
        x8 = '';
        x9 = '';
        x10 = '';
        x11 = '';
        x12 = '';
        x13 = '';
        x14 = '';
        x15 = '';
        x16 = '';
        x17 = '';
        x18 = '';
        x19 = '';
        x20 = '';
        x21 = '';
        x22 = '';


	if (form.concierge.checked)    {x1='Concierge, ';};
	if (form.newspapers.checked)   {x2='Complimentary newspapers, ';};
	if (form.bar.checked)    {x3='Bar, ';};
	if (form.conference_room.checked) {x4='Conference room, ';};
	if (form.dry_cleaning.checked)    {x5='Dry cleaning, ';};
	if (form.air_condition.checked)   {x6='Air condition, ';};
	if (form.lift.checked)    {x7='Lift, ';};
	if (form.internet.checked)    {x8='Internet access, ';};
	if (form.breakfast.checked)   {x9='Complimentary breakfast, ';};
	if (form.checkin.checked)   {x10='Express checkin, ';};
	if (form.checkout.checked)   {x11='Express checkout, ';};
	if (form.fitness.checked)   {x12='Fitness equipment, ';};
	if (form.parking.checked)   {x13='Parking nearby, ';};	
	if (form.room_service.checked)   {x14='Room service 24 hours, ';};
	if (form.TV.checked)   {x15='TV, ';};
	if (form.dishwasher.checked)   {x16='Dishwasher, ';};
	if (form.maid.checked)   {x17='Maid Service Available, ';};
	if (form.microwave.checked)   {x18='Microwave, ';};
	if (form.washer.checked)   {x19='Washer, ';};
	if (form.towels.checked)   {x20='Linen and towels, ';};
	if (form.kitchen.checked)   {x21='Full Kitchen, ';};
	if (form.DVD.checked)   {x22='DVD, ';};
	
  document.myForm.PROPOSAL_amenities.value =  x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + 
                                              x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19  + x20 + x21 + x22;

// end of assign values for PROPOSAL_amenities
                 
             
}



function Hnt(form,f) {

	var text = "No Hint available for this field!";

		if (f == "ICONOGRAFIA_riproduzioni_disponibili") {

			text = "Compilare o spuntare le cassele sotto";
			form.ICONOGRAFIA_riproduzioni_disponibili.value = text;

		}

		if (f == "ICONOGRAFIA_liberatorie_disponibili") {

			text = "Compilare o spuntare le cassele sotto";
			form.ICONOGRAFIA_liberatorie_disponibili.value = text;

		}


		

	}

function ValueTransfer(f) {
	self.opener.document.myForm.ICONOGRAFIA_file_web.value = f;
	}


function ValueTransfer_email(f) {
	self.opener.document.myForm.email_to.value = f;
	}
	

var myWind = ""

function doNew_x() {
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {

           pics = window.open("$script_name?operation=upload_1x","subWindow","HEIGHT=200,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}


function doNew_y() {
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {

           pics = window.open("$script_name?operation=upload_1y","subWindow","HEIGHT=200,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}



function openphotos(file,input,width,height) {
        attr = "top=5,left=75,width=" + width + ",height=" + height + ",resizable=1,scrollbars=yes";
        window.open(file, input, attr);
}




// end -->
</script>



 <center>
 <b>
 
<INPUT TYPE=HIDDEN NAME=key value="$key">
 			<table border="0" cellpadding="2" cellspacing="1" width="80%">
 <tbody>
 <tr>

 <td colspan="2" bgcolor="#e0e0e0"><div align="center"><strong>card</strong></div></td>

 </tr>
 <tr bgcolor="#F5F5F5">
 <td colspan="2">
 <table width="660" border="0" cellspacing="0">

 <tbody>
 <tr>
 <td width="106" ><b>Price:</b></td>
 <td width="144" ><input name="ITEM_price" value="$ITEM_price" onKeyDown="return tabOnEnter (this, event);" type="text"></td>
 <td width="50" ><div align="left"><b>Quantity:</b></div></td>
 <td width="500" ><input name="ITEM_quantity" value="$ITEM_quantity" onKeyDown="return tabOnEnter (this, event);" type="text" size=8></td>
 </tr>
 </tbody>
 </table>
 </td>

 </tr>
 <tr>
 <td colspan="2" bgcolor="#009900">
 <div align="center"><span class="Stile1">TITLE & NAVIGATION TAXONOMY CONTEXT</span>
 <br>
 <img id="img0" name="img0" src="$image_path/$file_web[0]" align=left border="1" height="100" onclick="change_image();">
 <img id="img1" name="img1" src="$image_path/$file_web[1]" align=left border="1" height="100" onclick="change_image();">
 <img id="img2" name="img2" src="$image_path/$file_web[2]" align=left border="1" height="100" onclick="change_image();">
 <img id="img3" name="img3" src="$image_path/$file_web[3]" align=left border="1" height="100" onclick="change_image();">
 <img id="img4" name="img4" src="$image_path/$file_web[4]" align=left border="1" height="100" onclick="change_image();">
 <img id="img5" name="img5" src="$image_path/$file_web[5]" align=left border="1" height="100" onclick="change_image();">
 <img id="img6" name="img6" src="$image_path/$file_web[6]" align=left border="1" height="100" onclick="change_image();">
 <img id="img7" name="img7" src="$image_path/$file_web[7]" align=left border="1" height="100" onclick="change_image();">
 
 </div>
 </td>
 </tr>
 <tr>
 <td bgcolor="#d5ffd5">
<table border="0" cellspacing="0">
 <tbody>
 <tr>
 <td colspan="2"><div align="center"><b>TITLE & NAVIGATION TAXONOMY CONTEXT</b></div></td>
 </tr>
 <tr>

 <td><div align="left"><b>Name:</b></div></td>
 <td><input name="TAXONOMY_item_name" value="$TAXONOMY_item_name" size="40" onkeydown="return tabOnEnter (this, event);" type="text"></td>
 </tr>



 <tr>
 <td><div align="left"><b>Subtitle:</b></div></td>
 <td><input name="TAXONOMY_subtitle" value="$TAXONOMY_subtitle" size="40" onkeydown="return tabOnEnter (this, event);" type="text"></td>
 </tr>
 

 

  
 </tbody>
 </table></td>
 <td bgcolor="#d5ffd5" width="100%"><table border="0" cellspacing="0">

 <tbody>
 <tr>
 <td width="164"><div align="left"><b>Filesystem path:</b></div></td>
 <td width="187"><input name="TAXONOMY_context_path" value="$TAXONOMY_context_path" size="30" onkeydown="return tabOnEnter (this, event);" type="text"></td>
 </tr>
 <tr>
 <td><div align="left"><b><a href="javascript:doNew_x()" onMouseOver="window.status='File Upload y'; return true;">Image file</a>:</b></div></td>
 <td><input name="ICONOGRAFIA_file_web" value="$ICONOGRAFIA_file_web" size="18" onChange="change_image();" onClick="change_image();" $readonly type="text">
 <INPUT onclick="change_image();doNew_x()" type=button value="Upload" name=storage></td>
 </tr>
 <tr>
 <td width="164"><div align="left"><b>photo gallery:</b></div></td>
 <td width="187"><input name="ICONOGRAFIA_gallery" value="$ICONOGRAFIA_gallery" size="30" onkeydown="return tabOnEnter (this, event);" type="text"></td>
 </tr>
 </tbody>
 
 </table></td>
 </tr>



 



 <tr>
 <td colspan="2" bgcolor="#990033" ><div align="center" class="Stile1">TAXONOMY & CONTEXT CATEGORIES</div></td>

 </tr>
 <tr>

 <td colspan="2" bgcolor="#ffd5d5" ><b>Metacathegory: </b> 
 <input name="TAXONOMY_metacathegory" value="$TAXONOMY_metacathegory" size="52" onkeydown="return tabOnEnter (this, event);" type="text">
 chapter - section name<br>
 


</td>
</tr>

 <tr>
 <td><div align="left"><b>Cathegory</b> / this page name</div>
 <input name="TAXONOMY_cathegory" value="$TAXONOMY_cathegory" size="40" onkeydown="return tabOnEnter(this, event);" type="text">
 </td>
 </tr>
 <tr>
 <td bgcolor="#ffd5d5" ><table border="0" cellspacing="0">
 <tbody>

 <tr>
 <td>&nbsp;</td>
 <td>Related Categories / same taxonomy links <textarea name="TAXONOMY_cathegories" cols="70" rows="7" >$TAXONOMY_cathegories_broken</textarea></td>
 </tr>

 </tbody>
 </table></td>

 <td bgcolor="#ffd5d5" width="100%">
 Related SubCategories<textarea name="TAXONOMY_subcathegories" cols="70" rows="7" >$TAXONOMY_subcathegories</textarea></td>
 </td>
 </tr>

 
</td>
 

<tr bgcolor="#879D1C">

 <td colspan="2"><div align="center"><span class="Stile1">DESCRIPTIVE INFORMATION</span></div></td>
 </tr>
 <tr>
 <td bgcolor="#dcec91"><table border="0" cellspacing="0">
 <tbody>
 <tr>

 <td valign="top"><b>Description:<br>
  <textarea name="ITEM_description" cols="70" rows="16">$ITEM_description</textarea>
 </b></td>
 <td valign="top">&nbsp; </td>
 </tr>
 
 <tr>
 
 <td valign="top">&nbsp;				 </td>
 </tr>
 </tbody>
  </table></td>
 <td bgcolor="#dcec91"><table border="0" cellspacing="0">
 <tbody>


 <tr>
 <td valign="top"><strong>Taxonomy Path - breadcrumbs:<br>

 </strong>
 <textarea name="ITEM_chapter" cols="70" rows="7" >$ITEM_chapter</textarea></td>
 </tr>

 </tbody>
 </table></td>
 </tr>

 <tr bgcolor="#9AC886">
 <td colspan="2"><div align="center" class="Stile1">LAST UPDATE</div></td>

 </tr>
 <tr bgcolor="#dcecd5">
 <td colspan="2"> <table border="0" cellspacing="0">
 <tbody>
 <tr>
  <td width="85"><b>Date and time:</b></td>
  <td ><input name="Data_Ora" value="$Data_Ora" onClick="startclock(); timerONE=window.setTimeout" size="54" onKeyDown="return tabOnEnter (this, event);" readonly></td>
 </tr>
 <tr>
  <td width="85"><b>URL:</b></td>
  <td ><input name="ITEM_URL" value="$ITEM_URL" onClick="setURL();" size="54" onKeyDown="return tabOnEnter (this, event);" readonly></td>
 </tr>
 <tr>
  <td width="85"><b>header_type:</b></td>
  <td >
  <input name="header_type" value="classic" type="hidden">
 <input name="header_" type="radio" value="classic" checked onClick="header_type.value ='classic';" >Classic
 <input name="header_" type="radio" value="menu" onClick="header_type.value ='menu';" >Menu
  </td>
 </tr> 


 <tr>
  <td width="85"><b>web visibility:</b></td>
  <td >
  <input name="visibility_mode" value="no" type="hidden">
 <input name="visibility_" type="radio" value="no" checked onClick="visibility_mode.value ='no';" >No
 <input name="visibility_" type="radio" value="yes" onClick="visibility_mode.value ='yes';" >Yes
 </td>
 </tr>

 

 </tbody>
 </table></td>
 </tr>
 <tr bgcolor="#F5F5F5">
 <td colspan="2" align="center"><br>
 <INPUT TYPE=button onClick="setURL();startclock();timerONE=window.setTimeout;myForm.action.value='Conferma_pura_modifica';this.form.submit();" VALUE="Save card" > 
 <br>
<input name="update_mode" value="conserve" type="text" readonly size="6">
  </td>

 </tr>
 </tbody>
 </table>
<br>

</b>

	</td></tr>
 
</center>
<INPUT TYPE="hidden" NAME="archive_mode" VALUE="$archive_mode">
HTML
&html_footer;

} # End of print_add_screen subroutine.















############## Results Screen NEW ################
sub search_results_hermes{
&html_header($title);
 $rows_left_to_view = $total_row_count - $new_hits_seen;
 $start_hit = $hits_seen + 1;
 $end_hit = $new_hits_seen;
 $hits_displayed = $end_hit - $start_hit + 1;
 if ($total_row_count > 1) {
 print qq~<P>Found:<B>$total_row_count</B> cards, searched: <B>$search_for</B><br>~;
 if ($total_row_count > $max_records_returned) {
 if ($hits_displayed == 2) { print qq~<B>Last two</B> records (mostrate in questa schermata)<BR>~; }
 elsif ($hits_displayed == 1) { print qq~<B>Last</B> record (mostrate in questa schermata)<BR>~; }
 else { print qq~<B>$start_hit</B> - <B>$end_hit</B> (mostrate in questa schermata)<BR>~; }
 } #end if
 } #end if ... > 1
 else { print qq~<P>Found: <B>1</B> record\n~; }
print "<br>";
############### PRINT BUTTON which_search #######

print "<br>";
 print "<INPUT TYPE=button onClick=\" myForm.action.value='Main Menu';this.form.submit( );\" VALUE=\"Main Menu\" >";



$which_search = $choose;

&next_page_buttons($rows_left_to_view);
 print "<INPUT TYPE=\"hidden\" NAME=\"sort_on\" VALUE=\"$sort\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"display\" VALUE=\"$display\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"logic\" VALUE=\"$logic\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"update_mode\" VALUE=\"$update_mode\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"archive_mode\" VALUE=\"$archive_mode\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"rendering_mode\" VALUE=\"$rendering_mode\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"header_type\" VALUE=\"$header_type\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"search_for\" VALUE=\"$search_for\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"key\" VALUE='0'>\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"search_field\" VALUE=\"$search_field\">\n";


######## Display ROWS ############
foreach $record (@results){
 ($key,$dbuser,$when_added,@field_vals) = split(/\|/, $record); 
print<<HTML;
 <P><TABLE BORDER=0 CELLSPACING=2 CELLPADDING=2 WIDTH=$record_width BGCOLOR=#eeeeee>
HTML

$modify_button ="<INPUT TYPE=button onClick=\" myForm.key.value='$key';myForm.search_field.value='all';myForm.action.value='Edit_item';this.form.submit( );\" VALUE=\"Open card\" >";
$view_button ="<INPUT TYPE=button onClick=\" myForm.key.value='$key';myForm.search_field.value='all';myForm.action.value='Vedi_item';this.form.submit( );\" VALUE=\"Vedi card\" >";


################ COMPACT Record logic ####################################
$x=0;
# assign only relevant values for COMPACT Record #
# assign the relevant values of each field in the record
$x=0;
foreach $field (@fields){
 ${$field} = $field_vals[$x];
 $x++;
} 
$img_file =$ICONOGRAFIA_file_web; 
# End of foreach assign field loop.

 print "
 <TR BGCOLOR=\"\#e0e0e0\">
 <TD ALIGN=left COLSPAN=2>
 $ITEM_chapter
 </TD>
 </TR>
 <TR BGCOLOR=\"\#e0e0e0\">
 <TD ALIGN=CENTER COLSPAN=2>
 $modify_button
 </TD>
 </TR>
 <td>";


$popup_image = "<a href=\"javascript:openphotos('$server/$folder_/$img_file', 'thor', '500', '600');\">
 <img src='$server/$folder_/$img_file' align=left height=112 border=0></a>";





$popup_URL = "<a href=\"../$ITEM_URL\"> <img src=\"$hermes_image_path/$img_file\" align=left height=112 border=0></a>";

$HTML_line .= $popup_URL;
$HTML_line .= '<b>' . $TAXONOMY_item_name . '</b>, ' . ', ' . $TAXONOMY_subtitle;
$HTML_line .= '<br><br><br><br>' . $ITEM_URL;

$HTML_line .= '<br><br>ultimo aggiornamento: '. $Data_Ora;

$update_URL = "$server/$script_name?operation=edit_record&find_=$key"; 
$HTML_line .= qq~<a href="$update_URL" title="Extranet backdoor"> <img src="$image_path/extranet.gif" alt="Extranet backdoor" vspace="1" border="0"></a> ~;


$HTML_line =~ s/\s+/ /g; # substitute spaces to the single blank character

print "$HTML_line<hr></TABLE><P>";
################ end of COMPACT Record logic ################## 

 $HTML_line = " ";
 } # End of foreach record loop.
 

$which_search = $choose;
if ($rows_left_to_view > 0 && $show ne "no") {
     &next_page_buttons($rows_left_to_view);
}
 print "<p>";
 &html_footer;
} ### End of search_results_hermes




















########### Search & Sort Database #############
sub search_taxonomy{
 my $search_for = $_[0];
 $search_for = &filter($search_for);

 (@search_for_vals) = split(/\s+/, $search_for);
 $search_atoms =@search_for_vals;
 unless (-e $database){ open (DB, ">$database") || die "Error creating database. $!\n"; }
 else { open (DB, "$database") || die "Error opening database. $!\n"; }
 while(<DB>){
    ($key,$dbuser,$when_added,@field_vals) = split(/\|/, $_);
    $target = $field_vals[$search_field];
    $target =~ s/\s//g;
    $target =~ s/\-//g;
    $target =~ s/\///g;
    if( $target =~ /$search_for/oi){ push @results, $_};
 } # End of while.
 close (DB);
 foreach $curr (@results){
 ($key,$dbuser,$when_added,@rest) = split(/\|/, $curr);
 $max = @fields;
 $code='$record{$key} = { key => "$key", ';
 $code .='dbuser => "$dbuser", ';
 $code .='when_added => "$when_added", ';
 for($x=0;$x<$max;$x++){
 $code .= "\$fields[$x] => \"\$rest[$x]\",\n";
 } # End of for
 $code .= '};';
 eval $code;
 } # End of foreach curr
 $sort_on = "$fields[$sort]";
 @results=();
 foreach $rp (sort { $a->{$sort_on} cmp $b->{$sort_on} } values %record){
 $new_rec = $rp->{key};
 $new_rec .= "\|$rp->{dbuser}";
 $new_rec .= "\|$rp->{when_added}";
 for($x=0;$x<$max;$x++){
 $new_rec .= "\|$rp->{$fields[$x]}";
 } # End of for
 push @results, $new_rec;
 } # End of foreach
$count = @results;
if($count < 1){ 
 $message="No Matches Found For '$search_for'";
 $title="Main Menu";
 &print_default($title, $message); 
### intervention
 exit;
}
$total_row_count = @results;
if ($total_row_count > $max_records_returned) {
$hits_seen = $q->param(new_hits_seen);
 for ($i = 1; $i <= $hits_seen; $i++)
 { $seen_row = shift (@results); }
 $length_of_database_rows = @results;
 for ($i = $length_of_database_rows-1; $i >= $max_records_returned; $i--)
 { $extra_row = pop (@results); }
 $new_hits_seen = $hits_seen + @results; } else { $show="no"; }
} # End of search_taxonomy subroutine.







############### UPLOAD Screen 1/2 ################
sub print_upload_1x_page{
# from this dialog menu the user should pick up a file from the local files for the upload

$title="File Upload 1/2 ... Symphony";
$action="upload_2x";
if($set_cookie eq "") { print $q->header; }

print<<BODY;
<HTML><HEAD>
 <TITLE>$db_name - $_[0]</TITLE>
 </HEAD><BODY BGCOLOR="#FFFFFF">
 <script language="javascript" src="$image_path/js/global.js"></script>	
<script language="javascript" src="$image_path/js/style.js"></script>


 <script language="javascript">
function ValueTransfer(f) {
	self.opener.document.myForm.ICONOGRAFIA_file_web.value = f;
	}



var myWind = ""

function doNew_x() {
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {

           pics = window.open("$script_name?operation=upload_1x","subWindow","HEIGHT=200,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}


function doNew_y() {
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {

           pics = window.open("$script_name?operation=upload_1y","subWindow","HEIGHT=200,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}



function openphotos(file,input,width,height) {
        attr = "top=5,left=75,width=" + width + ",height=" + height + ",resizable=1,scrollbars=yes";
        window.open(file, input, attr);
}



</script>
 <CENTER>
 $db_name
 <CENTER>
 <TABLE BORDER=1 WIDTH="$table_width" CELLSPACING="0" CELLPADDING="3">
 <TR> 
 <TD BGCOLOR="#e0e0e0"> 
 <CENTER> 
 <B>$title</B>
 </CENTER>
 </TD>
 </TR>
 <TR> 
 <TD align=middle><BR>

<FORM enctype="multipart/form-data" NAME="upload_1x" METHOD="post" ACTION="$upload_y_URL">

Server file - naming convention: <b> anno</b> $anno

<center>
<input type="file" name="myfile" onchange="this.form.submit();" accept="text/*" maxlength="2097152" size="80"><br>
<INPUT TYPE='submit' NAME='Submit' VALUE='UPLOAD file'>
</center>

 <BR></TD></TR>
 <TR> 
 <TD BGCOLOR="#e0e0e0"><CENTER> 
All rights reserved. 1stMuse Co
<input type=hidden name="user_search" value="">
<input type=hidden name="user_add" value="">
<input type=hidden name="user_modify" value="">
<input type=hidden name="user_delete" value="">
<INPUT TYPE="hidden" NAME="user" VALUE="">
<input type=hidden name="user_trans" value="">
<INPUT TYPE="hidden" NAME="authenticate" VALUE="yes">
<INPUT TYPE="hidden" NAME="message" VALUE=''>
<INPUT TYPE="hidden" NAME="file_name_convention" VALUE='Zy009876.jpg'>
 </CENTER>
 </TD>
 </TR>
</TABLE><P>
<center><p>All rights reserved. <a href="http://www.1stmuse.com">1stMuse</a><br>&copy; MMXIII Etranet, 1stMuse &copy; MMXIII JJP<br><br></center>

</BODY></HTML>

BODY

}
############# end of UPLOAD Screen 1/3 ################







############### UPLOAD Screen 2/3 ################
sub print_upload_1y_page{
# here is performed the upload from the local system to the remote one

$title="File Upload 1/2 ... Symphony";
$action="upload_2y";
if($set_cookie eq "") { print $q->header; }
print<<WWW;
<HTML><HEAD>
 <TITLE>$db_name - $_[0]</TITLE>
 </HEAD><BODY BGCOLOR="#FFFFFF">
 <script language="javascript" src="$image_path/js/global.js"></script>	
	<script language="javascript" src="$image_path/js/style.js"></script>
 <CENTER>
 $db_name
 <CENTER>
 <TABLE BORDER=1 WIDTH="$table_width" CELLSPACING="0" CELLPADDING="3">
 <TR> 
 <TD BGCOLOR="#e0e0e0"> 
 <CENTER> 
 <B>$title</B>
 </CENTER>
 </TD>
 </TR>
 <TR> 
 <TD align=middle><BR>

<FORM enctype="multipart/form-data" METHOD="post" ACTION="$upload_y_URL">

<center>

<INPUT TYPE='file' NAME='photo_item'  size='80'><br>
<INPUT TYPE='submit' NAME='Submit' VALUE='UPLOAD file'>
</center>

 <BR></TD></TR>
 <TR> 
 <TD BGCOLOR="#e0e0e0"><CENTER> 
All rights reserved. 1st Muse Co
<input type=hidden name="user_search" value="">
<input type=hidden name="user_add" value="">
<input type=hidden name="user_modify" value="">
<input type=hidden name="user_delete" value="">
<INPUT TYPE="hidden" NAME="user" VALUE="">
<input type=hidden name="user_trans" value="">
<INPUT TYPE="hidden" NAME="authenticate" VALUE="yes">
<INPUT TYPE="hidden" NAME="message" VALUE=''>
 </CENTER>
 </TD>
 </TR>
</TABLE><P>
<center><p>All rights reserved. <a href="http://www.1stmuse.com">1stMuse</a><br>&copy; MMXIII Etranet, 1stMuse &copy; MMXIII JJP<br><br></center><form name="myForm2">

<input type="hidden" value="Write" onClick="document.myForm.elements[0].focus(); "> 
</form>
</BODY></HTML>

WWW

}
############# end of UPLOAD Screen 2/3 ################











############### flip_flop_visibility ################
sub ajax_flip_visibility {
my $kljuc = $_[0];
my %adonis_hash = ();
my @adonis_records = ();
my @field_vals = ();

 print $q->header; 
############## Delete Record #################

# build %adonis_hash
 open (DATABASE, "$database") or die "Error opening file: $!\n";
 while (<DATABASE>)  {
   $line = $_;
   chop $line;
   @dbfields = ();
   ($key_,@dbfields) = split (/\|/, $line);
   if ($key_ >0) { $adonis_hash{$key_} = $line;}
 } #end of while
 close (DATABASE);
 
 $kljuc +=0;
 if ($kljuc >0) {
 	$key_record = $adonis_hash{$kljuc};

 ($key,$dbuser,$when_added,@field_vals) = split(/\|/, $key_record); 
 $updated_record=$key;
 $updated_record .= "\|$user";
 $updated_record .= "\|$when_added";

# assign the values to the variables of each field in the record
$x=0;
foreach $field (@fields){
   if ($field eq "visibility_mode") {
   	 # flip flop visibility 
   	 if ($field_vals[$x] eq "no") {
   	 	 $visibility_ = "yes";
   	 }
   	 else {
       $visibility_ = "no";
     };
     ${$field} = $visibility_;
   }
   else {
      ${$field} = $field_vals[$x];
   }
   $updated_record .= "\|${$field}";
   $x++;
} 
# End of foreach assign field loop.
$adonis_hash{$key} = $updated_record;
}

 flock DATABASE, $EXCLUSIVE;
 open (DATABASE, ">$database") or die "Error opening file: $!\n";
 
   @adonis_records = values (%adonis_hash);

  # save adonis records
  foreach $line (@adonis_records){ 
    chomp $line;
    print DATABASE "$line\n";
  }

 close (DATABASE);
 flock DATABASE, $UNLOCK;

 print $visibility_;

}
############# end of flip_flop_visibility ################







############### update_records ################
sub update_records {
my $kljuc = $_[0];
my %adonis_hash = ();
my @adonis_records = ();
my @field_vals = ();


############## Delete Record #################

# build %adonis_hash
 open (DATABASE, "$database") or die "Error opening file: $!\n";
 while (<DATABASE>)  {
   $line = $_;
   chop $line;
   @dbfields = ();
   ($key_,@dbfields) = split (/\|/, $line);
   if ($key_ >0) { $adonis_hash{$key_} = $line;}
 } #end of while
 close (DATABASE);
 
 $kljuc +=0;
 if ($kljuc >0) {
 	$key_record = $adonis_hash{$kljuc};

 ($key,$dbuser,$when_added,@field_vals) = split(/\|/, $key_record); 
 $updated_record=$key;
 $updated_record .= "\|$user";
 $updated_record .= "\|$when_added";

# assign the values to the variables of each field in the record
$x=0;
foreach $field (@fields){
   if ($field eq "visibility_mode") {
   	 # flip flop visibility 
   	 if ($field_vals[$x] eq "no") {
   	 	 $visibility_ = "yes";
   	 }
   	 else {
       $visibility_ = "no";
     };
     ${$field} = $visibility_;
   }
   else {
      ${$field} = $field_vals[$x];
   }
   $updated_record .= "\|${$field}";
   $x++;
} 
# End of foreach assign field loop.
$adonis_hash{$key} = $updated_record;
}

 flock DATABASE, $EXCLUSIVE;
 open (DATABASE, ">$database") or die "Error opening file: $!\n";
 
   @adonis_records = values (%adonis_hash);

  # save adonis records
  foreach $line (@adonis_records){ 
    chomp $line;
    print DATABASE "$line\n";
  }

 close (DATABASE);
 flock DATABASE, $UNLOCK;

 #print $visibility_;

}
############# end of update_records ################





























sub copy {
# copy("/folder1/abc.dat", "/folder2/abc.dat") or die("cannot copy\b");
my($from, $to) = @_;
 if(open(IN, $from))  { 
 	if(open(OUT, ">$to")) {
 	 binmode(OUT); 
 	 while(read IN, $buf, 4096)  { 
 	   print OUT $buf;
     }
     close IN;
     close OUT;
     return 1;
    }
 close IN; 
 }
 return 0;
}






































########### Search All #############
sub search_all{
 @results =();
 unless (-e $database){ open (DB, ">$database") || die "Error creating database. $!\n"; }
 else { open (DB, "$database") || die "Error opening database. $!\n"; }
 while(<DB>){
    push @results, $_;
 } # End of while.
 close (DB);

$count = @results;
if($count < 1){ 
 $message="No Matches Found For '$search_for'";
 $title="Main Menu";
 &print_default($title, $message); 

 exit;
}
$total_row_count = @results;
if ($total_row_count > $max_records_returned) {
$hits_seen = $q->param(new_hits_seen);
 for ($i = 1; $i <= $hits_seen; $i++)
 { $seen_row = shift (@results); }
 $length_of_database_rows = @results;
 for ($i = $length_of_database_rows-1; $i >= $max_records_returned; $i--)
 { $extra_row = pop (@results); }
 $new_hits_seen = $hits_seen + @results; } else { $show="no"; }
} # End of search_all subroutine.




























############## Results Screen NEW ################
sub all_products{
&html_header($title);
 $rows_left_to_view = $total_row_count - $new_hits_seen;
 $start_hit = $hits_seen + 1;
 $end_hit = $new_hits_seen;
 $hits_displayed = $end_hit - $start_hit + 1;
 if ($total_row_count > 1) {
# print qq~<P>Found:<B>$total_row_count</B> cards, searched: <B>$search_for</B><br>~;
 if ($total_row_count > $max_records_returned) {
 if ($hits_displayed == 2) { print qq~<B>Last two</B> records (mostrate in questa schermata)<BR>~; }
 elsif ($hits_displayed == 1) { print qq~<B>Last</B> record (mostrate in questa schermata)<BR>~; }
 else { print qq~<B>$start_hit</B> - <B>$end_hit</B> (mostrate in questa schermata)<BR>~; }
 } #end if
 } #end if ... > 1
 else { print qq~<P>Found: <B>1</B> record\n~; }
print "<br>";
############### PRINT BUTTON which_search #######





    $customer_record = search_customer($customer);
    chomp $customer_record;
    ($key,$dbuser,$when_added,$Broj_kartice,$OIB,$Ime,$Prezime,$Datum_rodjenja,$Kartica_vrijedi_do,
     $Stanje_bodova,$Paket,$Email,$Popup_message,$Popup_autodelete,$Referral,$Limit,$CardType, $Lozinka) = split(/\|/, $customer_record); 



$wienerberger_client ="$Ime $Prezime";


$datum = &get_date;
$datum =~ s/at/ u /;



print<<JS;

<script type="text/javascript">
function EnableButton(id)  {
     	 document.getElementById(id).disabled=false;
}


function DisableButton(id)  {
     	 document.getElementById(id).disabled=true;
}


function addToCart(broj_kartice,product,price,productKey) {
 var ajaxResponse;
 var myarray = [];

 var id  = 'stanje_bodova';
 var idQuantity = 'quantity' + productKey;
 var obj1 = document.getElementById(idQuantity);
 var product_quantity = +(obj1.firstChild.nodeValue);
 var id_button ="addtocartButton"+productKey;

 var obj2 = document.getElementById("stanje_bodova");
 var current_points = obj2.firstChild.nodeValue;
 current_points =  current_points.replace(/[,]/,".");
 current_points =  current_points.replace(/NEDOVOLJNO/,"");
 current_points = +(current_points);
 var price = +(price);

 //alert(' current_points: ' +current_points + ' product_quantity:' + product_quantity + ' price: ' + price );
 if ( (product_quantity === 0 ) || (current_points <= price) ) {
    DisableButton(id_button);
    //alert(' DisableButton: ' +id_button );
 }
 else {

 var url = 'http://loyalty.hr/cgi-bin/wienerberger_clients.cgi?operation=addtocart&broj_kartice=' + broj_kartice + '&product_=' +product + '&price_=' +price;
 if (window.ActiveXObject) { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); }
   else if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }  
 if( xmlhttp) {
  // requested results passing searchString as an URL parameter
  xmlhttp.open('GET',url, false);
  xmlhttp.send(null);
  if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
      ajaxResponse = xmlhttp.responseText;
      myarray = ajaxResponse.split("~");
      stanje_bodova =myarray[0];
      cart_content  =myarray[1];
      document.getElementById("stanje_bodova").innerHTML = stanje_bodova;
      document.getElementById("cart_content").innerHTML  = showCart(cart_content);
      if (!(stanje_bodova.match(/NEDOVOLJNO/))) {
            decrementQuantity(productKey)
      }
      alert('Preostalo vam je: ' + stanje_bodova + ' bodova');
  };
 }

 }

}





function confirmCart(broj_kartice) {
 var ajaxResponse;
 var myarray = [];
 id  = 'stanje_bodova';
 //obj = document.getElementById(id);
 var url = 'http://loyalty.hr/cgi-bin/wienerberger_clients.cgi?operation=confirmcart&broj_kartice=' + broj_kartice;
 //alert(url);
 if (window.ActiveXObject) { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); }
   else if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }  
 if( xmlhttp) {
  // requested results passing searchString as an URL parameter
  xmlhttp.open('GET',url, false);
  xmlhttp.send(null);
  if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
      ajaxResponse = xmlhttp.responseText;
      myarray = ajaxResponse.split("~");
      stanje_bodova =myarray[0];
      cart_content  =myarray[1];
      document.getElementById("stanje_bodova").innerHTML = stanje_bodova;
      document.getElementById("cart_content").innerHTML  = showCart(cart_content);
  };
 }
}







function cancelCart(broj_kartice) {
 var ajaxResponse;
 var myarray = [];
 var id  = 'stanje_bodova';
 var stanje_bodova;
 var response_txt;
 var url = 'http://loyalty.hr/cgi-bin/wienerberger_clients.cgi?operation=cancelcart&broj_kartice=' + broj_kartice;
 if (window.ActiveXObject) { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); }
   else if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }  
 if( xmlhttp) {
  // requested results passing searchString as an URL parameter
  xmlhttp.open('GET',url, false);
  xmlhttp.send(null);
  if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
      ajaxResponse = xmlhttp.responseText;
      myarray = ajaxResponse.split("~");
      stanje_bodova =myarray[0];
      response_txt  =myarray[1];
      document.getElementById("stanje_bodova").innerHTML = stanje_bodova;
      document.getElementById("cart_content").innerHTML  = response_txt;
  };
 }
}









function round(number,X) {
	// rounds number to X decimal places, defaults to 3
	X = (!X ? 3 : X);
	return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
	}

function twoPlaces(amount) {
	// returns the amount in the .99 format
        round(amount,2);
	return (amount === Math.floor(amount)) ? amount + '.00' : (  (amount*10 === Math.floor(amount*10)) ? amount + '0' : amount);
	}


function showCart(content) {
  var cx,tx,rx;
  var myrow  =[];
  var mycol  =[];
  if (content.match(/[:]/g) ) {

  cx = content;
  cx = cx.replace(/\\:\$/,""); // trim terminal colon :
  cx0 ='<table width="40%" border="0" cellpadding="4">  <tr>  <td>&nbsp;</td> <td span="3"><b>Sadržaj&nbsp;košarice</b></td>    </tr> ';
  cx0 +='<tr> <td>Odabrani poklon </td> <td align="right"> Bodova</td> <td align="right"> Komada </td>    <td align="right"> Ukupno</td>  </tr> ';
  tx =cx0;

    myrow = cx.split(/[:]/);
    var total = 0.0;
    for (i=0; i<myrow.length; i++) {
     rx = myrow[i];
     mycol = rx.split(/[;]/);
     n    =+(mycol[0]);
     gift = mycol[1];
     points =+(mycol[2]);
     subtotal = (n*points) ;

     tx +='<tr>';
     tx += '<td>' + gift +'</td>';
     tx += '<td align="right">' + points +'</td>';
     tx += '<td align="center">' + n +'</td>';
     tx += '<td align="right">' + subtotal +'</td>';
     tx +='</tr>'; 
     total +=subtotal;
    }
    total =twoPlaces(total);
    tx += '</table><br>';
    tx += "<input onclick=\\"confirmCart($Broj_kartice)\\" value=\\"Potvrdi\\" type=\\"button\\"> ";
    tx += "<input onclick=\\"cancelCart($Broj_kartice)\\" value=\\"Odustani\\" type=\\"button\\"> ";
    tx += 'Total: ' + total ;
  }
  else {
    tx ="Vaša narudžba je uspješno poslana.";
  }
  return tx;
}




function decrementQuantity(productKey) {
 var ajaxResponse;
 id  = 'quantity'+productKey;
 var url = 'http://loyalty.hr/cgi-bin/wienerberger_webshop.cgi?operation=decrementq&product_=' + productKey;
 //alert(url);
 if (window.ActiveXObject) { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); }
   else if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }  
 if( xmlhttp) {
  // requested results passing searchString as an URL parameter
  xmlhttp.open('GET',url, false);
  xmlhttp.send(null);
  if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
      ajaxResponse = xmlhttp.responseText;
      document.getElementById(id).innerHTML = ajaxResponse;
      //alert('Preostalo je na skladištu još: ' + ajaxResponse + ' proizvoda');
  };
 }
}






function incrementQuantity(productKey) {
 var ajaxResponse;
 id  = 'quantity'+productKey;
 var url = 'http://loyalty.hr/cgi-bin/wienerberger_webshop.cgi?operation=incrementq&product_=' + productKey;
 //alert(url);
 if (window.ActiveXObject) { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); }
   else if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }  
 if( xmlhttp) {
  // requested results passing searchString as an URL parameter
  xmlhttp.open('GET',url, false);
  xmlhttp.send(null);
  if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
      ajaxResponse = xmlhttp.responseText;
      document.getElementById(id).innerHTML = ajaxResponse;
      //alert('Preostalo je na skladištu još: ' + ajaxResponse + ' proizvoda');
  };
 }
}



</script>
JS

print<<WWW;
<br>

<p align="left">
<br>
Datum: $datum<br><br>
Loyalty card: <B>$Broj_kartice</B>. Kartica vrijedi do: $Kartica_vrijedi_do<br>
Paket: 	$Paket<br>
<br>
Korisnik: <B>$wienerberger_client</B> <br>Datum rodjenja: $Datum_rodjenja<br>
OIB: $OIB<br>
<br>
Imate  <b><span id="stanje_bodova" name="stanje_bodova">$Stanje_bodova</span></b> bodova.<br>
<br>
WWW






$which_search = $choose;

&next_page_buttons($rows_left_to_view);
 print "<INPUT TYPE=\"hidden\" NAME=\"sort_on\" VALUE=\"$sort\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"display\" VALUE=\"$display\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"logic\" VALUE=\"$logic\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"update_mode\" VALUE=\"$update_mode\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"archive_mode\" VALUE=\"$archive_mode\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"rendering_mode\" VALUE=\"$rendering_mode\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"header_type\" VALUE=\"$header_type\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"search_for\" VALUE=\"$search_for\">\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"key\" VALUE='0'>\n";
 print "<INPUT TYPE=\"hidden\" NAME=\"search_field\" VALUE=\"$search_field\">\n";



######## Display ROWS ############
foreach $record (@results){
 ($key,$dbuser,$when_added,@field_vals) = split(/\|/, $record); 
print<<HTML;
 <P><TABLE BORDER=0 CELLSPACING=2 CELLPADDING=2 WIDTH=$record_width BGCOLOR=#eeeeee>
HTML

$x=0;
# assign only relevant values for COMPACT Record #
# assign the relevant values of each field in the record
$x=0;
foreach $field (@fields){
 ${$field} = $field_vals[$x];
 $x++;
} 
$img_file =$ICONOGRAFIA_file_web; 
# End of foreach assign field loop.


$visibility_button ="<INPUT TYPE=\"button\" id=\"visibilityButton$key\" onClick=\"reverseVisibility($key);\" VALUE=\"$visibility_\" > ";
$addtocart_button  ="<INPUT TYPE=\"button\" id=\"addtocartButton$key\" onClick=\"addToCart('$Broj_kartice','$TAXONOMY_item_name','$ITEM_price','$key');\" VALUE=\"Stavi u ko&scaron;aricu\" >";

 print "
 <TR BGCOLOR=\"\#e0e0e0\">
 <TD ALIGN=CENTER COLSPAN=2>
<b>  $TAXONOMY_item_name  </b>
 

</TD>
 </TR>
 <td>";

$popup_image = "
<a href=\"javascript:openphotos('$server/$folder_/$img_file', 'thor', '500', '600');\">
 <img src='$server/$folder_/$img_file' align=left height='112' hspace='5' vspace='1' border=0></a>
";



$popup_URL = "<a href=\"../$ITEM_URL\"> <img src=\"$hermes_image_path/$img_file\" align=left height=112 hspace='5' vspace='1' border=0></a>";

$HTML_line .= $popup_URL;
$HTML_line .= '<b>' . $TAXONOMY_item_name . '</b> '; 
#$HTML_line .= ', ' . $TAXONOMY_subtitle;
$HTML_line .= "<br><br>raspoloživo:<b> <span id=\"quantity$key\" name=\"quantity$key\">" . $ITEM_quantity . "</span></b>";
$HTML_line .= '<br>vrijednost: ' . $ITEM_price . ' bodova ';
$HTML_line .= "<br><br> <br>$addtocart_button <br>";
$HTML_line =~ s/\s+/ /g; # substitute spaces to the single blank character

print "$HTML_line<hr></TABLE><P>";
################ end of COMPACT Record logic ################## 

 $HTML_line = " ";
 } # End of foreach record loop.
 

$which_search = $choose;
if ($rows_left_to_view > 0 && $show ne "no") {
     &next_page_buttons($rows_left_to_view);
}
 print qq~
<br>
 <b><span id="cart_content" name="cart_content"></span></b>

<br></p></form></td></tr>
 <tr> 
 <td bgcolor="#e0e0e0"><center> 
<input onClick="history.go(-1)" value="Glavni Menu" type="button">

<input name="user_search" value="" type="hidden">
<input name="user_add" value="" type="hidden">
<input name="user_modify" value="" type="hidden">
<input name="user_delete" value="" type="hidden">
<input name="user" value="admin" type="hidden">
<input name="user_trans" value="" type="hidden">
<input name="authenticate" value="yes" type="hidden">
<input name="message" value="" type="hidden">
 </center>
 </td>
 </tr>
</tbody></table><p>
</p><center><p>All rights reserved. <br>© MMXIII Etranet, 1stMuse © MMXIII JJP<br><br></p></center><center>
</center><p>
<input value="Write" onclick="document.myForm.elements[0].focus(); " type="hidden"> 


</p></center>
~;


} ### End of all_products








































########### Search & Customer #############
sub search_customer{
my $card_number = $_[0];
@customers =();
@resto     =();

   $database_cards    = "$ENV{'DOCUMENT_ROOT'}/wienerberger/wienerberger_clients.txt";	# Data file OPERE name and path
   unless (-e $database_cards){ open (CUSTOMERS, ">$database_cards") || die "Error creating database.  $!\n"; }
   else { open (CUSTOMERS, "$database_cards") || die "Error opening database.  $!\n"; }
    while(<CUSTOMERS>){

        ($k,$dbuser,$when_added,$Broj_kartice, @resto) = split(/\|/, $_);        
        if ($Broj_kartice eq $card_number) { push @customers, $_};

    } # End of while.
  close (CUSTOMERS);

$count = @customers;
if($count < 1){ 

  $message="Netočni pristupni podaci. Ukoliko ste zaboravili pristupne podatke, kontaktirajte Wienerberger!";
  $title="Main Menu";
  &print_default($title, $message);  
  exit;
}

return @customers[0];
} # End of search_customer subroutine.

























############### ajax_decrementq ################
sub ajax_decrementq {

my $kljuc = $_[0];
my $error ="";
my %adonis_hash = ();
my @adonis_records = ();
my @field_vals = ();
my $quantity;

print "Content-type: text/plain; charset=utf8\r\n\r\n";
############## Delete Record #################


# build %adonis_hash
 open (DATABASE, "$database") or die "Error opening file: $!\n";
 while (<DATABASE>)  {
   $line = $_;
   chop $line;
   @dbfields = ();
   ($key_,@resto) = split (/\|/, $line);
   if ($key_ ne "") { $adonis_hash{$key_} = $line;}
 } #end of while
 close (DATABASE);
 
 $kljuc +=0;
 if ($kljuc ne "") {
 	$key_record = $adonis_hash{$kljuc};
#  print "test $key_record";
 ($key,$dbuser,$when_added,@field_vals) = split(/\|/, $key_record); 
 $updated_record  =$key;
 $updated_record .= "\|$user";
 $updated_record .= "\|$when_added";


$error ="";
# assign the values to the variables of each field in the record
$x=0;
foreach $field (@fields){
   if ($field eq "ITEM_quantity") {
   	$quantity  = $field_vals[$x];
        if ($quantity > 0) {
            $quantity= $quantity -1;
        } 
        else {
            $error ="0";
        };
        ${$field} = $quantity;
   }
   else {
        ${$field} = $field_vals[$x];
   }

   $updated_record .= "\|${$field}";
   $x++;
} 
# End of foreach assign field loop.
$adonis_hash{$kljuc} = $updated_record;
}

 flock DATABASE, $EXCLUSIVE;
 open (DATABASE, ">$database") or die "Error opening file: $!\n";
 
   @adonis_records = values (%adonis_hash);

  # save adonis records
  foreach $line (@adonis_records){ 
    chomp $line;
    print DATABASE "$line\n";
  }

 close (DATABASE);
 flock DATABASE, $UNLOCK;
 
 if ($error eq "") {
   print  $quantity;
 }
 else {
   print $error;
 }

}
############# end of ajax_decrementq ################















############### ajax_incrementq ################
sub ajax_incrementq {

my $cart = $_[0];
my $error ="";
my %adonis_hash = ();
my @adonis_records = ();


print "Content-type: text/plain; charset=utf8\r\n\r\n";
############## update Record #################


# build %adonis_hash
# transform cart to product_hash (key, increment)
# increment  %adonis_hash

}
############# end of ajax_incrementq ################
