#!/usr/bin/perl
##############################################################################
# mercur EFTPOS SHOPS                      Version 1.02                #
###     John Jan Popovic, http://1stmuse.com
###     for Etranet
##############################################################################

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

use Encode;
use Fcntl ':flock'; # Import LOCK_* constants
use File::Copy;

$SIG{__DIE__} = sub {
    use Carp;
    my $err = shift;
    print "<pre>";
    print "ERROR: $err";
    print Carp::longmess();
    print "</pre>";
};


my $main_path;
my $root;

my    $server = "$ENV{'SERVER_NAME'}";


if ($server =~ /mfb-test/) {
    $main_path = '';
    $root = '/home/www/etranet_data/';
}
elsif ($server =~ /fiskal-test/) {
    $main_path = '';
    $root = '/eftposwwwroottst/HT_SAAS_eftposwwwroottst/';
}
elsif ($server=~ /eftpos-test/) {
    $root = 'C:/inetpub/wwwroot/';
    $main_path = 'http://eftpos-test.telekomcloud.hr/';
}
elsif ($server=~ /fiskalizacija/) {
    $main_path = "http://fiskalizacija.telekomcloud.hr/";
    $root = '//172.26.173.9/ht_interno_eftpos/wwwroot_production/'; # remote disk / netshare
}
else {
    $main_path = "http://loyalty.hr/";
    $root   = "$ENV{'DOCUMENT_ROOT'}";
}



$snowtrack = "$root/mercur_backup/snowtrack.txt";
$db_bis    = "$root/mercur/bis_shops.txt";          # Data file bis
$database  = "$root/mercur/mercur_shops.txt";    # Data file terminals name and path
$user_file = "$root/mercur/mercur_users.txt";    # User file name and path
$shop_counter   = "$root/mercur/counter_shops.txt";        
$delete_history = "$root/mercur/mfb_deleted_shops.txt"; 

# sortiranje po imenu ducana
my $MIID_SORT_OK = undef;

# enable on TEST server
$MIID_SORT_OK = 1 if $ENV{SERVER_NAME} =~ /test/;

# CGI parametar za sortiranje Trgovina
my $MIID_SORT_CGI = '';
if ($MIID_SORT_OK) {
    $MIID_SORT_CGI = '&sort_on=2';
}


# important patch http://blogs.perl.org/users/brian_d_foy/2011/07/now-you-need-lwpprotocolhttps.html
$ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'} = 0;



###############################################
###                  Set Configurations Below
###############################################

### Specify database fields in the array below
@fields = (
    "SHOP_ID",                       "SHOP_CompanyID",
    "SHOP_MIID",                     "SHOP_name",
    "SHOP_Adresa_Ulica",             "SHOP_Adresa_KucniBroj",
    "SHOP_Adresa_KucniBrojDodatak",  "SHOP_Adresa_BrojPoste",
    "SHOP_Adresa_Naselje",           "SHOP_Adresa_Opcina",
    "SHOP_RadnoVrijeme",             "SHOP_DatumPocetkaPrimjene",
    "SHOP_ZatvorenoOtvoreno",        "SHOP_SpecNamj",
    "SHOP_OstaliTipoviPoslProstora", "SHOP_FINA_id_registracije",
    "SHOP_FINA_datum_registracije"
);

$upload_y_URL = "./upload_csv.cgi";

### Set URL and email fields to be hyperlinks
### The number used corresponds to its placement in the array above
### Remeber to start your count at zero
### Leave the variables empty to remove the hyperlink
$script_name = $ENV{SCRIPT_NAME};

### Specify the required fields below. This may be left empty
@required = ();

 
      

# This script name
$db_name     = "Mini Fiskalna Blagajna"; # The database name
$table_width = "90%";                    # The display width of the entire table
$record_width      = "80%";      # The display width of the database records
$max_rows_returned = "120";      # Max number of rows displayed per page
 
$authenticate      = "yes";      # Prompts users for a user name and password
$register          = "yes";      # 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

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

############## Global Viariables ##################

$q             = CGI->new;
$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');

$mercur_customer = $q->param('mercur_customer');
$search_field    = $q->param('search_field');
$action          = $q->param('action');
$display         = $q->param('display');
@keys            = $q->param('key');
$key             = $q->param('key');
$company_id      = $q->param('company_id');
$company_oib     = $q->param('company_oib');
$search_field    = "all" if ($search_field eq "");
$search_for      = '.' if ($search_for eq "");
$action          = $q->param('which_search') if ($action =~ /^View/i);
$find_           = $q->param('find_');
$shop_id         = $q->param('SHOP_ID');
$company_id      = $q->param('company_id');

################# Main Logic ##################

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

$user = 'admin';    # should be removed consequently

## localhost/cgi-bin/mfb_shops.cgi?operation=ppx&company_id=900001&shop_id=800001
if ($q->param('operation') eq 'ppx') {
    $action     = 'ajax_ppx_fina';
    $user       = 'admin';
    $company_id = $q->param('company_id');
    $shop_id    = $q->param('shop_id');
}

## localhost/cgi-bin/mfb_shops.cgi?operation=uredi&company_id=900001&shop_id=800001
if ($q->param('operation') eq 'uredi') {
    $action     = 'PageEdit_card';
    $user       = 'admin';
    $company_id = $q->param('company_id');
    $shop_id    = $q->param('shop_id');
    $key        = $q->param('key');
}

if ($q->param('operation') eq 'new_shop') {
    $action     = 'new_card';
    $user       = 'admin';
    $company_id = $q->param('company_id');
}

if ($q->param('operation') eq 'finapp') {
    $action     = 'fina_registration';
    $user       = 'admin';
    $company_id = $q->param('company_id');
    $shop_id    = $q->param('shop_id');
    $key        = $q->param('key');
}

if ($q->param('operation') eq 'xsearch') {
    $action = 'xtrova';
    $user   = 'admin';

    my $buffer;
    my $find_ = $q->param('find_');
    $apostrophe = "%E2%80%99";
    $space      = "%20";
 

    $find_ =~ s/$space/ /g;
    $find_ =~ s/$apostrophe/\/;
 

    $find_ =~ s/^\W+//;    # trimming leading non_alpha characters
    $find_ =~ s/\s+$//;    # trimming trailing whitespaces
    $search_for   = $find_;
    $search_field = "all";
}

if ($authenticate eq "yes") {

    # the following operations can be performed, only if AUTHENTICATION IS VALID
    if ($q->param('operation') eq 'search') {
        $action = 'search';
        my $buffer;
        my $id            = 0;
        my $filter_       = $q->param('filter_');
        my $find_         = $q->param('find_');
        my $search_field_ = $q->param('search_field_');
        my $id_           = $q->param('id_');
        my $user_         = $q->param('user_');
        $search_for   = $find_;
        $user         = $user_;
        $search_field = $search_field_;
    }

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


    if ($action =~ /new_card/i) {
        increment_nx_counter();
        print_add_screen($company_id);
    }
    elsif ($action =~ /AddRecord/i) {
        add_record();
        UpdateTerminalsParametricFiles_page($shop_id);
    }
    elsif ($action =~ /PageEdit_card/i) {
        access_problem() if ($key < 1);
        search_db($key);
        edit_card_page();
    }
    elsif ($action =~ /ModifyRecord/i) {
        $title = "Modify";
        delete_records();
        $key = $keys[0];
        modify_record($key);
        UpdateTerminalsParametricFiles_page($shop_id);
    }
    elsif ($action =~ /Fina_registration/i) {
        $title         = "Edition Error";
        $error_message = "You forgot to select a record to modify!";
        access_problem() if ($key < 1);
        search_db($key);
        fina_registration_page();
    }
    elsif ($action =~ /ajax_ppx_fina/i) {
        ajax_ppx_fina($company_id, $shop_id);
    }
    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 = "Record Updated";
        $title   = "Main Menu";
        print_default($title, $message);
    }
    elsif ($action =~ /upload_1x/i) {
        $title = "upload 1 of 2";
        print_upload_1x_page($ITEM_type);
    }
    elsif ($action =~ /upload_2x/i) {
        $title = "upload 2 of 2";
        upload_2x();
    }
    elsif ($action =~ /delete/i) {
        search_db($search_for, $company_id, $shop_id);
        $title       = "Delete Which Record?";
        $button_text = "Eliminate card";
        $choose      = "delete";
        search_results();
    }
    elsif ($action =~ /search/i) {
        search_db($search_for, $company_id, $shop_id);
        $title       = "Search Results";
        $button_text = "";
        $choose      = "search";
        $what        = "search";
        search_results();
    }
    elsif ($action =~ /xtrova/i) {
        intelsense_results_ajax($search_for);
    }
    else {
        search_db($company_id, $company_id, $shop_id);
        $title       = "Search Results";
        $button_text = "";
        $choose      = "search";
        $what        = "search";
        search_results();
    }
}

exit;

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

    &html_header;

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


var myWind = ""

