Version: 1.0
Type: Function
Category: Shopping Carts
License: GNU General Public License
Description: This is actually an mIRC script, but it makes a PHP file. You can either email me your zip code (indy@isb.iwarp.com) and I will make it for you and send it to you, or if you have knowledge of mIRC, you can follow the instructions below. 1. Goto http://postcalc.usps.gov/zonecharts/ and enter in the first three digits of your area code, and press Get Zone Chart. Then save the resulting page locally as an HTML file. 2. Open mIRC (www.mirc.com if you don't have it), load the attached remote script, and type: /mail_convert pathtosavedchartfromstep1.html 3. It will output zones.inc.php in the folder with the HTML file.
menu menubar {
ISB
.Covert HTML to Zone Include File:/mail_convert $shortfn($$sfile(*.html))
}
alias mail_convert {
set -u0 %f $1-
set -u0 %out $nofile($1-) $+ zones.inc.php
if (!$isfile(%f)) { halt }
write -c %out <?
write %out /* zones.inc.php Generated on $asctime(mm/dd/yyyy HH:nn:ssa) */
write %out /* mail_zones.mrc script Copyright 2002 ISB/Indy Sams */
write %out $crlf
write %out function GetZoneFromZip($zip) $chr(123)
write %out $crlf
set -u0 %nn $lines(%f)
set -u0 %n 0
set %tot 0
set %tott 0
while %n < %nn {
inc %n
set -u0 %in $read(%f,%n)
if (%in) {
set -u0 %s 0
while %s < 4 {
inc %s
window @buf
; echo @buf %in
if (%s = 1) { set -u0 %match <td HEADERS="HEADER1"> }
if (%s = 2) { set -u0 %match <td HEADERS="HEADER3"> }
if (%s = 3) { set -u0 %match <td HEADERS="HEADER5"> }
if (%s = 4) { set -u0 %match <td HEADERS="HEADER7"> }
set -u0 %p $pos(%in,%match,0)
if (%p > 0) {
set -u0 %p $pos(%in,%match,1)
inc %p $len(%match)
set -u0 %p2 $pos(%in,</td>,1)
set -u0 %t $mid(%in,%p,$calc(%p2 - %p))
set %span %t
}
if (%s = 1) { set -u0 %match <td HEADERS="HEADER2"> }
if (%s = 2) { set -u0 %match <td HEADERS="HEADER4"> }
if (%s = 3) { set -u0 %match <td HEADERS="HEADER6"> }
if (%s = 4) { set -u0 %match <td HEADERS="HEADER8"> }
set -u0 %p $pos(%in,%match,0)
if (%p > 0) {
set -u0 %p $pos(%in,%match,1)
inc %p $len(%match)
set -u0 %p2 $pos(%in,</td>,1)
set -u0 %t $mid(%in,%p,$calc(%p2 - %p))
set %zone %t
if $right(%zone,1) = $chr(42) { set -u0 %zone $left(%zone,$calc($len(%zone) - 1)) }
echo @buf Span: %span Zone: %zone
echo @buf Writing Span....
inc %tot
if ($pos(%span,..,0) > 0) {
set -u0 %b $left(%span,$calc($pos(%span,..,1) -1))
set -u0 %c $right(%span,$calc($len(%span) - $pos(%span,..,1) - 1))
echo @buf b: %b c: %c
dec %b
while %b < %c {
inc %b
inc %tott
write %out if (substr($zip, 0, 3) == " $+ $base(%b,10,10,3) $+ ") $chr(123) return " $+ %zone $+ "; $chr(125)
}
}
else {
inc %tott
write %out if (substr($zip, 0, 3) == " $+ %span $+ ") $chr(123) return " $+ %zone $+ "; $chr(125)
}
}
}
}
}
echo @buf Total: %tot Entries, Expanded to %tott Zones
; unset %tot
write %out $chr(125)
write %out ?>
}
alias mail_postage {
set -u0 %f $1-
set -u0 %out $nofile($1-) $+ pricalc.inc.php
if (!$isfile(%f)) { halt }
write -c %out <?
write %out /* pricalc.inc.php Generated on $asctime(mm/dd/yyyy HH:nn:sst) */
write %out /* mail_zones.mrc script Copyright 2002 ISB/Indy Sams */
write %out $crlf $+ $crlf
write %out function CalcPriMail($lb,$zone) $chr(123) /* Input weight ($lb) and dest zone ($zone) */
write %out $crlf $+ $crlf
write %out $remove("$lb",") = ceil($lb,0); /* Rounds up, just like USPS */
write %out $crlf $+ $crlf
set -u0 %nn 71
set -u0 %n 1
set -u0 %lb 0
while %n < %nn {
inc %n
inc %lb
set -u0 %match *<td valign="*" headers="row $+ $base(%n,10,10,2) header2">*
set -u0 %in $remove($read(%f,nw,%match),$remove("$","))
if (%in) {
write %out if ($lb == " $+ %lb $+ " && $remove("$zone",") == "1") $chr(123) return " $+ $gettok(%in,$numtok(%in,32),32) $+ "; $chr(125)
write %out if ($lb == " $+ %lb $+ " && $remove("$zone",") == "2") $chr(123) return " $+ $gettok(%in,$numtok(%in,32),32) $+ "; $chr(125)
write %out if ($lb == " $+ %lb $+ " && $remove("$zone",") == "3") $chr(123) return " $+ $gettok(%in,$numtok(%in,32),32) $+ "; $chr(125)
}
set -u0 %match *<td valign="*" headers="row $+ $base(%n,10,10,2) header3">*
set -u0 %in $remove($read(%f,nw,%match),$remove("$","))
if (%in) {
write %out if ($lb == " $+ %lb $+ " && $remove("$zone",") == "4") $chr(123) return " $+ $gettok(%in,$numtok(%in,32),32) $+ "; $chr(125)
}
set -u0 %match *<td valign="*" headers="row $+ $base(%n,10,10,2) header4">*
set -u0 %in $remove($read(%f,nw,%match),$remove("$","))
if (%in) {
write %out if ($lb == " $+ %lb $+ " && $remove("$zone",") == "5") $chr(123) return " $+ $gettok(%in,$numtok(%in,32),32) $+ "; $chr(125)
}
set -u0 %match *<td valign="*" headers="row $+ $base(%n,10,10,2) header5">*
set -u0 %in $remove($read(%f,nw,%match),$remove("$","))
if (%in) {
write %out if ($lb == " $+ %lb $+ " && $remove("$zone",") == "6") $chr(123) return " $+ $gettok(%in,$numtok(%in,32),32) $+ "; $chr(125)
}
set -u0 %match *<td valign="*" headers="row $+ $base(%n,10,10,2) header6">*
set -u0 %in $remove($read(%f,nw,%match),$remove("$","))
if (%in) {
write %out if ($lb == " $+ %lb $+ " && $remove("$zone",") == "7") $chr(123) return " $+ $gettok(%in,$numtok(%in,32),32) $+ "; $chr(125)
}
set -u0 %match *<td valign="*" headers="row $+ $base(%n,10,10,2) header7">*
set -u0 %in $remove($read(%f,nw,%match),$remove("$","))
if (%in) {
write %out if ($lb == " $+ %lb $+ " && $remove("$zone",") == "8") $chr(123) return " $+ $gettok(%in,$numtok(%in,32),32) $+ "; $chr(125)
}
}
write %out $chr(125)
write %out ?>
echo Done
}