#!/usr/bin/perl -w

# User defined variables are availeble for modification below:
############################################################################
#
#$DEBUG = 1; # set to 1 to enable debug prints
#
############################################################################
# the real code is below, modify at your own risk

$filenm="/var/www/cgi-bin/var/metar.sort";
$wwwgrab="/var/www/bin/wwwgrab";
$ADD_DATE='/var/www/bin/add_date';
$w1="/var/www/cgi-bin/var/w1.out";
$tmpfile='/var/tmp/varjunk';
$tmpfile1='/var/tmp/lonlat1';
$winddir="/var/tmp/wind$$";
$winddat="/var/tmp/wind$$/windtmp";
$windctl="/var/tmp/wind$$/windbin.ctl";
$runwrtbin="/var/www/cgi-bin/var/wrtbin/run.sh";
$pngdir="/var/www/htdocs/tmp";
$file="$pngdir/wind$$";
$windpng="$file.png";
$windpng1="/tmp/wind$$.png";

$GADDIR="/var/www/grads";
$GASCRP="/var/www/grads";
$GRADS="$GASCRP/grads";
$GRADSFILE="$file.grads";

$myscript=$0;
$myscript =~ s#.*/##;
$query=$ENV{'QUERY_STRING'};

($sec, $min, $hr, $dd, $mm, $yy) = localtime(time);
$mm++;
$hr = '0'.$hr if $hr < 10;
$mm = '0'.$mm if $mm < 10;
$dd = '0'.$dd if $dd < 10;
$yy=$yy-100;
$yy = '0'.$yy if $yy < 10;
$newti=0;

print "Content-TYPE:  text/html\n";
print "\n<head><title>Find the Probability of a Weather Event that You Create</title></head><body bgcolor=\"#ffffff\">\n";
print "<center><h1>Find the Probability of a Weather Event that You Create</h1> <hr></center>";
#
    open(FLHD, "<$filenm");
    $stcnt=0;
    while(<FLHD>) {

# this is Operational dictionary metar list from nwprod
#         $flagus=1;
         $stNUM[$stcnt]=substr($_,9,6);
         $lat[$stcnt]=substr($_,55,5)/100.;
         $lon[$stcnt]=substr($_,61,6)/100.;
         $stID[$stcnt]=substr($_,0,4);
         $stNM[$stcnt]=substr($_,16,39);

      $stcnt++;
    }
    close(FLHD);