function uredi(key){
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {
 
           var url ="$main_path/cgi-bin/mfb_shops.cgi?operation=uredi&company_id=$company_id&company_oib=$company_oib&key=" + key;
           pics = window.open(url,"subWindow","HEIGHT=600,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}

function new_shop(company_id){
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {
 
           var url ="$main_path/cgi-bin/mfb_shops.cgi?operation=new_shop&company_id=" + company_id;
           pics = window.open(url,"subWindow","HEIGHT=600,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}



var myWind2 = ""

function finapp(key) {
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {
 
           var url ="$main_path/cgi-bin/mfb_shops.cgi?operation=finapp&company_id=$company_id&company_oib=$company_oib&key=" + key;
           pics = window.open(url,"subWindow","HEIGHT=600,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind2.focus();	}
}


</script>
   Pronađeno: 0 prodajnih mjesta <br><br>
          <INPUT TYPE=button  onClick=\"new_shop($company_id);\"  VALUE=\"Novo prodajno mjesto\" >

HTML

    $footer = "default";
    &html_footer;
}    # End of print_default subroutine.

########### Search & Sort Database #############
sub search_db {
    my $search_for  = $_[0];
    my $company_id  = $_[1];
    my $company_oib = $_[2];

    @results = ();
    ($search_key, $c_user) = split(/\_/, $search_for);

    #if (($company_oib ne "") && ( $company_id ne "") ){
    $date_time = &get_date;
    $date_time =~ s/at/~/g;
    ($date, $day_time) = split(/\~/, $date_time);
    
    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(/\|/, $_);
 
        if ($search_field =~ /all/i) {
            if (/$search_key/oi) {push @results, $_}
        }
        else {
            if ($field_vals[$search_field] =~ /$search_key/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_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);
        exit;
    }
    $total_row_count = @results;
    if ($total_row_count > $max_rows_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_rows_returned ; $i--)
        {
            $extra_row = pop(@results);
        }
        $new_hits_seen = $hits_seen + @results;
    }
    else {$show = "no";}
}    # End of search_db subroutine.

 

 
############## 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>
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',    'April',
        '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 = "$mday/$mon/$year at $hour\:$min\:$sec";
    return $date;
}

############## Form Header #################

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

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

sub form_footer {

    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 Footer #################

sub html_footer {

    &form_footer;

    print <<HTML;
</form>
<!-- Footer start -->

	<div style="height:90px; width:100%; clear:both; margin:0; margin-top:75px; padding:0;background-color:transparent;background-image:url('/images/pozadinafooter.png');background-repeat:repeat-x;position:relative;">

	<div id="fusszeile">
		<div id="telekom">
		  <p>© Hrvatski Telekom, MMXIV, crafted by Etranet</p>
		</div>
		<div id="fussnavi">
				<a href="https://www.hrvatskitelekom.hr/pravne-napomene"  title="">Pravne napomene</a>
		</div>
		<div class="t-icons">					
			<a href="http://www.hrvatskitelekom.hr/privatni/" title ="Privatni korisnici">Privatni korisnici</a><a href="http://www.hrvatskitelekom.hr/poslovni/" title ="Poslovni korisnici" >Poslovni korisnici</a><a href="http://www.tportal.hr" target="_blank" title ="tportal.hr" >tportal.hr</a><a href="http://www.iskon.hr" target="_blank" title ="Iskon">Iskon</a><a href="http://www.Etranet.hr/" target="_blank" title ="Etranet">Etranet</a><a href="http://www.t.ht.hr/tis"title ="Infrastrukturne telekom usluge">Infrastrukturne telekom usluge
</a>
		</div>

	</div></div>
	&nbsp;
	<div>
	<!--GO-->

<!-- Footer end --></div>



</body>
</html>


HTML

}

############ 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="View Last Record" >
HTML
        }

        if ($rows_left_to_view <= $max_rows_returned) {
            print <<HTML;
<INPUT TYPE=button  onClick=" myForm.action.value='$what';this.form.submit();"  VALUE="View Last $rows_left_to_view Records" >
HTML
        }

        if ($rows_left_to_view > $max_rows_returned) {
            print <<HTML;
<INPUT TYPE=button  onClick=" myForm.action.value='$what';this.form.submit();"  VALUE="View Next $max_rows_returned Records" >
HTML
        }
    }

}

############ ajax ppx ##################

sub ajax_ppx_fina {

    # registriranje poslovnog prostora kod FINA-e
    my $company_id = $_[0];
    my $shop_id    = $_[1];

    # Include the WWW::Mechanize module
    # use WWW::Mechanize;
    use IO::Socket::INET;
    use MIME::Base64;

    my $mt_fiskal_url = "http://localhost";

    $shop_record_COMPLEX = get_shop_record($shop_id);
    ($shop_error, $shop_record) = split(/~/, $shop_record_COMPLEX);
    if ($shop_error eq "") {
        (
            $key,                       $dbuser,
            $when_added,                $SHOP_ID,
            $SHOP_CompanyID,            $SHOP_MIID,
            $SHOP_name,                 $SHOP_Adresa_Ulica,
            $SHOP_Adresa_KucniBroj,     $SHOP_Adresa_KucniBrojDodatak,
            $SHOP_Adresa_BrojPoste,     $SHOP_Adresa_Naselje,
            $SHOP_Adresa_Opcina,        $SHOP_RadnoVrijeme,
            $SHOP_DatumPocetkaPrimjene, $SHOP_ZatvorenoOtvoreno,
            $SHOP_SpecNamj,             $SHOP_OstaliTipoviPoslProstora,
            $SHOP_FINA_id_registracije, $SHOP_FINA_datum_registracije
        ) = split(/\|/, $shop_record);

    }

    $company_record_COMPLEX = get_company_record($company_id);
    ($company_error, $company_record) = split(/~/, $company_record_COMPLEX);

    if ($shop_error eq "") {
        (
            $key,                             $dbuser,
            $when_added,                      $COMPANY_ID,
            $COMPANY_Ime,                     $COMPANY_OIB,
            $COMPANY_Adresa_Ulica,            $COMPANY_Adresa_KucniBroj,
            $COMPANY_Adresa_KucniBrojDodatak, $COMPANY_Adresa_BrojPoste,
            $COMPANY_Adresa_Naselje,          $COMPANY_Adresa_Opcina,
            $COMPANY_FinaCertificate,         $COMPANY_CertificatePassword,
            $COMPANY_Status,                  $COMPANY_AdminUserName,
            $COMPANY_AdminPassword,           $COMPANY_U_PDVsustavu,
            $COMPANY_Message,                 $COMPANY_LogotipFile,
            $COMPANY_R1_R2
        ) = split(/\|/, $company_record);

    }

    $OznPoslProstora      = $SHOP_MIID;                      #?!
    $Ulica                = $SHOP_Adresa_Ulica;
    $KucniBroj            = $SHOP_Adresa_KucniBroj;
    $KucniBrojDodatak     = $SHOP_Adresa_KucniBrojDodatak;
    $BrojPoste            = $SHOP_Adresa_BrojPoste;
    $Naselje              = $SHOP_Adresa_Naselje;
    $Opcina               = $SHOP_Adresa_Opcina;
    $RadnoVrijeme         = $SHOP_RadnoVrijeme;
    $DatumPocetkaPrimjene = $SHOP_DatumPocetkaPrimjene;
    $OznZat               = $SHOP_ZatvorenoOtvoreno;
    $OznZat =~ s/\s//g;
    $SpecNamj = "36044044039";

    $oib          = $COMPANY_OIB;
    $CertPassword = $COMPANY_CertificatePassword;

    if ($CertPassword eq "") {$CertPassword = $oib}
    ;    # perhaps we should change it in the future

    #$OznPoslProstora      ="Trgovina1";
    #$Ulica                ="Avenija Marina Držića";
    #$KucniBroj            ="12";
    #$KucniBrojDodatak     ="_";
    #$BrojPoste            ="10000";
    #$Naselje              ="Zagreb";
    #$Opcina               ="Dubrava";
    #$RadnoVrijeme         ="Pon-Sub: 08:00-21:00, Ned: 09:00-14:00";
    #$DatumPocetkaPrimjene ="01.03.2013";
    #$OznZat               ="";
    #$SpecNamj             ="Navedeno kao primjer";

    #$oib            ="36044044039"; # read from COMPANY record
    #$CertPassword   ="36044044039"; # read from COMPANY record

    $pp_url = "$mt_fiskal_url/MTFiskal/MTFiskal.aspx?request=pp&";
    $pp_url .= "oib=$oib&";
    $pp_url .= "OznPoslProstora=$OznPoslProstora&";
    $pp_url .= "Ulica=$Ulica&";
    $pp_url .= "KucniBroj=$KucniBroj&";
    $pp_url .= "KucniBrojDodatak=$KucniBrojDodatak&";
    $pp_url .= "BrojPoste=$BrojPoste&";
    $pp_url .= "Naselje=$Naselje&";
    $pp_url .= "Opcina=$Opcina&";
    $pp_url .= "RadnoVrijeme=$RadnoVrijeme&";
    $pp_url .= "DatumPocetkaPrimjene=$DatumPocetkaPrimjene&";
    $pp_url .= "SpecNamj=$SpecNamj&";
    $pp_url .= "OznZat=$OznZat&";
    $pp_url .= "CertPassword=$CertPassword";

    # Create a new instance of WWW::Mechanize
    # enabling autoheck checks each request to ensure it was successful,
    # producing an error if not.
    my $mechanize = WWW::Mechanize->new(autocheck => 0);
    $mechanize->agent_alias('Linux Mozilla');

    # Retrieve the page
    $mechanize->get($pp_url);

    # Assign the page content to $page
    my $page = $mechanize->content;

    my $text64 = capture_xml($page);
    my $text   = decode_base64($text64);
    $text =~ s/\>\s+\</\>\</g;
    $text =~ s/\n/~/g;
    $text =~ s/\r/~/g;
    $text =~ s/\</\&lt\;/g;
    $text =~ s/~+/ /g;
    $text =~ s/\&gt\;\s+\&lt\;/\&gt\;\&lt\;/g;

    $page =~ s/\n/~/g;
    $page =~ s/\r/~/g;
    $page =~ s/~/\./g;
    $page =~ s/xml=.+//;
    $page =~ s/<!.+html>//;
    $fina_response = $page;

    # Print HTTP header for PLAIN TEXT
    print "Content-type: text/html; charset=UTF-8\r\n\r\n";

    $time_stamp = &get_date;
    print "$fina_response~$time_stamp";
}

############ end of ajax ppx ##################
 



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

    $path_   = "$root/voltaire";
    $zy_name = "$path_/" . $prefix . "a" . $sufix . "\.jpg";
    $zy_file = $prefix . "a" . $sufix . "\.jpg";
    print <<BODY;
<HTML><HEAD>
 <TITLE>$db_name - $_[0]</TITLE>
 </HEAD><BODY BGCOLOR="#FFFFFF">
  <link rel="stylesheet" href="$main_path/js/styles_ns.css">
 <script type="text/javascript" src="$main_path/js/transfer_value.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" NAME="upload_1x" METHOD="post" ACTION="$upload_y_URL">

Server file:  $anno

<center>
<input type="file" name="myfile" accept="text/*" maxlength="2097152" size="60"><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; MMX 1stMuse &copy; MMX JJP<br><br></center>

</BODY></HTML>

BODY

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

############### Increment Counter ################
sub increment_nx_counter {
    open(COUNT_FILE, "+<$shop_counter") || die "Error opening user file.  $!\n";
    while (<COUNT_FILE>) {
        chop($_);
        ($numero, @other_counter_fields) = split(/\|/, $_);
    };    # End of While
    seek(COUNT_FILE, 0, 0);
    $numero++;
    print COUNT_FILE ("$numero|");
    close(COUNT_FILE);
}    #  End of Increment Counter

############# Intelsense Results Screen SHOPS ################
sub intelsense_results_ajax {
    my $search_for   = $_[0];
    my $search_field = 1;       # 1 look only at the field SHOP_CompanyID
    use CGI qw(:standard);

    my $cgi = new CGI;
    print $cgi ->header(
        -type                        => 'text/plain',
        -charset                     => 'UTF-8',
        -access_control_allow_origin => '*',
    );

# Print HTTP header for PLAIN TEXT contentType, 'Access-Control-Allow-Origin': '*',
# print "Content-type:  text/plain; charset=UTF-8\r\n\r\n";

    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(/\|/, $_);

        if ($search_field =~ /all/i) {
            if (/$search_for/oi) {push @results, $_}
        }
        else {
            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_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 Shops Found For This Company: '$search_for'";
        print $message;
    }

    foreach $record (@results) {
        ($key, $dbuser, $when_added, @field_vals) = split(/\|/, $record);

        #assign all record variables
        $x = 0;
        foreach $field (@fields) {
            ${$field} = $field_vals[$x];
            $x++;
        }

        print "$SHOP_ID: $SHOP_CompanyID: $SHOP_name~"

    }    # End of foreach record loop.

}    # End of intelsense_results_ajax subroutine.

########### capture_segment #############
sub capture_segment {

    my $query   = $_[0];
    my $segment = $_[1];
    chomp $query;
    $query .= "&";
    if ($query !~ /$segment\=\&/) {
        my $start = qq~$segment=~;
        my $stop  = qq~&~;
        $query =~ s/$start(.+?)$stop//;
        my $x = $1;
        return $x;
    }
    else {
        return "";
    }
}

########### Capture xml #############
sub capture_xml {
    my $query = $_[0];
    chomp $query;
    if ($query !~ /xml\=\&/) {
        my $start = qq~xml=~;
        my $stop  = qq~=~;
        $query =~ s/$start(.+?)$stop//;
        my $xml = $1;
        return $xml;
    }
    else {
        return "";
    }
}

########### get_shop_record #############
sub get_shop_record {
    my $search_for = $_[0];
    my @results    = ();
    my @resto      = ();

    my $shops_db =
      "$root/mercur/mercur_shops.txt";    # Data file terminals name and path

    open(DB, "$shops_db") || die "Error opening database.  $shops_db $!\n";
    while (<DB>) {
        @resto = ();
        (
            $key, $dbuser, $when_added, $SHOP_ID, $SHOP_CompanyID, $SHOP_MIID,
            @resto
        ) = split(/\|/, $_);
        if ($SHOP_ID == $search_for) {push @results, $_}
    }                                     # End of while.
    close(DB);

    $count = @results;
    if ($count < 1) {
        print
"ERROR: Nije registrirana niti jedna trgovina - prodajno mjesto sa SHOP_ID: '$search_for'";
    }

    $target_records = "";
    if ($count >= 1) {
        $err_message = "";
        for ($ii = 0 ; $ii < $count ; $ii++) {
            $record = @results[$ii];
            chomp $record;
            $target_records .= $record . "~";
        }
    }

    chomp $target_record;

    return "$err_message~$target_records";

}    # End of get_shop_record subroutine.

########### get_company_record #############
sub get_company_record {
    my $search_for = $_[0];
    my @results    = ();
    my @resto      = ();

    my $companies_db = "$root/mercur/mercur_companies.txt"
      ;    # Data file $companies_db name and path

    open(DB, "$companies_db")
      || die "Error opening database.  $companies_db $!\n";
    while (<DB>) {
        @resto = ();
        ($key, $dbuser, $when_added, $COMPANY_ID, @resto) = split(/\|/, $_);
        if ($COMPANY_ID == $search_for) {push @results, $_}
    }      # End of while.
    close(DB);

    $count = @results;
    if ($count < 1) {
        print
"ERROR: Nije registrirana niti jedna tvrtka sa COMPANY_ID: '$search_for'";
    }

    $target_records = "";
    if ($count >= 1) {
        $err_message = "";
        for ($ii = 0 ; $ii < $count ; $ii++) {
            $record = @results[$ii];
            chomp $record;
            $target_records .= $record . "~";
        }
    }

    chomp $target_record;

    return "$err_message~$target_records";

}    # End of get_company_record subroutine.

############### fina_registration_page ################

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

    #assign all record variables
    $x = 0;
    foreach $field (@fields) {
        ${$field} = $field_vals[$x];
        $x++;
    }

    #end of assign all record variables
    $title = "FINA - Prijava Poslovnog Prostora";

    print "Content-type: text/html; charset=utf8 \n\n";
    print <<HTML;
<HTML><HEAD>
 <meta http-equiv="content-type" content="text/html;  charset=utf8">
 <TITLE>FINA - Prijava Poslovnog Prostora</TITLE>
 </HEAD>
<BODY BGCOLOR="#FFFFFF" onLoad="ppFinaRegistration()">
  <link rel="stylesheet" href="$main_path/js/styles_ns.css">
 <CENTER><B>
 Mini Fiskalna Blagajna
 </B>
 <CENTER>
 <TABLE BORDER=1 WIDTH="90%" CELLSPACING="0" CELLPADDING="3">
 <TR> 
 <TD BGCOLOR="#e0e0e0" align="right"> 
 <CENTER>  <B>FINA - Prijava Poslovnog Prostora</B>  </CENTER>

 </TD>
 </TR>
 <TR> 
 <TD align=middle><BR>

<FORM name="myForm" METHOD="post" ACTION="/cgi-bin/mfb_shops.cgi">
<INPUT TYPE="hidden" NAME="action" VALUE="PageEdit_card">
<INPUT TYPE="hidden" NAME="company_id" VALUE="$company_id">
<INPUT TYPE="hidden" NAME="company_oib" VALUE="$company_oib">

<SCRIPT type="text/javascript">

<!-- 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 bIs = false;
    for (var e=0;e<frm.length;e++)
    {
      if(frm[e].type!="hidden" && bIs) return frm.elements[e];
      if (field==frm[e]) bIs=true;
    }
}


function ppFinaRegistration() {

 var pp_request ="company_id=$SHOP_CompanyID&shop_id=$SHOP_ID";

 var url = '$main_path/cgi-bin/mfb_shops.cgi?operation=ppx&' + pp_request;
 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)) {

      ajaxFinaResponse = xmlhttp.responseText;
      var results  = ajaxFinaResponse.split('~');
      if (results[0] == 'status=703') {alert ('Error 703 : ne postoji certifikat za traženi OIB. Prekontrolirati FINA certifikat i odgovarajući certifikatski password za CompanyID: $SHOP_CompanyID')};
      if (results[0] == 'status=705') {alert ('Error 705 : nepostojeći ili nepotpuni podaci.')};

      document.getElementById("FinaId").value = results[0];
      document.getElementById("FinaTimeStamp").value = results[1];
  };
 }
};
  

