TO ORDER FROM AHTELLO...



(How does ordering work?)
Returning policy
ORDERING FORM / PRICE LIST


Artist:
AHTELLO:

(These paintings come with a simple frame,
as shown in the Gallery, if you wish!)

Click on ¤ - button to see a painting again,
(a little window pops up with the painting)
or if your browser does not support Javascript,
follow the name link to reload the small version page.

( US$ = American Dollars )

* * * * *

Fill out this form completely please!
If your browser does not support forms or javascript,
or if you have any questions,
send a normal message, to:

order@ahtello.com


Prices are in US$
  BIRTH OF SPRING1100 
  BLUE CHRYSTAL  950 
  CLOWN1100 
  EGG  850 
  EGYPTIAN SUN DANCE2200 
  FREEDOM VS FEAR3600 
  GRAN CANARIA  850 
  HIBERNATING BIRD  850 
  IN THE CAVE  850 
  INTO THE LIGHT1100 
  INVISIBLE ANGEL2200 
  KING OF THE OCEAN3000 
  LILY BIRD2200 
  LITTLEBOAT  850 
  LOVE GIFT2200 
  MOONGIRL3000 
  NIGHT DOLPHINS1300 
  OUT OF THE BODY2200 
  PROJECTIONS1200 
  PURPLE DOLPHINS  950 
  SALSA2200 
  SALSA HEART  950 
  SISTERS3000 
  SUNSET OVER TIME  700 
  TANTRA - MAGICAL LAKE 1600 
  TANTRA - THE LOVERS3000 
  THE GUARDIAN2400 
  THREE ME1100 
  TIGER LILY  850 
  TWOFACE2000 
  VIRGIN MARY  850 
  WELL OF LIFE2200 
  WHO IS DRIVING ?  950 
  WIND OF FREEDOM4800 
   * Frame:
     1=Keep frame (if framed)
     2=No frame

   * I will pay by:
     1=Check
     2=Transfer
     3=Money Order

   * Your name

   * Billing address

     Same shipping address?
     Check box if yes!

   * Shipping address

   * Country 

   * Phone, incl. country
      and area code

   * Fax number

   * E-mail address


* * * * *

   * Write 1 in the box,
to accept the returning policy
of Ahtello Spiritual Art Gallery.

* * * * *


    
 




How does ordering work?




When your order arrive the painting will be reserved for you.
A confirmation will be sent to you, by e-mail,
also containing the rest of the information about to pay.


Paying methods


          •  Money order
          •  Transfer to swedish bank account
          •  Deposit to american bank account

When you get the confirmation you pay the option you have made.
When the payment is cleared,
the painting will be sent to you,
securely packed and insured.






Returning policy of Ahtello Art Gallery:

if you are not satisfied with the painting,
you have got 3 (seven) days from delivery date, to send an e-mail to


order@ahtello.com


to inform about that you do not want the painting,
and you will be allowed to send it back,
within 3 (three) more days.
The frame is free of charge, as a little extra, and because of that
I give no right to return only the frame itself, nor do I give refund for it
if you do not like it. Of course, if you return a painting,
you have to return the frame too, if it was delivered with one.
If you return a painting,
the shipping cost for shipping the painting to you,
will be deducted from your refund.

Note: you are allowed to return a painting only if:
        • You have informed Ahtello Spiritual Art Gallery,
          according to what is said above
        • The painting is not damaged
        • The painting is securely packed, insured and shipped, all paid by you
Note: if you buy a painting it does not mean you get the copyright!
The copyright still belongs to the artist.

Back to top          Back to ordering form          Back to send order