$year=$yy + 2000;
print "TODAY is: $year, $mm, $dd<br>";
if (! defined($query) || $query eq '') {
    print "<form action=\"$myscript\" name=\"myform\">\n";

#    %MODELS= (
#       gfs => "GFS",
#       eta => "ETA",
#       ruc => "RUC",
#    );
    print "Please select :<br>\n";
#    print "<p><strong> MODEL </strong><br>\n";
#    my $cnt = 0;
#    foreach (sort(keys(%MODELS)) ) {
#       print "<INPUT TYPE=\"radio\" NAME=\"model\" VALUE=\"$_\"";
#       print "CHECKED" if !$cnt;
#       print "> $MODELS{$_}<BR>\n";
##       print "> $_<BR>\n";
#       $cnt++;
#    }
#    print "stcnt=$stcnt, $stNUM[1], $lat[1], $lon[1]; $stID[1]; $stNM[1]<br>\n";
    print "<p><strong> STATION NAME (Select Below) or enter latitude and longitude .............................................................  Then Select Forecast Time and Model Cycle </strong><br>\n";
    print "<SELECT NAME=\"stname\" onchange=settext()>";
    for ($i=0; $i<$stcnt; $i++) {
       $val=$lon[$i]."_".$lat[$i]."~".$i;
       print "<option value=\"$val\">$stNM[$i]";
    }
    print "</SELECT><br>\n";
    
    print "<strong> STATION Latitude: </strong>\n";
    print "<INPUT type=\"textfield\" NAME=\"stlat\" SIZE=7 value=\"$lat[0]\"> &nbsp &nbsp ";
    print "<strong> STATION Longitude:</strong>\n";
    print "<INPUT type=\"textfield\" NAME=\"stlon\" SIZE=7 value=\"$lon[0]\"> <br> \n";

     print "<SCRIPT LANGUAGE=\"JavaScript1.1\"> \n";
     print "function settext() \n";
     print "{ \n";
     print "var indx=window.document.myform.stname.selectedIndex; \n";
     print "var mystt=window.document.myform.stname.options[indx].value; \n";
     print "var pos1=mystt.indexOf(\"_\");\n";
     print "var pos2=mystt.indexOf(\"~\");\n";
     print "var pos=pos1+1;\n";
     print "var mylon=mystt.substring(0,pos1); \n";
     print "var mylat=mystt.substring(pos,pos2); \n";
      print "window.document.myform.stlon.value=mylon; \n";
      print "window.document.myform.stlat.value=mylat; \n";
#     print "window.document.myform.stlon.value=$lon[mystt]; \n";
#     print "window.document.myform.stlat.value=$lat[mystt]; \n";
     print "} \n";
     print "</SCRIPT> \n";

   print "<TABLE WIDTH=100\%>\n",
      "<TR><TH ALIGN=LEFT>Date (HR/DD/MM/YY)GMT</TH><TD>\n",
      "<INPUT type=\"textfield\" NAME=\"fhr\" SIZE=2 VALUE=\"$hr\">",
      "<INPUT type=\"textfield\" NAME=\"fdd\" SIZE=2 VALUE=\"$dd\">",
      "<INPUT type=\"textfield\" NAME=\"fmm\" SIZE=2 VALUE=\"$mm\">",
      "<INPUT type=\"textfield\" NAME=\"fyy\" SIZE=2 VALUE=\"$yy\">",
      "<TR><TH ALIGN=LEFT>Cycle</TH><TD>",
      "<SELECT NAME=\"cycle\">",
      "<option value=\"00z\">00z",
      "<option value=\"06z\">06z",
      "<option value=\"12z\">12z",
      "<option value=\"18z\">18z",
      "</SELECT>",
      "</TABLE>\n";
   
   print "<p><h3>Create an event:</h3><br>\n";
   print "<input type=\"checkbox\" Name=\"var\" value=\"temp\">   Temperature:<br>\n"; 
   print " Notes: you can create a temperature event by giving a lowest temperature or a highest temperature or a range of temperature. For example, for freezing event, giving lowest temperature lower than 32F and do not check the higest temperature.<br>\n";
   print "<TABLE WIDTH=100\%>\n",
      "<TR><TD WIDTH=25%><input type=\"checkbox\" Name=\"tmp\" value=\"ltmp\">Lowest TEMP:\n",
      "<Td WIDTH=25%><SELECT NAME=\"ltmpopr\">",
         "<option value=\"gt\">Higher than",
         "<option value=\"lt\">lower than",
      "</SELECT>",
      "<TD WIDTH=25\%><INPUT type=\"textfield\" NAME=\"lowt\" SIZE=10 VALUE=\"$lt\">",
      "<Td WIDTH=20\%>UNIT: \n",
      "<SELECT NAME=\"tmpunit1\">",
         "<option value=\"K\">K",
         "<option value=\"C\">C",
         "<option value=\"F\">F",
      "</SELECT>",
      "<TR><Td WIDTH=25%><input type=\"checkbox\" Name=\"tmp\" value=\"htmp\">Highest TEMP: \n",
      "<Td WIDTH=25%><SELECT NAME=\"htmpopr\">",
         "<option value=\"gt\">Higher than",
         "<option value=\"lt\">lower than",
      "</SELECT>",
      "<TD WIDTH=25\%><INPUT type=\"textfield\" NAME=\"hight\" SIZE=10 VALUE=\"$ht\">",
      "<Td WIDTH=20\%>UNIT: \n",
      "<SELECT NAME=\"tmpunit2\">",
         "<option value=\"K\">K",
         "<option value=\"C\">C",
         "<option value=\"F\">F",
      "</SELECT>",
#      "<TR><TD WIDTH=20%> (leave Lowest blank for all possible TEMP below highest TEMP)",
#      "<TD WIDTH=20%>",
#      "<TD WIDTH=20%> (leave Highest blank for all possible TEMP above lowest TEMP)",
#      "<TD WIDTH=20%>",
#      "<TD WIDTH=20%>",
      "</TABLE>\n";

   print "<input type=\"checkbox\" Name=\"var\" value=\"rain\">   Precipitation\n";
   print "<TABLE>\n",
      "<tr><Td><SELECT NAME=\"rainopr\">",
         "<option value=\"gt\">Higher than",
         "<option value=\"lt\">lower than",
      "</SELECT>",
      "<TD ><INPUT type=\"textfield\" NAME=\"precip\" SIZE=10 VALUE=\"$lt\"> mm/day",
#      "<Td WIDTH=20\%>UNIT: \n",
#      "<SELECT NAME=\"tmpunit1\">",
#         "<option value=\"K\">K",
#         "<option value=\"C\">C",
#         "<option value=\"F\">F",
#      "</SELECT>",
       "</table>";

   print "<input type=\"checkbox\" Name=\"var\" value=\"wind\">   Wind Speed\n";
   print "<TABLE>\n",
      "<tr><Td><SELECT NAME=\"windopr\">",
         "<option value=\"gt\">Higher than",
         "<option value=\"lt\">lower than",
      "</SELECT>",
      "<TD ><INPUT type=\"textfield\" NAME=\"windsp\" SIZE=10 VALUE=\"$lt\">",
      "<Td WIDTH=20\%>UNIT: \n",
      "<SELECT NAME=\"windunit\">",
         "<option value=\"metersec\">m\/sec",
         "<option value=\"milehr\">mile\/hr",
         "<option value=\"knots\">knots",
      "</SELECT>",
       "</table>";

   print "<p><h3>Click YES to show URL query for ensemble members:</h3><br>\n";
   print "<input type=\"radio\" Name=\"urlqry\" value=\"no\" checked>   NO<br>\n";
   print "<input type=\"radio\" Name=\"urlqry\" value=\"yes\">   YES<br>\n";

   print "<p><input type=\"submit\" value=\"Event Probability\"> &nbsp&nbsp&nbsp <input type=\"reset\">\n";
   print "</form> <hr>\n";
}
else { # user hit "Submit", time to do the real job
   $qn{'tmp'}='';
   @q = split('&', $query, 10000);
   foreach $_ (@q) {
     if ($_ ne '') {
      ($name,$value) = split('=', $_, 2);
      if (!defined($value)) { $value=''; }
      if ( $name eq 'tmp' ){
          $qn{'tmp'}="$qn{'tmp'} $value";
      } elsif($name eq 'var') {
          $qn{'var'}="$qn{'var'} $value";
      } else {
         $qn{$name} = $value;
      # fix any funny file names: get rid of / * and ?
         $value =~ s/\///g;
         $value =~ s/\*\///g;
         $value =~ s/\?//g;
         $value =~ s/\"//g;
         $value =~ s/\'//g;
         $safeqn{$name} = $value;
      }
     }
   }

#   $model = $safeqn{'model'};
   $model = "enshires";
   $stnm = $safeqn{'stname'};
   $stnm =~ s/%7E/~/;
   @stnmary=split('~',$stnm,20);
   $stt = $stnmary[1];
   $stlat= $safeqn{'stlat'};
   $stlon= $safeqn{'stlon'};
   $fyy = $safeqn{'fyy'};
   $fmm = $safeqn{'fmm'};
   $fdd = $safeqn{'fdd'};
   $fhr = $safeqn{'fhr'};
   $cycle = $safeqn{'cycle'};
   $ltmpopr = $safeqn{'ltmpopr'};
   $htmpopr = $safeqn{'htmpopr'};
   $rainopr = $safeqn{'rainopr'};
   $windopr = $safeqn{'windopr'};
   $lowt = $safeqn{'lowt'};
   $hight = $safeqn{'hight'};
   $precip= $safeqn{'precip'};
   $windsp= $safeqn{'windsp'};
   $tmpunit1 = $safeqn{'tmpunit1'};
   $tmpunit2 = $safeqn{'tmpunit2'};
   $windunit = $safeqn{'windunit'};
   $urlqry = $safeqn{'urlqry'};
   @qvar=split(' ', $qn{'var'});
   if ( defined($qvar[0]) && $qvar[0] ne '') {
       if ($qvar[0] eq 'temp'){
          $temp='on';
       } elsif ($qvar[0] eq 'rain') {
          $rain='on';
       } elsif ($qvar[0] eq 'wind'){
          $wind='on';
       }
       if ($qvar[1] eq 'rain') {
          $rain='on';
       }elsif ($qvar[1] eq 'wind') {
          $wind='on';
       }
       if ($qvar[2] eq 'wind') {
          $wind='on';
       }

   }
   @qtmp=split(' ', $qn{'tmp'});
   if (defined($qtmp[0]) && $qtmp[0] ne '') {
       if ($qtmp[0] eq 'ltmp'){
          $lowtmp='on';
       } elsif ($qtmp[0] eq 'htmp') {
          $hightmp='on';
       }
   }
   if (defined($qtmp[1]) && $qtmp[1] ne '') {
       if ($qtmp[1] eq 'htmp') {
          $hightmp='on';
       }
   }
      

   if (defined($tmpunit1) && $tmpunit1 eq "K" ){
     if (defined($lowtmp) && $lowtmp eq 'on' && defined($lowt) && $lowt ne ""){
      $tmin=$lowt;
     }
   }
   if (defined($tmpunit2) && $tmpunit2  eq "K" ){
     if (defined($hightmp) && $hightmp eq 'on' && defined($hight) && $hight ne ""){
      $tmax=$hight;
     }
   }
   if ( defined($tmpunit1) && $tmpunit1 eq "C") {
     if (defined($lowtmp) && $lowtmp eq 'on' && defined($lowt) && $lowt ne ""){
      $tmin=$lowt+273.15;
     }
   }
   if ( defined($tmpunit2) && $tmpunit2 eq "C") {
     if (defined($hightmp) && $hightmp eq 'on' && defined($hight)&& $hight ne ""){
      $tmax=$hight+273.15;
     }
   } 
   if ( defined($tmpunit1) && $tmpunit1 eq "F" ) {
     if (defined($lowtmp) && $lowtmp eq 'on' && defined($lowt) && $lowt ne ""){
      $tmin=($lowt-32)*5./9 +273.15;
     }
   }
   if ( defined($tmpunit2) && $tmpunit2 eq "F" ) {
#     print "in tmpunit2,";
     if (defined($hightmp) && $hightmp eq 'on' && defined($hight) && $hight ne ""){
      $tmax=($hight-32)*5./9 +273.15;
     }
   }

   if ( defined($windunit) && $windunit eq "metersec" ) {
     if (defined($windsp) && $windsp ne ""){
      $wspd=$windsp;
     }
   }
   if ( defined($windunit) && $windunit eq "milehr" ) {
     if (defined($windsp) && $windsp ne ""){
      $wspd=$windsp*0.44704;
     }
   }
   if ( defined($windunit) && $windunit eq "knots") {
     if (defined($windsp) && $windsp ne ""){
      $wspd=$windsp*0.51444444;
     }
   }

#   print "model,stnm, stt,fyy,fmm,fdd,fhr,cycle=$model, $stnm, $stt,$fyy,$fmm,$fdd,$fhr,$cycle<br>\n";
#    print "test: lon=$lon[$stt], lat=$lat[$stt], qn(tmp)=$qn{'tmp'},lowtmp=$lowtmp, hightmp=$hightmp, lowt=$lowt, hight=$hight, ltmpopr=$ltmpopr, htmpopr=$htmpopr, tmpunit1=$tmpunit1,tmpunit2=$tmpunit2,tmi=$tmin,tma=$tmax, <br>\n";


#compute lat, lon and time
    if ( $model eq "enshires" ) { 
     if (! defined($stlon) || $stlon eq ''){
        $stlon=$lon[$stt];
        print "stlon=$stlon \n";
     }
     if ($stlon lt 0.) {
       $lon1=360+$stlon;
     }else {
       $lon1=$stlon;
     }
     $lon1=int($lon1+0.5);
     if ( $lon1 > 359 ) {
       $lon1=0;
     }
     if ( $lon1 < 0 ) {
       $lon1=0;
     }

#    if ($flag1 eq "N" ) {
     if (!defined($stlat) || $stlat eq ''){
        $stlat=$lat[$stt];
        print "stlon=$stlon \n";
     }
     $lat1=$stlat+90.;
#    } else {
#     $lat1=$lat[stt];
#    }
#     $lat1=$lat1- ( ($lat1*100)%100)*0.01;
     $lat1=int($lat1+0.5);
     &time_intv();
     $tm1=$newti;
    }
#    if ( $model eq "eta" ) { 
#     $lonn=$lon[$stt];
##     system "`echo $w1 $lat[$stt] $lon[$stt] >$tmpfile1`";
#     system "`$w1 $lat[$stt] $lon[$stt] >>$tmpfile1`";
#
#     open(TMP, "<$tmpfile1");
#     while (<TMP>) {
#        @latlon=split(" ", $_, 5);
#     }
#     $lon1=$latlon[0];
#     $lat1=$latlon[1];
#     &time_intv();
#    print "stt=$stt, lon1=$lon1, lat1=$lat1, newti=$newti<br>\n";
#     $tm1=$newti;
#     close(TMP);
#    }
      
#   print "stt=$stt, lon1=$lon1, lat1=$lat1, newti=$newti<br>\n";
   $modelcycle=$model."_".$cycle;
   $modela="ens";
   $year=$yy+2000;
   if ($model eq "enshires") {
     $urlorg="http://nomad5.ncep.noaa.gov:9090/dods/$model/archive/$modela$year$mm$dd";
   } elsif ($model eq "eta") {
     $urlorg="http://nomad1.ncep.noaa.gov:9090/dods/$model/archive/$model$year$mm$dd/$modelcycle";
   }

   print "The station is: $stNM[$stt]<br><hr>\n";
     if ($lat[$stt] gt 0.) {
      print "Lat: $stlat N, &nbsp ";
   } else { 
      print "Lat: $stlat S, &nbsp ";
   }
     if ($lon[$stt] lt 0.) {
      print "Lon:$stlon W<br>\n";
   } else { 
      print "Lon:$stlon E<br>\n";
   }
   
#   print  "initime=$initime";
   $newfhr=substr($initime,8,2);
   $newfdd=substr($initime,6,2);
   $newfmm=substr($initime,4,2);
   $newfmmnm=monthname($newfmm);
   $newfyy=substr($initime,0,4);
#   print "FORECAST: $fhr Z,  $fmmn $fdd, $year<br>\n";
   print "FORECAST: $newfhr Z,  $newfmmnm $newfdd, $newfyy<br>\n";
   print "<p>\n";

#   if (defined($temp) && defined($rain)) {
#   print "Temperature, lowest TEMP: $ltmpopr $lowt $tmpunit ($tmin K)--- highest TEMP: $htmpopr $hight $tmpunit ($tmax K)<br>";
#   print "Precipitation, $rainopr $precip mm/day<br><br>";
#    if ( $lowtmp eq 'on' || $hightmp eq 'on'){ 
#     &getpossibility("temperature", "precipitation");
#    }
#   }

   if (defined($temp) ) {
   print "<p>Event (Accumulated over the last 6-hrs): <br>\n";
   print "Temperature, lowest TEMP: $ltmpopr $lowt $tmpunit ($tmin K)--- highest TEMP: $htmpopr $hight $tmpunit ($tmax K)<br><br>";
    if ( $lowtmp eq 'on' || $hightmp eq 'on'){ 
     &getpossibility("temperature");
    }
   }

   if (defined($rain)) {
   print "<p>\n";
   print "Event: <br>\n";
   print "Precipitation, $rainopr $precip mm/day<br><br>";
     &getpossibility("precipitation");
   }

   if (defined($wind)) {
   print "<p>\n";
   print "Event: <br>\n";
   if ( $windunit eq "metersec") {
   print "Wind speed, $windopr $windsp  m/s <br><br>";
   } elsif ($windunit eq "milehr") {
   print "Wind speed, $windopr $windsp  mile/hr ($wspd m/s)";
   } else {
    print "Wind speed, $windopr $windsp knots ($wspd m/s)";
   }
     &getpossibility("windspeed");
   }

#   if ($model eq "gfs") {
#     getvar("tmax2m", "High Temperatur", "K");
#     getvar("tmin2m", "Low Temperatur", "K");
#     getvar("rh2m", "Relative Humidity", "\%");
#     getvar("apcp", "Precipitation", "");
#   } elsif ($model eq "eta") {
#     getvar("rh2m", "Relative Humidity", "\%");
#     getvar("apcpsfc", "Precipitation", "");
#   }
}
print "</body>\n";
 