//  End -->
</script>


   <INPUT TYPE=HIDDEN NAME=key value="$key">

HTML

    # Create companies_select
    $database_companies =
      "$root/mercur/mercur_companies.txt";   # Data file companies name and path

    $companies_select = qq~
<select name="SHOP_CompanyID">
   <option value="" > </option>
~;

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

    foreach $adonis_record (@COMPANIES_line) {
        chomp $adonis_record;
        @altro = ();
        ($key, $dbuser, $when_added, $company_id, $company_name, @altro) =
          split(/\|/, $adonis_record);
        $DBADONIS_hash{$key} = $adonis_record;
        if   ($SHOP_CompanyID == $company_id) {$selected = "selected"}
        else                                  {$selected = ""}
        $companies_select .=
qq~   <option value="$company_id" $selected> $company_id - $company_name </option>~;
    }

    $companies_select .= qq~</select>~;

    # end of creating of companies_select

    # Create zatvorenootvoreno_select
    if ($SHOP_ZatvorenoOtvoreno eq "Z") {
        $Zselected = "selected";
        $Bselected = "";
    }
    else {$Bselected = "selected"; $Zselected = ""}

    $zatvorenootvoreno_select = qq~
<select name="SHOP_ZatvorenoOtvoreno">
   <option value=" " $Bselected>Otvoreno</option>
   <option value="Z" $Zselected >Zatvoreno</option>
</select>
~;

    # end of creating of zatvorenootvoreno_select

    # Create SHOP_OstaliTipoviPoslProstora pokretna_prodaja
    if ($SHOP_OstaliTipoviPoslProstora eq "pokretna_prodaja") {
        $yesselected = "selected";
        $noselected  = "";
    }
    else {$noselected = "selected"; $yesselected = ""}

    $OstaliTipoviPoslProstora_select = qq~
<select name="SHOP_OstaliTipoviPoslProstora">
   <option value="" $noselected > </option>
   <option value="pokretna_prodaja" $yesselected  >pokretna prodaja</option>
</select>
~;

    # end of creating of SHOP_OstaliTipoviPoslProstora select

    print <<HTML;

	<script type="text/javascript" src="../calendar2_files/mootools.js"></script>
	<script type="text/javascript" src="../calendar2_files/calendar.js"></script>
<link rel="stylesheet" type="text/css" href="../calendar2_files/iframe.css" media="screen">
<link rel="stylesheet" type="text/css" href="../calendar2_files/alternate.css" media="screen">


<script type="text/javascript">		
<!-- Begin
// calendar formatting options 'd.m.Y'  or 'd-m-y'  or 'd/m/y'
		window.addEvent('domready', function() { 
			myCal1 = new Calendar({SHOP_DatumPocetkaPrimjene: 'd.m.Y' }, { classes: ['alternate'], navigation: 2 });

		});

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 bIs = false;
    for (var e=0;e<frm.length;e++)
    {
      if(frm[e].type!="hidden" && bIs) return frm.elements[e];
      if (field==frm[e]) bIs=true;
    }
}

//  End -->
</script>

     <P>



<TABLE BORDER=0 CELLSPACING=0 class="gray_text">
        <TR>
         <TD></TD>
         <TD><INPUT TYPE="hidden" NAME="SHOP_CompanyID"  readonly VALUE="$SHOP_CompanyID" onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD></TD>
         <TD><INPUT TYPE="hidden" NAME="SHOP_ID"  readonly VALUE="$SHOP_ID" onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>

        <TR>
         <TD><B>Oznaka prodajnog mjesta:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_MIID" VALUE="$SHOP_MIID"  readonly onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Naziv prodajnog mjesta:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_name" VALUE="$SHOP_name" readonly  onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Ulica:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_Ulica" VALUE="$SHOP_Adresa_Ulica" readonly  onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Kućni broj:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_KucniBroj" VALUE="$SHOP_Adresa_KucniBroj" readonly  onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Kućni broj dodatak:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_KucniBrojDodatak" VALUE="$SHOP_Adresa_KucniBrojDodatak" readonly  onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Broj pošte:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_BrojPoste" VALUE="$SHOP_Adresa_BrojPoste" readonly  onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Naselje:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_Naselje" VALUE="$SHOP_Adresa_Naselje" readonly onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Općina:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_Opcina" VALUE="$SHOP_Adresa_Opcina" readonly  onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Radno vrijeme:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_RadnoVrijeme" VALUE="$SHOP_RadnoVrijeme" readonly onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>

        <TR>
         <TD><B>SHOP_DatumPocetkaPrimjene:</B></TD>
<TD>
<INPUT TYPE=TEXT NAME="SHOP_DatumPocetkaPrimjene" VALUE="$SHOP_DatumPocetkaPrimjene" readonly onkeydown="return tabOnEnter (this, event);"  >
   
</TD>
         </TR>
        <TR>
         <TD><B>Status:</B></TD>
         <TD>
<INPUT TYPE=TEXT NAME="SHOP_ZatvorenoOtvoreno" VALUE="$SHOP_ZatvorenoOtvoreno" readonly onkeydown="return tabOnEnter (this, event);"  >

</TD>
         </TR>
        <TR>
         <TD><B>Posebna namjena:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_SpecNamj" value="36044044039" readonly onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Ostali tipovi prostora:</B></TD>
         <TD>$OstaliTipoviPoslProstora_select</TD>
         </TR>
       <TR>

        <TR>
         <TD><B>FINA prijava:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_FINA_id_registracije" id="FinaId" readonly value="$SHOP_FINA_id_registracije" onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
       <TR>

        <TR>
         <TD><B>Datum i vrijeme prijave:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_FINA_datum_registracije" id="FinaTimeStamp" readonly value="$SHOP_FINA_datum_registracije" onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
       <TR>
<TD>
&nbsp;
</td>
 
<TD>


<BR>

 <INPUT TYPE=button  onClick=" myForm.action.value='ModifyRecord';this.form.submit();"  VALUE="Spremi" > 
 <INPUT TYPE=button  onClick="window.close()"  VALUE="Odustani" > 
   <P>
    <BR></TD></TR>

</TABLE>



<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="">


</BODY></HTML>
HTML
}

############### end of fina_registration_page ################

