#!/usr/bin/perl
###########################################
# dmv -- Automate checking CA plates
# Mike Schilli, 2003 (m@perlmeister.com)
###########################################
use strict;
use warnings;

use WWW::Mechanize;
use WWW::Mechanize::FormFiller;

die "usage: $0 XXXXXXX" unless 
                          defined $ARGV[0];
$ARGV[0] =~ s/\s+//g;
my $agent = WWW::Mechanize->new(
              autocheck => 1);
my $fi = WWW::Mechanize::FormFiller->new();

$agent->get('http://www.dmv.ca.gov');
$agent->follow(qr(Personalized));
$agent->follow(
     qr(order Special Interest));
$agent->form("personalized");
$agent->submit();

$fi->add_filler('vehicletype' => 
                Fixed => 'AUTO' );
$fi->add_filler('leased' => 
                Fixed => 'N' );
$fi->add_filler('platetype' => 
                Fixed => 'R' );
$fi->add_filler('kidpic' => 
                Fixed => '' );
$fi->add_filler('Submit2' => 
                Fixed => '' );
$fi->fill_form($agent->current_form);
$agent->submit();

for(0..6) {
    $fi->add_filler("LicPltCharAry$_" => 
         Fixed => 
         $_ > length $ARGV[0] ?
         "" : substr($ARGV[0], $_, 1));
}

for(0..6) {
    $fi->add_filler("HalfSpace$_" => 
                    Fixed => '');
}

$fi->add_filler('Submit2' => Fixed => '');
$fi->fill_form($agent->current_form);

$agent->submit();

if($agent->content() =~ /not available/) {
    print "$ARGV[0]: not available\n";
} elsif($agent->content() =~ 
                  /Complete Order Form/) {
    print "$ARGV[0]: available\n";
} else {
    print "Unexpected response", 
          $agent->content(), "\n";
}