exit 0;

sub getpossibility() {

   $varnm=$_[0];
#   $varnm2=$_[1];
   if ($varnm eq "temperature" ) {
      $i=0;
      foreach $member (c0,n1,n2,n3,n4,n5,p1,p2,p3,p4,p5) {
        if ($urlqry eq "yes") {
          print "<br>member=$member<br>";
        }
       if (defined($lowtmp)){
        $url=$urlorg."\/"."$modela$member"."_"."$cycle"."_1x1"."\.ascii?tmin2m\[$tm1:$tm1\]\[$lat1:$lat1\]\[$lon1:$lon1\]";
        if ($urlqry eq "yes") {
           print "URL is: $url<br>\n";
        }
        $myvarurl=`$wwwgrab $url`;
        @tmp1=split(" ",$myvarurl, 20);
        $tminmem[$i]=$tmp1[3];
        if ($urlqry eq "yes") {
           print "tminmem=$tminmem[$i]<br>";
        }
       }

       if (defined($hightmp)){
        $url=$urlorg."\/"."$modela$member"."_"."$cycle"."_1x1"."\.ascii?tmax2m\[$tm1:$tm1\]\[$lat1:$lat1\]\[$lon1:$lon1\]";
        if ($urlqry eq "yes") {
           print "URL is: $url<br>\n";
        }
        $myvarurl=`$wwwgrab $url`;
        @tmp1=split(" ",$myvarurl, 20);
        $tmaxmem[$i]=$tmp1[3];
        if ($urlqry eq "yes") {
           print "tmaxmem=$tmaxmem[$i]<br>";
        }
       }
        $i++;
      }
#compute probability
      $p=0;
      for($i=0;$i<11;$i++) {
        if ( defined($temp) && !defined($tmin) && defined($tmax) ) {
          if ( $htmpopr eq "gt" && $tmaxmem[$i] > $tmax ) { $p++; }
          if ( $htmpopr eq "lt" && $tmaxmem[$i] < $tmax ) { $p++; }
        }
        if ( defined($temp) && defined($tmin) && !defined($tmax) ) {
          if ( $ltmpopr eq "gt" && $tminmem[$i] > $tmin ) { $p++; }
          if ( $ltmpopr eq "lt" && $tminmem[$i] < $tmin ) { $p++; }
        }
        if ( defined($temp) && defined($tmin) && defined($tmax) ){
          if ( $ltmpopr eq "gt" && $htmpopr eq "gt") {
            if ( $tminmem[$i] > $tmin && $tmaxmem[$i] > $tmax) { $p++; }
          }
          if ( $ltmpopr eq "gt" && $htmpopr eq "lt") {
            if ( $tminmem[$i] > $tmin && $tmaxmem[$i] < $tmax) { $p++; }
          }
          if ( $ltmpopr eq "lt" && $htmpopr eq "gt") {
            if ( $tminmem[$i] < $tmin && $tmaxmem[$i] > $tmax) { $p++; }
          }
          if ( $ltmpopr eq "lt" && $htmpopr eq "lt") {
            if ( $tminmem[$i] < $tmin && $tmaxmem[$i] < $tmax) { $p++; }
          }
        }
      }
      $prob=int($p/11.0*100);
      print "<p> <h3>Event probability: $prob\% </h3>\n";
     } 

#for precipitation
     $i=0;
     if ($varnm eq "precipitation" ){
       foreach $member (c0,n1,n2,n3,n4,n5,p1,p2,p3,p4,p5) {
        if ($urlqry eq "yes") {
           print "<br>member=$member<br>";
        }
       if (defined($precip)){
        $url=$urlorg."\/"."$modela$member"."_"."$cycle"."_1x1"."\.ascii?pratesfc\[$tm1:$tm1\]\[$lat1:$lat1\]\[$lon1:$lon1\]";
        if ($urlqry eq "yes") {
           print "URL is: $url<br>\n";
        }
        $myvarurl=`$wwwgrab $url`;
        @rain1=split(" ",$myvarurl, 20);
        $rainmem[$i]=$rain1[3]*86400.0;
        if ($urlqry eq "yes") {
           print "rainmem=$rainmem[$i]<br>";
        }
       }
       $i++;
       }
#compute probability
      $p=0;
      for($i=0;$i<11;$i++) {
        if ( defined($rain) && defined($precip) ) {
               if ($rainopr eq "gt" && $rainmem[$i] > $precip) { $p++; }
               if ($rainopr eq "lt" && $rainmem[$i] < $precip) { $p++; }
        }
      }
      $prob=int($p/11.0*100);
      print "<p> <h3>Event probability: $prob\% </h3>\n";
     }
#for wind speed
     $i=0;
     if ($varnm eq "windspeed"){
       foreach $member (c0,n1,n2,n3,n4,n5,p1,p2,p3,p4,p5) {
        if ($urlqry eq "yes") {
           print "<br>member=$member<br>";
        }
       if (defined($wspd)){
        $url=$urlorg."\/"."$modela$member"."_"."$cycle"."_1x1"."\.ascii?ugrd10m\[$tm1:$tm1\]\[$lat1:$lat1\]\[$lon1:$lon1\]";
        if ($urlqry eq "yes") {
           print "URL is: $url<br>\n";
        }
        $myvarurl=`$wwwgrab $url`;
        @uw=split(" ",$myvarurl, 20);
        $uwind=$uw[3];
        $url=$urlorg."\/"."$modela$member"."_"."$cycle"."_1x1"."\.ascii?vgrd10m\[$tm1:$tm1\]\[$lat1:$lat1\]\[$lon1:$lon1\]";
        if ($urlqry eq "yes") {
           print "URL is: $url<br>\n";
        }
        $myvarurl=`$wwwgrab $url`;
        @vw=split(" ",$myvarurl, 20);
        $vwind=$vw[3];
        $windspeedmem[$i]=sqrt($uwind*$uwind+$vwind*$vwind);
        $windanglemem[$i]=atan2($uwind, $vwind);
        if ($urlqry eq "yes") {
           print "windspeed=$windspeedmem[$i], windangle=$windanglemem[$i]<br>";
        }
       }
       $i++;
       }
#compute probability
      $p=0;
      for($i=0;$i<11;$i++) {
        if ( defined($wind) && defined($windsp) ) {
               if ($windopr eq "gt" && $windspeedmem[$i] > $windsp) { $p++; }
               if ($windopr eq "lt" && $windspeedmem[$i] < $windsp) { $p++; }
        }
      }
      $prob=int($p/11.0*100);
      print "<p> <h3>Event probability: $prob\% </h3>\n";
      
# write into a binary file:
      `mkdir -p $winddir`;
      open (FH, ">$winddat") or die "can't open $winddat";
      for ($i=0; $i<11;$i++) {
      print FH "$windspeedmem[$i]\n";
      }
      close(FH);
      `cd $winddir; $runwrtbin windtmp`;
      open (FHCTL,">",$windctl) or die "can't open $windctl";
      print FHCTL "dset $winddir/windbin\n";
      print FHCTL "title wind \n";
      print FHCTL "options big_endian sequential\n";
      print FHCTL "undef 9.99E20\n";
      print FHCTL "XDEF  1 LINEAR    1 1\n";
      print FHCTL "YDEF  11 LINEAR    1.8  1\n";
      print FHCTL "ZDEF  1 LEVELS    1 1\n";
      print FHCTL "TDEF  1  LINEAR $newfmmnm$newfyy 1mo\n";
      print FHCTL "VARS 1\n";
      print FHCTL "wind  01   99   smean\n";
      print FHCTL "ENDVARS\n";
      close(FHCTL);

      open (FHGRADS, ">", $GRADSFILE);
      print FHGRADS "'open $windctl'\n";
      print FHGRADS "'d wind'\n";
      print FHGRADS "'printim $windpng x800 y600 white'\n";
      close(FHGRADS);

#execute grads
       $plotmode="-l";
       $errcnt=`echo "run $GRADSFILE" | $GRADS -b $plotmode |egrep -c '(Error|missing|Metafile not currently open)'`;

#show the png image
       print "<center>\n";
       print "<img src=\"$windpng1\" alt=\"plot\">\n";
       print "</center>\n";

     }
    

}
      
          