############## HTML Header #################
sub html_header {

    print "Content-type: text/html; charset=utf8 \n\n";
    print <<WWW;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="resource-type" content="document" />
	<meta http-equiv="imagetoolbar" content="false" />
	<meta name="Description" content="INSERT DESCRIPTION" />
	<meta name="Keywords" content="INSERT KEYWORDS" />
	<meta name="Author" content="webmaster@t-com.hr" />
	<meta name="Robots" content="index,follow" />
	<link rel="Shortcut Icon" href="/images/favicon.ico" type="image/ico" />
<title>T-Hrvatski Telekom</title>

<link href="../css/prva.css" rel="stylesheet" type="text/css" media="screen" />
<link href="../css/ht.css" rel="stylesheet" type="text/css" media="screen" />

<style type="text/css">
<!--
.gray_text {color: #555555}
-->
</style>

</head>

<body>
<div id="okvir">

<div id="heder">
	<div id="maliMeni">
        <ul> 
            <li><a href="$main_path/cgi-bin/mfb_signin.cgi?operation=signin&company_oib=$company_oib" title="Tvrtka">Tvrtka </a></li>
            <li><a href="$main_path/cgi-bin/mfb_shops.cgi?company_id=$company_id&company_oib=$company_oib$MIID_SORT_CGI" title="Trgovine">Trgovine</a></li>
            <li><a href="$main_path/cgi-bin/mfb_terminals.cgi?company_id=$company_id&company_oib=$company_oib" title="Uređaji">Uređaji</a></li>
	    <li><a href="$main_path/cgi-bin/mfb_salesmen.cgi?company_id=$company_id&company_oib=$company_oib" title="Prodavači">Prodavači</a></li>
            <li><a href="$main_path/cgi-bin/mfb_bills.cgi?company_id=$company_id&company_oib=$company_oib"  title ="Računi">Računi</a></li>
            <li><a href="$main_path/cgi-bin/mfb_signin.cgi?operation=help&company_oib=$company_oib" title ="Podrška">Podrška</a></li>
            <li><a href="$main_path/mfb" title ="Odjava">Odjava</a></li>
        </ul>
	</div>
 <ul id="nav">
            <li><a href="$main_path/cgi-bin/mfb_signin.cgi?operation=signin&company_oib=$company_oib" title="Tvrtka">Tvrtka </a></li>
            <li><a href="$main_path/cgi-bin/mfb_shops.cgi?company_id=$company_id&company_oib=$company_oib$MIID_SORT_CGI" title="Trgovine">Trgovine</a></li>
            <li><a href="$main_path/cgi-bin/mfb_terminals.cgi?company_id=$company_id&company_oib=$company_oib" title="Uređaji">Uređaji</a></li>
	    <li><a href="$main_path/cgi-bin/mfb_salesmen.cgi?company_id=$company_id&company_oib=$company_oib" title="Prodavači">Prodavači</a></li>
            <li><a href="$main_path/cgi-bin/mfb_bills.cgi?company_id=$company_id&company_oib=$company_oib"  title ="Računi">Računi</a></li>
            <li><a href="$main_path/cgi-bin/mfb_signin.cgi?operation=help&company_oib=$company_oib" title ="Podrška">Podrška</a></li>
            <li><a href="$main_path/mfb" title ="Odjava">Odjava</a></li>
  </ul>	
</div>

<!-- top menu end -->



<style type="text/css">
<!--

SELECT {
	FONT-SIZE: 11px; COLOR: #666666; LINE-HEIGHT: normal; FONT-FAMILY: verdana, helvetica, arial
}
TEXTAREA {
	FONT-SIZE: 11px; COLOR: #666666; LINE-HEIGHT: normal; FONT-FAMILY: verdana, helvetica, arial
}
INPUT {
	FONT-SIZE: 11px; COLOR: #666666; LINE-HEIGHT: normal; FONT-FAMILY: verdana, helvetica, arial
}
OPTION {
	FONT-SIZE: 11px; COLOR: #666666; LINE-HEIGHT: normal; FONT-FAMILY: verdana, helvetica, arial
}
.gray_text {color: #555555}
-->
</style>
 

WWW
    &form_header;

}

############## HTML Header Mini #################
sub html_header_mini {

    print "Content-type: text/html; charset=utf8 \n\n";
    print <<WWW;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="resource-type" content="document" />
	<meta http-equiv="imagetoolbar" content="false" />
	<meta name="Description" content="INSERT DESCRIPTION" />
	<meta name="Keywords" content="INSERT KEYWORDS" />
	<meta name="Author" content="webmaster@t-com.hr" />
	<meta name="Robots" content="index,follow" />
	<link rel="Shortcut Icon" href="/images/favicon.ico" type="image/ico" />
<title>T-Hrvatski Telekom</title>

<link href="../css/prva.css" rel="stylesheet" type="text/css" media="screen" />
<link href="../css/ht.css" rel="stylesheet" type="text/css" media="screen" />

<style type="text/css">
<!--
.gray_text {color: #555555}
-->
</style>

</head>

<body>
<div id="okvir">

<div id="heder">
	<div id="maliMeni">
        <ul> 
            <li><a href="$main_path/cgi-bin/mfb_signin.cgi?operation=signin&company_oib=$company_oib" title="Tvrtka">Tvrtka </a></li>
            <li><a href="$main_path/cgi-bin/mfb_shops.cgi?company_id=$company_id&company_oib=$company_oib" title="Trgovine">Trgovine</a></li>
            <li><a href="$main_path/cgi-bin/mfb_terminals.cgi?company_id=$company_id&company_oib=$company_oib" title="Uređaji">Uređaji</a></li>
	    <li><a href="$main_path/cgi-bin/mfb_salesmen.cgi?company_id=$company_id&company_oib=$company_oib" title="Prodavači">Prodavači</a></li>
            <li><a href="$main_path/cgi-bin/mfb_bills.cgi?company_id=$company_id&company_oib=$company_oib"  title ="Računi">Računi</a></li>
            <li><a href="$main_path/cgi-bin/mfb_signin.cgi?operation=help&company_oib=$company_oib" title ="Podrška">Podrška</a></li>
            <li><a href="$main_path/mfb" title ="Odjava">Odjava</a></li>
        </ul>
	</div>
 
</div>

<!-- top menu end -->



WWW
    &form_header;

}
############## end of HTML Header Mini #################

############# Results Screen ################
sub search_results {
    &html_header($title);

    if (($company_oib ne "") && ($company_id ne "")) {

        $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>Pronađeno prodajnih mjesta: <B>$total_row_count</B> <BR>~;
            if ($total_row_count > $max_rows_returned) {
                if ($hits_displayed == 2) {
                    print qq~<B>Last two</B> records shown below<BR>~;
                }
                elsif ($hits_displayed == 1) {
                    print qq~<B>Last</B> record shown below<BR>~;
                }
                else {
                    print
                      qq~<B>$start_hit</B> - <B>$end_hit</B> shown below<BR>~;
                }
            }    #end if
        }    #end if ... > 1
        else {print qq~<P>Pronađeno: jedno prodajno mjesto\n~;}

        $cerca = $search_for;
        print qq~

<script type="text/javascript">


var myWind = ""

function uredi(key){
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {
 
           var url ="$main_path/cgi-bin/mfb_shops.cgi?operation=uredi&company_id=$company_id&company_oib=$company_oib&key=" + key;
           pics = window.open(url,"subWindow","HEIGHT=600,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}

function new_shop(company_id){
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {
 
           var url ="$main_path/cgi-bin/mfb_shops.cgi?operation=new_shop&company_id=" + company_id;
           pics = window.open(url,"subWindow","HEIGHT=600,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind.focus();	}
}



var myWind2 = ""

function finapp(key) {
// either open, or put on the top if it is already existing
	if (myWind == "" || myWind.closed || myWind.name == undefined) {
 
           var url ="$main_path/cgi-bin/mfb_shops.cgi?operation=finapp&company_id=$company_id&company_oib=$company_oib&key=" + key;
           pics = window.open(url,"subWindow","HEIGHT=600,WIDTH=620,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes").focus();

	} else{	myWind2.focus();	}
}


</script>
~;

        $which_search = $choose;

        &next_page_buttons($rows_left_to_view);

        print "<INPUT TYPE=\"hidden\" NAME=\"key\" VALUE='0'>\n";

        print <<HTML;
<br><br><br><br>
<div class="tekst1" style="margin-left:20px; margin-top:-15px">

<table border="0" cellpadding="4" width="80%"  bgcolor="#E4E4FF" > 
<tr> 
      <td > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td> 
  <td  width="28%"><strong>Oznaka prodajnog mjesta</strong></td> 
  <td width="25%"><strong>Naziv prodajnog mjesta </strong></td> 
  <td width="43%">&nbsp;</td> 
</tr> 
HTML

        foreach $record (@results) {
            ($key, $dbuser, $when_added, @field_vals) = split(/\|/, $record);

            #assign all record variables
            $x = 0;
            foreach $field (@fields) {
                ${$field} = $field_vals[$x];
                $x++;
            }

            $control_buttons = qq~
           <INPUT TYPE=button  onClick=uredi('$key');
                               VALUE=\"Uredi\" >

           <INPUT TYPE=button   onClick=finapp('$key');  VALUE=\"FINA - prijava poslovnog prostora\" >

   ~;

# <INPUT TYPE=button  onClick=\"myForm.key.value='$key';myForm.search_field.value='all'; myForm.action.value='Delete Record';this.form.submit();\"  VALUE=\"Eliminate card\" >

            print <<HTML;
   <tr>
      <td > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td> 
      <td >$SHOP_MIID </td> 
      <td >$SHOP_name</td> 
      <td >$control_buttons</td> 
   </tr> 
HTML

        }    # End of foreach record loop.

        print "</TABLE></div>";

        $which_search = $choose;
        print qq~
           <br>
           <INPUT TYPE=button  onClick=\"new_shop($company_id);\"  VALUE=\"Novo prodajno mjesto\" >

    
   ~;
        &next_page_buttons($rows_left_to_view);
    }    # end oib, company empty

    print "<INPUT TYPE=\"hidden\" NAME=\"sort_on\" VALUE=\"$sort\">\n";
    print "<INPUT TYPE=\"hidden\" NAME=\"display\" VALUE=\"$display\">\n";
    print "<INPUT TYPE=\"hidden\" NAME=\"search_for\" VALUE=\"$search_for\">\n";
    print
      "<INPUT TYPE=\"hidden\" NAME=\"search_field\" VALUE=\"$search_field\">\n";

    print "<p>";
    $cerca_t = $cerca;

    if ($cerca eq '.') {$cerca_t = 'tutto'}
    &html_footer;
}    # End of search_results subroutine.

############## Mercur HTML Header #################

sub html_header_mercur {
    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">
  <link rel="stylesheet" href="$main_path/js/styles_ns.css">
 <CENTER><B>
 $db_name
 </B><p></CENTER><P>
 <CENTER>
 <TABLE BORDER=1 WIDTH="$table_width" CELLSPACING="0" CELLPADDING="3">
 <TR> 
 <TD BGCOLOR="#e0e0e0" align="right"> 
 <CENTER>  <B>$_[0]</B>  </CENTER>

 </TD>
 </TR>
 <TR> 
 <TD align=middle><BR>

HTML
    &form_header;

}

################ close_page ##################
sub close_page {

    &html_header_mini;
    print <<WWW;
  Close page <br>
<SCRIPT type="text/javascript">

window.close();

</script>
WWW
    &html_footer;
}    # End of close_page subroutine.



############### Modify Screen ################

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

    #assign all record variables
    $x = 0;
    foreach $field (@fields) {
        ${$field} = $field_vals[$x];
        $x++;
    }

    #end of assign all record variables
    $title = "uredi trgovinu";
    &html_header_mercur($title);
    print <<HTML;

<SCRIPT type="text/javascript">

<!-- 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 bIs = false;
    for (var e=0;e<frm.length;e++)
    {
      if(frm[e].type!="hidden" && bIs) return frm.elements[e];
      if (field==frm[e]) bIs=true;
    }
}



function ppFinaRegistration() {

 var pp_request ="company_id=$SHOP_CompanyID&shop_id=$SHOP_ID";

 var url = '$main_path/cgi-bin/mercur_shops.cgi?operation=ppx&' + pp_request;
 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)) {

      ajaxFinaResponse = xmlhttp.responseText;
      var results  = ajaxFinaResponse.split('~');
      if (results[0] == 'status=703') {alert ('Error 703 : ne postoji certifikat za traženi OIB. Prekontrolirati FINA certifikat i odgovarajući certifikatski password za CompanyID: $SHOP_CompanyID')};
      if (results[0] == 'status=705') {alert ('Error 705 : nepostojeći ili nepotpuni podaci.')};

      document.getElementById("FinaId").value = results[0];
      document.getElementById("FinaTimeStamp").value = results[1];
  };
 }
};
  


 function validate(action) {

    var  success = true;

    var x;    
    var miid   = document.myForm.SHOP_MIID.value;
    var regex1 =/\\W/;   //  only regular chaaracters 
    var miid_test1  = regex1.test(miid);
    var regex2 =/\\s/g;   // spaces
    var miid_test2  = regex2.test(miid);
    
    if( miid.length <1 || miid.length >9 ||  miid_test1 || miid_test2 )  {
      alert( "Unesite oznaku prodajnog mjesta, samo engleska slova i znamenke. Oznaka mora imati manje od 10 znakova." );
      miid = miid.replace(" ", "", "gi");
      miid = miid.replace(/\\W/g, '' );
      miid = miid.replace(/\\_/g, '' );
      document.myForm.SHOP_MIID.value =miid;
      document.myForm.SHOP_MIID.focus() ;
      success = false;
    };
     

    var houseNumber = document.myForm.SHOP_Adresa_KucniBroj.value;
    houseNumber = houseNumber.replace(/[\\D]/g, '' );
    document.myForm.SHOP_Adresa_KucniBroj.value = houseNumber;

    if(  houseNumber.length <1 || houseNumber.length >5 )  {
      alert( "Unesite kućni broj. Unesite samo znamenke. Broj mora imati manje od 5 znakova." );
      document.myForm.SHOP_Adresa_KucniBroj.focus();
      success = false;
    };

    var houseNumberAnnex = document.myForm.SHOP_Adresa_KucniBrojDodatak.value;
    houseNumberAnnex = houseNumberAnnex.replace(/[^čćžšđČĆŽŠĐ\\-\\w\\/\\.]/g, '' );
    document.myForm.SHOP_Adresa_KucniBrojDodatak.value = houseNumberAnnex;

    if( houseNumberAnnex.length >4 )  {
      alert( "KucniBrojDodatak mora imati manje od 4 znaka." );
      document.myForm.SHOP_KucniBrojDodatak.focus();
      success = false;
    };

    var zip = document.myForm.SHOP_Adresa_BrojPoste.value;
    zip = zip.replace(/[\\D]/g, '' );
    document.myForm.SHOP_Adresa_BrojPoste.value= zip;

    if( zip.length != 5 )  {
      alert( "Unesite samo znamenke. Broj POŠTE mora imati točno 5 znamenki." );
      document.myForm.SHOP_Adresa_BrojPoste.focus();
      success = false;
    };

        // cleanup the form, trim initial and terminal spaces in the form
        var form = document.forms["myForm"];

	for (var i=0; i<form.elements.length; i++) {
          x = form.elements[i].value;
           x = x.replace(/[^čćžšđČĆŽŠĐ\\-\\s\\:\\w\\/\\.\\,]/g, '' );
          x = x.replace(/\\s+\$/, '' );
          x = x.replace(/^\\s+/, '' );

          form.elements[i].value =x;
	}

    if (success)  {
      myForm.action.value=action;
      document.myForm.submit();
    }

 }



//  End -->
</script>


   <INPUT TYPE=HIDDEN NAME=key value="$key">

HTML

    # Create companies_select
    $database_companies =
      "$root/mercur/mercur_companies.txt";   # Data file companies name and path

    $companies_select = qq~
<select name="SHOP_CompanyID">
   <option value="" > </option>
~;

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

    foreach $adonis_record (@COMPANIES_line) {
        chomp $adonis_record;
        @altro = ();
        ($key, $dbuser, $when_added, $company_id, $company_name, @altro) =
          split(/\|/, $adonis_record);
        $DBADONIS_hash{$key} = $adonis_record;
        if   ($SHOP_CompanyID == $company_id) {$selected = "selected"}
        else                                  {$selected = ""}
        $companies_select .=
qq~   <option value="$company_id" $selected> $company_id - $company_name </option>~;
    }

    $companies_select .= qq~</select>~;

    # end of creating of companies_select

    # Create SHOP_OstaliTipoviPoslProstora pokretna_prodaja
    if ($SHOP_OstaliTipoviPoslProstora eq "pokretna_prodaja") {
        $yesselected = "selected";
        $noselected  = "";
    }
    else {$noselected = "selected"; $yesselected = ""}

    $OstaliTipoviPoslProstora_select = qq~
<select name="SHOP_OstaliTipoviPoslProstora">
   <option value="" $noselected > </option>
   <option value="pokretna_prodaja" $yesselected  >pokretna prodaja</option>
</select>
~;

    # end of creating of SHOP_OstaliTipoviPoslProstora select

    # Create zatvorenootvoreno_select
    if ($SHOP_ZatvorenoOtvoreno eq "Z") {
        $Zselected = "selected";
        $Bselected = "";
    }
    else {$Bselected = "selected"; $Zselected = ""}

    $zatvorenootvoreno_select = qq~
<select name="SHOP_ZatvorenoOtvoreno">
   <option value=" " $Bselected>Otvoreno</option>
   <option value="Z" $Zselected >Zatvoreno</option>
</select>
~;

    # end of creating of zatvorenootvoreno_select

    print <<HTML;
<link rel="stylesheet" type="text/css" href="../calendar2_files/iframe.css" media="screen">
<link rel="stylesheet" type="text/css" href="../calendar2_files/alternate.css" media="screen">

	<script type="text/javascript" src="../calendar2_files/mootools.js"></script>
	<script type="text/javascript" src="../calendar2_files/calendar.js"></script>

<script type="text/javascript">		
<!-- Begin
// calendar formatting options 'd.m.Y'  or 'd-m-y'  or 'd/m/y'
		window.addEvent('domready', function() { 
			myCal1 = new Calendar({SHOP_DatumPocetkaPrimjene: 'd.m.Y' }, { classes: ['alternate'], navigation: 2 });

		});

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 bIs = false;
    for (var e=0;e<frm.length;e++)
    {
      if(frm[e].type!="hidden" && bIs) return frm.elements[e];
      if (field==frm[e]) bIs=true;
    }
}

//  End -->
</script>

     <P>


<TABLE BORDER=0 CELLSPACING=0>
        <TR>
         <TD></TD>
         <TD><INPUT TYPE="hidden" NAME="SHOP_CompanyID"  readonly VALUE="$SHOP_CompanyID" onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD></TD>
         <TD><INPUT TYPE="hidden" NAME="SHOP_ID"  readonly VALUE="$SHOP_ID" onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>

        <TR>
         <TD><B>Oznaka prodajnog mjesta:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_MIID" VALUE="$SHOP_MIID"  readonly  onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Naziv prodajnog mjesta:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_name" VALUE="$SHOP_name" maxlength="99"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Ulica:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_Ulica" VALUE="$SHOP_Adresa_Ulica" maxlength="49"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Kućni broj:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_KucniBroj" VALUE="$SHOP_Adresa_KucniBroj" maxlength="9"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Kućni broj dodatak:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_KucniBrojDodatak" VALUE="$SHOP_Adresa_KucniBrojDodatak" maxlength="9"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Broj pošte:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_BrojPoste" VALUE="$SHOP_Adresa_BrojPoste" maxlength="29"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Naselje:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_Naselje" VALUE="$SHOP_Adresa_Naselje" maxlength="29"  onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Općina:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_Opcina" VALUE="$SHOP_Adresa_Opcina" maxlength="49"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Radno vrijeme:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_RadnoVrijeme" VALUE="$SHOP_RadnoVrijeme" maxlength="99" onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>

        <TR>
         <TD><B>Datum početka primjene:</B></TD>
<TD>

         <input class="alternate" readonly onClick="resetComplex();" onChange="resetComplex();" size="12" id="SHOP_DatumPocetkaPrimjene" name="SHOP_DatumPocetkaPrimjene" value="$SHOP_DatumPocetkaPrimjene" onKeyDown="return tabOnEnter (this, event);" type="text">
          <div class="alternate" style="left: -1000px; visibility: hidden; opacity: 0; position: absolute; top: -1000px; z-index: 1000;"></div>

</TD>
         </TR>
        <TR>
         <TD><B>Status:</B></TD>
         <TD>$zatvorenootvoreno_select</TD>
         </TR>
        <TR>
         <TD><B>Posebna namjena:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_SpecNamj" value="36044044039" readonly onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Ostali tipovi prostora:</B></TD>
         <TD>$OstaliTipoviPoslProstora_select</TD>
         </TR>
       <TR>

        <TR>
         <TD><B>FINA prijava prostora :</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_FINA_id_registracije" id="FinaId" readonly value="$SHOP_FINA_id_registracije" onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
       <TR>

        <TR>
         <TD><B>Datum i vrijeme prijave:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_FINA_datum_registracije" id="FinaTimeStamp" readonly value="$SHOP_FINA_datum_registracije" 
               onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
       <TR>    
<TD>
&nbsp;
</td>
 
<TD>


 <br>

 <INPUT TYPE=button  onClick="validate('ModifyRecord');"  VALUE="Spremi" > 
 <INPUT TYPE=button  onClick="window.close()"  VALUE="Odustani" > 
   </TD></TR>
  <TR> 

    </TD>
  </TR>
</TABLE>



<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>
</BODY></HTML>
HTML
}

################# GenerateParametricFiles ###################
# TID_basic.cnf Generira se iz tri razlicita filea: terminals.txt, shops.txt, companies.txt
# record identification triplet: TERMINAL_TID, TERMINAL_CompanyID, TERMINAL_ShopID.

sub GenerateParametricFiles {
    my $TID = $_[0];    #
    my $TERMINAL_record;
    my $SHOP_record;

    #  assemble TID_BASIC_FILE
    $TERMINAL_record = &FetchTERMINAL_record($TID);

    (
        $error_response_t,          $key,
        $dbuser,                    $when_added,
        $TERMINAL_TID,              $TERMINAL_CompanyID,
        $TERMINAL_ShopID,           $TERMINAL_TIID,
        $TERMINAL_MasterKey,        $TERMINAL_PaymentModalities,
        $TERMINAL_PriceListingFile, $TERMINAL_BasicParamFile,
        $TERMINAL_UsersFile,        $TERMINAL_SerialNumber,
        $TERMINAL_Model,            $TERMINAL_InternetConnection,
        $TERMINAL_Status
    ) = split(/\|/, $TERMINAL_record);

    print
"<br>Updated TID: <b>$TERMINAL_TID</b>:$TERMINAL_ShopID:$TERMINAL_CompanyID<br>..";

    $SHOP_record = &FetchSHOP_record($TERMINAL_ShopID);

    (
        $error_response_s,             $key,
        $dbuser,                       $when_added,
        $SHOP_ID,                      $SHOP_CompanyID,
        $SHOP_MIID,                    $SHOP_name,
        $SHOP_Adresa_Ulica,            $SHOP_Adresa_KucniBroj,
        $SHOP_Adresa_KucniBrojDodatak, $SHOP_Adresa_BrojPoste,
        $SHOP_Adresa_Naselje,          $SHOP_Adresa_Opcina,
        $SHOP_RadnoVrijeme,            $SHOP_DatumPocetkaPrimjene,
        $SHOP_ZatvorenoOtvoreno,       $SHOP_SpecNamj,
        $SHOP_OstaliTipoviPoslProstora
    ) = split(/\|/, $SHOP_record);

    #   print $SHOP_record;

    $COMPANY_record = &FetchCOMPANY_record($TERMINAL_CompanyID);
    (
        $error_response_c,            $key,
        $dbuser,                      $when_added,
        $COMPANY_ID,                  $COMPANY_Ime,
        $COMPANY_OIB,                 $COMPANY_Adresa_Ulica,
        $COMPANY_Adresa_KucniBroj,    $COMPANY_Adresa_KucniBrojDodatak,
        $COMPANY_Adresa_BrojPoste,    $COMPANY_Adresa_Naselje,
        $COMPANY_Adresa_Opcina,       $COMPANY_FinaCertificate,
        $COMPANY_CertificatePassword, $COMPANY_Status,
        $COMPANY_AdminUserName,       $COMPANY_AdminPassword,
        $COMPANY_U_PDVsustavu,        $COMPANY_Message,
        $COMPANY_Logotip,             $COMPANY_R1_R2,
        $COMPANY_ReceiptMessage
    ) = split(/\|/, $COMPANY_record);

    #print "$COMPANY_U_PDVsustavu, $COMPANY_Message, $COMPANY_R1_R2 <br>";

    $error_responseX =
      $error_response_t . $error_response_s . $error_response_c;

    if ($error_responseX eq "") {
        $TID_basic_header =
qq|TID;ImeTvrtke;OIB;U sustavu pdv;MIID;PoslPr;Ulica;KucniBroj;KucniBrojDod;Posta;Naselje;Opcina;Ostali tipovi posl prostora;RadnoVrijeme;TIID;NacinPlacanja;Status;CompanyMessage;R1_R2;ReceiptMessage;adminPassword|;

## MIID proactive Ingenico parsing patch ###########
        $SHOP_MIID =~ s/\W//g;    # strip all iregular characters
        if ($SHOP_MIID eq "") {$SHOP_MIID = "0"}

## EU SHOP_name rules patch ###############
        $SHOP_name_complex = $SHOP_name . ", ";
        $SHOP_name_complex .= $SHOP_Adresa_Ulica . " ";
        $SHOP_name_complex .= $SHOP_Adresa_KucniBroj . " ";
        $SHOP_name_complex .= $SHOP_Adresa_KucniBrojDodatak . ", ";
        $SHOP_name_complex .= $SHOP_Adresa_BrojPoste . " ";
        $SHOP_name_complex .= $SHOP_Adresa_Naselje;

        if ($SHOP_OstaliTipoviPoslProstora eq "pokretna_prodaja") {
            $SHOP_name_complex = $SHOP_name;
        }

## MIID proactive Ingenico parsing patch ###########
        $SHOP_MIID =~ s/\W//g;    # strip all iregular characters
        if ($SHOP_MIID eq "") {$SHOP_MIID = "0"}

## EU VAT exemption rules patch ###############
        $prefix_message =
          "oslobođeno plaćanja PDV-a prema članku 90 / Zakon o PDV-u ";
        if ($COMPANY_U_PDVsustavu == 0) {$prefix_message = "";}
        $ReceiptMessage_complex = $prefix_message . $COMPANY_ReceiptMessage;

        $COMPANY_U_PDVsustavu =~ s/\;//g;
        $SHOP_MIID =~ s/\;//g;

        $activity_status =
          terminal_activity_status($COMPANY_Status, $TERMINAL_Status);

        $COMPANY_Message_complex = $COMPANY_Message;
        if ($activity_status eq "disabled") {
            $COMPANY_Message_complex =
              "Privremeno isključena Mini fisklana blagajna";
        }

        $activity_status =
          terminal_activity_status($COMPANY_Status, $TERMINAL_Status);

        $TID_basic_record = $TERMINAL_TID;
        $TID_basic_record .= ";" . $COMPANY_Ime;

        #	  $TID_basic_record .=";HR" . $COMPANY_OIB; # country code prefix
        $TID_basic_record .= ";" . $COMPANY_OIB;
        $TID_basic_record .= ";" . $COMPANY_U_PDVsustavu;
        $TID_basic_record .= ";" . $SHOP_MIID;
        $TID_basic_record .= ";" . $SHOP_name_complex;   # $SHOP_name # previous
        $TID_basic_record .= ";" . $COMPANY_Adresa_Ulica;
        $TID_basic_record .= ";" . $COMPANY_Adresa_KucniBroj;
        $TID_basic_record .= ";" . $COMPANY_Adresa_KucniBrojDodatak;
        $TID_basic_record .= ";" . $COMPANY_Adresa_BrojPoste;
        $TID_basic_record .= ";" . $COMPANY_Adresa_Naselje;
        $TID_basic_record .= ";" . $COMPANY_Adresa_Opcina;
        $TID_basic_record .= ";" . $SHOP_OstaliTipoviPoslProstora;

        $SHOP_RadnoVrijeme29 = $SHOP_RadnoVrijeme;
        if (length($SHOP_RadnoVrijeme) > 29) {
            $SHOP_RadnoVrijeme29 = substr($SHOP_RadnoVrijeme, 0, 28);
        }

        $TID_basic_record .= ";" . $SHOP_RadnoVrijeme29;

        $TID_basic_record .= ";" . $TERMINAL_TIID;
        $TID_basic_record .= ";" . $TERMINAL_PaymentModalities;
        $TID_basic_record .=
          ";" . $activity_status;    ############## $COMPANY_Status
        $TID_basic_record .= ";" . $COMPANY_Message_complex;
        $TID_basic_record .= ";" . $COMPANY_R1_R2;
        $TID_basic_record .= ";" . $COMPANY_ReceiptMessage;
        $TID_basic_record .= ";" . $COMPANY_AdminPassword;

        $TID_basic_record =~ s/\;\;/\; \;/g
          ; # consecutive semicolon prevention / insert blank between consecutive semicolons

        #  print TID_BASIC_FILE
        $TID_basic_file =
            "$root/mercur_data/B"
          . $TERMINAL_TID
          . ".csv";    # Data file companies name and path
        open(TID_BASIC_FILE, ">$TID_basic_file")
          || die "Error opening user file. $TID_basic_file  $!\n";
        print TID_BASIC_FILE ("$TID_basic_header\n");
        print TID_BASIC_FILE ("$TID_basic_record\n");
        close(TID_BASIC_FILE);

        #  End of TID_BASIC_FILE

        # put B Marker file
        $TID_marker_B = "$root/mercur_markers/B_MARKER" . $TERMINAL_TID;
        open(TID_MARKER, ">$TID_marker_B")
          || die "Error opening user file. $TID_marker_B  $!\n";
        close(TID_MARKER);

    }
    else {
        # report error
        print "$error_response_t . $error_response_s .  $error_response_c";
    }

    #  end of assembling TID_BASIC_FILE

    #  assembling TID_UsersFile
    my @USERS_records = ();
    $USERS_records_and_error = &FetchSALESMEN_records($TID, $TERMINAL_TIID);
    ($error_response_u, @USERS_records) = split(/\~/, $USERS_records_and_error);
    $TID_users_header = qq|Ime i prezime trgovca;OIB trgovca;Lozinka;Mastripe|;

    if ($error_response_u eq "") {

# print "\n<br>****************************** USERS_FILE  ******************************<br>";
        $TID_users_file = "$root/mercur_data/U" . $TERMINAL_TID . ".csv";
        open(TID_USERS_FILE, ">$TID_users_file")
          || die "Error opening user file. $TID_users_file  $!\n";
        chomp $TID_users_header;
        print TID_USERS_FILE ("$TID_users_header\n");
        foreach $users_record (@USERS_records) {
            chomp $users_record;
            print TID_USERS_FILE ("$users_record\n");

            #print  ("$users_record<br>\n");
        }

# print "\n<br>****************************** ********** ******************************<br>";
        close(TID_USERS_FILE);

        #  End of TID_USERS_FILE

        # put U Marker file
        $TID_marker_U = "$root/mercur_markers/U_MARKER" . $TERMINAL_TID;
        open(TID_MARKER, ">$TID_marker_U")
          || die "Error opening user file. $TID_marker_U   $!\n";
        close(TID_MARKER);

        # create Etranet Work Order record
        $COMPANY_ContactPerson =
          "";    # 3 currently missing fields, to be implemented in future
        $COMPANY_Phone = "";
        $COMPANY_Email = "";

        $SHOP_ContactPerson = "";
        $SHOP_Phone         = "";

        $SHOP_adresa = qq~$SHOP_Adresa_Ulica $SHOP_Adresa_KucniBroj~;
        if ($SHOP_Adresa_KucniBrojDodatak ne "") {
            $SHOP_adresa .= qq~ / $SHOP_Adresa_KucniBrojDodatak~;
        }

        $time_stamp = &get_date;

    }
    else {
        # report error
        print "$error_response_u";
    }

    #  end of assembling TID_UsersFile

}    # ########## end of GenerateParametricFiles  #############

################# UpdateParametricFiles PAGE##################

sub UpdateTerminalsParametricFiles_page {
    my $shop_id = $_[0];

    # get all TERMINAL TIDs for the specified SHOP_ID

    $title = "Ažuriranje svih uređaja u trgovini";
    &html_header_mercur($title, "UpdateTerminalsParametricFiles");

    #print "shop_id: $shop_id <br>";

    my $update_error = "";

    if ($shop_id =~ /\d+/) {
        print "shop_id: $shop_id <br>";
        $terminal_records_COMPLEX = FetchTERMINAL_records_for_shop($shop_id);

        # print "terminal_records_COMPLEX $terminal_records_COMPLEX <br>";
        @terminal_records = ();
        ($terminal_error, @terminal_records) =
          split(/~/, $terminal_records_COMPLEX);
        if ($terminal_error !~ /error/) {

            unless (-e $snowtrack) {
                open(SNOWTRACK, ">$snowtrack")
                  || die "Error creating database.  $!\n";
            }
            else {
                open(SNOWTRACK, ">>$snowtrack")
                  || die "Error opening database. $snowtrack\n";
            }
            flock SNOWTRACK, $EXCLUSIVE;

            foreach $terminal_record (@terminal_records) {
                my (
                    $key,                         $dbuser,
                    $when_added,                  $TERMINAL_TID,
                    $TERMINAL_CompanyID,          $TERMINAL_ShopID,
                    $TERMINAL_TIID,               $TERMINAL_MasterKey,
                    $TERMINAL_PaymentModalities,  $TERMINAL_PriceListingFile,
                    $TERMINAL_BasicParamFile,     $TERMINAL_UsersFile,
                    $TERMINAL_SerialNumber,       $TERMINAL_Model,
                    $TERMINAL_InternetConnection, $TERMINAL_Status
                ) = split(/\|/, $terminal_record);
                print "<br>GenerateParametricFiles for tid: $TERMINAL_TID";
                &GenerateParametricFiles($TERMINAL_TID);

                seek SNOWTRACK, 0, 2;
                $when_added = &get_date;
                print SNOWTRACK
"$user$company_id|$when_added|in mfb_shop  $shop_id for tid: $TID \n";

            }
            flock SNOWTRACK, $UNLOCK;
            close(SNOWTRACK);
        }
        else {
            $update_error .= $terminal_error . ", <br>";
        }

    }
    else {
        $update_error .= $shop_error . ", <br>";
    }

    $update_error =~ s/\,//;
    print $update_error;

    print <<FOOTER;
 <br>
 <INPUT TYPE=button  onClick="window.close()"  VALUE="Zatvori" > 



<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>
</BODY></HTML>
FOOTER

}    # End of UpdateTerminalsParametricFiles_page subroutine.

################# Add Screen: Add new Card ##################

sub print_add_screen {
    $company_id = $_[0];

##### Read shop Counter
    flock COUNT_FILE, $EXCLUSIVE;
    open(COUNT_FILE, "+<$shop_counter")
      || die "Error opening file $shop_counter  $!\n";
    while (<COUNT_FILE>) {
        chop($_);
        ($currentnumber, @other_counter_fields) = split(/\|/, $_);
    };    # End of While
    close(COUNT_FILE);
    flock COUNT_FILE, $UNLOCK;
##### end of Read Counter

    # Create zatvorenootvoreno_select
    $zatvorenootvoreno_select = qq~
<select name="SHOP_ZatvorenoOtvoreno">
   <option value=" " selected >Otvoreno</option>
   <option value="Z" selected >Zatvoreno</option>
</select>
~;

    # end of creating of zatvorenootvoreno_select

    $title = "nova trgovina";
    &html_header_mercur($title);
    print <<HTML;

<SCRIPT type="text/javascript">

<!-- 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 bIs = false;
    for (var e=0;e<frm.length;e++)
    {
      if(frm[e].type!="hidden" && bIs) return frm.elements[e];
      if (field==frm[e]) bIs=true;
    }
}



function ppFinaRegistration() {

 var pp_request ="company_id=$SHOP_CompanyID&shop_id=$SHOP_ID";

 var url = '$main_path/cgi-bin/mercur_shops.cgi?operation=ppx&' + pp_request;
 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)) {

      ajaxFinaResponse = xmlhttp.responseText;
      var results  = ajaxFinaResponse.split('~');
      if (results[0] == 'status=703') {alert ('Error 703 : ne postoji certifikat za traženi OIB. Prekontrolirati FINA certifikat i odgovarajući certifikatski password za CompanyID: $SHOP_CompanyID')};
      if (results[0] == 'status=705') {alert ('Error 705 : nepostojeći ili nepotpuni podaci.')};

      document.getElementById("FinaId").value = results[0];
      document.getElementById("FinaTimeStamp").value = results[1];
  };
 }
};
  


 
 function validate(action) {

    var  success = true;

        
    var miid   = document.myForm.SHOP_MIID.value;
    var regex1 =/\\W/;   //  only regular chaaracters 
    var miid_test1  = regex1.test(miid);
    var regex2 =/\\s/g;   // spaces
    var miid_test2  = regex2.test(miid);
    
    if( miid.length <1 || miid.length >9 ||  miid_test1 || miid_test2 )  {
      alert( "Unesite oznaku prodajnog mjesta, samo engleska slova i znamenke. Oznaka mora imati manje od 10 znakova." );
      miid = miid.replace(" ", "", "gi");
      miid = miid.replace(/\\W/g, '' );
      miid = miid.replace(/\\_/g, '' );
      document.myForm.SHOP_MIID.value =miid;
      document.myForm.SHOP_MIID.focus() ;
      success = false;
    };
     

    var houseNumber = document.myForm.SHOP_Adresa_KucniBroj.value;
    houseNumber = houseNumber.replace(/[\\D]/g, '' );
    document.myForm.SHOP_Adresa_KucniBroj.value = houseNumber;

    if( houseNumber.length <1 || houseNumber.length >5 )  {
      alert( "Unesite kućni broj. Unesite samo znamenke. Broj mora imati manje od 5 znakova." );
      document.myForm.SHOP_Adresa_KucniBroj.focus();
      success = false;
    };

    var houseNumberAnnex = document.myForm.SHOP_Adresa_KucniBrojDodatak.value;
    houseNumberAnnex = houseNumberAnnex.replace(/[^čćžšđČĆŽŠĐ\\-\\w\\/\\.]/g, '' );
    document.myForm.SHOP_Adresa_KucniBrojDodatak.value = houseNumberAnnex;

    if( houseNumberAnnex.length >4 )  {
      alert( "KucniBrojDodatak mora imati manje od 4 znaka." );
      document.myForm.SHOP_KucniBrojDodatak.focus();
      success = false;
    };

    var zip = document.myForm.SHOP_Adresa_BrojPoste.value;
    zip = zip.replace(/[\\D]/g, '' );
    document.myForm.SHOP_Adresa_BrojPoste.value= zip;

    if( zip.length != 5 )  {
      alert( "Unesite samo znamenke. Broj POŠTE mora imati točno 5 znamenki." );
      document.myForm.SHOP_Adresa_BrojPoste.focus();
      success = false;
    };

        // cleanup the form, trim initial and terminal spaces in the form
        var form = document.forms["myForm"];
        // cleanup the form, trim initial and terminal spaces in the form
        var form = document.forms["myForm"];

	for (var i=0; i<form.elements.length; i++) {
          x = form.elements[i].value;
          x = x.replace(/[^čćžšđČĆŽŠĐ\\-\\s\\:\\w\\.\\,\\/]/g, '' );
          x = x.replace(/\\s+\$/, '' );
          x = x.replace(/^\\s+/, '' );

          form.elements[i].value =x;
	}

    if (success)  {
      myForm.action.value=action;
      document.myForm.submit();
    }

 }