#! /usr/local/bin/perl # cgi-bin access counter program # Version 3.2.4 # # The program is placed under the GNU Public License (GPL) # gburgyan@cybercon.com # counter or counterbanner or counterfiglet # # Outputs the number of times a specific page has been accessed. # The output depends on which page 'called' it, and what the program # is named: # # The counter can "take arguments" via its name. That is, if you tack # -arg to the end of the program name, -arg is taken to be an argument. # For example, if you call the counter 'counter-ord', '-ord' is considered # an argument, and an ordinal count (1st, 2nd, 3rd, ...) will be printed # instead of (1, 2, 3, ...). Note that counterord does the same thing as # counter-ord for backward compatibility. # # Currently recognized arguments: # # -f=font sets "font" to be the font for figlet # -nc no count; don't to write the incremented count back to the file # -nl no link; don't automatically generate a link # -ord make an ordinal count instead of regular # -doc=document override the DOCUMENT_URI environment variable # # Example: counterfiglet-ord-f=bigfont-nc # # This will cause the counter to call figlet as the output routine, printing # in a big font an ordinal count, without updating the access count file. # Note that the order of arguments is irrelevant so long as you spell the # file name correctly. It is generally assumed that the ability to take # different arguments/use different output routines is done with symlinks: # i.e. ln -s counter counterfiglet-ord-f=bigfont-nc # Ok, so what if you want to use the font "banner3-D"? You have to quote # the "-" as either "\-" or "%2D" (where 2D is hex for the ASCII code for # "-"). Since you can use \ and % to quote both must be quoted if you want # them to show up by themselves. "%" can be either "\%" or "%25" and # "\" can be either "\\" or "%5C". Also, remember that each "\" must be # quoted in HTML or in your shell. This means you will have to type: # 'ln -s counter counterfiglet-f=banner3\\-D' or use # 'counterfigler-f=banner3%2DD' in order to make the link. # Advantages: # Does not require any graphics for the client. # # Allows anyone on a server (after the program has been installed) to # very easily put an access counter on any of their pages. # # Only one *TEXT* file is used for the whole server. # # Fits in well with the rest of the formatting of the document. # # Can Selectively ignore accesses from certain hosts. # # Easily customizable with symlinks so only one actual copy of the # counter is ever needed. # # Possible flaws: # It requires server-side includes to be turned on unless you use a # CGI script to handle the parsing. Such a script is available from # http://www.webtools.org/ssis/ssis # # Requires one of the most ridiculous methods possible for passing arguments. # Unless you are using the ssis script which allows you to pass arguments # with "/" instead of "-" such that the environment variable PATH_INFO is # used to pass arguments in any order and without symlinks. # # # File format: # On each line of the "access_count" file, there is one record: # 'document' 0000000000 # The document name in single quotes followed by a space, followed by # the number of accesses of the document (must be 10 digits). Any # line which does not fit this format is ignored for safety's sake. # # # Please send your comments to me! :) # gburgyan@cybercon.com # ######################################################################## # # Version 3.2.4-Added -doc= command-line option to work around netsite's # brokenness (thanks Steve Manes ) - GEB # Version 3.2.3-Fixed command-line options for NCSA httpd 1.4 - GNS # Version 3.2.2-Clean up some warnings if used with `perl -w` # Version 3.2.1-Allow .cgi and .pl extentions to filenames - DE # Version 3.2 - Now it can take arguments via the filename - GNS # Version 3.1 - Link now depends on the printing module. # - Removed dependence on cgi-lib.pl - GNS # Version 3.0 - File locking made non-necessary. (This is not as bad # as it seems. # - Made the output format more easily user-definable # Version 2.3 - Locking problems *REALLY* fixed. Again, this is # Phil that cought my bug. It really works now! :) # Version 2.2 - Locking problem fixed. Thank you Philip Greenspun # # Version 2.1 - Support for aliases of pages (to support many links to # one page) # Version 2.0 - No longer depends on a dbm file; instead uses a very # simple text file. It also supports locking. # Version 1.0 - First public release. Uses DBM files to count accesses # ######################################################################## # # CHANGE THESE TO SUIT YOUR SITE # # Maximum number of times to try to lock the file. # Each try is .1 second. Try for 1 second. $MaxTries = 10; # The name of the file to use. You should probably give this a relative path $FileName = "access_count"; # Set this to point to something, or comment it out, and it # won't be a link at all. #$Link = "http://www.webtools.org/counter/"; # Aliases: Set this up so that diffent pages will all yield the same # count. For instance, if you have a link like "index.html -> home.html" # set it up like ("/index.html", "/home.html"). Make sure you give a full # path to it. This will treat "/index.html" as if it were "/home.html". %Aliases = ("/index.html", "/home.html", "/webtools/counter/index.html", "/~gburgyan/counter/index.html", "/counter/index.html", "/~gburgyan/counter/index.html", ); # Replace with a list of regular expression IP addresses that we # are supposed to ignore. If you don't know what this means, # just put '#'s in front of the next section. #@IgnoreIP = ("199\.18\.203\..*", # Change Me! # "199\.18\.159\.1", # Change Me! # ); # Whether or not to use locking. If perl complains that flock is not # defined, change this to 0. Not *really* necessary because we check # to make sure it works properly. $UseLocking = 1; # ######################################################################### # # Misc documents to refer people to in case of errors. # $CreateFile = "[Err or Creating Counter File -- Click for more info]"; $AccessRights = "[E rror Opening Counter File -- Click for more info]"; $TimeoutLock = "[Timeout locking counter file]"; $BadVersion = "[Version access_cou nt newer than this program. Please upgrade.]"; # Get arguments from program name. Argh...what a horrible way to do it! $prog = $0; $prog =~ s/(\.cgi|\.pl)//; #strip .cgi|.pl name extension $prog =~ s!^(.*/)!!; # separate program name $prog =~ s/\\(.)/sprintf("%%%02x", ord($1))/ge; # quote \c to %xx ($printer, @args) = split(/-/, $prog); # args are separated by dashes $printer =~ s/%(..)/pack("c", hex($1))/ge; # unquote printer function name # This gets path info, which is only applicable if you are using our # ssis script (see above). This makes counter/ord the same as counter-ord push(@args, split("/", $ENV{"PATH_INFO"})) if $ENV{"PATH_INFO"}; # put them in assoc array %arg foreach (@args) # means do this for each element in the array { s/%(..)/pack("c", hex($1))/ge; # unquote %xx /^([^=]*)=?(.*)$/; # extract "=" part, if any $arg{$1} = $2 ? $2 : 1; } undef $Link if $arg{'nl'}; # make link? # Print out the header print "Content-type: text/html\n\n"; # Make sure the file exists: if (!(-f $FileName)) { if (!open (COUNT,">$FileName")) { print $CreateFile; exit 1; } } else { if (!((-r $FileName) && (-w $FileName))) { # Make sure that we can in fact read and write to the file in # question. If not, direct them to the FAQ. print $AccessRights; exit 1; } if (!open (COUNT,"+<$FileName")) { # Now make sure it *really* opens print $AccessRights; # ...just in case... exit 1; } $version = ; if (!($version =~ /^\d+.\d+$/)) { $version = 1; seek(COUNT,0,0); } } # This is for the future: the access_count file will have a version number. if ($version > 1) { print $BadVersion; exit 1; } if ($UseLocking) { # Try to get a lock on the file while ($MaxTries--) { # Try to use locking, if it doesn't use locking, the eval would # die. Catch that, and don't use locking. # Try to grad the lock with a non-blocking (4) exclusive (2) lock. # (4 | 2 = 6) $lockresult = eval("flock(COUNT,6)"); if ($@) { $UseLocking = 0; last; } if (!$lockresult) { select(undef,undef,undef,0.1); # Wait for 1/10 sec. } else { last; # We have gotten the lock. } } } # You would figure that $MaxTries would equal 0 if it didn't work. The # post-decrement takes it to -1 when the loop finally exits. if ($MaxTries == -1) { print $TimeoutLock; exit(0); } # Make sure perl doesn't spit out warnings... if (defined $arg{'doc'}) { $doc_uri = $arg{'doc'}; } elsif (defined $ENV{'DOCUMENT_URI'}) { $doc_uri = $ENV{'DOCUMENT_URI'}; } else { $doc_uri = ""; } $doc_uri = $Aliases{$doc_uri} if defined $Aliases{$doc_uri}; $location = tell COUNT; while ($line = ) { ($uri,$accesses) = ($line =~ /^'(\S*)' (\d\d\d\d\d\d\d\d\d\d)$/); last if ($uri eq $doc_uri); $location = tell COUNT; $accesses = 0; } $accesses += 1; # *NOT* '++' because we don't want '++'s magic $num = $arg{'ord'} ? $accesses . &ordinalize($accesses) : $accesses; ($count, $nLink) = eval("&output_$printer('$num')"); if ($@) { ($count, $nLink) = &output_counter($num); } # Print out a link to something informative (if we were requested to) print "" if $nLink; print $count; print "" if $nLink; # Make sure we are not ignoring the host: $ignore = 0; $ignore = grep($ENV{"REMOTE_ADDR"} =~ /$_/, @IgnoreIP) if defined ($ENV{"REMOTE _ADDR"}); if (!$ignore && !$arg{"nc"}) # if we aren't ignored and requested to not count { # Now update the counter file seek(COUNT, $location, 0); $longaccesses = sprintf("%010d", $accesses); print COUNT "'$doc_uri' $longaccesses\n"; } if ($UseLocking) { flock(COUNT,8); # Unlock the file. } close COUNT; # ordinalize # # Figure out what suffix (st, nd, rd, th) a number would have in ordinal # form and return that extension. sub ordinalize { local($count) = @_; local($last, $last2); $last2 = $count % 100; $last = $count % 10; if ($last2 < 10 || $last2 > 13) { return "st" if $last == 1; return "nd" if $last == 2; return "rd" if $last == 3; } return "th"; # Catch "eleventh, twelveth, thirteenth" etc. } # The following are the routines that actually convert the number # of accesses into something that we print out. # # The name of each function is "output_" followed by the program's name. # For instance, is the program is called "counter" then "output_counter" # will be called; a program called "counterbanner" will call # "output_counterbanner" to get the output. # # If the function is not defined, then "output_counter" will be called. # output_counter # # The simplest function: just returns the number of accesses and the link. sub output_counter { local($count) = @_; return $count, $Link; # we return the count and the link } # output_counterord # # Return the number of accesses as an ordinal number. (ie. 1st, 2nd, 3rd, 4th) sub output_counterord { local($count) = @_; return $count . &ordinalize($count), $Link; } # output_counterbanner # # A somewhat silly one that uses the "banner" command to print out the # count. :) You might need to change the path to make it work. sub output_counterbanner { local($count) = @_; $banner = `banner $count`; return "
$banner
"; # return no link here (it would be annoying) } # output_counterfiglet # # An even sillier one than counterbanner. :) sub output_counterfiglet { local($count) = @_; $fig = "echo $count | /usr/games/figlet"; # setup command line $fig .= " -f $arg{'f'}" if $arg{"f"}; # use a different font? $fig = `$fig`; $fig =~ s!&!&!; $fig =~ s!
" . $fig . "
"; # note no link here, either }










Click Here!