

    //------------------------------
    // code to do price computations
    //------------------------------

	    // early JavaScript version had no syntax to create and initialize an array
    // so define functions to do this
    function newArray0() {
      var arr = new Array(0)
      return arr
    }
    function newArray1(arg0) {
      var arr = new Array(1)
      arr[0] = arg0
      return arr
    }
    function newArray2(arg0, arg1) {
      var arr = new Array(2)
      arr[0] = arg0
      arr[1] = arg1
      return arr
    }
    function newArray3(arg0, arg1, arg2) {
      var arr = new Array(3)
      arr[0] = arg0
      arr[1] = arg1
      arr[2] = arg2
      return arr
    }
    function newArray4(arg0, arg1, arg2, arg3) {
      var arr = new Array(4)
      arr[0] = arg0
      arr[1] = arg1
      arr[2] = arg2
      arr[3] = arg3
      return arr
    }
    function newArray5(arg0, arg1, arg2, arg3, arg4) {
      var arr = new Array(5)
      arr[0] = arg0
      arr[1] = arg1
      arr[2] = arg2
      arr[3] = arg3
      arr[4] = arg4
      return arr
    }
    function newArray6(arg0, arg1, arg2, arg3, arg4, arg5) {
      var arr = new Array(6)
      arr[0] = arg0
      arr[1] = arg1
      arr[2] = arg2
      arr[3] = arg3
      arr[4] = arg4
      arr[5] = arg5
      return arr
    }



    var order_items = new Array()
    var order_items_length = 0	// JavaScript 1.0 didn't have Array length attribute
    var shipzone_selection = 0
    var taxable_selection = 0
    var prepaid_selection = 0

    // Plant object constructor
    function Plant(catno, name, common, taxable, price_obj, url) {
	this.catno = catno
	this.name = name
	this.common = common
        this.taxable = taxable
	this.price_obj = price_obj
	this.url = url
	price_obj.plants[price_obj.plants_length] = this
	price_obj.plants_length++
	this.quantity = 0
    }

    // Price object constructor
    // Note: array lengths get tracked manually as req'd by JavaScript 1.0
    function Price(prices, breaks, arebreaks, price_length, quantum) {
        this.prices = prices
        this.breaks = breaks
	this.arebreaks = arebreaks  // is price array as opposed to singleton?
	this.price_length = price_length  // length of price and breaks arrays
	this.quantum = quantum
        this.plants = new Array()
	this.plants_length = 0
        this.shipinfo = 'plant'
    }

    // NonPlantPrice object constructor
    // Don't bother trying to use JavaScript object inheritance, just copy constructor parts
    // Note: array lengths get tracked manually as req'd by JavaScript 1.0
    // Shipinfo values:
    //   'plant' - treat as plant
    //   'free' - no shipping cost
    //   ShipInfo object - more detailed information
    function NonPlantPrice(prices, breaks, arebreaks, price_length, quantum, shipinfo) {
        this.prices = prices
        this.breaks = breaks
	this.arebreaks = arebreaks  // is price array as opposed to singleton?
	this.price_length = price_length  // length of price and breaks arrays
	this.quantum = quantum
        this.plants = new Array()
	this.plants_length = 0
	this.shipinfo = shipinfo
    }

    // shipping price not on a per unit basis
    function AbsoluteShipInfo(prices, breaks, arebreaks, price_length) {
	this.shiptype = 'absolute'
        this.prices = prices
        this.breaks = breaks
        this.arebreaks = arebreaks // if true, array of prices, else scalar
        this.price_length = price_length // length of arrays
        this.was_counted = false // state variable used during calculations
    }

    // shipping price based on UPS shipping zone
    function UpsShipInfo(zone2, zone3, zone4, zone5, zone6, zone7, zone8) {
	this.shiptype = 'ups'
        this.zone2 = zone2
        this.zone3 = zone3
        this.zone4 = zone4
        this.zone5 = zone5
        this.zone6 = zone6
        this.zone7 = zone7
        this.zone8 = zone8
        this.was_counted = false // state variable used during calculations
    }

    function price_quantity(pobj) {
        var q = 0
        for (var i=0; i < pobj.plants_length; i++) {
	    // convert string to number and sum
	    q += parseInt(pobj.plants[i].quantity,10)
	}
        return q
    }

    function price_per_unit(pobj) {
        if (!pobj.arebreaks) {
            return pobj.prices
	}
        var p = pobj.prices[0]
        var q = price_quantity(pobj)
	for (var i=0; i < pobj.price_length; i++) {
	    if (q >= pobj.breaks[i]) {
	        if (price_isunit(pobj)) p = pobj.prices[i]
		else p = pobj.prices[i]/pobj.breaks[i]
	    }
	}
	return p
    }

    // is quantum == 1 ?
    function price_isunit(pobj) {
        return (pobj.quantum == 1)
    }

    function price_raw_amount(pobj, plant) {
         var pa = to_dollars(plant.quantity * price_per_unit(pobj))
	 return pa
    }

    function price_amount(pobj, plant) {
         var raw = price_raw_amount(pobj, plant)
         var last=0
	 var raw_total=0
         for (var i=0; i < pobj.plants_length; i++) {
	     if (pobj.plants[i].quantity != 0) last = pobj.plants[i]
	     raw_total += parseFloat(price_raw_amount(pobj, pobj.plants[i]))
	 }
	 if (plant != last) {
	     return raw
	 } else {
	     var good_total = price_quantity(pobj) * price_per_unit(pobj)
	     var x = to_dollars(parseFloat(raw) + parseFloat(good_total) - parseFloat(raw_total))
	     return x
	 }
    }

    function price_each(pobj) {
         if (price_isunit(pobj)) return to_dollars(price_per_unit(pobj))
	 else return ''
    }

    function to_dollars(num) {
        // carefully choose calculation that works in Navigator 2
	// note: mod function (%) may be buggy in NNv2
	var n = Math.round(num*100+0.00001)
	var dollars = Math.floor(n / 100)
	var cents = n - 100*dollars
	var text = dollars + '.'
	if (cents == 0) {
	  text += '00'
	} else if (cents < 10) {
	  text += '0' + cents
	} else if (cents < 100) {
	  text += cents
	} else {
	  alert("shouldn't get here in to_dollars(); n=" + 
	      n + " dollars=" + dollars + " cents=" + cents)
	}
	return text
    }

    // Determine UPS shipping zone relative to Southampton MA
    // Returns 0 if no valid zone
    function ups_zone(zip) {
      m = parseInt('1'+zip.substring(0,3)) // leading 1 defeats "0 => octal" rule
      if (isNaN(m)) return 0
      if (m < 1000) return 0
      m -= 1000
      if (m < 3) return 0
      if (m < 5) return 2
      if (m < 9) return 0
      if (m < 41) return 2
      if (m < 46) return 3
      if (m < 47) return 4
      if (m < 49) return 3
      if (m < 54) return 2
      if (m < 55) return 2
      if (m < 79) return 2
      if (m < 86) return 3
      if (m < 89) return 2
      if (m < 99) return 0
      if (m < 128) return 2
      if (m < 132) return 3
      if (m < 135) return 2
      if (m < 136) return 3
      if (m < 139) return 2
      if (m < 142) return 3
      if (m < 143) return 4
      if (m < 146) return 3
      if (m < 147) return 4
      if (m < 149) return 3
      if (m < 165) return 4
      if (m < 179) return 3
      if (m < 181) return 2
      if (m < 182) return 3
      if (m < 183) return 2
      if (m < 187) return 3
      if (m < 188) return 2
      if (m < 199) return 3
      if (m < 205) return 4
      if (m < 208) return 3
      if (m < 209) return 4
      if (m < 214) return 3
      if (m < 215) return 4
      if (m < 219) return 3
      if (m < 241) return 4
      if (m < 242) return 5
      if (m < 279) return 4
      if (m < 282) return 5
      if (m < 285) return 4
      if (m < 299) return 5
      if (m < 322) return 5
      if (m < 325) return 6
      if (m < 326) return 5
      if (m < 339) return 6
      if (m < 340) return 0
      if (m < 342) return 6
      if (m < 343) return 0
      if (m < 344) return 5
      if (m < 345) return 0
      if (m < 349) return 6
      if (m < 353) return 5
      if (m < 354) return 6
      if (m < 362) return 5
      if (m < 367) return 6
      if (m < 368) return 5
      if (m < 369) return 6
      if (m < 374) return 5
      if (m < 375) return 6
      if (m < 379) return 5
      if (m < 381) return 6
      if (m < 385) return 5
      if (m < 397) return 6
      if (m < 398) return 0
      if (m < 399) return 5
      if (m < 410) return 5
      if (m < 412) return 4
      if (m < 427) return 5
      if (m < 429) return 0
      if (m < 449) return 4
      if (m < 454) return 5
      if (m < 458) return 4
      if (m < 479) return 5
      if (m < 489) return 4
      if (m < 491) return 5
      if (m < 492) return 4
      if (m < 499) return 5
      if (m < 505) return 6
      if (m < 507) return 5
      if (m < 516) return 6
      if (m < 519) return 0
      if (m < 539) return 5
      if (m < 540) return 6
      if (m < 549) return 5
      if (m < 555) return 6
      if (m < 559) return 5
      if (m < 576) return 6
      if (m < 577) return 7
      if (m < 579) return 0
      if (m < 585) return 6
      if (m < 593) return 7
      if (m < 599) return 8
      if (m < 634) return 5
      if (m < 635) return 6
      if (m < 639) return 5
      if (m < 676) return 6
      if (m < 679) return 7
      if (m < 689) return 6
      if (m < 693) return 7
      if (m < 699) return 0
      if (m < 729) return 6
      if (m < 736) return 7
      if (m < 737) return 6
      if (m < 739) return 7
      if (m < 749) return 6
      if (m < 754) return 7
      if (m < 757) return 6
      if (m < 797) return 7
      if (m < 799) return 8
      if (m < 812) return 7
      if (m < 815) return 8
      if (m < 820) return 7
      if (m < 821) return 8
      if (m < 828) return 7
      if (m < 874) return 8
      if (m < 877) return 7
      if (m < 880) return 8
      if (m < 881) return 7
      if (m < 883) return 8
      if (m < 884) return 7
      if (m < 898) return 8
      if (m < 899) return 0
      if (m < 961) return 8
      if (m < 969) return 0
      if (m < 994) return 8
      return 0
    }

    function CatInfo() {}
    catinfo = new CatInfo()

	common_prices = new Array(4)
common_prices[0] = new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1)
common_prices[1] = new Price(newArray3(14.949999999999999, 14.5, 13.949999999999999), newArray3(1, 3, 10), true, 3, 1)
common_prices[2] = new NonPlantPrice(newArray2(55.0, 45.0), newArray2(1, 3), true, 2, 1, new AbsoluteShipInfo(newArray2(9.5, 12.5), newArray2(1, 3), true, 2))
common_prices[3] = new NonPlantPrice(newArray2(1.5, 1.3999999999999999), newArray2(1, 7), true, 2, 1, new AbsoluteShipInfo(newArray5(1.0, 2.0, 3.0, 4.0, 5.0), newArray5(1, 2, 3, 4, 5), true, 5))