//  End -->
</script>


   <INPUT TYPE=HIDDEN NAME=key value="$key">

HTML

    # Create zatvorenootvoreno_select
    if ($SHOP_ZatvorenoOtvoreno eq "Z") {
        $Zselected = "selected";
        $Bselected = "";
    }
    else {$Bselected = "selected"; $Zselected = ""}

    $zatvorenootvoreno_select = qq~
<select name="SHOP_ZatvorenoOtvoreno">
   <option value=" " $Bselected>Otvoreno</option>
   <option value="Z" $Zselected >Zatvoreno</option>
</select>
~;

    # end of creating of zatvorenootvoreno_select

    # Create SHOP_OstaliTipoviPoslProstora pokretna_prodaja
    if ($SHOP_OstaliTipoviPoslProstora eq "pokretna_prodaja") {
        $yesselected = "selected";
        $noselected  = "";
    }
    else {$noselected = "selected"; $yesselected = ""}

    $OstaliTipoviPoslProstora_select = qq~
<select name="SHOP_OstaliTipoviPoslProstora">
   <option value="" $noselected > </option>
   <option value="pokretna_prodaja" $yesselected  >pokretna prodaja</option>
</select>
~;

    # end of creating of SHOP_OstaliTipoviPoslProstora select

    print <<HTML;