sub getvar() {
   
   $var=$_[0];
   $varnm=$_[1];
   if ($var eq "rh2m") {
      $url=$urlorg."\.ascii?$var\[$tm1:$tm1\]\[$lat1:$lat1\]\[$lon1:$lon1\]";
      print "URL is: $url<br>\n";
   }
   else {
      $url=$urlorg."\.ascii?$var\[$tm1:$tm1\]\[$lat1:$lat1\]\[$lon1:$lon1\]";
      print "URL is: $url<br>\n";
   }
      
   $myvarurl=`$wwwgrab $url`;
   @tmp1=split(" ",$myvarurl, 20);
   $varvalue=$tmp1[3];
#   print "myvar=$myvarurl";
  
#   $i=0;
#   open(FLHD, "<$tmpfile");
#   while (<FLHD>) {
#     if ($i == 1) {
#       @tmp1=split(",",$_, 20);
#       $varvalue=$tmp1[1];
#     }
#     $i++;
#   }
#   close(FLHD);
   if ($varvalue >= 9.9e20 ) {
       $varvalue="N/A";
   }
   print "<p>$varnm: $varvalue $_[2]<br>\n";
   print "<p>&nbsp\n";
   print "<p>&nbsp\n";
}

sub time_intv() {

   $mmn=monthname($mm);
   $fmmn=monthname($fmm);
   $year=$yy+2000;
   $fyear=$fyy+2000;
   $tmpcycle = $cycle;
   $tmpcycle =~ s/z|Z//g;
   $initime=$year.$mm.$dd.$tmpcycle;
   $initime1=$cycle.$dd.$mmn.$year;
   $lasttime=$fyear.$fmm.$fdd.$fhr;
   $lasttime1=$fhr."z".$fdd.$fmmn.$fyear;
#   print " dd=$dd, mmn=$mmn, year=$year, initime=$initime,lastime=$lasttime<br>\n";
   $tmp="";

   if ($model eq "gfs" || $model eq "eta") {
      $time1="3hr";
   }
   if ($model eq "enshires" ) {
      $time1="6hr";
   }

   if ($initime eq $lasttime1) {
      $newti=0;
      return;
   }
   while( $initime lt $lasttime && $newti < 10000 ) {
      $tmp=`$ADD_DATE $initime1 1 $time1`;
      @tmpt = split(" ",$tmp, 20);
      $initime1=$tmpt[3].$tmpt[2].$tmpt[1].$tmpt[0];
      $inimm=monthnum($tmpt[1]);
      $tmpt[3] =~ s/z|Z//g;
      $initime=$tmpt[0].$inimm.$tmpt[2].$tmpt[3];
      $newti++;
    }
#    print "in sub, model=$model, init=$initime, lasttime=$lasttime,newti=$newti";
}

sub monthname( ) {
   
    $_=$_[0];
    return "jan" if (/01/);
    return "feb" if (/02/);
    return "mar" if (/03/);
    return "apr" if (/04/);
    return "may" if (/05/);
    return "jun" if (/06/);
    return "jul" if (/07/);
    return "aug" if (/08/);
    return "sep" if (/09/);
    return "oct" if (/10/);
    return "nov" if (/11/);
    return "dec" if (/12/);
}

sub monthnum() {
    $_=$_[0];
     return "01" if (/jan/);
     return "02" if (/feb/);
     return "03" if (/mar/);
     return "04" if (/apr/);
     return "05" if (/may/);
     return "06" if (/jun/);
     return "07" if (/jul/);
     return "08" if (/aug/);
     return "09" if (/sep/);
     return "10" if (/oct/);
     return "11" if (/nov/);
     return "12" if (/dec/);
}