catinfo.c6J2E = new Plant('6J2E', "Acanthus spinosissimus", "bear\'s breech", true, new Price(10.949999999999999, 1, false, 1, 1), "")
catinfo.c7V1A = new Plant('7V1A', "Acorus calamus", "sweet flag", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c7V1C = new Plant('7V1C', "Acorus calamus variegatus", "variegated sweet flag", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c6F1R = new Plant('6F1R', "Agastache foeniculum", "anise hyssop", false, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6F2H = new Plant('6F2H', "Ajuga reptans", "ajuga; carpet bugleweed", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c9X2K = new Plant('9X2K', "Allium cepa viviparum", "top onion; walking onion; Egyptian onion", false, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c9X2L = new Plant('9X2L', "Allium cernuum", "nodding wild onion", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c9X2S = new Plant('9X2S', "Allium fistulosum", "Welsh onion; spring onion", false, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9X3S = new Plant('9X3S', "Allium schoenoprasum", "chives", false, new Price(newArray3(6.9500000000000002, 6.5, 5.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c9X3V = new Plant('9X3V', "Allium tricoccum", "wild leek; ramp", false, new Price(newArray3(9.9499999999999993, 9.5, 8.9499999999999993), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c9X3W = new Plant('9X3W', "Allium tuberosum", "Chinese chives", false, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c5A9V = new Plant('5A9V', "Amphicarpaea bracteata", "hog peanut", false, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6A3D = new Plant('6A3D', "Amsonia hubrectii", "thread-leaf blue star; Arkansas blue-star", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6A3H = new Plant('6A3H', "Amsonia tabernaemontana", "blue star; willow amsonia", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c1K4E = new Plant('1K4E', "Anemone canadensis", "Canada anemone", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6N6T = new Plant('6N6T', "Antennaria plantaginifolia", "plantain-leaved pussytoes", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c5B2D4 = new Plant('5B2D4', "Apios americana TBF native", "groundnut; Indian potato", false, common_prices[0], "")
catinfo.c1K8A = new Plant('1K8A', "Aquilegia canadensis", "wild columbine", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c5Y1N = new Plant('5Y1N', "Aralia nudicaulis", "wild sarsaparilla", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c2Z1J = new Plant('2Z1J', "Armeria maritima", "sea pink", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c4F1A = new Plant('4F1A', "Aruncus dioicus", "goatsbeard", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c1F1H = new Plant('1F1H', "Asarum canadense", "wild ginger", false, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c1F1J = new Plant('1F1J', "Asarum canadense reflexum", "short-lobed wild ginger", false, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c1F1M = new Plant('1F1M', "Asarum europaeum", "European wild ginger", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6A6N = new Plant('6A6N', "Asclepias incarnata", "swamp milkweed", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6A6V = new Plant('6A6V', "Asclepias tuberosa", "butterfly weed", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6O2C = new Plant('6O2C', "Aster carolinianus", "climbing aster", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6O2D = new Plant('6O2D', "Aster cordifolius", "blue wood aster", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6O2E = new Plant('6O2E', "Aster divaricatus", "white wood aster", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6O2I = new Plant('6O2I', "Aster laevis", "smooth aster", true, new Price(7.9500000000000002, 1, false, 1, 1), "")
catinfo.c6O2J = new Plant('6O2J', "Aster lateriflorus", "calico aster", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6O2K = new Plant('6O2K', "Aster linariifolius", "stiff aster; bristly aster", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6O2M = new Plant('6O2M', "Aster novae-angliae", "New England aster", true, new Price(7.9500000000000002, 1, false, 1, 1), "")
catinfo.c6O2N = new Plant('6O2N', "Aster novae-angliae \'Roseus\'", "pink-flowered New England aster", true, new Price(7.9500000000000002, 1, false, 1, 1), "")
catinfo.c6O2P = new Plant('6O2P', "Aster puniceus", "swamp aster", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6O2S = new Plant('6O2S', "Aster simplex", "panicled aster", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6O2T = new Plant('6O2T', "Aster spectabilis", "showy aster", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c5B8C = new Plant('5B8C', "Baptisia australis", "wild indigo", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3K4G = new Plant('3K4G', "Begonia grandis", "hardy begonia", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c3K4A = new Plant('3K4A', "Begonia grandis \'Alba\'", "white-flowered hardy begonia", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6N8P = new Plant('6N8P', "Boltonia asteroides", "(aster-like) boltonia", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c7W1A = new Plant('7W1A', "Calla palustris", "water calla; wild calla", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c1L2G = new Plant('1L2G', "Caltha palustris", "marsh marigold; cowslip", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6K3U = new Plant('6K3U', "Campanula rotundifolia", "bluebells of Scotland; harebell", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c5D3P = new Plant('5D3P', "Cassia marilandica", "wild senna", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c2T3T = new Plant('2T3T', "Cerastium tomentosum", "snow-in-summer", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c2Z3P = new Plant('2Z3P', "Ceratostigma plumbaginoides", "hardy plumbago", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6Q1B = new Plant('6Q1B', "Chamaemelum nobile", "Roman chamomile", false, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6I3S = new Plant('6I3S', "Chelone glabra", "turtle-head", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6I3W = new Plant('6I3W', "Chelone lyonii", "Lyon\'s turtlehead", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6I3Y = new Plant('6I3Y', "Chelone obliqua", "red turtlehead", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6Q2W = new Plant('6Q2W', "Chrysanthemum leucanthemum", "ox-eye daisy; white daisy", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6Q4D = new Plant('6Q4D', "Chrysogonum virginianum australe", "golden star", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6Q4G = new Plant('6Q4G', "Chrysopsis mariana", "Maryland golden aster", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6Q4J = new Plant('6Q4J', "Chrysopsis villosa", "prairie golden aster", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c9H9R = new Plant('9H9R', "Convallaria majalis", "lily-of-the-valley", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9H9V = new Plant('9H9V', "Convallaria majalis \'Rosea\'", "pink-flowered lily-of-the-valley", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c1L7G = new Plant('1L7G', "Coptis groenlandica", "goldthread; cankerroot", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6Q6E = new Plant('6Q6E', "Coreopsis auriculata \'Nana\'", "lobed tickseed", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6Q6I = new Plant('6Q6I', "Coreopsis grandiflora", "tickseed; coreopsis", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6Q6N = new Plant('6Q6N', "Coreopsis palmata", "stiff coreopsis", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6Q6P = new Plant('6Q6P', "Coreopsis rosea", "rose tickseed", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6Q6W = new Plant('6Q6W', "Coreopsis verticillata", "whorled tickseed", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4U7D = new Plant('4U7D', "Decodon verticillatus", "water loosestrife; water willow", true, new Price(10.949999999999999, 1, false, 1, 1), "")
catinfo.c2O3P = new Plant('2O3P', "Delosperma cooperi", "(hardy ice plant)", true, new Price(7.9500000000000002, 1, false, 1, 1), "")
catinfo.c2O3T = new Plant('2O3T', "Delosperma nubigenum", "(hardy ice plant)", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c2T5M = new Plant('2T5M', "Dianthus deltoides", "meadow pink; maiden pink", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c1U6F = new Plant('1U6F', "Dicentra eximia", "wild bleeding-heart", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3F4L = new Plant('3F4L', "Dionaea muscipula", "Venus\'s flytrap", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9Y5H = new Plant('9Y5H', "Dioscorea batatas", "Chinese yam; cinnamon vine", false, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c9Y9V = new Plant('9Y9V', "Dioscorea villosa", "wild yam", true, new Price(11.949999999999999, 1, false, 1, 1), "")
catinfo.c6R8D = new Plant('6R8D', "Echinacea purpurea", "purple coneflower", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c4W2E = new Plant('4W2E', "Epilobium angustifolium", "fireweed", false, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c1O5S = new Plant('1O5S', "Epimedium grandiflorum", "bishop\'s cap", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c0W9H = new Plant('0W9H', "Equisetum hyemale robustum", "giant scouring rush", true, new Price(12.949999999999999, 1, false, 1, 1), "")
catinfo.c0W9E = new Plant('0W9E', "Equisetum hyemale", "common scouring rush", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c0W9S = new Plant('0W9S', "Equisetum scirpoides", "dwarf scouring rush", true, new Price(7.9500000000000002, 1, false, 1, 1), "")
catinfo.c6S2P = new Plant('6S2P', "Erigeron pulchellus", "robin\'s plantain", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6S4C = new Plant('6S4C', "Eupatorium coelestinum", "mist flower; hardy ageratum", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6S4R = new Plant('6S4R', "Eupatorium perfoliatum", "boneset", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6S4N = new Plant('6S4N', "Eupatorium purpureum", "Joe-Pye-weed", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c4H2N = new Plant('4H2N', "Fragaria vesca \'Rugen Improved\'", "alpine strawberry", false, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c4H2H = new Plant('4H2H', "Fragaria vesca albicarpa", "white-fruited woodland strawberry", false, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c4H2R = new Plant('4H2R', "Fragaria virginiana", "wild strawberry", false, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6S6D = new Plant('6S6D', "Gaillardia aristata", "blanket flower", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6L3T = new Plant('6L3T', "Galium odoratum", "sweet woodruff", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c3R7P = new Plant('3R7P', "Gaultheria procumbens", "wintergreen; teaberry; checkerberry", false, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c3R7T = new Plant('3R7T', "Gaultheria shallon", "salal; shallon; lemon leaf", false, new Price(11.949999999999999, 1, false, 1, 1), "")
catinfo.c5X3M = new Plant('5X3M', "Geranium maculatum", "wild geranium", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c4H3R = new Plant('4H3R', "Geum rivale", "water avens; chocolate root", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c4H4C = new Plant('4H4C', "Gillenia trifoliata", "bowman\'s root; Indian physic", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9Z4J = new Plant('9Z4J', "Goodyera pubescens", "downy rattlesnake orchid", true, new Price(13.949999999999999, 1, false, 1, 1), "")
catinfo.c2T7D = new Plant('2T7D', "Gypsophila cerastioides", "clumping baby\'s breath", true, new Price(7.9500000000000002, 1, false, 1, 1), "")
catinfo.c6L4M = new Plant('6L4M', "Hedyotis caerulea", "bluets; Quaker ladies", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6T9D = new Plant('6T9D', "Helianthus decapetalus", "thin-leaved sunflower", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6T9T = new Plant('6T9T', "Helianthus trachelifolius", "woodland sunflower", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9K3D = new Plant('9K3D', "Hemerocallis fulva", "common daylily; orange daylily", true, new Price(newArray3(7.9500000000000002, 14.949999999999999, 19.949999999999999), newArray3(1, 2, 3), true, 3, 6), "")
catinfo.c9K3R = new Plant('9K3R', "Hemerocallis lilioasphodelus", "yellow daylily; lemon daylily", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c2T8G = new Plant('2T8G', "Herniaria glabra", "herniary", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c4D3M = new Plant('4D3M', "Heuchera americana", "rock geranium", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9X9G = new Plant('9X9G', "Hypoxis hirsuta", "star grass", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9U2H = new Plant('9U2H', "Iris cristata", "crested dwarf iris", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c9U2J = new Plant('9U2J', "Iris cristata \'Alba\'", "white-flowered crested dwarf iris", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c9U6G = new Plant('9U6G', "Iris siberica", "Siberian iris", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9U7L = new Plant('9U7L', "Iris verna", "dwarf iris; violet iris", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c9U7M = new Plant('9U7M', "Iris versicolor", "blue flag", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6F8A = new Plant('6F8A', "Lamiastrum galeobdolon", "yellow archangel", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6F8D = new Plant('6F8D', "Lamium maculatum", "spotted dead nettle", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c2B9L = new Plant('2B9L', "Laportea canadensis", "wood nettle", false, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c1D7E = new Plant('1D7E', "Laurentia fluviatilis", "blue star creeper", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6V4U = new Plant('6V4U', "Liatris aspera", "rough blazing star", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6V4L = new Plant('6V4L', "Liatris microcephala", "tiny-headed blazing star", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9L7S = new Plant('9L7S', "Lilium superbum", "Turk\'s-cap lily", true, new Price(newArray3(9.9499999999999993, 9.5, 8.9499999999999993), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c9L8S = new Plant('9L8S', "Liriope spicata", "creeping lilyturf", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6K8J = new Plant('6K8J', "Lobelia cardinalis", "cardinal flower", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6K8N = new Plant('6K8N', "Lobelia siphilitica", "great blue lobelia", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c4W3T = new Plant('4W3T', "Ludwigia alternifolia", "seedbox; rattlebox", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c8D1L = new Plant('8D1L', "Luzula multiflora ssp multiflora", "common wood-rush", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3Z1E = new Plant('3Z1E', "Lysimachia ciliata", "fringed loosestrife", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c3Z1R = new Plant('3Z1R', "Lysimachia punctata", "whorled loosestrife", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c3Z1T = new Plant('3Z1T', "Lysimachia quadrifolia", "whorled loosestrife", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c3Z1W = new Plant('3Z1W', "Lysimachia terrestris", "swamp candles", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9M1S = new Plant('9M1S', "Maianthemum canadense", "Canada mayflower", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c9X1J = new Plant('9X1J', "Manfreda virginica", "false aloe", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c6V8D = new Plant('6V8D', "Marshallia grandiflora", "large-flowered Barbara\'s button", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G0N = new Plant('6G0N', "Meehania cordata", "Meehan\'s mint; creeping mint", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6G0W = new Plant('6G0W', "Melissa officinalis", "lemon balm", false, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6G1H = new Plant('6G1H', "Mentha piperita", "peppermint", false, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6G1K = new Plant('6G1K', "Mentha requienii", "Corsican mint", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G1P = new Plant('6G1P', "Mentha spicata", "spearmint", false, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 3), true, 3, 1), "")
catinfo.c6G1M = new Plant('6G1M', "Mentha suaveolens", "horsemint; applemint", false, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6E1W = new Plant('6E1W', "Mertensia virginica", "Virginia bluebells", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6I6J = new Plant('6I6J', "Mimulus ringens", "Alleghany monkeyflower", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6L5T = new Plant('6L5T', "Mitchella repens", "partridgeberry", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G2C = new Plant('6G2C', "Monarda didyma", "bee balm; Oswego tea", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G2C4 = new Plant('6G2C4', "Monarda didyma \'Jacob Cline\'", "bee balm; Oswego tea", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G2G = new Plant('6G2G', "Monarda fistulosa", "wild bergamot", false, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G2K = new Plant('6G2K', "Monarda punctata", "dotted mint; horsemint", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c9B7Y = new Plant('9B7Y', "Musa basjoo", "hardy banana", true, new Price(21.949999999999999, 1, false, 1, 1), "")
catinfo.c6G2R = new Plant('6G2R', "Nepeta cataria", "catnip", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c1H6G = new Plant('1H6G', "Nymphaea odorata", "fragrant water lily", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c4W4M = new Plant('4W4M', "Oenothera speciosa", "showy evening primrose", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9N1J = new Plant('9N1J', "Ophiopogon japonicus", "mondo grass; dwarf lillyturf", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c2Q3S = new Plant('2Q3S', "Opuntia compressa selection # 1", "common prickly pear", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c2Q3T = new Plant('2Q3T', "Opuntia compressa selection # 2", "common prickly pear", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c2Q3M = new Plant('2Q3M', "Opuntia ficus-indica", "Indian fig (prickly pear)", false, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c2Q3R = new Plant('2Q3R', "Opuntia humifusa", "(prickly pear)", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c2Q3P = new Plant('2Q3P', "Opuntia humifusa rafinesquei", "(prickly pear)", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c2Q3NC = new Plant('2Q3NC', "Opuntia imbricata apricot", "chain-link cactus (cholla)", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c2Q3NM = new Plant('2Q3NM', "Opuntia imbricata magenta", "chain-link cactus (cholla)", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c2Q4C = new Plant('2Q4C', "Opuntia phaeacantha", "(prickly pear)", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c2Q4E = new Plant('2Q4E', "Opuntia phaeacantha - purple-flowered", "(prickly pear)", true, new Price(12.949999999999999, 1, false, 1, 1), "")
catinfo.c6G3R = new Plant('6G3R', "Origanum vulgare", "marjoram; oregano", false, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c5R0L = new Plant('5R0L', "Pachysandra procumbens", "Alleghany pachysandra", true, new Price(newArray3(8.9499999999999993, 16.949999999999999, 23.949999999999999), newArray3(1, 2, 3), true, 3, 4), "")
catinfo.c5R0M = new Plant('5R0M', "Pachysandra terminalis", "Japanese pachysandra", true, new Price(newArray3(8.9499999999999993, 16.949999999999999, 23.949999999999999), newArray3(1, 2, 3), true, 3, 10), "")
catinfo.c6W8G = new Plant('6W8G', "Parthenium integrifolium", "wild quinine", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3I2B = new Plant('3I2B', "Passiflora caerulea", "blue passionflower", true, new Price(newArray2(11.949999999999999, 11.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3I2M = new Plant('3I2M', "Passiflora incarnata", "Maypop; apricot vine; wild passionflower", false, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c3I3A = new Plant('3I3A', "Passiflora lutea", "yellow passionflower", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c7X9K = new Plant('7X9K', "Peltandra virginica", "arrow-arum; tuckahoe", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c6I7C = new Plant('6I7C', "Penstemon acuminatus", "St. Joseph\'s wand", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6I7M = new Plant('6I7M', "Penstemon pinifolius", "pine-leaved penstemon", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6W9U = new Plant('6W9U', "Petasites japonicus", "sweet coltsfoot; fuki", false, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6D7B5 = new Plant('6D7B5', "Phlox borealis", "northern phlox", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6D7A1 = new Plant('6D7A1', "Phlox buckleyi", "sword-leaf phlox", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6D7A3 = new Plant('6D7A3', "Phlox carolina \'Magnificence\'", "Carolina phlox; thick-leaf phlox", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6D7A4 = new Plant('6D7A4', "Phlox carolina \'Miss Lingard\'", "Carolina phlox; thick-leaf phlox", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6D7H = new Plant('6D7H', "Phlox divaricata", "wild blue phlox", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6D7H7 = new Plant('6D7H7', "Phlox glaberrima", "smooth phlox", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6D7F = new Plant('6D7F', "Phlox maculata", "wild sweet William", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6D7G = new Plant('6D7G', "Phlox nivalis \'Camla\'", "trailing phlox", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6D7E3 = new Plant('6D7E3', "Phlox pilosa", "prairie phlox; downy phlox", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6D7J = new Plant('6D7J', "Phlox pulchra", "beautiful phlox", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6D7L = new Plant('6D7L', "Phlox stolonifera violet-flowered", "creeping phlox", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6D7K = new Plant('6D7K', "Phlox stolonifera \'Home Fires\'", "creeping phlox", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6D7P = new Plant('6D7P', "Phlox subulata \'Blue Emerald\'", "moss pink; ground pink; flowering moss", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6D7N = new Plant('6D7N', "Phlox subulata pink flowered", "moss pink; ground pink; flowering moss", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6D7R = new Plant('6D7R', "Phlox subulata red flowered", "moss pink; ground pink; flowering moss", true, new Price(7.9500000000000002, 1, false, 1, 1), "")
catinfo.c6D7Q = new Plant('6D7Q', "Phlox subulata \'White Delight\'", "moss pink; ground pink; flowering moss", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G4R = new Plant('6G4R', "Physostegia virginiana", "obedient plant", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6G4V = new Plant('6G4V', "Physostegia virginiana \'Rosea\'", "pink-flowered obedient plant", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c1O7J = new Plant('1O7J', "Podophyllum peltatum", "Mayapple; wild lemon", false, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6D7T = new Plant('6D7T', "Polemonium caeruleum ssp. Van-Bruntiae", "Jacob\'s ladder", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6D7X = new Plant('6D7X', "Polemonium reptans", "bluebell; Greek valerian", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c9N9T = new Plant('9N9T', "Polygonatum pubescens", "hairy Solomon\'s-seal", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c2Y4G = new Plant('2Y4G', "Polygonum cuspidatum compactum", "dwarf Japanese knotweed", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c9D3F = new Plant('9D3F', "Pontederia cordata", "pickerel weed", false, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c4L6C = new Plant('4L6C', "Potentilla aurea", "golden cinquefoil", true, new Price(7.9500000000000002, 1, false, 1, 1), "")
catinfo.c4L6NH = new Plant('4L6NH', "Potentilla fruticosa \'Goldstar\'", "bush cinquefoil; shrubby cinquefoil", true, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4L6P = new Plant('4L6P', "Potentilla fruticosa \'Pink Beauty\'", "bush cinquefoil; shrubby cinquefoil", true, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4L6U = new Plant('4L6U', "Potentilla tridentata", "three-toothed cinquefoil", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G5I = new Plant('6G5I', "Pycnanthemum hyssopifolium", "hyssop-leaved mountain mint", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G5K = new Plant('6G5K', "Pycnanthemum incanum", "hoary mountain-mint", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G5N = new Plant('6G5N', "Pycnanthemum muticum", "short-toothed mountain-mint", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3U8E = new Plant('3U8E', "Pyrola elliptica", "shinleaf; wild lily-of-the-valley", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6X4M = new Plant('6X4M', "Rudbeckia hirta", "black-eyed Susan", true, new Price(7.9500000000000002, 1, false, 1, 1), "")
catinfo.c6J3L = new Plant('6J3L', "Ruellia humilis", "wild petunia", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c2U2Y = new Plant('2U2Y', "Sagina subulata", "Corsican moss", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G6I = new Plant('6G6I', "Salvia elegans", "pineapple sage", false, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G6J3 = new Plant('6G6J3', "Salvia lyrata", "lyre-leafed sage", false, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c1E5W = new Plant('1E5W', "Saururus cernuus", "lizard\'s tail", true, new Price(newArray3(9.9499999999999993, 9.5, 8.9499999999999993), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c4D8W = new Plant('4D8W', "Saxifraga stolonifera", "strawberry begonia", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c4C6B = new Plant('4C6B', "Sedum acre", "golden moss; wall pepper", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C6D = new Plant('4C6D', "Sedum album", "worm grass", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C7B = new Plant('4C7B', "Sedum kamtschaticum", "(sedum)", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C7E = new Plant('4C7E', "Sedum kamtschaticum middendorffianum", "(sedum)", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C7U = new Plant('4C7U', "Sedum reflexum", "yellow stonecrop", false, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C8C = new Plant('4C8C', "Sedum sarmentosum", "(trailing sedum)", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C8G = new Plant('4C8G', "Sedum sexangulare", "(sedum)", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C8H = new Plant('4C8H', "Sedum sieboldii", "Siebold stonecrop; October plant", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C8L = new Plant('4C8L', "Sedum spurium", "(sedum)", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C8K = new Plant('4C8K', "Sedum spurium variegatum", "(sedum)", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C8R = new Plant('4C8R', "Sedum ternatum", "wild stonecrop", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C8RG = new Plant('4C8RG', "Sedum ternatum \'Larinem Park\'", "wild stonecrop", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C9C = new Plant('4C9C', "Sempervivum arachnoideum", "cobweb houseleek", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4C9V = new Plant('4C9V', "Sempervivum tectorum", "common houseleek; hens-and-chickens", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6X9E = new Plant('6X9E', "Senecio aureus", "golden groundsel", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6Y1T = new Plant('6Y1T', "Silphium perfoliatum", "cup plant", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c9V7C = new Plant('9V7C', "Sisyrinchium angustifolium", "pointed blue-eyed grass", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6Y3C = new Plant('6Y3C', "Solidago caesia", "blue-stemmed goldenrod", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6Y3T = new Plant('6Y3T', "Solidago rugosa", "rough-stemmed goldenrod", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6A1T = new Plant('6A1T', "Spigelia marilandica", "Indian pink", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c6G7H = new Plant('6G7H', "Stachys affinis", "Chinese artichoke; Japanese artichoke; chorogi", false, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6Y6A = new Plant('6Y6A', "Stokesia laevis", "Stokes\' aster", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6Y6B = new Plant('6Y6B', "Stokesia laevis \'Alba\'", "white-flowered Stokes\' aster", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c1T9C = new Plant('1T9C', "Stylophorum diphyllum", "wood poppy; celandine poppy", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6E6S = new Plant('6E6S', "Symphytum asperum", "prickly comfrey", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6E6U = new Plant('6E6U', "Symphytum grandiflorum", "large-flowered comfrey", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6Y1H = new Plant('6Y1H', "Tanacetum vulgare", "common tansy; golden buttons", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c9C7D = new Plant('9C7D', "Thalia dealbata", "water canna", true, new Price(11.949999999999999, 1, false, 1, 1), "")
catinfo.c6G8GE = new Plant('6G8GE', "Thymus doerfleri \'Elfin\'", "(creeping thyme)", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6G8P = new Plant('6G8P', "Thymus praecox", "(creeping thyme)", false, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6G8V = new Plant('6G8V', "Thymus serpyllum", "mother-of-thyme", false, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c4D9O = new Plant('4D9O', "Tiarella cordifolia", "foamflower", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c4D9V = new Plant('4D9V', "Tiarella wherryi", "Wherry\'s foamflower", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8B6Y = new Plant('8B6Y', "Tradescantia hirsuticaulis", "hairy spiderwort", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8Z3D = new Plant('8Z3D', "Typha angustifolia", "narrow-leaved cat-tail", false, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8Z3M = new Plant('8Z3M', "Typha latifolia", "common cat-tail", false, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c2B9D = new Plant('2B9D', "Urtica dioica", "stinging nettle", false, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c9Q3M = new Plant('9Q3M', "Uvularia sessilifolia", "sessile bellwort; wild oats", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c6E9C = new Plant('6E9C', "Verbena canadensis", "rose verbena", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6E9J = new Plant('6E9J', "Verbena hastata", "blue vervain; Simpler\'s joy", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6I9L = new Plant('6I9L', "Veronica incana", "(trailing veronica)", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6I9M = new Plant('6I9M', "Veronica latifolia", "(veronica)", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6I9U = new Plant('6I9U', "Veronica prostrata", "(creeping veronica)", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6I9V = new Plant('6I9V', "Veronica repens", "(creeping veronica)", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6I9Y = new Plant('6I9Y', "Veronica serpyllifolia", "thyme-leaved speedwell", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6I8B = new Plant('6I8B', "Veronicastrum virginicum \'Albo-Rosea\'", "culver\'s root", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6A5H = new Plant('6A5H', "Vinca minor", "common periwinkle", true, new Price(newArray3(7.9500000000000002, 14.949999999999999, 20.949999999999999), newArray3(1, 2, 3), true, 3, 4), "")
catinfo.c6A5J = new Plant('6A5J', "Vinca minor \'Alba\'", "white-flowered periwinkle", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c6A5M = new Plant('6A5M', "Vinca minor (purple-flowered)", "purple-flowered periwinkle", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c3H2T = new Plant('3H2T', "Viola appalachiensis", "Appalachian violet", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c3H3M = new Plant('3H3M', "Viola canadensis", "Canada violet", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c3H5A = new Plant('3H5A', "Viola labradorica", "Labrador violet", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c3H5G = new Plant('3H5G', "Viola pallens", "northern white violet", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3H6C = new Plant('3H6C', "Viola pedata", "bird\'s foot violet", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3H8T = new Plant('3H8T', "Viola sp. \'Sylvia Hart\'", "Sylvia Hart violet", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c4R7D = new Plant('4R7D', "Waldsteinia fragarioides", "barren strawberry", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c5Z9W = new Plant('5Z9W', "Zizia aurea", "golden alexanders", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8G4N = new Plant('8G4N', "Ammophila breviligulata", "American beachgrass", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8H1D = new Plant('8H1D', "Andropogon gerardii", "big bluestem; turkey-foot", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8H2N = new Plant('8H2N', "Anthoxanthum odoratum", "sweet vernal grass", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8H8F = new Plant('8H8F', "Arundo donax", "giant reed; Italian reed; cana brava", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c8H8G = new Plant('8H8G', "Arundo donax versicolor", "variegated giant reed", true, new Price(12.949999999999999, 1, false, 1, 1), "")
catinfo.c8H6C = new Plant('8H6C', "Bouteloua curtipendula", "sideoats grama", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8I4D = new Plant('8I4D', "Buchloe dactyloides", "buffalo grass", true, new Price(7.9500000000000002, 1, false, 1, 1), "")
catinfo.c8I4N = new Plant('8I4N', "Calamagrostis acutiflora \'Karl Foerster\'", "reed grass", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8E2A = new Plant('8E2A', "Carex abscondita", "thicket sedge", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8E2C = new Plant('8E2C', "Carex crinita", "fringed sedge", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8E2D = new Plant('8E2D', "Carex grayi", "Gray\'s sedge; star sedge", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8E5R = new Plant('8E5R', "Carex lurida", "sallow sedge", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8E5C = new Plant('8E5C', "Carex muskingumensis \'Watchposten\'", "palm tree sedge", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8E6S = new Plant('8E6S', "Carex pensylvanica", "Pennsylvania sedge", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c8E8P = new Plant('8E8P', "Carex stricta", "tussock sedge", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8I4H = new Plant('8I4H', "Chasmanthium latifolium", "northern sea oats", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c8F3H = new Plant('8F3H', "Cyperus flabelliformis", "umbrella sedge", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8J4G = new Plant('8J4G', "Cymbopogon citratus", "lemon grass", false, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c8J4L = new Plant('8J4L', "Cymbopogon nardus", "citronella grass", true, new Price(12.949999999999999, 1, false, 1, 1), "")
catinfo.c8J6K = new Plant('8J6K', "Danthonia spicata", "junegrass", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8J7C = new Plant('8J7C', "Deschampsia caespitosa", "tufted hair grass", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c8K8R = new Plant('8K8R', "Eragrostis spectabilis", "purple love grass", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8L1B = new Plant('8L1B', "Erianthus ravennae", "Ravenna grass", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c8F6R = new Plant('8F6R', "Eriophorum tenellum", "rough cotton grass", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8L4K = new Plant('8L4K', "Festuca ovina glauca", "blue fescue", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8M5G = new Plant('8M5G', "Helictotrichon sempervirens", "blue oat grass", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c8M3M = new Plant('8M3M', "Hierochloe odorata", "sweet grass; Seneca grass; holy grass; vanilla grass", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8M7R = new Plant('8M7R', "Hystrix patula", "bottlebrush grass", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8D2T = new Plant('8D2T', "Juncus effusus", "soft rush; Japanese-mat rush", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8O3E = new Plant('8O3E', "Miscanthus floridulus", "giant silver grass", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8O3L = new Plant('8O3L', "Miscanthus sacchariflorus", "Amur silver grass", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8O3S = new Plant('8O3S', "Miscanthus sinensis gracillimus", "maiden grass", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8O3T = new Plant('8O3T', "Miscanthus sinensis \'Morning Light\'", "Japanese silver grass", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c8O3U = new Plant('8O3U', "Miscanthus sinensis \'Variegatus\'", "variegated eulalia", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8O3W = new Plant('8O3W', "Miscanthus sinensis zebrinus", "zebra grass", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8O7E = new Plant('8O7E', "Muhlenbergia capillaris", "purple hairgrass", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8Q2L = new Plant('8Q2L', "Panicum virgatum \'Cloud Nine\'", "switch-grass", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8Q2T = new Plant('8Q2T', "Panicum virgatum \'Strictum\'", "switch-grass", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8Q2P = new Plant('8Q2P', "Panicum virgatum (wild form)", "switch-grass", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8Q8C = new Plant('8Q8C', "Pennisetum alopecuroides", "Chinese pennisetum", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8Q9F = new Plant('8Q9F', "Phalaris arundinacea picta", "ribbon grass", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8R1P = new Plant('8R1P', "Phragmites australis aurea", "variegated common reed grass", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c8T4E = new Plant('8T4E', "Schizachyrium scoparium", "little bluestem; bunchgrass", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c8F8A = new Plant('8F8A', "Scirpus americanus", "three-square bulrush; chair-maker\'s bulrush", false, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8F8C = new Plant('8F8C', "Scirpus cyperinus", "wool grass", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c8F8J = new Plant('8F8J', "Scirpus expansus", "spreading bulrush", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8F8V = new Plant('8F8V', "Scirpus validus", "soft-stem bulrush", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c8U1S = new Plant('8U1S', "Sorghastrum avenaceum", "Indian grass", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8U9J = new Plant('8U9J', "Spartina pectinata aureomarginata", "variegated prairie cordgrass", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8V1A = new Plant('8V1A', "Sporobolus heterolepis", "prairie dropseed", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c8W4F = new Plant('8W4F', "Tripsacum dactyloides", "eastern gama grass", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8X8C = new Plant('8X8C', "Vetiveria zizanioides", "vetiver; khus-khus; khas-khas", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c8X9A = new Plant('8X9A', "Zizania aquatica", "wild rice", false, new Price(8.9499999999999993, 1, false, 1, 6), "")
catinfo.c0Q1M = new Plant('0Q1M', "Adiantum pedatum", "northern maidenhair fern", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0M4D = new Plant('0M4D', "Athyrium felix-femina", "lady fern", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0Q2W = new Plant('0Q2W', "Camptosorus rhizophyllus", "walking fern", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c0Q2Y = new Plant('0Q2Y', "Cheilanthes lanosa", "hairy lipfern", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c0M4N = new Plant('0M4N', "Cystopteris fragilis", "fragile fern; brittle fern", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c0H3C = new Plant('0H3C', "Dennstaedtia punctilobula", "hay-scented fern; boulder fern", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c0L9Q = new Plant('0L9Q', "Dryopteris marginalis", "eastern wood-fern", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0L9C = new Plant('0L9C', "Dryopteris spinulosa", "evergreen woodfern", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0Q5R = new Plant('0Q5R', "Gymnocarpium dryopteris", "oak fern", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c0C3L = new Plant('0C3L', "Lygodium palmatum", "climbing fern; Hartford fern", true, new Price(17.949999999999999, 1, false, 1, 1), "")
catinfo.c0N1F = new Plant('0N1F', "Matteuccia pensylvanica", "American ostrich fern", false, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0N1GK = new Plant('0N1GK', "Matteuccia struthiopteris \'Jumbo\'", "ostrich fern", false, new Price(newArray2(10.949999999999999, 10.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0N1H = new Plant('0N1H', "Onoclea sensibilis", "sensitive fern", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0C1C = new Plant('0C1C', "Osmunda cinnamomea", "cinnamon fern", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0C1F = new Plant('0C1F', "Osmunda claytoniana", "interrupted fern", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0C1K = new Plant('0C1K', "Osmunda regalis", "royal fern", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0Q3T = new Plant('0Q3T', "Polypodium virginianum", "common polypody; rock polypody", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0M2C = new Plant('0M2C', "Polystichum acrostichoides", "Christmas fern", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c0J7A = new Plant('0J7A', "Thelypteris noveboracensis", "New York fern", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c0K2A = new Plant('0K2A', "Thelypteris palustris", "marsh fern", true, new Price(newArray3(8.9499999999999993, 8.5, 7.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c0A8D = new Plant('0A8D', "Atrichum undulatum", "(moss)", true, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c0A7U = new Plant('0A7U', "Callicladium haldanianum", "(moss)", true, new Price(newArray2(7.9500000000000002, 7.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0A0G = new Plant('0A0G', "Cladonia species", "reindeer moss", true, new Price(12.949999999999999, 1, false, 1, 1), "")
catinfo.c0A5M = new Plant('0A5M', "Climacium americanum", "tree moss, umbrella moss", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0U3C = new Plant('0U3C', "Lycopodium obscurum", "tree club moss", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0U3R = new Plant('0U3R', "Lycopodium tristachyum", "ground cedar", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0A1T = new Plant('0A1T', "Polytrichum commune", "common haircap moss", true, new Price(newArray5(7.9500000000000002, 7.5, 6.9500000000000002, 6.5, 5.9500000000000002), newArray5(1, 3, 10, 50, 100), true, 5, 1), "")
catinfo.c0A8S = new Plant('0A8S', "Polytrichum piliferum", "(soft haircap moss)", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0A0S = new Plant('0A0S', "Sphagnum species", "sphagnum moss", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c0A6K = new Plant('0A6K', "Thuidium delicatulum", "feather moss", true, new Price(newArray2(8.9499999999999993, 8.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3C0R = new Plant('3C0R', "Actinidia arguta \'74-8\'", "hardy kiwi fruit; tara vine; bower actinidia", false, common_prices[1], "")
catinfo.c3C0U = new Plant('3C0U', "Actinidia arguta \'74-46\'", "hardy kiwi fruit; tara vine; bower actinidia", false, common_prices[1], "")
catinfo.c3C0V = new Plant('3C0V', "Actinidia arguta \'74-55\'", "hardy kiwi fruit; tara vine; bower actinidia", false, common_prices[1], "")
catinfo.c3C0Z = new Plant('3C0Z', "Actinidia arguta \'119-40-B\'", "hardy kiwi fruit; tara vine; bower actinidia", false, common_prices[1], "")
catinfo.c3C0A = new Plant('3C0A', "Actinidia arguta \'Ananasnaja\'", "hardy kiwi fruit; tara vine; bower actinidia", false, common_prices[1], "")
catinfo.c3C0B = new Plant('3C0B', "Actinidia arguta \'Ananasnaya\'", "hardy kiwi fruit; tara vine; bower actinidia", false, common_prices[1], "")
catinfo.c3C0E = new Plant('3C0E', "Actinidia arguta \'Dunbarton Oaks\'", "hardy kiwi fruit; tara vine; bower actinidia", false, common_prices[1], "")
catinfo.c3C0H = new Plant('3C0H', "Actinidia arguta \'Geneva 2\'", "hardy kiwi fruit; tara vine; bower actinidia", false, common_prices[1], "")
catinfo.c3C0Q = new Plant('3C0Q', "Actinidia arguta \'Meader male\'", "hardy kiwi fruit; tara vine; bower actinidia", false, common_prices[1], "")
catinfo.c3C0N = new Plant('3C0N', "Actinidia arguta \'Michigan State\'", "hardy kiwi fruit; tara vine; bower actinidia", false, common_prices[1], "")
catinfo.c3C1Y = new Plant('3C1Y', "Actinidia callosa", "(hardy kiwi fruit)", false, common_prices[1], "")
catinfo.c3C4K = new Plant('3C4K', "Actinidia kolomikta male", "hardy kiwi fruit; kolomikta vine", false, common_prices[1], "")
catinfo.c3C4R = new Plant('3C4R', "Actinidia kolomikta \'Krupnoplodaya\'", "hardy kiwi fruit; kolomikta vine", false, common_prices[1], "")
catinfo.c3C4T = new Plant('3C4T', "Actinidia kolomikta \'Red Beauty\'", "hardy kiwi fruit; kolomikta vine", false, common_prices[1], "")
catinfo.c3C6A = new Plant('3C6A', "Actinidia polygama", "(silver vine)", false, common_prices[1], "")
catinfo.c1P1D1 = new Plant('1P1D1', "Akebia quinata: 4 1/4\" pot", "five-leaved akebia", false, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c1P1D2 = new Plant('1P1D2', "Akebia quinata:  1/2 gal.", "five-leaved akebia", false, new Price(19.949999999999999, 1, false, 1, 1), "")
catinfo.c3Q4U = new Plant('3Q4U', "Arctostaphylos uva-ursi", "bearberry; kinnikinick", true, new Price(newArray2(11.949999999999999, 11.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c1C3N1 = new Plant('1C3N1', "Asimina triloba: 4 1/4\" pot, 8-12\" tall", "pawpaw", false, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c1C3N2 = new Plant('1C3N2', "Asimina triloba:  1/2 gal., 12-24\" tall", "pawpaw", false, new Price(22.949999999999999, 1, false, 1, 1), "")
catinfo.c2H2R = new Plant('2H2R', "Betula lenta", "black birch; sweet birch; cherry birch", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c6J4G = new Plant('6J4G', "Bignonia capreolata", "cross vine", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c6J4M = new Plant('6J4M', "Campsis radicans", "trumpet vine; trumpet creeper", true, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c5S2E = new Plant('5S2E', "Ceanothus americanus", "New Jersey tea; red root;wild snowball", true, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6L2C = new Plant('6L2C', "Cephalanthus occidentalis", "buttonbush", true, new Price(13.949999999999999, 1, false, 1, 1), "")
catinfo.c5D7A1 = new Plant('5D7A1', "Cercis canadensis: 4 1/4\" pot, 8-12\" tall", "eastern redbud tree", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c5D7A2 = new Plant('5D7A2', "Cercis canadensis:  1/2 gal., 12-24\" tall", "eastern redbud tree", true, new Price(21.949999999999999, 1, false, 1, 1), "")
catinfo.c3Q9U = new Plant('3Q9U', "Chamaedaphne calyculata", "leatherleaf; cassandra", true, new Price(13.949999999999999, 1, false, 1, 1), "")
catinfo.c6I0D = new Plant('6I0D', "Chionanthus virginicus", "fringetree", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c3P3C = new Plant('3P3C', "Clethra alnifolia", "sweet pepperbush; summersweet", true, new Price(13.949999999999999, 1, false, 1, 1), "")
catinfo.c4X5D1 = new Plant('4X5D1', "Cornus alternifolia: 4 1/4\" pot, 8-12\" tall", "pagoda dogwood; alternate-leaved dogwood", true, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4X5D2 = new Plant('4X5D2', "Cornus alternifolia:  1/2 gal., 12-24\" tall", "pagoda dogwood; alternate-leaved dogwood", true, new Price(21.949999999999999, 1, false, 1, 1), "")
catinfo.c4X5J = new Plant('4X5J', "Cornus canadensis", "bunchberry", true, new Price(newArray2(9.9499999999999993, 9.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4X5P = new Plant('4X5P', "Cornus florida", "flowering dogwood", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4X5W1 = new Plant('4X5W1', "Cornus kousa: 4 1/4\" pot, 8-12\" tall", "kousa dogwood; Asian flowering dogwood", false, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4X5W2 = new Plant('4X5W2', "Cornus kousa:  1/2 gal., 12-24\" tall", "kousa dogwood; Asian flowering dogwood", false, new Price(21.949999999999999, 1, false, 1, 1), "")
catinfo.c6M1N = new Plant('6M1N', "Diervilla lonicera", "northern bush honeysuckle", true, new Price(13.949999999999999, 1, false, 1, 1), "")
catinfo.c4T1G = new Plant('4T1G', "Elaeagnus commutata", "wolfberry; silverberry", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3P8Y = new Plant('3P8Y', "Empetrum nigrum \'Compass Harbor\'", "black crowberry", false, new Price(11.949999999999999, 1, false, 1, 1), "")
catinfo.c3R5Y = new Plant('3R5Y', "Epigaea repens", "Mayflower; trailing arbutus", true, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c5Q1T = new Plant('5Q1T', "Euonymus obovata", "running strawberry bush", true, new Price(12.949999999999999, 1, false, 1, 1), "")
catinfo.c3R8B = new Plant('3R8B', "Gaylussacia baccata", "black huckleberry", false, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6A1R = new Plant('6A1R', "Gelsemium sempervirens", "Carolina yellow jessamine; evening trumpet flower ", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c6A1RC = new Plant('6A1RC', "Gelsemium sempervirens \'Margarita\'", "Carolina yellow jessamine; evening trumpet flower ", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c3X1A1 = new Plant('3X1A1', "Halesia carolina", "Carolina silverbell tree", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c2A8W1 = new Plant('2A8W1', "Hamamelis virginiana: 4 1/4\" pot, 8-12\" tall", "common witch hazel", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c2A8W2 = new Plant('2A8W2', "Hamamelis virginiana:  1/2 gal., 12-24\" tall", "common witch hazel", true, new Price(21.949999999999999, 1, false, 1, 1), "")
catinfo.c4D4H = new Plant('4D4H', "Itea virginica \'Henry\'s Garnet\'", "sweetspire; Virginia willow; tassel-white", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c3R9H = new Plant('3R9H', "Kalmia latifolia", "mountain laurel; calico bush", true, new Price(17.949999999999999, 1, false, 1, 1), "")
catinfo.c3R9B = new Plant('3R9B', "Kalmia angustifolia", "sheep laurel", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c4I6A = new Plant('4I6A', "Kerria japonica", "kerria", true, new Price(13.949999999999999, 1, false, 1, 1), "")
catinfo.c4I6B = new Plant('4I6B', "Kerria japonica pleniflora", "double-flowered kerria", true, new Price(13.949999999999999, 1, false, 1, 1), "")
catinfo.c6F8J = new Plant('6F8J', "Lavandula angustifolia", "English lavender; common lavender", true, new Price(8.9499999999999993, 1, false, 1, 1), "")
catinfo.c3S1E = new Plant('3S1E', "Ledum groenlandicum", "Labrador tea", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c1D7T = new Plant('1D7T', "Lindera benzoin", "spicebush", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M3G = new Plant('6M3G', "Lonicera dioica", "smooth-leaved honeysuckle", true, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M3H = new Plant('6M3H', "Lonicera fragrantissima", "winter honeysuckle", true, new Price(13.949999999999999, 1, false, 1, 1), "")
catinfo.c6M3OC = new Plant('6M3OC', "Lonicera periclymenum \'Graham Thomas\'", "woodbine honeysuckle", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M3S = new Plant('6M3S', "Lonicera sempervirens", "trumpet honeysuckle", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M3SK = new Plant('6M3SK', "Lonicera sempervirens \'John Clayton\'", "yellow trumpet honeysuckle", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M3SP = new Plant('6M3SP', "Lonicera sempervirens \'Prolifica\'", "trumpet honeysuckle", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3S5H = new Plant('3S5H', "Lyonia ligustrina", "swamp andromeda", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c1B7N1 = new Plant('1B7N1', "Magnolia virginiana: 4 1/4\" pot, 8-12\" tall", "sweet bay magnolia", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c1B7N2 = new Plant('1B7N2', "Magnolia virginiana:  1/2 gal., 12-24\" tall", "sweet bay magnolia", true, new Price(22.949999999999999, 1, false, 1, 1), "")
catinfo.c2C8M = new Plant('2C8M', "Morus alba x rubra \'Illinois Everbearing\'", "white x red mulberry hybrids", false, new Price(29.949999999999999, 1, false, 1, 1), "")
catinfo.c5T3H = new Plant('5T3H', "Parthenocissus quinquefolia", "Virginia creeper; woodbine", true, new Price(newArray3(13.949999999999999, 13.5, 12.949999999999999), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c5Q1V = new Plant('5Q1V', "Paxistima canbyi", "mountain lover; cliff green", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c4D6G = new Plant('4D6G', "Philadelphus coronarius", "mock orange", true, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c5W9K = new Plant('5W9K', "Poncirus trifoliata", "trifoliate orange; hardy orange", false, new Price(15.949999999999999, 1, false, 1, 1), "")
catinfo.c5W9N = new Plant('5W9N', "Poncirus trifoliata \'Flying Dragon\'", "trifoliate orange; hardy orange", false, new Price(15.949999999999999, 1, false, 1, 1), "")
catinfo.c4M1E = new Plant('4M1E', "Prunus americana", "wild plum; August plum; goose plum", false, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4N1C = new Plant('4N1C', "Prunus maritima", "beach plum", false, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4N6C = new Plant('4N6C', "Prunus serotina", "wild black cherry; rum cherry", false, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4V8L = new Plant('4V8L', "Psidium littorale longipes", "Cattley guava; purple strawberry guava", false, new Price(16.949999999999999, 1, false, 1, 1), "")
catinfo.c3T3R = new Plant('3T3R', "Rhododendron maximum", "rosebay rhododendron; great laurel", true, new Price(newArray2(14.949999999999999, 14.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3T4W = new Plant('3T4W', "Rhododendron viscosum", "white swamp azalea", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c4P7R1 = new Plant('4P7R1', "Rosa virginiana: 4 1/4\" pot, 8-12\" tall", "Virginia rose", false, new Price(newArray2(12.949999999999999, 12.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c4P7R2 = new Plant('4P7R2', "Rosa virginiana:  1/2 gal., 12-24\" tall", "Virginia rose", false, new Price(21.949999999999999, 1, false, 1, 1), "")
catinfo.c4Q3O = new Plant('4Q3O', "Rubus odoratus", "purple flowering raspberry", true, new Price(newArray2(11.949999999999999, 11.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M4C1 = new Plant('6M4C1', "Sambucus canadensis: 4 1/4\" pot, 8-12\" tall", "sweet elderberry", false, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M4C2 = new Plant('6M4C2', "Sambucus canadensis:  1/2 gal., 12-24\" tall", "sweet elderberry", false, new Price(21.949999999999999, 1, false, 1, 1), "")
catinfo.c1D8T = new Plant('1D8T', "Sassafras albidum", "sassafras", false, new Price(15.949999999999999, 1, false, 1, 1), "")
catinfo.c4R3L = new Plant('4R3L', "Spiraea latifolia", "meadowsweet", true, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c3X1X = new Plant('3X1X', "Styrax japonicus", "Japanese snowbell tree", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c3T7D = new Plant('3T7D', "Vaccinium angustifolium laevifolium", "early sweet blueberry", false, new Price(newArray3(11.949999999999999, 11.5, 10.949999999999999), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c3T8R = new Plant('3T8R', "Vaccinium macrocarpon", "cranberry", false, new Price(newArray3(7.9500000000000002, 7.5, 6.9500000000000002), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6M5A = new Plant('6M5A', "Viburnum acerifolium", "maple-leaved viburnum", true, new Price(newArray2(15.949999999999999, 15.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M5G = new Plant('6M5G', "Viburnum cassinoides", "withe-rod viburnum", false, new Price(newArray3(13.949999999999999, 13.5, 12.949999999999999), newArray3(1, 3, 10), true, 3, 1), "")
catinfo.c6M6N = new Plant('6M6N', "Viburnum dentatum", "northern arrow-wood", true, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M6B = new Plant('6M6B', "Viburnum lentago", "nannyberry; sheepberry; wild raisin", false, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M6M1 = new Plant('6M6M1', "Viburnum prunifolium: 4 1/4\" pot, 8-12\" tall", "black haw", false, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M6M2 = new Plant('6M6M2', "Viburnum prunifolium:  1/2 gal., 12-24\" tall", "black haw", false, new Price(21.949999999999999, 1, false, 1, 1), "")
catinfo.c6M6T1 = new Plant('6M6T1', "Viburnum trilobum: 4 1/4\" pot, 8-12\" tall", "highbush cranberry", false, new Price(newArray2(13.949999999999999, 13.5), newArray2(1, 3), true, 2, 1), "")
catinfo.c6M6T2 = new Plant('6M6T2', "Viburnum trilobum:  1/2 gal., 12-24\" tall", "highbush cranberry", false, new Price(21.949999999999999, 1, false, 1, 1), "")
catinfo.c9X1P = new Plant('9X1P', "Yucca filamentosa", "needle palm, Adam\'s needle", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c9X1V = new Plant('9X1V', "Yucca smalliana", "bear grass, Adam\'s needle", true, new Price(9.9499999999999993, 1, false, 1, 1), "")
catinfo.c8H4J1 = new Plant('8H4J1', "Arundinaria gigantea: up to 1 1/2\' tall", "canebrake bamboo; large cane; southern cane", false, new Price(25.949999999999999, 1, false, 1, 1), "")
catinfo.c8H4J2 = new Plant('8H4J2', "Arundinaria gigantea: 1 1/2\'-3\' tall", "canebrake bamboo; large cane; southern cane", false, new Price(36.950000000000003, 1, false, 1, 1), "")
catinfo.c8H4J3 = new Plant('8H4J3', "Arundinaria gigantea: 3\'-5\' tall", "canebrake bamboo; large cane; southern cane", false, new Price(47.950000000000003, 1, false, 1, 1), "")
catinfo.c8H4J4 = new Plant('8H4J4', "Arundinaria gigantea: 5\'-7\' tall", "canebrake bamboo; large cane; southern cane", false, new Price(58.950000000000003, 1, false, 1, 1), "")
catinfo.c8H4J5 = new Plant('8H4J5', "Arundinaria gigantea: 7\'-9\' tall", "canebrake bamboo; large cane; southern cane", false, new Price(69.950000000000003, 1, false, 1, 1), "")
catinfo.c8H4J6 = new Plant('8H4J6', "Arundinaria gigantea: 9\'-11\' tall", "canebrake bamboo; large cane; southern cane", false, new Price(80.950000000000003, 1, false, 1, 1), "")
catinfo.c8H4M = new Plant('8H4M', "Arundinaria gigantea tecta", "switch cane; small canebrake bamboo", false, new Price(23.949999999999999, 1, false, 1, 1), "")
catinfo.c8H8K1 = new Plant('8H8K1', "Bambusa multiplex \'Alphonse Karr\': up to 1 1/2\' tall", "\'Alphonse Karr\' hedge bamboo", true, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8H8K2 = new Plant('8H8K2', "Bambusa multiplex \'Alphonse Karr\': 1 1/2\'-3\' tall", "\'Alphonse Karr\' hedge bamboo", true, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8H8K3 = new Plant('8H8K3', "Bambusa multiplex \'Alphonse Karr\': 3\'-5\' tall", "\'Alphonse Karr\' hedge bamboo", true, new Price(46.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3C1 = new Plant('8L3C1', "Fargesia dracocephala: up to 1 1/2\' tall", "dragon\'s head bamboo", true, new Price(29.949999999999999, 1, false, 1, 1), "")
catinfo.c8L3H1 = new Plant('8L3H1', "Fargesia murieliae \'Mary\': up to 1\' tall", "umbrella bamboo", true, new Price(54.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3FF1 = new Plant('8L3FF1', "Fargesia murieliae \'Adams #105\': up to 1 1/2\' tall", "umbrella bamboo", true, new Price(54.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3FF2 = new Plant('8L3FF2', "Fargesia murieliae \'Adams #105\': 1 1/2\'-3\' tall", "umbrella bamboo", true, new Price(65.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3N1 = new Plant('8L3N1', "Fargesia nitida: up to 1 1/2\' tall", "fountain bamboo", true, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3N2 = new Plant('8L3N2', "Fargesia nitida: 1 1/2\'-3\' tall", "fountain bamboo", true, new Price(50.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3N3 = new Plant('8L3N3', "Fargesia nitida: 3\'-5\' tall", "fountain bamboo", true, new Price(61.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3L1 = new Plant('8L3L1', "Fargesia nitida \'De Belder\': up to 1 1/2\' tall", "fountain bamboo", true, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3L2 = new Plant('8L3L2', "Fargesia nitida \'De Belder\': 1 1/2\'-3\' tall", "fountain bamboo", true, new Price(50.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3L3 = new Plant('8L3L3', "Fargesia nitida \'De Belder\': 3\'-5\' tall", "fountain bamboo", true, new Price(61.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3V1 = new Plant('8L3V1', "Fargesia nitida \'Jiuzhaigou\': up to 1 1/2\' tall", "fountain bamboo", true, new Price(44.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3V2 = new Plant('8L3V2', "Fargesia nitida \'Jiuzhaigou\': 1 1/2\'-3\' tall", "fountain bamboo", true, new Price(55.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3M1 = new Plant('8L3M1', "Fargesia nitida \'McClure\': up to 1 1/2\' tall", "fountain bamboo", true, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3M2 = new Plant('8L3M2', "Fargesia nitida \'McClure\': 1 1/2\'-3\' tall", "fountain bamboo", true, new Price(50.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3M3 = new Plant('8L3M3', "Fargesia nitida \'McClure\': 3\'-5\' tall", "fountain bamboo", true, new Price(61.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3R1 = new Plant('8L3R1', "Fargesia robusta: up to 1 1/2\' tall", "(clump-forming bamboo)", true, new Price(34.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3R2 = new Plant('8L3R2', "Fargesia robusta: 1 1/2\'-3\' tall", "(clump-forming bamboo)", true, new Price(45.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3T1 = new Plant('8L3T1', "Fargesia rufa: up to 1 1/2\' tall", "(clump-forming bamboo)", true, new Price(34.950000000000003, 1, false, 1, 1), "")
catinfo.c8L3T2 = new Plant('8L3T2', "Fargesia rufa: 1 1/2\'-3\' tall", "(clump-forming bamboo)", true, new Price(45.950000000000003, 1, false, 1, 1), "")
catinfo.c8M2S = new Plant('8M2S', "Hibanobambusa tranquillans \'Shiroshima\'", "(tall variegated bamboo)", true, new Price(29.949999999999999, 1, false, 1, 1), "")
catinfo.c8S8E1 = new Plant('8S8E1', "Indocalamus latifolius \'Solidus\': up to 1\' tall", "(bamboo)", true, new Price(18.949999999999999, 1, false, 1, 1), "")
catinfo.c8S8E2 = new Plant('8S8E2', "Indocalamus latifolius \'Solidus\': 1\'-2\' tall", "(bamboo)", true, new Price(29.949999999999999, 1, false, 1, 1), "")
catinfo.c8S8C1 = new Plant('8S8C1', "Indocalamus longiauritus", "(bamboo)", true, new Price(18.949999999999999, 1, false, 1, 1), "")
catinfo.c8S8G1 = new Plant('8S8G1', "Indocalamus tessellatus: up to 1\' tall", "(large-leaved bamboo)", true, new Price(17.949999999999999, 1, false, 1, 1), "")
catinfo.c8S8G2 = new Plant('8S8G2', "Indocalamus tessellatus: 1 1/2\'-3\' tall", "(large-leaved bamboo)", true, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8R2B1 = new Plant('8R2B1', "Phyllostachys angusta: up to 1 1/2\' tall", "stone bamboo; sah chu", false, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8R2B2 = new Plant('8R2B2', "Phyllostachys angusta: 1 1/2\'-3\' tall", "stone bamboo; sah chu", false, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2B3 = new Plant('8R2B3', "Phyllostachys angusta: 3\'-5\' tall", "stone bamboo; sah chu", false, new Price(46.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3B4 = new Plant('8R3B4', "Phyllostachys angusta: 5\'-7\' tall", "stone bamboo; sah chu", false, new Price(57.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2J1 = new Plant('8R2J1', "Phyllostachys arcana: up to 1 1/2\' tall", "lao zhu; shi lu zhu", false, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8R2J2 = new Plant('8R2J2', "Phyllostachys arcana: 1 1/2\'-3\' tall", "lao zhu; shi lu zhu", false, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2D1 = new Plant('8R2D1', "Phyllostachys aurea albovariegata: up to 1 1/2\' tall", "fishpole bamboo; golden bamboo; hotei-chiku", true, new Price(25.949999999999999, 1, false, 1, 1), "")
catinfo.c8R2D2 = new Plant('8R2D2', "Phyllostachys aurea albovariegata: 1 1/2\'-3\' tall", "fishpole bamboo; golden bamboo; hotei-chiku", true, new Price(36.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2G1 = new Plant('8R2G1', "Phyllostachys aurea flavescens inversa: up to 1 1/2\' tall", "fishpole bamboo; golden bamboo; hotei-chiku", true, new Price(25.949999999999999, 1, false, 1, 1), "")
catinfo.c8R2G2 = new Plant('8R2G2', "Phyllostachys aurea flavescens inversa: 1 1/2\'-3\' tall", "fishpole bamboo; golden bamboo; hotei-chiku", true, new Price(36.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2N1 = new Plant('8R2N1', "Phyllostachys aureosulcata: up to 1 1/2\' tall", "yellowgroove bamboo", false, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8R2N2 = new Plant('8R2N2', "Phyllostachys aureosulcata: 1 1/2\'-3\' tall", "yellowgroove bamboo", false, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2N3 = new Plant('8R2N3', "Phyllostachys aureosulcata: 3\'-5\' tall", "yellowgroove bamboo", false, new Price(46.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2N4 = new Plant('8R2N4', "Phyllostachys aureosulcata: 5\'-7\' tall", "yellowgroove bamboo", false, new Price(57.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2N5 = new Plant('8R2N5', "Phyllostachys aureosulcata: 7\'-9\' tall", "yellowgroove bamboo", false, new Price(68.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2N6 = new Plant('8R2N6', "Phyllostachys aureosulcata: 9\'-11\' tall", "yellowgroove bamboo", false, new Price(79.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2N7 = new Plant('8R2N7', "Phyllostachys aureosulcata: 11\'-13\' tall", "yellowgroove bamboo", false, new Price(90.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2P1 = new Plant('8R2P1', "Phyllostachys aureosulcata \'Aureocaulis\': up to 1 1/2\' tall", "golden yellowgroove bamboo", false, new Price(34.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2P2 = new Plant('8R2P2', "Phyllostachys aureosulcata \'Aureocaulis\': 1 1/2\'-3\' tall", "golden yellowgroove bamboo", false, new Price(45.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2R1 = new Plant('8R2R1', "Phyllostachys aureosulcata \'Spectabilis\': up to 1 1/2\' tall", "green groove bamboo", false, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8R2R2 = new Plant('8R2R2', "Phyllostachys aureosulcata \'Spectabilis\': 1 1/2\'-3\' tall", "green groove bamboo", false, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2R3 = new Plant('8R2R3', "Phyllostachys aureosulcata \'Spectabilis\': 3\'-5\' tall", "green groove bamboo", false, new Price(50.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2R4 = new Plant('8R2R4', "Phyllostachys aureosulcata \'Spectabilis\': 5\'-7\' tall", "green groove bamboo", false, new Price(61.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2R5 = new Plant('8R2R5', "Phyllostachys aureosulcata \'Spectabilis\': 7\'-9\' tall", "green groove bamboo", false, new Price(72.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2S1 = new Plant('8R2S1', "Phyllostachys bambusoides: up to 1 1/2\' tall", "madake; Japanese timber bamboo", true, new Price(27.949999999999999, 1, false, 1, 1), "")
catinfo.c8R2S2 = new Plant('8R2S2', "Phyllostachys bambusoides: 1 1/2\'-3\' tall", "madake; Japanese timber bamboo", true, new Price(38.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2V1 = new Plant('8R2V1', "Phyllostachys bambusoides \'Castillon Inversa\': up to 1 1/2\' tall", "Japanese timber bamboo", false, new Price(27.949999999999999, 1, false, 1, 1), "")
catinfo.c8R2V2 = new Plant('8R2V2', "Phyllostachys bambusoides \'Castillon Inversa\': 1 1/2\'-3\' tall", "Japanese timber bamboo", false, new Price(38.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2V3 = new Plant('8R2V3', "Phyllostachys bambusoides \'Castillon Inversa\': 3\'-5\' tall", "Japanese timber bamboo", false, new Price(49.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3B1 = new Plant('8R3B1', "Phyllostachys bissetii: up to 1 1/2\' tall", "David Bissett bamboo", false, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8R3B2 = new Plant('8R3B2', "Phyllostachys bissetii: 1 1/2\'-3\' tall", "David Bissett bamboo", false, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3B3 = new Plant('8R3B3', "Phyllostachys bissetii: 3\'-5\' tall", "David Bissett bamboo", false, new Price(46.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3B4 = new Plant('8R3B4', "Phyllostachys bissetii: 5\'-7\' tall", "David Bissett bamboo", false, new Price(57.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3B5 = new Plant('8R3B5', "Phyllostachys bissetii: 7\'-9\' tall", "David Bissett bamboo", false, new Price(68.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3B6 = new Plant('8R3B6', "Phyllostachys bissetii: 9\'-11\' tall", "David Bissett bamboo", false, new Price(79.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3C1 = new Plant('8R3C1', "Phyllostachys bissetii (dwarf form): up to 1 1/2\' tall", "dwarf David Bissett bamboo", true, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8R3C2 = new Plant('8R3C2', "Phyllostachys bissetii (dwarf form): 1 1/2\'-3\' tall", "dwarf David Bissett bamboo", true, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3C3 = new Plant('8R3C3', "Phyllostachys bissetii (dwarf form): 3\'-5\' tall", "dwarf David Bissett bamboo", true, new Price(46.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3C4 = new Plant('8R3C4', "Phyllostachys bissetii (dwarf form): 5\'-7\' tall", "dwarf David Bissett bamboo", true, new Price(57.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3C5 = new Plant('8R3C5', "Phyllostachys bissetii (dwarf form): 7\'-9\' tall", "dwarf David Bissett bamboo", true, new Price(68.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3C6 = new Plant('8R3C6', "Phyllostachys bissetii (dwarf form): 9\'-11\' tall", "dwarf David Bissett bamboo", true, new Price(79.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3E1 = new Plant('8R3E1', "Phyllostachys congesta: up to 1 1/2\' tall", "incense bamboo", false, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8R3E2 = new Plant('8R3E2', "Phyllostachys congesta: 1 1/2\'-3\' tall", "incense bamboo", false, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3E3 = new Plant('8R3E3', "Phyllostachys congesta: 3\'-5\' tall", "incense bamboo", false, new Price(50.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3E4 = new Plant('8R3E4', "Phyllostachys congesta: 5\'-7\' tall", "incense bamboo", false, new Price(61.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3F1 = new Plant('8R3F1', "Phyllostachys decora: up to 1 1/2\' tall", "beautiful bamboo", true, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8R3F2 = new Plant('8R3F2', "Phyllostachys decora: 1 1/2\'-3\' tall", "beautiful bamboo", true, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3F3 = new Plant('8R3F3', "Phyllostachys decora: 3\'-5\' tall", "beautiful bamboo", true, new Price(46.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3F4 = new Plant('8R3F4', "Phyllostachys decora: 5\'-7\' tall", "beautiful bamboo", true, new Price(57.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3G1 = new Plant('8R3G1', "Phyllostachys dulcis: up to 1 1/2\' tall", "sweetshoot bamboo", false, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8R3G2 = new Plant('8R3G2', "Phyllostachys dulcis: 1 1/2\'-3\' tall", "sweetshoot bamboo", false, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3J1 = new Plant('8R3J1', "Phyllostachys flexuosa: up to 1 1/2\' tall", "(bamboo)", false, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8R3J2 = new Plant('8R3J2', "Phyllostachys flexuosa: 1 1/2\'-3\' tall", "(bamboo)", false, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3J3 = new Plant('8R3J3', "Phyllostachys flexuosa: 3\'-5\' tall", "(bamboo)", false, new Price(50.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3S1 = new Plant('8R3S1', "Phyllostachys makinoi: up to 1 1/2\' tall", "Makino bamboo; kei-chiku; gui zhu", false, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8R3S2 = new Plant('8R3S2', "Phyllostachys makinoi: 1 1/2\'-3\' tall", "Makino bamboo; kei-chiku; gui zhu", false, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3V1 = new Plant('8R3V1', "Phyllostachys meyeri: up to 1 1/2\' tall", "Meyer bamboo", true, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8R3V2 = new Plant('8R3V2', "Phyllostachys meyeri: 1 1/2\'-3\' tall", "Meyer bamboo", true, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8R3Z1 = new Plant('8R3Z1', "Phyllostachys nidularia \'Smoothsheath\': up to 1 1/2\' tall", "(bamboo)", false, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8R3Z2 = new Plant('8R3Z2', "Phyllostachys nidularia \'Smoothsheath\': 1 1/2\'-3\' tall", "(bamboo)", false, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4C1 = new Plant('8R4C1', "Phyllostachys nigra: up to 1 1/2\' tall", "black bamboo; kuro-chiku", false, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8R4C2 = new Plant('8R4C2', "Phyllostachys nigra: 1 1/2\'-3\' tall", "black bamboo; kuro-chiku", false, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4C3 = new Plant('8R4C3', "Phyllostachys nigra: 3\'-5\' tall", "black bamboo; kuro-chiku", false, new Price(50.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4C4 = new Plant('8R4C4', "Phyllostachys nigra: 5-7\' tall", "black bamboo; kuro-chiku", false, new Price(61.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4D1 = new Plant('8R4D1', "Phyllostachys nigra \'Bory\': up to 1 1/2\' tall", "snakeskin bamboo", true, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8R4D2 = new Plant('8R4D2', "Phyllostachys nigra \'Bory\': 1 1/2\'-3\' tall", "snakeskin bamboo", true, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4G1 = new Plant('8R4G1', "Phyllostachys nigra \'Hale\': up to 1 1/2\' tall", "\'Hale\' black bamboo", true, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4G2 = new Plant('8R4G2', "Phyllostachys nigra \'Hale\': 1 1/2\'-3\' tall", "\'Hale\' black bamboo", true, new Price(50.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4G3 = new Plant('8R4G3', "Phyllostachys nigra \'Hale\': 3\'-5\' tall", "\'Hale\' black bamboo", true, new Price(61.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4G4 = new Plant('8R4G4', "Phyllostachys nigra \'Hale\': 5\'-7\' tall", "\'Hale\' black bamboo", true, new Price(72.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4E1 = new Plant('8R4E1', "Phyllostachys nigra \'Henon\': up to 1 1/2\' tall", "(bamboo)", true, new Price(26.949999999999999, 1, false, 1, 1), "")
catinfo.c8R4E2 = new Plant('8R4E2', "Phyllostachys nigra \'Henon\': 1 1/2\'-3\' tall", "(bamboo)", true, new Price(37.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4I1 = new Plant('8R4I1', "Phyllostachys nuda: up to 1 1/2\' tall", "(bamboo)", true, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8R4I2 = new Plant('8R4I2', "Phyllostachys nuda: 1 1/2\'-3\' tall", "(bamboo)", true, new Price(39.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4M1 = new Plant('8R4M1', "Phyllostachys purpurata \'Straightstem\': up to 1 1/2\' tall", "water bamboo", true, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8R4M2 = new Plant('8R4M2', "Phyllostachys purpurata \'Straightstem\': 1 1/2\'-3\' tall", "water bamboo", true, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4M3 = new Plant('8R4M3', "Phyllostachys purpurata \'Straightstem\': 3\'-5\' tall", "water bamboo", true, new Price(46.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4O1 = new Plant('8R4O1', "Phyllostachys rubromarginata: up to 1 1/2\' tall", "(bamboo)", false, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8R4O2 = new Plant('8R4O2', "Phyllostachys rubromarginata: 1 1/2\'-3\' tall", "(bamboo)", false, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4O3 = new Plant('8R4O3', "Phyllostachys rubromarginata: 3\'-5\' tall", "(bamboo)", false, new Price(46.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2T1 = new Plant('8R2T1', "Phyllostachys species: up to 1 1/2\' tall", "(bamboo)", true, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8R2T2 = new Plant('8R2T2', "Phyllostachys species: 1 1/2\'-3\' tall", "(bamboo)", true, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8R2T3 = new Plant('8R2T3', "Phyllostachys species: 3\'-5\' tall", "(bamboo)", true, new Price(46.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4P1 = new Plant('8R4P1', "Phyllostachys stimulosa: up to 1 1/2\' tall", "(bamboo)", true, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8R4P2 = new Plant('8R4P2', "Phyllostachys stimulosa: 1 1/2\'-3\' tall", "(bamboo)", true, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4P3 = new Plant('8R4P3', "Phyllostachys stimulosa: 3\'-5\' tall", "(bamboo)", true, new Price(46.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4R1 = new Plant('8R4R1', "Phyllostachys viridiglaucescens: up to 1 1/2\' tall", "(bamboo)", false, new Price(29.949999999999999, 1, false, 1, 1), "")
catinfo.c8R4R2 = new Plant('8R4R2', "Phyllostachys viridiglaucescens: 1 1/2\'-3\' tall", "(bamboo)", false, new Price(40.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4W1 = new Plant('8R4W1', "Phyllostachys vivax: up to 1 1/2\' tall", "vivier\'s bamboo", false, new Price(34.950000000000003, 1, false, 1, 1), "")
catinfo.c8R4W2 = new Plant('8R4W2', "Phyllostachys vivax: 1 1/2\'-3\' tall", "vivier\'s bamboo", false, new Price(45.950000000000003, 1, false, 1, 1), "")
catinfo.c8G5D1 = new Plant('8G5D1', "Pleioblastus argenteostriatus: up to 1\' tall", "okina-dake", true, new Price(16.949999999999999, 1, false, 1, 1), "")
catinfo.c8G5D2 = new Plant('8G5D2', "Pleioblastus argenteostriatus: 1\'-2\' tall", "okina-dake", true, new Price(27.949999999999999, 1, false, 1, 1), "")
catinfo.c8H3M = new Plant('8H3M', "Pleioblastus chino murakamiansis", "kinkazan", true, new Price(15.949999999999999, 1, false, 1, 1), "")
catinfo.c8H3P1 = new Plant('8H3P1', "Pleioblastus chino vaginatus variegatus: up to 1\' tall", "(bamboo)", true, new Price(16.949999999999999, 1, false, 1, 1), "")
catinfo.c8H3P2 = new Plant('8H3P2', "Pleioblastus chino vaginatus variegatus: 1\'-2\' tall", "(bamboo)", true, new Price(27.949999999999999, 1, false, 1, 1), "")
catinfo.c8G5E1 = new Plant('8G5E1', "Pleioblastus distichus \'Mini\': up to 1\' tall", "dwarf fernleaf bamboo", true, new Price(12.949999999999999, 1, false, 1, 1), "")
catinfo.c8G5E2 = new Plant('8G5E2', "Pleioblastus distichus \'Mini\': 1\'-2\' tall", "dwarf fernleaf bamboo", true, new Price(23.949999999999999, 1, false, 1, 1), "")
catinfo.c8G5G = new Plant('8G5G', "Pleioblastus distichus \'Okinozasa\'", "(bamboo)", true, new Price(14.949999999999999, 1, false, 1, 1), "")
catinfo.c8G5H = new Plant('8G5H', "Pleioblastus gramineus", "ta-ming", true, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8G5J = new Plant('8G5J', "Pleioblastus humilis", "(bamboo)", true, new Price(16.949999999999999, 1, false, 1, 1), "")
catinfo.c8G5K = new Plant('8G5K', "Pleioblastus kongosanensis aureostriatus", "(bamboo)", true, new Price(18.949999999999999, 1, false, 1, 1), "")
catinfo.c8H5G = new Plant('8H5G', "Pleioblastus simonii \'Variegatus\'", "variegated medake", false, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8G5P1 = new Plant('8G5P1', "Pleioblastus shibuyanus \'Tsuboi\': up to 1\' tall", "ueda-zasa", true, new Price(15.949999999999999, 1, false, 1, 1), "")
catinfo.c8G5P2 = new Plant('8G5P2', "Pleioblastus shibuyanus \'Tsuboi\': 1\'-2\' tall", "ueda-zasa", true, new Price(26.949999999999999, 1, false, 1, 1), "")
catinfo.c8H5P1 = new Plant('8H5P1', "Pleioblastus variegatus: up to 1\' tall", "dwarf whitestripe bamboo", true, new Price(15.949999999999999, 1, false, 1, 1), "")
catinfo.c8H5P2 = new Plant('8H5P2', "Pleioblastus variegatus: 1\'-2\' tall", "dwarf whitestripe bamboo", true, new Price(26.949999999999999, 1, false, 1, 1), "")
catinfo.c8H5S1 = new Plant('8H5S1', "Pleioblastus viridistriatus: up to 1\' tall", "dwarf greenstripe bamboo", true, new Price(15.949999999999999, 1, false, 1, 1), "")
catinfo.c8H5S2 = new Plant('8H5S2', "Pleioblastus viridistriatus: 1\'-2\' tall", "dwarf greenstripe bamboo", true, new Price(26.949999999999999, 1, false, 1, 1), "")
catinfo.c8S2E1 = new Plant('8S2E1', "Pseudosasa japonica: up to 1\' tall", "arrow bamboo; metake", true, new Price(17.949999999999999, 1, false, 1, 1), "")
catinfo.c8S2E2 = new Plant('8S2E2', "Pseudosasa japonica: 1\'-2\' tall", "arrow bamboo; metake", true, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8S2F1 = new Plant('8S2F1', "Pseudosasa japonica tsutsumiana: up to 1\' tall", "green onion bamboo", true, new Price(17.949999999999999, 1, false, 1, 1), "")
catinfo.c8S2F2 = new Plant('8S2F2', "Pseudosasa japonica tsutsumiana: 1\'-2\' tall", "green onion bamboo", true, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8S7A1 = new Plant('8S7A1', "Sasa kurilensis: up to 1\' tall", "nemagari-dake; chishima-zasa", false, new Price(23.949999999999999, 1, false, 1, 1), "")
catinfo.c8S7A2 = new Plant('8S7A2', "Sasa kurilensis: 1\'-2\' tall", "nemagari-dake; chishima-zasa", false, new Price(34.950000000000003, 1, false, 1, 1), "")
catinfo.c8S7G = new Plant('8S7G', "Sasa oshidensis", "(bamboo)", true, new Price(18.949999999999999, 1, false, 1, 1), "")
catinfo.c8S7J1 = new Plant('8S7J1', "Sasa palmata: up to 1\' tall", "chimaki-zasa", true, new Price(17.949999999999999, 1, false, 1, 1), "")
catinfo.c8S7J2 = new Plant('8S7J2', "Sasa palmata: 1\'-2\' tall", "chimaki-zasa", true, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8S7L1 = new Plant('8S7L1', "Sasa senanensis: up to 1\' tall", "(bamboo)", true, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8S7L2 = new Plant('8S7L2', "Sasa senanensis: 1\'-2\' tall", "(bamboo)", true, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8S7M1 = new Plant('8S7M1', "Sasa tsuboiana: up to 1\' tall", "(bamboo)", true, new Price(17.949999999999999, 1, false, 1, 1), "")
catinfo.c8S7M2 = new Plant('8S7M2', "Sasa tsuboiana: 1\'-2\' tall", "(bamboo)", true, new Price(28.949999999999999, 1, false, 1, 1), "")
catinfo.c8S7T = new Plant('8S7T', "Sasa veitchii", "kumazasa", true, new Price(19.949999999999999, 1, false, 1, 1), "")
catinfo.c8T1N1 = new Plant('8T1N1', "Sasaella masamuneana albostriata: up to 1\' tall", "(variegated bamboo)", true, new Price(16.949999999999999, 1, false, 1, 1), "")
catinfo.c8T1N2 = new Plant('8T1N2', "Sasaella masamuneana albostriata: 1\'-2\' tall", "(variegated bamboo)", true, new Price(27.949999999999999, 1, false, 1, 1), "")
catinfo.c8T1V1 = new Plant('8T1V1', "Sasaella species #1: up to 1\' tall", "(bamboo)", true, new Price(15.949999999999999, 1, false, 1, 1), "")
catinfo.c8T1V2 = new Plant('8T1V2', "Sasaella species #1: 1\'-2\' tall", "(bamboo)", true, new Price(26.949999999999999, 1, false, 1, 1), "")
catinfo.c8T4D1 = new Plant('8T4D1', "Semiarundinaria fastuosa viridis: up to 1 1/2\' tall", "Narihara bamboo; Japanese palm tree bamboo", false, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8T4D2 = new Plant('8T4D2', "Semiarundinaria fastuosa viridis: 1 1/2\'-3\' tall", "Narihara bamboo; Japanese palm tree bamboo", false, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8T4G1 = new Plant('8T4G1', "Semiarundinaria okuboi: up to 1 1/2\' tall", "(bamboo)", true, new Price(24.949999999999999, 1, false, 1, 1), "")
catinfo.c8T4G2 = new Plant('8T4G2', "Semiarundinaria okuboi: up to 1 1/2\' tall", "(bamboo)", true, new Price(35.950000000000003, 1, false, 1, 1), "")
catinfo.c8U0K = new Plant('8U0K', "Shibataea kumasaca", "okame-zasa", true, new Price(17.949999999999999, 1, false, 1, 1), "")
catinfo.cGIFT1 = new Plant('GIFT1', "Gift Certificates: $25 Gift Certificate", "", true, new NonPlantPrice(25.0, 1, false, 1, 1, "free"), "")
catinfo.cGIFT2 = new Plant('GIFT2', "Gift Certificates: $50 Gift Certificate", "", true, new NonPlantPrice(50.0, 1, false, 1, 1, "free"), "")
catinfo.cGIFT3 = new Plant('GIFT3', "Gift Certificates: $75 Gift Certificate", "", true, new NonPlantPrice(75.0, 1, false, 1, 1, "free"), "")
catinfo.cGIFT4 = new Plant('GIFT4', "Gift Certificates: $100 Gift Certificate", "", true, new NonPlantPrice(100.0, 1, false, 1, 1, "free"), "")
catinfo.cGIFT5 = new Plant('GIFT5', "Gift Certificates: $150 Gift Certificate", "", true, new NonPlantPrice(150.0, 1, false, 1, 1, "free"), "")
catinfo.cBP01 = new Plant('BP01', "Botanical Prints: Lilium superbum", "", true, common_prices[2], "")
catinfo.cBP02 = new Plant('BP02', "Botanical Prints: Iris versicolor", "", true, common_prices[2], "")
catinfo.cBP03 = new Plant('BP03', "Botanical Prints: Equisetum hyemale robustum", "", true, common_prices[2], "")
catinfo.cBP04 = new Plant('BP04', "Botanical Prints: Lobelia cardinalis", "", true, common_prices[2], "")
catinfo.cBP05 = new Plant('BP05', "Botanical Prints: Lobelia siphilitica", "", true, common_prices[2], "")
catinfo.cBP06 = new Plant('BP06', "Botanical Prints: Passiflora incarnata", "", true, common_prices[2], "")
catinfo.cBP07 = new Plant('BP07', "Botanical Prints: Impatiens capensis", "", true, common_prices[2], "")
catinfo.cBP08 = new Plant('BP08', "Botanical Prints: Barn outbuilding", "", true, common_prices[2], "")
catinfo.cBP09 = new Plant('BP09', "Botanical Prints: Poncirus trifoliata \'Flying Dragon\'", "", true, common_prices[2], "")
catinfo.cBP10 = new Plant('BP10', "Botanical Prints: Campanula persicifolia", "", true, common_prices[2], "")
catinfo.cNP01 = new Plant('NP01', "Notepaper by Betty Stull Schaffer: Individual cards: Blue vase of flowers", "", true, common_prices[3], "")
catinfo.cNP02 = new Plant('NP02', "Notepaper by Betty Stull Schaffer: Individual cards: Hibiscus", "", true, common_prices[3], "")
catinfo.cNP03 = new Plant('NP03', "Notepaper by Betty Stull Schaffer: Individual cards: White vase of flowers", "", true, common_prices[3], "")
catinfo.cNP04 = new Plant('NP04', "Notepaper by Betty Stull Schaffer: Individual cards: Asparagus", "", true, common_prices[3], "")
catinfo.cNP05 = new Plant('NP05', "Notepaper by Betty Stull Schaffer: Individual cards: Joe-Pye weed", "", true, common_prices[3], "")
catinfo.cNP06 = new Plant('NP06', "Notepaper by Betty Stull Schaffer: Individual cards: Vegetable still life", "", true, common_prices[3], "")
catinfo.cNP07 = new Plant('NP07', "Notepaper by Betty Stull Schaffer: Individual cards: Autumn Leaves", "", true, common_prices[3], "")
catinfo.cNP08 = new Plant('NP08', "Notepaper by Betty Stull Schaffer: Individual cards: In the Gazebo", "", true, common_prices[3], "")
catinfo.cNP09 = new Plant('NP09', "Notepaper by Betty Stull Schaffer: Individual cards: Iris", "", true, common_prices[3], "")
catinfo.cNP10 = new Plant('NP10', "Notepaper by Betty Stull Schaffer: Individual cards: Pear", "", true, common_prices[3], "")
catinfo.cNP11 = new Plant('NP11', "Notepaper by Betty Stull Schaffer: Individual cards: Peach", "", true, common_prices[3], "")
catinfo.cNP12 = new Plant('NP12', "Notepaper by Betty Stull Schaffer: Individual cards: Red Raspberries", "", true, common_prices[3], "")
catinfo.cNPB1 = new Plant('NPB1', "Notepaper by Betty Stull Schaffer: Box of 24 cards", "", true, new NonPlantPrice(30.0, 1, false, 1, 1, "free"), "")
catinfo.cTDSC = new Plant('TDSC', "TBF Tree Digging Equipment: TBF Root Cutter", "", true, new NonPlantPrice(133.49000000000001, 1, false, 1, 1, new UpsShipInfo(4.99, 4.99, 4.99, 4.99, 4.99, 4.99, 4.99)), "")
catinfo.cTDSL = new Plant('TDSL', "TBF Tree Digging Equipment: TBF Tree Lifter", "", true, new NonPlantPrice(665.5, 1, false, 1, 1, new UpsShipInfo(37.60, 37.60, 37.60, 37.60, 37.60, 37.60, 37.60)), "")
catinfo.cTDSF4 = new Plant('TDSF4', "TBF Tree Digging Equipment: TBF Root Ball Grappling Forks", "", true, new NonPlantPrice(595.5, 1, false, 1, 1, new UpsShipInfo(29.24, 29.24, 29.24, 29.24, 29.24, 29.24, 29.24)), "")
catinfo.cTDSS = new Plant('TDSS', "TBF Tree Digging Equipment: Complete Professional Set of TBF Tree Digging Equipment", "", true, new NonPlantPrice(1295.5, 1, false, 1, 1, new UpsShipInfo(63.50, 63.50, 63.50, 63.50, 63.50, 63.50, 63.50)), "")

	
    
    // construct order_items from the value of the shopcart variable

    function set_order_items_from_shopcart()
    {
	var datum1, datum2, catno, quantity, shopcart_start_index
	order_items = new Array()
	order_items_length = 0
	shopcart_start_index = 0
	while (true) {
	    if (shopcart_start_index < shopcart.length) { // Needed for Navigator 2
	      datum1 = shopcart.indexOf(':', shopcart_start_index)
	    } else {
	      datum1 = -1
	    }
	    if (datum1 == -1) { return }
	    catno = shopcart.substring(shopcart_start_index, datum1)
	    datum2 = shopcart.indexOf('|', datum1)
	    quantity = shopcart.substring(datum1 + 1, datum2)
	    shopcart_start_index = datum2 + 1
	    key = 'c' + catno	// need something that doesn't start with number
	    order_items[order_items_length] = catinfo[key]
	    order_items[order_items_length].quantity = quantity
	    order_items_length++
	  }
    }
    
    
    // (assume shopcart has been set by now)

    set_order_items_from_shopcart()
	
    
	




    //-------------------------------------
    // functions specific to the order form
    //-------------------------------------

    // create index that allows mapping from selected state to selected index
    var index_state = new Array(51)
    index_state[0] = ""
    index_state[1] = "AL"
    index_state[2] = "AK"
    index_state[3] = "AZ"
    index_state[4] = "AS"
    index_state[5] = "CA"
    index_state[6] = "CO"
    index_state[7] = "CT"
    index_state[8] = "DE"
    index_state[9] = "FL"
    index_state[10] = "GA"
    // no HI
    index_state[11] = "ID"
    index_state[12] = "IL"
    index_state[13] = "IN"
    index_state[14] = "IO"
    index_state[15] = "KS"
    index_state[16] = "KT"
    index_state[17] = "LA"
    index_state[18] = "ME"
    index_state[19] = "MD"
    index_state[20] = "MA"
    index_state[21] = "MI"
    index_state[22] = "MN"
    index_state[23] = "MS"
    index_state[24] = "MO"
    index_state[25] = "MT"
    index_state[26] = "NB"
    index_state[27] = "NV"
    index_state[28] = "NH"
    index_state[29] = "NJ"
    index_state[30] = "NM"
    index_state[31] = "NY"
    index_state[32] = "NC"
    index_state[33] = "ND"
    index_state[34] = "OH"
    index_state[35] = "OK"
    index_state[36] = "OR"
    index_state[37] = "PA"
    index_state[38] = "RI"
    index_state[39] = "SC"
    index_state[40] = "SD"
    index_state[41] = "TN"
    index_state[42] = "TX"
    index_state[43] = "UT"
    index_state[44] = "VT"
    index_state[45] = "VA"
    index_state[46] = "WA"
    index_state[47] = "DC"
    index_state[48] = "WV"
    index_state[49] = "WI"
    index_state[50] = "WY"

    var plant_total = 0		// total plant cost
    var nonplant_total = 0	// total non-plant cost
    var taxable_total = 0	// total cost of inedible plants and taxable nonplants

    // return true if order is taxable
    function isTaxable() {
	return (index_state[document.orderform.state.selectedIndex] == "MA")
    }

    // return tax as a string
    function taxAmount() {
      if (isTaxable()) {
	return to_dollars(0.05 * taxable_total)
      } else {
	return '0.00'
      }
    }

    // return packing and shipping as text
    function packshipAmount() {
        shipping = 0
        if (plant_total > 0) shipping += plantPackshipAmount()
        if (nonplant_total > 0) shipping += nonplantShipAmount()
        return to_dollars(shipping)
    }

    // return plant packing and shipping amount as number
    function plantPackshipAmount() {
      var shipping
      var state = (index_state[document.orderform.state.selectedIndex])

      if ((state == "AZ") ||
          (state == "CA") ||
          (state == "MN") ||
	  (state == "OR") ||
	  (state == "WA")) {
	    if (plant_total <= 50) {
	        shipping = 17.50
	    } else if (plant_total <= 100) {
	        shipping = 0.35 * plant_total
	    } else {
	        shipping = 0.30 * plant_total
	    }
      } else if ((state == "AK") ||
  	         (state == "CO") ||
	         (state == "ID") ||
		 (state == "MT") ||
		 (state == "NV") ||
		 (state == "NM") ||
		 (state == "TX") ||
		 (state == "UT") ||
		 (state == "WY")) {
	    if (plant_total <= 50) {
	        shipping = 15.00
	    } else if (plant_total <= 100) {
	        shipping = 0.30 * plant_total
	    } else {
	        shipping = 0.25 * plant_total
	    }
      } else {
	    if (plant_total <= 50) {
	        shipping = 10.00
	    } else if (plant_total <= 100) {
	        shipping = 0.20 * plant_total
	    } else {
	        shipping = 0.15 * plant_total
	    }
      }
      return shipping
    }

    function nonplantShipAmount()
    {
        var shipping = 0
	for (var itemno=0; itemno<order_items_length; itemno++) {
	    var item = order_items[itemno]
            var shipinfo = item.price_obj.shipinfo
            if ((shipinfo != 'plant') &&
                (shipinfo != 'free') &&
                (! shipinfo.was_counted))
            {
                var quantity = price_quantity(item.price_obj)
		var price_obj = item.price_obj

                if (shipinfo.shiptype == 'absolute') {
                    // item shipping price follows 'botanical print' model
                    if (quantity > 0) {
                        if (shipinfo.arebreaks) {
                            var p = shipinfo.prices[0]
                            for (var i=0; i < shipinfo.price_length; i++) {
                                if (quantity >= shipinfo.breaks[i]) p = shipinfo.prices[i]
                            }
                            shipping += p
                        } else {
                            // no array, just a fixed price for any quantity
                            shipinfo += shipinfo.prices
                        }
                    }
                }
                if (shipinfo.shiptype == 'ups') {
                    var zone = ups_zone(document.orderform.zip.value)
                    if (zone == 2) shipping += quantity * shipinfo.zone2
                    if (zone == 3) shipping += quantity * shipinfo.zone3
                    if (zone == 4) shipping += quantity * shipinfo.zone4
                    if (zone == 5) shipping += quantity * shipinfo.zone5
                    if (zone == 6) shipping += quantity * shipinfo.zone6
                    if (zone == 7) shipping += quantity * shipinfo.zone7
                    if (zone == 8) shipping += quantity * shipinfo.zone8
                    if (zone == 9) shipping += quantity * shipinfo.zone9
                }
                shipinfo.was_counted = true // prevent double-counting of common objects
            }
        }
	for (var itemno=0; itemno<order_items_length; itemno++) {
	    var item = order_items[itemno]
            var shipinfo = item.price_obj.shipinfo
            if ((shipinfo != 'plant') &&
                (shipinfo != 'free'))
            {
                // reset to prepare for next calculation
                shipinfo.was_counted = false 
            }
        }
        return shipping
    }

    // flag so we know when it is safe to change pricing fields
    pricing_fields_created = false

    // determine tax, shipping, total due, and display these
    function show_current_pricing()
    {
      if (pricing_fields_created) {
	var tax = taxAmount()
	var packship = packshipAmount()
	var paymentdue = to_dollars(plant_total + nonplant_total + parseFloat(tax) + 
		parseFloat(packship))
	document.orderform.subtotal.value = to_dollars(plant_total + nonplant_total)
	document.orderform.tax.value = tax
	document.orderform.packship.value = packship
	document.orderform.paymentdue.value = paymentdue
      }
    }

    var old_order_cookie = ''
    var new_order_cookie = ''

    // package form contents in form suitable for cookie
    function pack_form()
    {
	var text = ''
	text += "name:" + escape(document.orderform.custname.value) + "|"
	text += "streetaddress:" + escape(document.orderform.streetaddress.value) + "|"
	text += "mailaddress:" + escape(document.orderform.mailaddress.value) + "|"
	text += "city:" + escape(document.orderform.city.value) + "|"
	text += "state:" + document.orderform.state.selectedIndex + "|"
	text += "zip:" + escape(document.orderform.zip.value) + "|"
	text += "email:" + escape(document.orderform.email.value) + "|"
	text += "dayareacode:" + escape(document.orderform.dayareacode.value) + "|"
	text += "dayphone:" + escape(document.orderform.dayphone.value) + "|"
	text += "dayext:" + escape(document.orderform.dayext.value) + "|"
	text += "eveareacode:" + escape(document.orderform.eveareacode.value) + "|"
	text += "evephone:" + escape(document.orderform.evephone.value) + "|"
	text += "timetocall:" + escape(document.orderform.timetocall.value) + "|"
	var oosval = -1
	for (var i=0; i<3; i++) {
	  if (document.orderform.outofstock[i].checked) { oosval = i }
	}
	text += "outofstock:" + oosval + "|"
	text += "instructions:" + escape(document.orderform.instructions.value) + "|"
	new_order_cookie = text
    }

    // save order form cookie
    function saveOrder()
    {
      pack_form()
      // make the change only if orderform value has changed;
      // if user is approving all cookies this will minimize approvals
      if (new_order_cookie != old_order_cookie) {
	saveCookie("order", new_order_cookie, 24)
	old_order_cookie = new_order_cookie
      }
    }

    // utility to parse cookie
    function get_order_cookie_field(text, name) {
	return unescape(parsePropertyValue(text, name, ":", "|"))
    }

    // package form contents in form suitable for cookie
    function set_form_from_cookie()
    {
      if (document.cookie) {
	var text = parsePropertyValue(document.cookie, "order", "=", ";")
	if (text) {
	    old_order_cookie = text
	    new_order_cookie = text
	    document.orderform.custname.value = get_order_cookie_field(text, "name")
	    document.orderform.streetaddress.value = get_order_cookie_field(text, "streetaddress")
	    document.orderform.mailaddress.value = get_order_cookie_field(text, "mailaddress")
	    document.orderform.city.value = get_order_cookie_field(text, "city")
	    document.orderform.state.selectedIndex = parsePropertyValue(text, "state", ":", "|")
	    document.orderform.zip.value = get_order_cookie_field(text, "zip")
	    document.orderform.email.value = get_order_cookie_field(text, "email")
	    document.orderform.dayareacode.value = get_order_cookie_field(text, "dayareacode")
	    document.orderform.dayphone.value = get_order_cookie_field(text, "dayphone")
	    document.orderform.dayext.value = get_order_cookie_field(text, "dayext")
	    document.orderform.eveareacode.value = get_order_cookie_field(text, "eveareacode")
	    document.orderform.evephone.value = get_order_cookie_field(text, "evephone")
	    document.orderform.timetocall.value = get_order_cookie_field(text, "timetocall")
	    var oosindex = parsePropertyValue(text, "outofstock", ":", "|")
	    if (oosindex >= 0) {
	      document.orderform.outofstock[oosindex].checked = true
	    }
	    document.orderform.instructions.value = get_order_cookie_field(text, "instructions")
	}
	show_current_pricing()
    }
  }

  // left justify text within the supplied field of whitespace
  function left_justify(text, field)
  {
    text = text + ""	// make sure it's a string
    var textlen = text.length
    var fieldlen = field.length
    if (textlen > fieldlen) {
	return text.substring(0,fieldlen-3) + '...'
    } else {
	return text + field.substring(textlen, fieldlen)
    }
  }
	
  // right justify text within the supplied field of whitespace
  function right_justify(text, field)
  {
    text = text + ""	// make sure it's a string
    var textlen = text.length
    var fieldlen = field.length
    if (textlen > fieldlen) {
	return text.substring(0,fieldlen-3) + '...'
    } else {
	return field.substring(0, fieldlen-textlen) + text
    }
  }
	
  // return a plain text version of the list of items ordered
  // side effect: sets parent.order_amount
  function text_items_ordered()
  {
    var result
    var catno_field = "      "
    var catno_bar =   "======"
    var quantity_field = "    "
    var quantity_bar =   "===="
    var name_field = "                                             "
    var name_bar =   "============================================="
    var priceeach_field = "      "
    var priceeach_bar =   "======"
    var amount_field = "        "
    var amount_bar =   "========"
    var totaltext_field = "                     "
    var totalamount_field = "           "
    result = left_justify("Item #",catno_field) + " " +
	left_justify("Qty.",quantity_field) + " " +
	left_justify("Name of Item",name_field) + " " +
	right_justify("Each",priceeach_field) + " " +
	right_justify("Amount",amount_field) + "\n" +
	catno_bar + " " + quantity_bar + " " + name_bar + " " +
	priceeach_bar + " " + amount_bar + "\n"
    plant_total = 0
    nonplant_total = 0
    taxable_total = 0
    for (var itemno=0; itemno<order_items_length; itemno++) {
	var item = order_items[itemno]
        var amount = price_amount(item.price_obj, item)
        if (item.price_obj.shipinfo == 'plant') plant_total += parseFloat(amount)
	else nonplant_total += parseFloat(amount)
        if (item.taxable) taxable_total += parseFloat(amount)
	result += "\n" +
		left_justify(item.catno,catno_field) + " " +
		right_justify((item.quantity * item.price_obj.quantum),quantity_field) + " " +
		left_justify(item.name,name_field) + " " +
		right_justify(price_each(item.price_obj),priceeach_field) + " " +
		right_justify(amount,amount_field) + "\n" +
		catno_field + " " + quantity_field + " " + 
		left_justify("    " + item.common,name_field) + " " +
		priceeach_field + " " + amount_field + "\n"
    }
    result += "\n" + 
	right_justify("Subtotal",totaltext_field) + " " +
	right_justify(to_dollars(plant_total + nonplant_total),totalamount_field) + "\n"
    var tax = "0.00"
    if (isTaxable()) {
      tax = taxAmount()
      result += right_justify("Sales tax",totaltext_field) + " " +
	  right_justify(tax,totalamount_field) + "\n"
    }
    var packship = packshipAmount()
    var paymentdue = to_dollars(plant_total + nonplant_total + parseFloat(tax) + 
		parseFloat(packship))
    result += right_justify("Packing and shipping",totaltext_field) + " " +
	right_justify(packship,totalamount_field) + "\n\n" +
        right_justify("Total",totaltext_field) + " " +
	right_justify("$$"+paymentdue,totalamount_field) + "\n"
    parent.order_amount = paymentdue    // side effect!
    return result
  }

  // return text version of order
  // side effect: sets parent.order_text and parent.order_amount
  function text_order()
  {
    var result = ""
    var label_field = "                     "
    result += right_justify("Name",label_field) + ": " +
	document.orderform.custname.value + "\n"
    if (document.orderform.mailaddress.value) {
        result += right_justify("Street address (UPS)",label_field) + ": " +
		document.orderform.streetaddress.value + "\n" +
		right_justify("Mailing address",label_field) + ": " +
  	  	document.orderform.mailaddress.value + "\n"
    } else {
	result += right_justify("Street address",label_field) + ": " +
		document.orderform.streetaddress.value + "\n"
    }
    result +=
        right_justify("City/state/zip",label_field) + ": " +
	document.orderform.city.value + ", " +
	index_state[document.orderform.state.selectedIndex] + "  " +
	document.orderform.zip.value + "\n" +
        right_justify("Email",label_field) + ": " +
	document.orderform.email.value + "\n" +
        right_justify("Day phone",label_field) + ": "
    if (document.orderform.dayareacode.value) {
	result += "(" + document.orderform.dayareacode.value + ")"
    }
    result += document.orderform.dayphone.value
    if (document.orderform.dayext.value) {
      result += ' x' + document.orderform.dayext.value
    }
    result += "\n"
    result += right_justify("Evening phone",label_field) + ": "
    if (document.orderform.eveareacode.value) {
	result += "(" + document.orderform.eveareacode.value + ")"
    }
    result += document.orderform.evephone.value + "\n"
    result += right_justify("Best time to call",label_field) + ": " +
	document.orderform.timetocall.value + "\n"
    result += "\n" + text_items_ordered() + "\n"
    var oosval = -1
    for (var i=0; i<3; i++) {
      if (document.orderform.outofstock[i].checked) { oosval = i }
    }
    result += right_justify("If plants unavailable",label_field) + ": "
    if (oosval == -1) {
	result += "not specified"
    } else if (oosval == 0) {
	result += "cash refund"
    } else if (oosval == 1) {
	result += "back-order"
    } else if (oosval == 2) {
	result += "substitute"
    }
    result += "\n"
    if (document.orderform.instructions.value) {
	result += '\nSPECIAL INSTRUCTIONS:\n' +
                    '=====================\n\n' +
		document.orderform.instructions.value +
		'\n\n=====================\n\n'
    } else {
	result += '\nNo special instructions.\n\n'
    }
    parent.order_text = result    // side effect!
    return result
  }

  // what to do when submit button is pressed
  function do_submit_actions()
  {
    text_order()  // sets parent variables as side effect.
                  // use of parent variables is an anachronism
                  // related to earlier version of the site.
    document.orderform.order_amount.value = parent.order_amount
    document.orderform.order_info.value = escape(parent.order_text)
    //
    document.orderform.order_custname.value = 
	escape(document.orderform.custname.value)
    document.orderform.order_email.value = 
	escape(document.orderform.email.value)
    document.orderform.order_city.value = escape(document.orderform.city.value)
    document.orderform.order_zip.value = escape(document.orderform.zip.value)
    //
    // combine phone info into one field
    var phone = ''
    if ((document.orderform.dayareacode.value) ||
	(document.orderform.dayphone.value)) {
	phone += "day: (" + document.orderform.dayareacode.value +
		")" + document.orderform.dayphone.value
	if (document.orderform.dayext.value) {
	  phone += ' x' + document.orderform.dayext.value
        }
        phone += "  "
    }
    if ((document.orderform.eveareacode.value) ||
	(document.orderform.evephone.value)) {
	phone += "eve: (" + document.orderform.eveareacode.value +
		")" + document.orderform.evephone.value + "  "
    }
    phone += document.orderform.timetocall.value
    document.orderform.order_phone.value = escape(phone)
    //
    document.orderform.order_state.value = index_state[document.orderform.state.selectedIndex]
    document.orderform.order_shopcart.value = escape(shopcart)
    //
    // save cookie for testing purposes
    document.orderform.order_cookie.value = escape(document.cookie)
    //
    // save domain so links back to unsecure pages will work ok
    document.orderform.unsecured_domain.value = document.domain
  }

  // count the number of digits in a number that may have other chars,
  // e.g., spaces or dashes;
  function count_digits(txt)
  {
        var count = 0
	for (var i=0; i<txt.length; i++)
	{
	  if ((txt.charAt(i) >= "0") && (txt.charAt(i) <= "9")) {
	    count++
	  }
	}
        return count
  }

  // check to see that number, if present, is well-formed;
  // append appropriate warnings to msg
  function validate_phone_if_present(msg, areacode, number, phonename)
  {
    var aclen = count_digits(areacode)
    var numlen = count_digits(number)
    if ((numlen > 0) && (aclen == 0)) {
	msg += phonename+' area code must be included with phone number.\n'
    }
    if ((aclen > 0) && (numlen == 0)) {
	msg += phonename+' phone number must be included with area code.\n'
    }
    if ((aclen > 0) && (aclen != 3)) {
	msg += phonename+' area code has wrong number of digits ('+aclen+
	  ').\n'
    }
    if ((numlen > 0) && (numlen != 7)) {
	msg += phonename+' phone number has wrong number of digits ('+numlen+
	  ').\n'
    }
    return msg
  }

  // validate both phone numbers
  function validate_phones(msg)
  {
    msg = validate_phone_if_present(msg, document.orderform.dayareacode.value,
	document.orderform.dayphone.value, "Day")
    msg = validate_phone_if_present(msg, document.orderform.eveareacode.value,
	document.orderform.evephone.value, "Evening")
    if ((count_digits(document.orderform.dayphone.value) == 0) &&
	(count_digits(document.orderform.evephone.value) == 0)) {
      msg += "At least one phone number must be supplied.\n"
    }
    return msg
  }

  // append warnings if zip code is invalid
  function validate_zip(msg)
  {
    var ziplen = count_digits(document.orderform.zip.value)
    if (ziplen == 0) {
      msg += "Zip code must be supplied.\n"
    } else if ((ziplen != 5) && (ziplen != 9)) {
      msg += "Zip code has an invalid number of digits ("+ziplen+")\n"
    }
    return msg
  }

  // append warning if no outofstock info supplied
  function validate_outofstock(msg)
  {
    var oosval = -1
    for (var i=0; i<3; i++) {
      if (document.orderform.outofstock[i].checked) { oosval = i }
    }
    if (oosval == -1) {
      msg += "Must select general instruction for unavailable plants.\n"
    }
    return msg
  }

  // check whether it is okay to move on to next step of ordering
  function validate_form()
  {
    if (document.cookie.indexOf('novalidate=1') > -1) {
	return true	// skip validation
    }
    var msg = ""
    if (is_empty(document.orderform.custname.value)) {
      msg += "Name must be supplied.\n"
    }
    if (is_empty(document.orderform.streetaddress.value)) {
      msg += "Street address must be supplied.\n"
    }
    if (is_empty(document.orderform.city.value)) {
      msg += "City must be supplied.\n"
    }
    if (document.orderform.state.selectedIndex == 0) {
      msg += "No state has been selected.\n"
    }
    msg = validate_zip(msg)
    if (is_empty(document.orderform.email.value)) {
      msg += "E-mail address must be supplied.\n"
    }
    msg = validate_phones(msg)
    msg = validate_outofstock(msg)
    if (order_items_length == 0) {
      msg += "Shopping cart is empty.\n"
    }
    if (msg != "") {
      msg += "Please correct form and try again."
      alert(msg)
      return false
    }
    return true
  }

  // test whether string is empty; might someday ignore whitespace
  function is_empty(text)
  {
    return (text.length == 0)
  }

  