<link rel="stylesheet" type="text/css" href="../calendar2_files/iframe.css" media="screen">
<link rel="stylesheet" type="text/css" href="../calendar2_files/alternate.css" media="screen">

	<script type="text/javascript" src="../calendar2_files/mootools.js"></script>
	<script type="text/javascript" src="../calendar2_files/calendar.js"></script>

<script type="text/javascript">		
<!-- Begin
// calendar formatting options 'd.m.Y'  or 'd-m-y'  or 'd/m/y'
		window.addEvent('domready', function() { 
			myCal1 = new Calendar({SHOP_DatumPocetkaPrimjene: 'd.m.Y' }, { classes: ['alternate'], navigation: 2 });

		});

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 bIs = false;
    for (var e=0;e<frm.length;e++)
    {
      if(frm[e].type!="hidden" && bIs) return frm.elements[e];
      if (field==frm[e]) bIs=true;
    }
}

//  End -->
</script>

     <P>


<TABLE BORDER=0 CELLSPACING=0>
        <TR>
         <TD></TD>
         <TD><INPUT TYPE="hidden" NAME="SHOP_CompanyID" readonly VALUE="$company_id" onkeydown="return tabOnEnter (this, event);"  ></TD> 
         </TR>
        <TR>
         <TD></TD>
         <TD><INPUT TYPE="hidden" NAME="SHOP_ID"  readonly VALUE="$currentnumber" onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>

        <TR>
         <TD><B>Oznaka prodajnog mjesta:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_MIID" VALUE="$SHOP_MIID"  onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Naziv prodajnog mjesta:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_name" VALUE="$SHOP_name" maxlength="99"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Ulica:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_Ulica" VALUE="$SHOP_Adresa_Ulica" maxlength="49"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Kućni broj:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_KucniBroj" VALUE="$SHOP_Adresa_KucniBroj" maxlength="9"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Kućni broj dodatak:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_KucniBrojDodatak" VALUE="$SHOP_Adresa_KucniBrojDodatak" maxlength="9"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Broj pošte:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_BrojPoste" VALUE="$SHOP_Adresa_BrojPoste" maxlength="29"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Naselje:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_Naselje" VALUE="$SHOP_Adresa_Naselje" maxlength="29"  onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Općina:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_Adresa_Opcina" VALUE="$SHOP_Adresa_Opcina" maxlength="49"   onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Radno vrijeme:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_RadnoVrijeme" VALUE="$SHOP_RadnoVrijeme" maxlength="29" onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>

        <TR>
         <TD><B>Datum početka primjene:</B></TD>
<TD>

         <input class="alternate" readonly onClick="resetComplex();" onChange="resetComplex();" size="12" id="SHOP_DatumPocetkaPrimjene" name="SHOP_DatumPocetkaPrimjene" value="$SHOP_DatumPocetkaPrimjene" onKeyDown="return tabOnEnter (this, event);" type="text">
          <div class="alternate" style="left: -1000px; visibility: hidden; opacity: 0; position: absolute; top: -1000px; z-index: 1000;"></div>

</TD>
         </TR>
        <TR>
         <TD><B>Status:</B></TD>
         <TD>$zatvorenootvoreno_select</TD>
         </TR>
        <TR>
         <TD><B>Posebna namjena:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_SpecNamj" value="36044044039" readonly onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
        <TR>
         <TD><B>Ostali tipovi prostora:</B></TD>
         <TD>$OstaliTipoviPoslProstora_select</TD>
         </TR>
       <TR>

        <TR>
         <TD><B>FINA prijava prostora :</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_FINA_id_registracije" id="FinaId" readonly value="$SHOP_FINA_id_registracije" onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
       <TR>

        <TR>
         <TD><B>Datum i vrijeme prijave:</B></TD>
         <TD><INPUT TYPE=TEXT NAME="SHOP_FINA_datum_registracije" id="FinaTimeStamp" readonly value="$SHOP_FINA_datum_registracije" 
               onkeydown="return tabOnEnter (this, event);"  ></TD>
         </TR>
       <TR>    
<TD>
&nbsp;
</td>
 
<TD>


 <br>

 <INPUT TYPE=button  onClick="validate('AddRecord');"  VALUE="Spremi" > 
 <INPUT TYPE=button  onClick="window.close()"  VALUE="Odustani" > 
   </TD></TR>
  <TR> 

    </TD>
  </TR>
</TABLE>



<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>
</BODY></HTML>
HTML
}

# End of print_add_screen subroutine.




################# FetchCOMPANY_record ###################
sub FetchCOMPANY_record {
    my $search_for    = $_[0];    # $TERMINAL_CompanyID
    my $target_record = "";
    my @results       = ();

    # print "COMPANY_key .. $search_for..";

    my $db_companies =
      "$root/mercur/bis_companies.txt";    # Data file terminals name and path

    open(BIS, "$db_companies") or die "Error opening database. $db_companies $!\n";
    while (<BIS>) {
        (
            $key,                             $dbuser,
            $when_added,                      $COMPANY_ID,
            $COMPANY_Ime,                     $COMPANY_OIB,
            $COMPANY_Adresa_Ulica,            $COMPANY_Adresa_KucniBroj,
            $COMPANY_Adresa_KucniBrojDodatak, $COMPANY_Adresa_BrojPoste,
            $COMPANY_Adresa_Naselje,          $COMPANY_Adresa_Opcina,
            $COMPANY_FinaCertificate,         $COMPANY_CertificatePassword,
            $COMPANY_Status,                  $COMPANY_AdminUserName,
            $COMPANY_AdminPassword,           $COMPANY_U_PDVsustavu,
            $COMPANY_Message,                 $COMPANY_Logotip,
            $COMPANY_R1_R2,                   $COMPANY_ReceiptMessage
        ) = split(/\|/, $_);

        if ($COMPANY_ID == $search_for) {push @results, $_}

    }    # End of while.
    close(BIS);

    my $count = @results;
    if ($count < 1) {
        $target_record = "";

        #  $err_message="Error=120 Neregistrirana tvrtka $search_for";
    }

    if ($count > 1) {
        $target_record = "";
        $err_message =
          "Error=101 Too many results found for CompanyId $search_for";
    }

    if ($count == 1) {
        $target_record = @results[0];
        $err_message   = "";
    }

    chomp $target_record;

    #print "COMPANY_record .. $target_record..";
    return "$err_message|$target_record";
}
########### end of FetchCOMPANY_record #############

################# FetchSHOP_record ######################
sub FetchSHOP_record {
    my $search_for    = $_[0];    # $TERMINAL_ShopID
    my $target_record = "";
    my @results       = ();
    my $cardId;

    $search_for =~ s/\s//g;

    #print "ShopID: $search_for ";

    my $database =  "$root/mercur/mercur_shops.txt";    # Data file shops name and path

    open(BIS, "$database") or die "Error opening database. $database $!\n";
    while (<BIS>) {
        (
            $key,                       $dbuser,
            $when_added,                $SHOP_ID,
            $SHOP_CompanyID,            $SHOP_MIID,
            $SHOP_name,                 $SHOP_Adresa_Ulica,
            $SHOP_Adresa_KucniBroj,     $SHOP_Adresa_KucniBrojDodatak,
            $SHOP_Adresa_BrojPoste,     $SHOP_Adresa_Naselje,
            $SHOP_Adresa_Opcina,        $SHOP_RadnoVrijeme,
            $SHOP_DatumPocetkaPrimjene, $SHOP_ZatvorenoOtvoreno,
            $SHOP_SpecNamj,             $SHOP_OstaliTipoviPoslProstora
        ) = split(/\|/, $_);

        if ($SHOP_ID eq $search_for) {push @results, $_}

    }    # End of while.
    close(BIS);

    my $count = @results;
    if ($count < 1) {
        $target_record = "";
        $err_message   = "Error=110 Neregistrirana trgovina $search_for";
    }

    if ($count > 1) {
        $target_record = "";

    #    $err_message="Error=111 Too many results found for SHOPId $search_for";
    }

    if ($count == 1) {
        $target_record = @results[0];
        $err_message   = "";
    }

    chomp $target_record;
    $return_string = "$err_message|$target_record";

    # print "FetchSHOP_record: $return_string ...";
    return $return_string;
}
########### end of FetchSHOP_record #############

################# FetchSALESMEN_records ###############
sub FetchSALESMEN_records {
    my $search_for    = $_[0];    # $TERMINAL_TID
    my $tiid          = $_[1];    # $TERMINAL_TIID
    my $target_record = "";
    my @results       = ();
    my $rec;

    # print "TERMINAL_TID .. $search_for ..";

    my $database =
      "$root/mercur/bis_salesmen.txt";    # salesmen file name and path

    open(DB, "$database") or die "Error opening database. $database $!\n";
    while (<DB>) {
        (
            $key,               $dbuser,
            $when_added,        $SALESMAN_CompanyID,
            $SALESMAN_ShopID,   $SALESMAN_TerminalID,
            $SALESMAN_Ime,      $SALESMAN_Oib,
            $SALESMAN_Password, $SALESMAN_MagstripeRFU
        ) = split(/\|/, $_);

        $rec = "$SALESMAN_Ime\;$SALESMAN_Oib\;$SALESMAN_Password\;$SALESMAN_MagstripeRFU";
        chomp $record;

        if ($SALESMAN_TerminalID == $search_for) {push @results, $rec}

    }    # End of while.
    close(DB);

    my $count = @results;
    if ($count < 1) {
        $target_record = "";
        $err_message =
qq~<p class="textorange">Error=125 Nije registriran niti jedan prodavač-blagajnik pri terminalu: $tiid ($search_for)</p>~;
    }

    $target_records = "";
    if ($count >= 1) {
        $err_message = "";
        for ($ii = 0 ; $ii < $count ; $ii++) {
            $record = @results[$ii];
            chomp $record;
            $target_records .= $record . "~";
        }
    }

    chomp $target_record;
 
    return "$err_message~$target_records";
}
########### end of FetchSALESMEN_records  #############

################# FetchTERMINAL_record ###################

sub FetchTERMINAL_record {
    my $search_for    = $_[0];    # $TERMINAL_TID
    my $target_record = "";
    my @results       = ();
    my $cardId;

    $search_for =~ s/\s//g;
    $search_for =~ s/\D//g;

    my $database =
      "$root/mercur/bis_terminals.txt";    # Data file terminals name and path
    open(DB, "$database") or die "Error opening database. $database $!\n";
    while (<DB>) {

        (
            $key, $dbuser, $when_added,
            $TERMINAL_TID,
            $TERMINAL_CompanyID,
            $TERMINAL_ShopID,
            $TERMINAL_TIID,

            $TERMINAL_MasterKey,
            $TERMINAL_PaymentModalities,
            $TERMINAL_PriceListingFile,
            $TERMINAL_BasicParamFile,
            $TERMINAL_UsersFile,
            $TERMINAL_SerialNumber,
            $TERMINAL_Model,
            $TERMINAL_InternetConnection,
            $TERMINAL_Status
        ) = split(/\|/, $_);

        if ($TERMINAL_TID == $search_for) {push @results, $_}

    }    # End of while.
    close(DB);

    my $count = @results;
    if ($count < 1) {
        $target_record = "";
        $err_message   = "Error=100 Neregistrirani  Terminal: $search_for";
    }

    if ($count > 1) {
        $target_record = "";
        $err_message =
          "Error=101 Too many results found for TerminalId $search_for";
    }

    if ($count == 1) {
        $target_record = @results[0];
        $err_message   = "";
    }

    chomp $target_record;
    return "$err_message|$target_record";
}
########### end of FetchTERMINAL_record #############

################# FetchTERMINAL_records_for_shop ###################

sub FetchTERMINAL_records_for_shop {
    my $search_for     = $_[0];    # $SHOP_ID
    my $target_record  = "";
    my $target_records = "";
    my @results        = ();
    my $cardId;

    $search_for =~ s/\s//g;
    $search_for =~ s/\D//g;

    my $database =   "$root/mercur/bis_terminals.txt";    # Data file terminals name and path

    flock DB, $EXCLUSIVE;

    open(DB, "$database") or die "Error opening database. $database $!\n";
    while (<DB>) {

        (
            $key, $dbuser, $when_added,
            $TERMINAL_TID,
            $TERMINAL_CompanyID,
            $TERMINAL_ShopID,
            $TERMINAL_TIID,

            $TERMINAL_MasterKey,
            $TERMINAL_PaymentModalities,
            $TERMINAL_PriceListingFile,
            $TERMINAL_BasicParamFile,
            $TERMINAL_UsersFile,
            $TERMINAL_SerialNumber,
            $TERMINAL_Model,
            $TERMINAL_InternetConnection,
            $TERMINAL_Status
        ) = split(/\|/, $_);

        if ($TERMINAL_ShopID == $search_for) {push @results, $_}

    }    # End of while.
    close(DB);
    flock DB, $UNLOCK;

    my $count = @results;
    if ($count < 1) {
        $target_record = "";
        $err_message =
" Error=100 Ne postoji niti jedan registrirani terminal za Shop: $search_for .. "
          ;    # Error=100
    }

    $target_records = "";
    if ($count >= 1) {
        $err_message = "";
        for ($ii = 0 ; $ii < $count ; $ii++) {
            $record = @results[$ii];
            chomp $record;
            $target_records .= $record . "~";
        }
    }

    chomp $target_records;

    return "$err_message~$target_records";
}
########### end of FetchTERMINAL_records_for_shop #############

sub terminal_activity_status {

    # terminal je suspendiran ako je u B fajlu status "inactive" ili "disabled".
    my $company_status  = $_[0];
    my $terminal_status = $_[1];

    my $activity_status = $company_status;
    if ($terminal_status eq "neaktivan") {$activity_status = "disabled";}

    return $activity_status;

}







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

sub add_record {
    my $record;
    $when_added = &get_date;
    $unix_time  = time();
    $key        = $unix_time . $user . $company_id;
    $record     = $key;
    $record .= "\|$user";
    $record .= "\|$when_added";
    foreach $field (@fields) {
        ${$field} = $q->param($field);
        $record .= "\|${$field}";
    }

   open (my $db_fh, ">>", $database) || die "Error opening database. $database $!\n"; 
   flock($db_fh, LOCK_EX) or die "Could not lock $database - $!";
   seek $db_fh, 0, 2;
   print $db_fh "$record\n";
   close($db_fh);

   open (my $fh_b, ">>", $db_bis) || die "Error opening database. $db_bis $!\n"; 
   flock($fh_b, LOCK_EX) or die "Could not lock $database - $!";
   seek $fh_b, 0, 2;
   print $fh_b "$record\n";
   close($fh_b);


}    # End of add_record subroutine.





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

sub modify_record {
  $when_added = &get_date;
# Eliminando_la_Scheda_precedente or conservendo_la_Scheda_precedente -- may be or not conserved the modification history
 if ($update_mode eq "conserve") {  $key = time()   }; 
 $key =~ s/\D//g;
 $record=$key . "_". $company_id;
 $record .= "\|$user";
 $record .= "\|$when_added";
 foreach $field (@fields){ ${$field} = $q->param($field);  $record .= "\|${$field}"; }

   open (my $db_fh, ">>", $database) || die "Error opening database. $database $!\n"; 
   flock($db_fh, LOCK_EX) or die "Could not lock $database - $!";
   seek $db_fh, 0, 2;
   $record =~ s/[\n\r]//g;
   print $db_fh "$record\n";
   close($db_fh);
} # End of modify_record subroutine.








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

sub delete_records   {
my @new_data;
my $deleted_record;
  open (my $db_fh, "<", $database) || die "Error opening database. $database $!\n"; 
  flock($db_fh, LOCK_EX) or die "Could not lock $database - $!";         
  while (<$db_fh>)   {
    $line = $_;
    chomp $line;
    @dbfields = split (/\|/, $line);
    $deleted = "no";
    if ($dbfields[0] eq $q->param(key)) { 
      $deleted = "yes"; if ($user eq $dbfields[1]) { $security_satisfied = "yes"; } 
      $deleted_record =$line;
    }
    elsif ($deleted ne "yes") { 
      push @new_data, $line;
    };
    } #end of while
  close ($db_fh);
  if ($authenticate ne "yes") { $security_satisfied = "yes"; }
  if ($security_satisfied ne "yes" && $record_ownership eq "yes" && $admin_user_name ne "$user")   {
    $error_message = "You are not autorised to access this data!";
    &access_problem($error_message);
    exit;
    }  
  else  {

   open (my $db_fh, ">", $database)  || die "Error opening database. $database $!\n";
   flock($db_fh, LOCK_EX) or die "Could not lock $database - $!";
   foreach $record_line (@new_data){ 
       print $db_fh "$record_line\n";
   };
   close($db_fh);
 
   open (my $fh_b, ">", $db_bis) || die "Error opening database. $db_bis $!\n";
   flock($fh_b, LOCK_EX) or die "Could not lock $db_bis  - $!"; 
   foreach $record (@new_data){ 
       print $fh_b "$record\n"; 
   };
   close($fh_b);

   open(my $fh_a, ">>", $delete_history) or die "Could not open $! $delete_history  \n";
   flock($fh_a, LOCK_EX) or die "Could not lock $delete_history - $!";
   $when_deleted = &get_date;
   $id_suffix = "$user|$company_id|$shop_id|$when_deleted|$ENV{'REMOTE_ADDR'}\|$ENV{'HTTP_USER_AGENT'}";
   print $fh_a "$deleted_record|$id_suffix\n"; 
   close ($fh_a);

    }
  } 

