# ----------------------------------------------------------------------------
# This software is in the public domain, furnished "as is", without technical
# support, and with no warranty, express or implied, as to its usefulness for
# any purpose.
#
# CallToActions.py
# 
# This module contains all of the call to action statements based on the
# VTEC phen/sig code. Sites can override this file to make modifications
# to the list of call to actions.
#
# Author: Matt Davis (ARX), Mathewson
# Updated 9/24 Shannon for WW simplification 
# ----------------------------------------------------------------------------

class CallToActions:


    # returns the default Call To Action 
    def defaultCTA(self, phensig):
        if self.ctaDict().has_key(phensig):
            func = self.ctaDict()[phensig]
            items = func()
            if len(items) > 0:
                return items[0]
        return ""   #No call to action

    def allCTAs(self, phensig):
        if self.ctaDict().has_key(phensig):
            func = self.ctaDict()[phensig]
            return func() 
        return [] #no Call to actions


    def pilCTAs(self, pil):
        if self.ctaPilDict().has_key(pil):
            func = self.ctaPilDict()[pil]
            return func() 
        return [] #no Call to actions


    # returns list of generic call to action statements
    def genericCTAs(self):
        return [
 """MONITOR NOAA WEATHER RADIO FOR THE LATEST INFORMATION...FORECASTS...AND WARNINGS.""",
 """LISTEN TO NOAA WEATHER RADIO OR YOUR LOCAL MEDIA FOR THE LATER UPDATES ON THIS SITUATION.""",
        ]

        

##### PLEASE KEEP PHENSIG IN ALPHABETICAL ORDER #######

# CallToAction dictionary.  The key is the phen/sig, such as "BZ.W".  The
# value is a LIST of call to action statements.  The default formatter
# uses the first one in the list. Users can add additional entries which
# are accessible in the product editor.  The lists are actually function
# calls that the user can override if necessary.  
    def ctaDict(self):
        return {
         "AF.Y": self.ctaAFY,
         "AS.Y": self.ctaASY,
         "BS.Y": self.ctaBSY,
         "BW.Y": self.ctaBWY,
         "BZ.A": self.ctaBZA,
         "BZ.W": self.ctaBZW,
         "CF.A": self.ctaCFA,
         "CF.W": self.ctaCFW,
         "CF.Y": self.ctaCFY,
         "DS.W": self.ctaDSW,
         "DU.Y": self.ctaDUY,
         "EC.A": self.ctaECA,
         "EC.W": self.ctaECW,
         "EH.A": self.ctaEHA,
         "EH.W": self.ctaEHW,
         "FA.A": self.ctaFAA,
         "FF.A": self.ctaFFA,
         "FG.Y": self.ctaFGY,
         "FR.Y": self.ctaFRY,
         "FW.A": self.ctaFWA,
         "FW.W": self.ctaFWW,
         "FZ.A": self.ctaFZA,
         "FZ.W": self.ctaFZW,
         "GL.A": self.ctaGLA,
         "GL.W": self.ctaGLW,
         "HF.A": self.ctaHFA,
         "HF.W": self.ctaHFW,
         "HI.A": self.ctaHIA,
         "HI.W": self.ctaHIW,
         "HT.Y": self.ctaHTY,
         "HS.W": self.ctaHSW,
         "HW.A": self.ctaHWA,
         "HW.W": self.ctaHWW,
         "HZ.A": self.ctaHZA,
         "HZ.W": self.ctaHZW,
         "IP.W": self.ctaIPW,
         "IP.Y": self.ctaIPY,
         "IS.W": self.ctaISW,
         "LE.A": self.ctaLEA,
         "LE.W": self.ctaLEW,
         "LE.Y": self.ctaLEY,
         "LO.Y": self.ctaLOY,
         "LS.A": self.ctaLSA,
         "LS.W": self.ctaLSW,
         "LS.Y": self.ctaLSY,
         "LW.Y": self.ctaLWY,
         "MF.Y": self.ctaMFY,
         "MH.Y": self.ctaMHY,
         "MS.Y": self.ctaMSY,
         "RB.Y": self.ctaRBY,
         "SB.Y": self.ctaSBY,
         "SC.Y": self.ctaSCY,
         "SE.A": self.ctaSEA,
         "SE.W": self.ctaSEW,
         "SI.Y": self.ctaSIY,
         "SM.Y": self.ctaSMY,
         "SN.Y": self.ctaSNY,
         "SR.A": self.ctaSRA,
         "SR.W": self.ctaSRW,
         "SU.W": self.ctaSUW,
         "SU.Y": self.ctaSUY,
         "SW.Y": self.ctaSWY,
         "TI.A": self.ctaTIA,
         "TI.W": self.ctaTIW,
         "UP.A": self.ctaUPA,
         "UP.W": self.ctaUPW,
         "UP.Y": self.ctaUPY,
         "WC.A": self.ctaWCA,
         "WC.W": self.ctaWCW,
         "WC.Y": self.ctaWCY,
         "WI.Y": self.ctaWIY,
         "WS.A": self.ctaWSA,
         "WS.W": self.ctaWSW,
         "WW.Y": self.ctaWWY,
         "ZF.Y": self.ctaZFY,
         "ZR.Y": self.ctaZRY,
          }


##### PLEASE KEEP PILS IN ALPHABETICAL ORDER #######

# CallToAction PIL dictionary.  The key is the product pil, such as "HLS".
# The entries are available for a particular product.  None of these
# are entered automatically by the formatter, but are available through
# the product editor.
# Users can add additional entries which are accessible in the product 
# editor.  The lists are actually function calls that the user can 
# override if necessary.  
    def ctaPilDict(self):
        return {
          'ADR':  self.ctaPilADR,
          'AFD':  self.ctaPilAFD,
          'AFM':  self.ctaPilAFM,
          'AVA':  self.ctaPilAVA,
          'AVW':  self.ctaPilAVW,
          'CAE':  self.ctaPilCAE,
          'CCF':  self.ctaPilCCF,
          'CDW':  self.ctaPilCDW,
          'CEM':  self.ctaPilCEM,
          'CFW':  self.ctaPilCFW,
          'CWF':  self.ctaPilCWF,
          'EQR':  self.ctaPilEQR,
          'EQW':  self.ctaPilEQW,
          'ESF':  self.ctaPilESF,
          'EVI':  self.ctaPilEVI,
          'FFA':  self.ctaPilFFA,
          'FRW':  self.ctaPilFRW,
          'FWF':  self.ctaPilFWF,
          'FWM':  self.ctaPilFWM,
          'FWS':  self.ctaPilFWS,
          'GLF':  self.ctaPilGLF,
          'HLS':  self.ctaPilHLS,
          'HMW':  self.ctaPilHMW,
          'HWO':  self.ctaPilHWO,
          'LAE':  self.ctaPilLAE,
          'LEW':  self.ctaPilLEW,
          'MWS':  self.ctaPilMWS,
          'MVF':  self.ctaPilMVF,
          'MWW':  self.ctaPilMWW,
          'NOW':  self.ctaPilNOW,
          'NPW':  self.ctaPilNPW,
          'NSH':  self.ctaPilNSH,
          'NUW':  self.ctaPilNUW,
          'OFF':  self.ctaPilOFF,
          'PFM':  self.ctaPilPFM,
          'PNS':  self.ctaPilPNS,
          'RFD':  self.ctaPilRFD,
          'RFW':  self.ctaPilRFW,
          'RHW':  self.ctaPilRHW,
          'SAF':  self.ctaPilSAF,
          'SRF':  self.ctaPilSRF,
          'SFT':  self.ctaPilSFT,
          'SPS':  self.ctaPilSPS,
          'SPW':  self.ctaPilSPW,
          'TOE':  self.ctaPilTOE,
          'VOW':  self.ctaPilVOW,
          'WCN':  self.ctaPilWCN,
          'WSW':  self.ctaPilWSW,
          'ZFP':  self.ctaPilZFP,
          }

#------------------------------------------------------------------------
# CALL TO ACTIONS - tropical events
# Since these are used by multiple VTEC codes, they are listed here for
# efficiency. Since these statements are so long, we use the descriptive
# word format.
#------------------------------------------------------------------------
    def tropicalTRcta(self):
        return [
("***Tropical Storm - winds 30 to 40 mph gusts to 50 mph", """MINOR DAMAGE MAY OCCUR IN OLDER MOBILE HOME PARKS. NEWLY PLANTED TREES AND SHRUBS MAY BE UPROOTED IF NOT SECURED PROPERLY. SOME SMALL TWIGS WILL SEPARATE FROM TREES. RESIDENTS SHOULD MOVE UNFASTENED ITEMS...SUCH AS GARBAGE CANS AND DECK FURNITURE...INDOORS."""),

("***Tropical Storm - winds 40 to 50 gusts to 65 mph", """MINOR DAMAGE WILL OCCUR TO MANY MOBILE HOMES. POORLY CONSTRUCTED HOMES MAY RECEIVE SOME WALL DAMAGE AND PARTIAL ROOF REMOVAL. A FEW HOUSES MAY HAVE MINOR DAMAGE TO ROOF SHINGLES AND SIDING. A FEW POOL CAGES AND LANAI SCREENS WILL BE DAMAGED. UNSECURED LIGHTWEIGHT ITEMS MAY BECOME PROJECTILES...CAUSING ADDITIONAL DAMAGE. SOME ELECTRICAL WIRES WILL BE BLOWN DOWN...AND LOCAL POWER OUTAGES ARE LIKELY.

MOST NEWLY PLANTED TREES AND SHRUBS WILL BE DAMAGED OR UPROOTED. SOME ROTTING SMALL TREES WILL BE UPROOTED...AND ROTTEN LARGE BRANCHES WILL SNAP. NUMEROUS SMALL TWIGS WILL SEPARATE FROM TREES. A FEW PALM FRONDS WILL BE BLOWN DOWN."""),

("***Tropical Storm - winds 50 to 60 gusts to 80 mph",
"""DAMAGING WINDS ARE EXPECTED.

MOST MOBILE HOMES WILL EXPERIENCE MODERATE TO SUBSTANTIAL DAMAGE. SOME OF POOR CONSTRUCTION WILL BE UNINHABITABLE UNTIL REPAIRED. HOUSES OF POOR TO AVERAGE CONSTRUCTION WILL HAVE DAMAGE TO SHINGLES...SIDING...AND GUTTERS. SOME WINDOWS WILL BE BLOWN OUT. MANY LANAI SCREENS AND POOL CAGES WILL BE DAMAGED. UNFASTENED HOME ITEMS OF LIGHT TO MODERATE WEIGHT WILL BECOME AIRBORNE...CAUSING ADDITIONAL DAMAGE AND POSSIBLE INJURY. DOZENS OF WIRES WILL BE BLOWN DOWN. LOCAL POWER OUTAGES WILL AFFECT ENTIRE NEIGHBORHOODS.

MANY LARGE BRANCHES OF HEALTHY TREES WILL BE SNAPPED...AND ROTTING SMALL TO MEDIUM SIZED TREES WILL BE UPROOTED. DOZENS OF PALM FRONDS WILL BE BLOWN DOWN...AND MINOR DAMAGE WILL OCCUR TO CITRUS ORCHARDS AND NEWLY PLANTED LOWLAND CROPS."""),
        ]


    def tropicalHUcta(self):
        return [
("***Hurricane - winds 60 to 70 mph gusts to 95 mph", """POORLY CONSTRUCTED OR UNSECURED MOBILE HOMES WILL BE DESTROYED. OTHERS WILL HAVE SUBSTANTIAL DAMAGE TO ROOFS...WALLS...AND WINDOWS...AND WILL LIKELY BE UNINHABITABLE UNTIL REPAIRED. HOUSES OF POOR TO AVERAGE CONSTRUCTION WILL HAVE PARTIAL WALL AND ROOF FAILURE...AS WELL AS BLOWN OUT WINDOWS. MOST LANAI SCREENS AND POOL CAGES WILL HAVE DAMAGE...SOME WILL BE DESTROYED. UNSECURED LIGHT TO MODERATE WEIGHT OUTDOOR ITEMS WILL BECOME PROJECTILES...CAUSING ADDITIONAL DAMAGE AND PERHAPS INJURY. MANY AREAS WILL HAVE POWER OUTAGES...HUNDREDS OF WIRES WILL FALL...TRANSFORMERS WILL POP...AND SOME POWER POLES WILL BE PULLED
DOWN.

ROTTING LARGE TREES WILL BE UPROOTED...MOST COMMON ON SATURATED GROUND. NUMEROUS LARGE BRANCHES OF HEALTHY TREES WILL SNAP...AND MODERATE DAMAGE IS EXPECTED IN CITRUS ORCHARDS. UP TO ONE HALF OF NEWLY PLANTED CROPS WILL BE DAMAGED."""),

("***Hurricane - winds 70 to 90 mph gusts to 110 mph", 
"""VERY DANGEROUS WINDS WILL PRODUCE WIDESPREAD DAMAGE AND DESTRUCTION OF MOBILE HOMES IS LIKELY.

STRUCTURAL DAMAGE WILL INCLUDE THE MAJORITY OF MOBILE HOMES BEING SEVERELY DAMAGED. THOSE THAT SURVIVE WILL BE UNINHABITABLE UNTIL REPAIRED. HOUSES OF POOR TO AVERAGE CONSTRUCTION WILL HAVE MAJOR DAMAGE...INCLUDING PARTIAL WALL COLLAPSE AND ROOFS BEING LIFTED OFF. MANY WILL BE UNINHABITABLE. WELL CONSTRUCTED HOUSES WILL INCUR MINOR DAMAGE TO SHINGLES...SIDING...GUTTERS...AS WELL AS BLOWN OUT WINDOWS. UP TO ONE QUARTER OF GABLED ROOFS WILL FAIL.

PARTIAL ROOF FAILURE IS EXPECTED AT INDUSTRIAL PARKS...ESPECIALLY TO THOSE BUILDINGS WITH LIGHT WEIGHT STEEL AND ALUMINUM COVERINGS. OLDER LOW RISING APARTMENT ROOFS MAY ALSO BE TORN OFF...AS WELL AS RECEIVING SIDING AND SHINGLE DAMAGE. UP TO ONE QUARTER OF ALL GLASS IN HIGH RISE OFFICE BUILDINGS WILL BE BLOWN OUT. AIRBORNE DEBRIS WILL CAUSE DAMAGE...INJURY...AND POSSIBLE FATALITIES.

NATURAL DAMAGE WILL INCLUDE ALL TREES WITH ROTTING BASES BECOMING UPROOTED OR SNAPPED. NEARLY ALL LARGE BRANCHES WILL SNAP...AND MAJOR DAMAGE IS EXPECTED TO CITRUS ORCHARDS...INCLUDING NUMEROUS UPROOTED TREES. BETWEEN ONE QUARTER AND ONE HALF OF HEALTHY SMALL TO MEDIUM SIZED TREES WILL BE SNAPPED OR UPROOTED...MOST COMMON WHERE THE GROUND IS SATURATED. UP TO THREE QUARTERS OF NEWLY PLANTED GROUND CROPS WILL BE DAMAGED."""),

("***Hurricane Winds 90 to 110 mph gusts 115 to 135 mph", 
"""EXTREMELY DANGEROUS WINDS WILL CAUSE EXTENSIVE DAMAGE AND ALL MOBILE HOMES WILL BE DESTROYED.

STRUCTURAL DAMAGE WILL INCLUDE HOUSES OF POOR TO AVERAGE CONSTRUCTION BEING DESTROYED OR SEVERELY DAMAGED. MODERATE TO MAJOR DAMAGE OF WELL CONSTRUCTED HOUSES WILL INCLUDE FAILURE OF UP TO ONE HALF OF ALL GABLED ROOFS. IN ADDITION....UP TO ONE QUARTER OF EXTERIOR WALLS WILL FAIL.

ALUMINUM AND LIGHT WEIGHT STEEL ROOFS WILL BE TORN OFF BUILDINGS AT INDUSTRIAL PARKS. PARTIAL ROOF AND EXTERIOR WALL FAILURES ARE LIKELY AT LOW RISE APARTMENT BUILDINGS...ESPECIALLY THOSE OF POOR TO AVERAGE CONSTRUCTION. MOST WINDOWS IN HIGH RISE OFFICE BUILDINGS WILL BE BLOWN OUT...WITH OTHER MINOR TO MODERATE DAMAGE POSSIBLE DUE TO SWAYING.

AIRBORNE DEBRIS OF LIGHT TO MODERATE WEIGHT WILL CAUSE ADDITIONAL MAJOR DAMAGE...AS WELL AS INJURIES AND A FEW FATALITIES.

NEAR TOTAL POWER LOSS IS EXPECTED. UP TO ONE HALF OF ALL POWER POLES WILL BE KNOCKED DOWN...AND HUNDREDS OF TRANSFORMERS WILL POP. THE AVAILABILITY OF POTABLE WATER WILL BE DIMINISHED AS FILTRATION SYSTEMS BEGIN TO FAIL.

NATURAL DAMAGE WILL INCLUDE THOUSANDS OF TREES BEING SEVERELY DAMAGED. UP TO THREE QUARTERS OF ALL HEALTHY SMALL TO MEDIUM SIZED TREES WILL SNAP OR BE UPROOTED...MOST COMMON ON SATURATED GROUND. UP TO ONE HALF OF HEALTHY LARGE TREES WILL SNAP OR BE UPROOTED. SEVERE DAMAGE IS EXPECTED TO CITRUS ORCHARDS...SOME ORCHARDS MAY BE DESTROYED. MOST NEWLY PLANTED GROUND CROPS WILL BE WIPED OUT. LIVESTOCK LEFT OUTSIDE WILL BE INJURED...SOME CRITICALLY. A FEW LIVESTOCK DEATHS ARE LIKELY."""),

("***Hurricane - winds 110 to 130 mph gusts 140+ mph", 
"""CATASTROPHIC DAMAGE EXPECTED TO MAN MADE AND NATURAL STRUCTURES.

HOUSES OF POOR TO AVERAGE CONSTRUCTION WILL BE SEVERELY DAMAGED OR DESTROYED. WELL CONSTRUCTED HOMES WILL HAVE SUBSTANTIAL DAMAGE TO ROOF AND WALLS. DESTRUCTION MAY OCCUR TO HOMES WITH GABLED ROOFS...WITH THE WIND LIFTING THEM OFF. MORE THAN HALF OF ALL INDUSTRIAL BUILDINGS WILL BE DESTROYED...OTHERS WILL HAVE PARTIAL ROOF AND WALL DAMAGE. WOOD FRAMED GARDEN APARTMENT BUILDINGS WILL BE SEVERELY DAMAGED OR DESTROYED...AND OTHERS WILL HAVE PARTIAL ROOF AND WALL FAILURES.

HIGH RISE OFFICE BUILDINGS WILL SWAY DANGEROUSLY. MOST WINDOWS WILL BE BLOWN OUT...AND MODERATE STRUCTURAL DAMAGE IS POSSIBLE.

AIRBORNE DEBRIS...SOME PIECES GREATER THAN 50 POUNDS...WILL CAUSE EXTENSIVE DAMAGE. PERSONS...PETS...AND LIVESTOCK EXPOSED TO THE WINDS ARE AT GREAT RISK FOR INJURY OR DEATH.

ELECTRICITY AND WATER WILL BE UNAVAILABLE FOR DAYS...AND PERHAPS WEEKS...AFTER THE STORM PASSES. THE MAJORITY OF TREES WILL BE SNAPPED AND UPROOTED...MOST COMMON AMONG THOSE OF SMALL AND MEDIUM SIZE. CITRUS ORCHARDS WILL BE DESTROYED AS WILL ALL NEWLY PLANTED GROUND CROPS. ESTABLISHED GROUND CROPS WILL HAVE DAMAGE...WITH UP TO ONE HALF OF FIELDS NO LONGER ARABLE. LIVESTOCK EXPOSED TO THE WINDS WILL BE CRITICALLY INJURED OR KILLED."""),

("Hurricane winds - 130 to 160 mph gusts 170+ mph", 
"""DEVASTATING DAMAGE IS EXPECTED.

MOST OF THE AREA WILL BE UNINHABITABLE FOR WEEKS...PERHAPS LONGER. AT LEAST ONE HALF OF WELL CONSTRUCTED HOMES WILL HAVE ROOF AND WALL FAILURE. ALL GABLED ROOFS WILL FAIL...LEAVING THOSE HOMES SEVERELY DAMAGED OR DESTROYED.

THE MAJORITY OF INDUSTRIAL BUILDINGS WILL BECOME NON FUNCTIONAL. PARTIAL TO COMPLETE WALL AND ROOF FAILURE IS EXPECTED. ALL WOOD FRAMED LOW RISING APARTMENT BUILDINGS WILL BE DESTROYED. CONCRETE BLOCK LOW RISE APARTMENTS WILL SUSTAIN MAJOR DAMAGE...INCLUDING SOME WALL AND ROOF FAILURE.

HIGH RISE OFFICE AND APARTMENT BUILDINGS WILL SWAY DANGEROUSLY...A FEW TO THE POINT OF TOTAL COLLAPSE. ALL WINDOWS WILL BLOW OUT.

AIRBORNE DEBRIS WILL BE WIDESPREAD...AND MAY INCLUDE HEAVY ITEMS SUCH AS HOUSEHOLD APPLIANCES AND EVEN LIGHT VEHICLES. SPORT UTILITY VEHICLES AND LIGHT TRUCKS WILL BE MOVED. THE BLOWN DEBRIS WILL CREATE ADDITIONAL DESTRUCTION. PERSONS...PETS...AND LIVESTOCK EXPOSED TO THE WINDS WILL FACE CERTAIN DEATH IF STRUCK.

POWER OUTAGES WILL LAST FOR WEEKS...AS MOST POWER POLES WILL BE DOWN AND TRANSFORMERS DESTROYED. WATER SHORTAGES WILL MAKE HUMAN SUFFERING INCREDIBLE BY MODERN STANDARDS.

THE VAST MAJORITY OF NATIVE TREES WILL BE SNAPPED OR UPROOTED. ONLY THE HEARTIEST WILL REMAIN STANDING...BUT BE TOTALLY DEFOLIATED. FEW CROPS WILL REMAIN. LIVESTOCK LEFT EXPOSED TO THE WINDS WILL BE KILLED."""),
    ]
#------------------------------------------------------------------------
# CALL TO ACTIONS - winter events
# With the winter weather simplification, specfic winter hazard defs are not
# readily available. Forecaster can choose from the specific defs via the defs below.
# Since these statements are so long, we use the descriptive word format.
#------------------------------------------------------------------------
    def winterWScta(self):
        return [
      ("***HEAVY SNOW", """A WINTER STORM WARNING FOR HEAVY SNOW MEANS SEVERE WINTER WEATHER CONDITIONS ARE EXPECTED OR OCCURRING.  SIGNIFICANT AMOUNTS OF SNOW ARE FORECAST THAT WILL MAKE TRAVEL DANGEROUS. ONLY TRAVEL IN AN EMERGENCY. IF YOU MUST TRAVEL...KEEP AN EXTRA FLASHLIGHT...FOOD...AND WATER IN YOUR VEHICLE IN CASE OF AN EMERGENCY."""),
      ("***SLEET", """A WINTER STORM WARNING FOR SLEET MEANS THAT A WINTER STORM SYSTEM IS IMPACTING THE AREA WITH SIGNIFICANT AMOUNTS OF SLEET. TRAVEL IS LIKELY TO BE SEVERELY IMPACTED."""),
      ("***MIXED PRECIP", """A WINTER STORM WARNING MEANS SIGNIFICANT AMOUNTS OF SNOW...SLEET...AND ICE ARE EXPECTED OR OCCURRING. STRONG WINDS ARE ALSO POSSIBLE.  THIS WILL MAKE TRAVEL VERY HAZARDOUS OR IMPOSSIBLE."""),
              ]

    def winterWWcta(self):
        return [
      ("***BLOWING SNOW", """A WINTER WEATHER ADVISORY FOR BLOWING SNOW MEANS THAT VISIBILITIES WILL BE LIMITED DUE TO STRONG WINDS BLOWING SNOW AROUND. USE CAUTION WHEN TRAVELING...ESPECIALLY IN OPEN AREAS."""),      
      ("***SLEET", """A WINTER WEATHER ADVISORY FOR SLEET MEANS PERIODS OF SLEET ARE IMMINENT OR OCCURRING. SLEET MAY CAUSE DRIVING TO BECOME EXTREMELY DANGEROUS...SO BE PREPARED TO USE CAUTION WHEN TRAVELING."""),
      ("***SNOW AND BLOWING SNOW", """A WINTER WEATHER ADVISORY FOR |*LAKE EFFECT*| SNOW AND BLOWING SNOW MEANS THAT VISIBILITIES WILL BE LIMITED DUE TO A COMBINATION OF FALLING AND BLOWING SNOW. USE CAUTION WHEN TRAVELING...ESPECIALLY IN OPEN AREAS."""),
      ("***SNOW", """A WINTER WEATHER ADVISORY FOR SNOW MEANS THAT PERIODS OF SNOW WILL CAUSE PRIMARILY TRAVEL DIFFICULTIES. BE PREPARED FOR SNOW COVERED ROADS AND LIMITED VISIBILITIES...AND USE CAUTION WHILE DRIVING."""),
      ("***MIXED PRECIP", """A WINTER WEATHER ADVISORY MEANS THAT PERIODS OF SNOW...SLEET...OR FREEZING RAIN WILL CAUSE TRAVEL DIFFICULTIES. BE PREPARED FOR SLIPPERY ROADS AND LIMITED VISIBILITIES...AND USE CAUTION WHILE DRIVING."""),
        ]
#------------------------------------------------------------------------
# CALL TO ACTIONS - individual functions for each phen/sig
#------------------------------------------------------------------------
# These are lists of strings.  The first one is used in the formatters,
# the others are available through the call to actions menu.

    def ctaAFY(self):
        return [
 """AN ASHFALL ADVISORY MEANS THAT LARGE AMOUNTS OF ASH WILL BE DEPOSITED IN THE ADVISORY AREA. PERSONS WITH RESPIRATORY ILLNESSES SHOULD REMAIN INDOORS TO AVOID INHALING THE ASH PARTICLES...AND ALL PERSONS OUTSIDE SHOULD COVER THEIR MOUTH AND NOSE WITH A MASK OR CLOTH.""",
        ]

    def ctaASY(self):
        return [
 """AN AIR STAGNATION ADVISORY INDICATES THAT DUE TO LIMITED MOVEMENT OF AN AIRMASS ACROSS THE ADVISORY AREA...POLLUTION WILL INCREASE TO DANGEROUS LEVELS. PERSONS WITH RESPIRATORY ILLNESS SHOULD FOLLOW THEIR PHYSICIANS ADVICE FOR DEALING WITH HIGH LEVELS OF AIR POLLUTION.""",
        ]

    def ctaBSY(self):
        return [
 """A BLOWING SNOW ADVISORY MEANS THAT VISIBILITIES WILL BE LIMITED DUE TO STRONG WINDS BLOWING SNOW AROUND. USE CAUTION WHEN TRAVELING...ESPECIALLY IN OPEN AREAS.""",
        ]

    def ctaBWY(self):
        return [
 """A BRISK WIND ADVISORY MEANS THAT WINDS WILL REACH SMALL CRAFT ADVISORY CRITERIA IN AREAS THAT ARE PRIMARILY ICE COVERED. MOVING ICE FLOES COULD DAMAGE SMALL CRAFT.""",
        ]

    def ctaBZA(self):
        return [
"""A BLIZZARD WATCH MEANS THERE IS A POTENTIAL FOR FALLING AND/OR BLOWING SNOW WITH STRONG WINDS AND EXTREMELY POOR VISIBILITIES. THIS CAN LEAD TO WHITEOUT CONDITIONS AND MAKE TRAVEL VERY DANGEROUS.""",
        ]

    def ctaBZW(self):
        return [
 """A BLIZZARD WARNING MEANS SEVERE WINTER WEATHER CONDITIONS ARE EXPECTED OR OCCURRING. FALLING AND BLOWING SNOW WITH STRONG WINDS AND POOR VISIBILITIES ARE LIKELY. THIS WILL LEAD TO WHITEOUT CONDITIONS...MAKING TRAVEL EXTREMELY DANGEROUS. DO NOT TRAVEL. IF YOU MUST TRAVEL...HAVE A WINTER SURVIVAL KIT WITH YOU. IF YOU GET STRANDED...STAY WITH YOUR VEHICLE.""",
        ]

    def ctaCFA(self):
        return [
 """A COASTAL FLOOD WATCH MEANS THAT CONDITIONS FAVORABLE FOR FLOODING ARE EXPECTED TO DEVELOP. COASTAL RESIDENTS SHOULD BE ALERT FOR LATER STATEMENTS OR WARNINGS...AND TAKE ACTION TO PROTECT PROPERTY.""",
        ]

    def ctaCFW(self):
        return [
 """A COASTAL FLOOD WARNING MEANS THAT FLOODING IS OCCURRING OR IMMINENT. COASTAL RESIDENTS IN THE WARNED AREA SHOULD BE ALERT FOR RISING WATER...AND TAKE APPROPRIATE ACTION TO PROTECT LIFE AND PROPERTY.""",
        ]

    def ctaCFY(self):
        return [
 """A COASTAL FLOOD ADVISORY INDICATES THAT ONSHORE WINDS AND TIDES WILL COMBINE TO GENERATE FLOODING OF LOW AREAS ALONG THE SHORE.""",
        ]

    def ctaDSW(self):
        return [
 """A DUST STORM WARNING MEANS SEVERELY LIMITED VISIBILITIES ARE EXPECTED WITH BLOWING DUST. TRAVEL COULD BECOME EXTREMELY DANGEROUS. PERSONS WITH RESPIRATORY PROBLEMS SHOULD MAKE PREPARATIONS TO STAY INDOORS UNTIL THE STORM PASSES.""",
        ]

    def ctaDUY(self):
        return [
 """A BLOWING DUST ADVISORY MEANS THAT BLOWING DUST WILL RESTRICT VISIBILITIES. TRAVELERS ARE URGED TO USE CAUTION.""",
        ]

    def ctaECA(self):
        return [
 """AN EXTREME COLD WATCH MEANS THAT PROLONGED PERIODS OF VERY COLD TEMPERATURES ARE EXPECTED. ENSURE THAT OUTDOOR ANIMALS HAVE WARM SHELTER...AND THAT CHILDREN WEAR A HAT AND GLOVES.""",
        ]

    def ctaECW(self):
        return [
 """AN EXTREME COLD WARNING MEAN THAT DANGEROUSLY LOW TEMPERATURES ARE EXPECTED FOR A PROLONGED PERIOD OF TIME. FROSTBITE AND HYPOTHERMIA ARE LIKELY IF EXPOSED TO THESE TEMPERATURES...SO MAKE SURE A HAT...FACEMASK...AND HEAVY GLOVES OR MITTENS ARE AVAILABLE.""",
        ]

    def ctaEHA(self):
        return [
 """AN EXCESSIVE HEAT WATCH MEANS THAT A PROLONGED PERIOD OF HOT TEMPERATURES IS EXPECTED. THE COMBINATION OF HOT TEMPERATURES AND HIGH HUMIDITY WILL COMBINE TO CREATE A DANGEROUS SITUATION IN WHICH HEAT ILLNESSES ARE POSSIBLE. DRINK PLENTY OF FLUIDS...STAY IN AN AIR-CONDITIONED ROOM...STAY OUT OF THE SUN...AND CHECK UP ON RELATIVES AND NEIGHBORS.""",
        ]

    def ctaEHW(self):
        return [
 """AN EXCESSIVE HEAT WARNING MEANS THAT A PROLONGED PERIOD OF DANGEROUSLY HOT TEMPERATURES WILL OCCUR. THE COMBINATION OF HOT TEMPERATURES AND HIGH HUMIDITY WILL COMBINE TO CREATE A DANGEROUS SITUATION IN WHICH HEAT ILLNESSES ARE LIKELY. DRINK PLENTY OF FLUIDS...STAY IN AN AIR-CONDITIONED ROOM...STAY OUT OF THE SUN...AND CHECK UP ON RELATIVES AND NEIGHBORS.""",
        ]

    def ctaFAA(self):
        return [
 """A FLOOD WATCH MEANS THERE IS A POTENTIAL FOR FLOODING BASED ON CURRENT FORECASTS.\n\nYOU SHOULD MONITOR LATER FORECASTS AND BE ALERT FOR POSSIBLE FLOOD WARNINGS. THOSE LIVING IN AREAS PRONE TO FLOODING SHOULD BE PREPARED TO TAKE ACTION SHOULD FLOODING DEVELOP.""",
        ]

    def ctaFFA(self):
        return [
 """A FLASH FLOOD WATCH MEANS THAT CONDITIONS MAY DEVELOP THAT LEAD TO FLASH FLOODING. FLASH FLOODING IS A VERY DANGEROUS SITUATION.\n\nYOU SHOULD MONITOR LATER FORECASTS AND BE PREPARED TO TAKE ACTION SHOULD FLASH FLOOD WARNINGS BE ISSUED.""",
        ]

    def ctaFGY(self):
        return [
"""A DENSE FOG ADVISORY MEANS VISIBILITIES WILL FREQUENTLY BE REDUCED TO LESS THAN ONE QUARTER MILE. IF DRIVING...SLOW DOWN...USE YOUR HEADLIGHTS...AND LEAVE PLENTY OF DISTANCE AHEAD OF YOU.""",
        ]

    def ctaFRY(self):
        return [
 """A FROST ADVISORY MEANS THAT FROST IS POSSIBLE. SENSITIVE OUTDOOR PLANTS MAY BE KILLED IF LEFT UNCOVERED.""",
        ]

    def ctaFWA(self):
        return [
 """A FIRE WEATHER WATCH MEANS THAT CRITICAL FIRE WEATHER CONDITIONS ARE FORECAST TO OCCUR. LISTEN FOR LATER FORECASTS AND POSSIBLE RED FLAG WARNINGS.""",
        ]

    def ctaFWW(self):
        return [
 """A RED FLAG WARNING MEANS THAT CRITICAL FIRE WEATHER CONDITIONS ARE EITHER OCCURRING NOW...OR WILL SHORTLY. A COMBINATION OF STRONG WINDS...LOW RELATIVE HUMIDITY...AND WARM TEMPERATURES WILL CREATE EXPLOSIVE FIRE GROWTH POTENTIAL.""",
        ]

    def ctaFZA(self):
        return [
 """A FREEZE WATCH MEANS SUB-FREEZING TEMPERATURES ARE POSSIBLE. THESE CONDITIONS COULD KILL CROPS AND OTHER SENSITIVE VEGETATION.""",
        ]

    def ctaFZW(self):
        return [
 """A FREEZE WARNING MEANS SUB-FREEZING TEMPERATURES ARE IMMINENT OR HIGHLY LIKELY. THESE CONDITIONS WILL KILL CROPS AND OTHER SENSITIVE VEGETATION.""",
        ]

    def ctaGLA(self):
        return [
 """A GALE WATCH IS ISSUED WHEN THE RISK OF GALE FORCE WINDS OF 34 TO 47 KNOTS HAS SIGNIFICANTLY INCREASED...BUT THE SPECIFIC TIMING AND/OR LOCATION IS STILL UNCERTAIN. IT IS INTENDED TO PROVIDE ADDITIONAL LEAD TIME FOR MARINERS WHO MAY WISH TO CONSIDER ALTERING THEIR PLANS.""",
        ]

    def ctaGLW(self):
        return [
 """A GALE WARNING MEANS WINDS OF 34 TO 47 KNOTS ARE IMMINENT OR OCCURING. OPERATING A VESSEL IN GALE CONDITIONS REQUIRES EXPERIENCE AND PROPERLY EQUIPPED VESSELS. IT IS HIGHLY RECOMMENDED THAT MARINERS WITHOUT THE PROPER EXPERIENCE SEEK SAFE HARBOR PRIOR TO THE ONSET OF GALE CONDITIONS.""",
        ]

    def ctaHFA(self):
        return [
 """A HURRICANE FORCE WIND WATCH IS ISSUED WHEN THE RISK OF HURRICANE FORCE WINDS OF 64 KNOTS OR GREATER HAS SIGNIFICANTLY INCREASED...BUT THE SPECIFIC TIMING AND/OR LOCATION IS STILL UNCERTAIN.  IT IS INTENDED TO PROVIDE ADDITIONAL LEAD TIME FOR MARINERS WHO MAY WISH TO CONSIDER ALTERING THEIR PLANS.""",
        ]

    def ctaHFW(self):
        return [
 """A HURRICANE FORCE WIND WARNING MEANS WINDS OF 64 KNOTS OR GREATER ARE IMMINENT OR OCCURING. ALL VESSELS SHOULD REMAIN IN PORT...OR TAKE SHELTER AS SOON AS POSSIBLE...UNTIL WINDS AND WAVES SUBSIDE.""",
        ]

    def ctaHIA(self):
        return [
 """AN INLAND HURRICANE WATCH IS ISSUED WHEN A LANDFALLING HURRICANE IS EXPECTED TO SPREAD HURRICANE FORCE WINDS WELL INLAND DURING THE NEXT 12 TO 24 HOURS. PREPARE FOR WINDS IN EXCESS OF 74 MPH.""",
        ] + self.tropicalHUcta()

    def ctaHIW(self):
        return [
 """AN INLAND HURRICANE WARNING IS ISSUED WHEN A LANDFALLING HURRICANE IS EXPECTED TO SPREAD HURRICANE FORCE WINDS WELL INLAND. SERIOUS PROPERTY DAMAGE...POWER OUTAGES...BLOWING DEBRIS...AND FALLEN TREES CAN BE EXPECTED AS WINDS REACH OR EXCEED 74 MPH.""",
        ] + self.tropicalHUcta()

    def ctaHTY(self):
        return [
 """A HEAT ADVISORY MEANS THAT A PERIOD OF HOT TEMPERATURES IS EXPECTED. THE COMBINATION OF HOT TEMPERATURES AND HIGH HUMIDITY WILL COMBINE TO CREATE A SITUATION IN WHICH HEAT ILLNESSES ARE POSSIBLE. DRINK PLENTY OF FLUIDS...STAY IN AN AIR-CONDITIONED ROOM...STAY OUT OF THE SUN...AND CHECK UP ON RELATIVES AND NEIGHBORS.""",
        ]

    def ctaHSW(self):
        return [
 """A HEAVY SNOW WARNING MEANS SEVERE WINTER WEATHER CONDITIONS ARE EXPECTED OR OCCURRING.  SIGNIFICANT AMOUNTS OF SNOW ARE FORECAST THAT WILL MAKE TRAVEL DANGEROUS. ONLY TRAVEL IN AN EMERGENCY. IF YOU MUST TRAVEL...KEEP AN EXTRA FLASHLIGHT...FOOD...AND WATER IN YOUR VEHICLE IN CASE OF AN EMERGENCY.""",
        ]

    def ctaHWA(self):
        return [
 """A HIGH WIND WATCH MEANS THERE IS THE POTENTIAL FOR A HAZARDOUS HIGH WIND EVENT. SUSTAINED WINDS OF AT LEAST 40 MPH...OR GUSTS OF 58 MPH OR STRONGER MAY OCCUR. CONTINUE TO MONITOR THE LATEST FORECASTS.""",
        ]

    def ctaHWW(self):
        return [
 """A HIGH WIND WARNING MEANS A HAZARDOUS HIGH WIND EVENT IS EXPECTED OR OCCURRING. SUSTAINED WIND SPEEDS OF AT LEAST 40 MPH OR GUSTS OF 58 MPH OR MORE CAN LEAD TO PROPERTY DAMAGE.""",
        ]

    def ctaHZA(self):
        return [
 """A HARD FREEZE WATCH MEANS SUB-FREEZING TEMPERATURES ARE POSSIBLE. THESE CONDITIONS COULD KILL CROPS AND OTHER SENSITIVE VEGETATION.""",
        ]

    def ctaHZW(self):
        return [
 """A HARD FREEZE WARNING MEANS SUB-FREEZING TEMPERATURES ARE IMMINENT OR HIGHLY LIKELY. THESE CONDITIONS WILL KILL CROPS AND OTHER SENSITIVE VEGETATION.""",
        ]


    def ctaIPW(self):
        return [
 """A SLEET WARNING MEANS THAT A WINTER STORM SYSTEM IS IMPACTING THE AREA WITH SIGNIFICANT AMOUNTS OF SLEET. TRAVEL IS LIKELY TO BE SEVERELY IMPACTED.""",
        ]

    def ctaIPY(self):
        return [
 """A SLEET ADVISORY MEANS PERIODS OF SLEET ARE IMMINENT OR OCCURRING. SLEET MAY CAUSE DRIVING TO BECOME EXTREMELY DANGEROUS...SO BE PREPARED TO USE CAUTION WHEN TRAVELING.""",
        ]

    def ctaISW(self):
        return [
 """AN ICE STORM WARNING MEANS SEVERE WINTER WEATHER CONDITIONS ARE EXPECTED OR OCCURRING. SIGNIFICANT AMOUNTS OF ICE ACCUMULATIONS WILL MAKE TRAVEL DANGEROUS OR IMPOSSIBLE. TRAVEL IS STRONGLY DISCOURAGED. COMMERCE WILL LIKELY BE SEVERELY IMPACTED. IF YOU MUST TRAVEL...KEEP AN EXTRA FLASHLIGHT...FOOD...AND WATER IN YOUR VEHICLE IN CASE OF AN EMERGENCY. ICE ACCUMULATIONS AND WINDS WILL LIKELY LEAD TO SNAPPED POWER LINES AND FALLING TREE BRANCHES THAT ADD TO THE DANGER.""",
        ]

    def ctaLEA(self):
         return [
 """A LAKE EFFECT SNOW WATCH MEANS THERE IS A POTENTIAL FOR A LARGE AMOUNT OF SNOW IN ONLY A FEW HOURS. VISIBILITIES AND DEPTH OF SNOW CAN VARY GREATLY...IMPACTING TRAVEL SIGNIFICANTLY. CONTINUE TO MONITOR THE LATEST FORECASTS.""",
        ]

    def ctaLEW(self):
        return [
 """A LAKE EFFECT SNOW WARNING MEANS SIGNIFICANT AMOUNTS OF LAKE-EFFECT SNOW ARE FORECAST THAT WILL MAKE TRAVEL VERY HAZARDOUS OR IMPOSSIBLE. LAKE-EFFECT SNOW SHOWERS TYPICALLY ALIGN THEMSELVES IN BANDS AND WILL LIKELY BE INTENSE ENOUGH TO DROP 1 TO SEVERAL INCHES OF SNOW PER HOUR FOR SEVERAL HOURS. VISIBILITIES VARY GREATLY AND CAN DROP TO ZERO WITHIN MINUTES.  TRAVEL IS STRONGLY DISCOURAGED. COMMERCE COULD BE SEVERELY IMPACTED. IF YOU MUST TRAVEL...KEEP AN EXTRA FLASHLIGHT...FOOD...AND WATER IN YOUR VEHICLE IN CASE OF AN EMERGENCY.""",
        ]

    def ctaLEY(self):
        return [
 """A LAKE EFFECT SNOW ADVISORY MEANS LAKE-EFFECT SNOW IS FORECAST THAT WILL MAKE TRAVEL DIFFICULT IN SOME AREAS. LAKE-EFFECT SNOW SHOWERS TYPICALLY ALIGN THEMSELVES IN BANDS AND WILL LIKELY BE INTENSE ENOUGH TO DROP SEVERAL INCHES IN LOCALIZED AREAS. USE CAUTION WHEN TRAVELING.""",
        ]

    def ctaLOY(self):
        return [
 """A LOW WATER ADVISORY MEANS WATER LEVELS ARE EXPECTED TO BE SIGNIFICANTLY BELOW AVERAGE. MARINERS SHOULD USE EXTREME CAUTION AND TRANSIT AT THE SLOWEST SAFE NAVIGABLE SPEED TO MINIMIZE IMPACT.""",
        ]

    def ctaLSA(self):
        return [
 """A LAKESHORE FLOOD WATCH MEANS THAT CONDITIONS FAVORABLE FOR LAKESHORE FLOODING ARE EXPECTED TO DEVELOP. RESIDENTS ON OR NEAR THE SHORE SHOULD TAKE ACTION TO PROTECT PROPERTY...AND LISTEN FOR LATER STATEMENTS OR WARNINGS.""",
        ]

    def ctaLSW(self):
        return [
 """A LAKESHORE FLOOD WARNING MEANS THAT FLOODING IS OCCURRING OR IMMINENT ALONG THE LAKE. RESIDENTS ON OR NEAR THE SHORE IN THE WARNED AREA SHOULD BE ALERT FOR RISING WATER...AND TAKE APPROPRIATE ACTION TO PROTECT LIFE AND PROPERTY.""",
        ]

    def ctaLSY(self):
        return [
 """A LAKESHORE FLOOD ADVISORY INDICATES THAT ONSHORE WINDS WILL GENERATE FLOODING OF LOW AREAS ALONG THE LAKESHORE.""",
        ]

    def ctaLWY(self):
        return [
 """A LAKE WIND ADVISORY INDICATES THAT WINDS WILL CAUSE ROUGH CHOP ON AREA LAKES. SMALL BOATS WILL BE ESPECIALLY PRONE TO CAPSIZING.""",
        ]

    def ctaMFY(self):
        return [
"""A DENSE FOG ADVISORY MEANS VISIBILITIES WILL FREQUENTLY BE REDUCED TO LESS THAN ONE MILE. INEXPERIENCED MARINERS...ESPECIALLY THOSE OPERATING SMALLER VESSELS SHOULD AVOID NAVIGATING IN THESE CONDITIONS. """,
        ]

    def ctaMHY(self):
        return [
"""AN ASHFALL ADVISORY MEANS THAT A LIGHT ACCUMULATION OF ASHFALL IS EXPECTED ON VESSELS. IT IS RECOMMENDED THAT VESSELS BE PREPARED TO TAKE APPROPRIATE COUNTER MEASURES BEFORE PUTTING TO SEA OR ENTERING THE ADVISORY AREA.""",
        ]

    def ctaMSY(self):
        return [
 """A DENSE SMOKE ADVISORY MEANS WIDESPREAD FIRES WILL CREATE SMOKE...LIMITING VISIBILITIES. INEXPERIENCED MARINERS...ESPECIALLY THOSE OPERATING SMALLER VESSELS SHOULD AVOID NAVIGATING IN THESE CONDITIONS.""",
        ]

    def ctaRBY(self):
        return [
 """A SMALL CRAFT ADVISORY FOR ROUGH BAR MEANS THAT WAVE CONDITIONS ARE EXPECTED TO BE HAZARDOUS TO SMALL CRAFT IN OR NEAR HARBOR ENTRANCES.""",
        ]

    def ctaSBY(self):
        return [
 """A SNOW AND BLOWING SNOW ADVISORY MEANS THAT VISIBILITIES WILL BE LIMITED DUE TO A COMBINATION OF FALLING AND BLOWING SNOW. USE CAUTION WHEN TRAVELING...ESPECIALLY IN OPEN AREAS.""",
        ]

    def ctaSCY(self):
        return [
 """A SMALL CRAFT ADVISORY MEANS THAT WIND SPEEDS OF 21 TO 33 KNOTS ARE EXPECTED TO PRODUCE HAZARDOUS WAVE CONDITIONS TO SMALL CRAFT. INEXPERIENCED MARINERS...ESPECIALLY THOSE OPERATING SMALLER VESSELS SHOULD AVOID NAVIGATING IN THESE CONDITIONS.""",
        ]

    def ctaSEA(self):
        return [
 """A HAZARDOUS SEAS WATCH IS ISSUED WHEN THE RISK OF HAZARDOUS SEAS HAS SIGNIFICANTLY INCREASED...BUT THE SPECIFIC TIMING AND/OR LOCATION IS STILL UNCERTAIN.  IT IS INTENDED TO PROVIDE ADDITIONAL LEAD TIME FOR MARINERS WHO MAY WISH TO CONSIDER ALTERING THEIR PLANS.""",
        ]

    def ctaSEW(self):
        return [
 """A HAZARDOUS SEAS WARNING MEANS HAZARDOUS SEA CONDITIONS ARE IMMINENT OR OCCURING. RECREATIONAL BOATERS SHOULD REMAIN IN PORT...OR TAKE SHELTER UNTIL WAVES SUBSIDE.  COMMERCIAL VESSELS SHOULD PREPARE FOR ROUGH SEAS<85>AND CONSIDER REMAINING IN PORT OR TAKING SHELTER IN PORT UNTIL HAZARDOUS SEAS SUBSIDE.""",
        ]

    def ctaSIY(self):
        return [
 """A SMALL CRAFT ADVISORY FOR WIND MEANS THAT WIND SPEEDS OF 21 TO 33 KNOTS ARE EXPECTED. INEXPERIENCED MARINERS...ESPECIALLY THOSE OPERATING SMALLER VESSELS SHOULD AVOID NAVIGATING IN THESE CONDITIONS.""",
        ]

    def ctaSMY(self):
        return [
 """A DENSE SMOKE ADVISORY MEANS WIDESPREAD FIRES WILL CREATE SMOKE...LIMITING VISIBILITIES. IF DRIVING...SLOW DOWN...USE YOUR HEADLIGHTS...AND LEAVE PLENTY OF DISTANCE AHEAD OF YOU IN CASE A SUDDEN STOP IS NEEDED.""",
        ]


    def ctaSNY(self):
        return [
 """A SNOW ADVISORY MEANS THAT PERIODS OF SNOW WILL CAUSE PRIMARILY TRAVEL DIFFICULTIES. BE PREPARED FOR SNOW COVERED ROADS AND LIMITED VISIBILITIES...AND USE CAUTION WHILE DRIVING.""",
        ]

    def ctaSRA(self):
        return [
 """A STORM WATCH IS ISSUED WHEN THE RISK OF STORM FORCE WINDS OF 48 TO 63 KNOTS HAS SIGNIFICANTLY INCREASED...BUT THE SPECIFIC TIMING AND/OR LOCATION IS STILL UNCERTAIN.  IT IS INTENDED TO PROVIDE ADDITIONAL LEAD TIME FOR MARINERS WHO MAY WISH TO CONSIDER ALTERING THEIR PLANS.""",
        ]

    def ctaSRW(self):
        return [
 """A STORM WARNING MEANS WINDS OF 48 TO 63 KNOTS ARE IMMINENT OR OCCURING. RECREATIONAL BOATERS SHOULD REMAIN IN PORT...OR TAKE SHELTER UNTIL WINDS AND WAVES SUBSIDE. COMMERCIAL VESSELS SHOULD PREPARE FOR VERY STRONG WINDS AND DANGEROUS SEA CONDITIONS...AND CONSIDER REMAINING IN PORT OR TAKING SHELTER IN PORT UNTIL WINDS AND WAVES SUBSIDE.""",
        ]

    def ctaSUW(self):
        return [
 """A HIGH SURF WARNING INDICATES THAT DANGEROUS...BATTERING WAVE WILL POUND THE SHORELINE. THIS WILL RESULT IN VERY DANGEROUS SWIMMING CONDITIONS...AND DEADLY RIP CURRENTS.""",
        ]

    def ctaSUY(self):
        return [
 """A HIGH SURF ADVISORY MEANS THAT HIGH SURF WILL AFFECT BEACHES IN THE ADVISORY AREA...PRODUCING RIP CURRENTS AND LOCALIZED BEACH EROSION.""",
        ]

    def ctaSWY(self):
        return [
 """A SMALL CRAFT ADVISORY FOR HAZARDOUS SEAS MEANS THAT WAVES ARE EXPECTED TO BE HAZARDOUS TO SMALL CRAFT. MARINERS SHOULD AVOID SHOALING AREAS. LONG PERIOD SWELL CAN SHARPEN INTO LARGE BREAKING WAVES IN SHOALING AREAS. IT IS NOT UNUSUAL FOR WAVES TO BREAK MUCH FARTHER FROM SHOALING AREAS THAN IS NORMALLY EXPERIENCED. REMEMBER...BREAKING WAVES CAN EASILY CAPSIZE EVEN LARGER VESSELS.""",
        ]

    def ctaTIA(self):
        return [
 """AN INLAND TROPICAL STORM WATCH MEANS WINDS OF 39 TO 73 MPH ARE EXPECTED DUE TO A LANDFALLING HURRICANE OR TROPICAL STORM...IN THE NEXT 12 TO 24 HOURS.""",
        ] + self.tropicalTRcta()

    def ctaTIW(self):
        return [
 """AN INLAND TROPICAL STORM WARNING MEANS WINDS OF 39 TO 73 MPH ARE EXPECTED DUE TO A LANDFALLING HURRICANE OR TROPICAL STORM. WINDS OF THIS MAGNITUDE ARE LIKELY TO CAUSE SPORADIC POWER OUTAGES...FALLEN TREES...MINOR PROPERTY DAMAGE...AND DANGEROUS DRIVING CONDITIONS FOR HIGH PROFILE VEHICLES.""",
        ] + self.tropicalTRcta()

    def ctaUPA(self):
        return [
 """A HEAVY FREEZING SPRAY WATCH IS ISSUED WHEN THE RISK OF HEAVY FREEZING SPRAY HAS SIGNIFICANTLY INCREASED...BUT THE SPECIFIC TIMING AND/OR LOCATION IS STILL UNCERTAIN.  IT IS INTENDED TO PROVIDE ADDITIONAL LEAD TIME FOR MARINERS WHO MAY WISH TO CONSIDER ALTERING THEIR PLANS.""",
        ]

    def ctaUPW(self):
        return [
 """A HEAVY FREEZING SPRAY WARNING MEANS HEAVY FREEZING SPRAY IS EXPECTED TO RAPIDLY ACCUMULATE ON VESSELS. THESE CONDITIONS CAN BE EXTREMELY HAZARDOUS TO NAVIGATION. IT IS RECOMMENDED THAT MARINERS NOT TRAINED TO OPERATE IN THESE CONDITIONS OR VESSELS NOT PROPERLY EQUIPED TO DO SO...REMAIN IN PORT OR AVOID THE WARING AREA.""",
        ]

    def ctaUPY(self):
        return [
 """A FREEZING SPRAY ADVISORY MEANS THAT LIGHT TO MODERATE ACCUMULATION OF ICE IS EXPECTED ON VESSELS. OPERATING A VESSEL IN FREEZING SPRAY CAN BE HAZARDOUS. IT IS RECOMMENDED THAT VESSELS BE PREPARED TO TAKE APPROPRIATE COUNTER MEASURES BEFORE PUTTING TO SEA OR ENTER THE ADVISORY AREA.""",
        ]

    def ctaWCA(self):
        return [
 """A WIND CHILL WATCH MEANS THE THERE IS THE POTENTIAL FOR A COMBINATION OF VERY COLD AIR AND STRONG WINDS TO CREATE DANGEROUSLY LOW WIND CHILL VALUES. MONITOR THE LATEST FORECASTS AND WARNINGS FOR UPDATES ON THIS SITUATION.""",
        ]

    def ctaWCW(self):
        return [
 """A WIND CHILL WARNING MEANS THE COMBINATION OF VERY COLD AIR AND STRONG WINDS WILL CREATE DANGEROUSLY LOW WIND CHILL VALUES. THIS WILL RESULT IN FROST BITE AND LEAD TO HYPOTHERMIA OR DEATH IF PRECAUTIONS ARE NOT TAKEN.""",
        ]

    def ctaWCY(self):
        return [
 """A WIND CHILL ADVISORY MEANS THAT VERY COLD AIR AND STRONG WINDS WILL COMBINE TO GENERATE LOW WIND CHILLS. THIS WILL RESULT IN FROST BITE AND LEAD TO HYPOTHERMIA IF PRECAUTIONS ARE NOT TAKEN.  IF YOU MUST VENTURE OUTDOORS...MAKE SURE YOU WEAR A HAT AND GLOVES.""",
        ]

    def ctaWIY(self):
        return [
 """A WIND ADVISORY MEANS THAT WINDS OF 35 MPH ARE EXPECTED. WINDS THIS STRONG CAN MAKE DRIVING DIFFICULT...ESPECIALLY FOR HIGH PROFILE VEHICLES. USE EXTRA CAUTION.""",
        ]

    def ctaWSA(self):
        return [
 """A WINTER STORM WATCH MEANS THERE IS A POTENTIAL FOR SIGNIFICANT SNOW...SLEET...OR ICE ACCUMULATIONS THAT MAY IMPACT TRAVEL. CONTINUE TO MONITOR THE LATEST FORECASTS.""",
        ]

    def ctaWSW(self):
        return [
 """|*CLICK CallToActions --> Hazard TO CHOOSE AN APPROPRIATE CTA*|""",
        ] + self.winterWScta()

    def ctaWWY(self):
        return [
 """|*CLICK CallToActions --> Hazard TO CHOOSE AN APPROPRIATE CTA*|""",
        ] + self.winterWWcta()
        
    def ctaZFY(self):
        return [
 """A FREEZING FOG ADVISORY MEANS VISIBILITIES WILL FREQUENTLY BE REDUCED TO LESS THAN ONE QUARTER MILE. IF DRIVING...SLOW DOWN...USE YOUR HEADLIGHTS...AND LEAVE PLENTY OF DISTANCE AHEAD OF YOU. ALSO...BE ALERT FOR FROST ON BRIDGE DECKS CAUSING SLIPPERY ROADS.""",
        ]

    def ctaZRY(self):
        return [
 """A FREEZING RAIN ADVISORY MEANS THAT PERIODS OF FREEZING RAIN OR FREEZING DRIZZLE WILL CAUSE TRAVEL DIFFICULTIES. BE PREPARED FOR SLIPPERY ROADS. SLOW DOWN AND USE CAUTION WHILE DRIVING.""",
        ]

#------------------------------------------------------------------------
# CALL TO ACTIONS - individual functions for each product pil
#------------------------------------------------------------------------
# These are lists of strings.  These are available through the call to 
# actions menu.

    def ctaPilADR(self):
        return [
        ]

    def ctaPilAFD(self):
        return [
        ]

    def ctaPilAFM(self):
        return [
        ]

    def ctaPilAVA(self):
        return [
        ]

    def ctaPilAVW(self):
        return [
        ]

    def ctaPilCAE(self):
        return [
        ]

    def ctaPilCCF(self):
        return [
        ]

    def ctaPilCDW(self):
        return [
        ]

    def ctaPilCEM(self):
        return [
        ]

    def ctaPilCFW(self):
        return [
        ]

    def ctaPilCWF(self):
        return [
        ]

    def ctaPilEQR(self):
        return [
        ]

    def ctaPilESF(self):
        return [
        ]

    def ctaPilEQW(self):
        return [
        ]

    def ctaPilEVI(self):
        return [
        ]

    def ctaPilFFA(self):
        return [
        ]

    def ctaPilFRW(self):
        return [
        ]

    def ctaPilFWF(self):
        return [
        ]

    def ctaPilFWM(self):
        return [
        ]

    def ctaPilFWS(self):
        return [
        ]

    def ctaPilGLF(self):
        return [
        ]

    def ctaPilHLS(self):
        return [
        ]

    def ctaPilHMW(self):
        return [
        ]

    def ctaPilHWO(self):
        return [
        ]

    def ctaPilLAE(self):
        return [
        ]

    def ctaPilLEW(self):
        return [
        ]

    def ctaPilMWS(self):
        return [
        ]

    def ctaPilMWW(self):
        return [
 """MARINERS SHOULD PAY CLOSE ATTENTION TO THE MARINE FORECAST...AND CONSIDER WIND AND SEA CONDITIONS IN PLANNING.""",
        ]

    def ctaPilMVF(self):
        return [
        ]

    def ctaPilNOW(self):
        return [
        ]

    def ctaPilNPW(self):
        return [
        ]

    def ctaPilNSH(self):
        return [
        ]

    def ctaPilNUW(self):
        return [
        ]

    def ctaPilOFF(self):
        return [
        ]

    def ctaPilPFM(self):
        return [
        ]

    def ctaPilPNS(self):
        return [
        ]

    def ctaPilRFD(self):
        return [
        ]

    def ctaPilRFW(self):
        return [
        ]

    def ctaPilRHW(self):
        return [
        ]

    def ctaPilSAF(self):
        return [
        ]

    def ctaPilSRF(self):
        return [
        ]

    def ctaPilSFT(self):
        return [
        ]

    def ctaPilSPS(self):
        return [
        ]

    def ctaPilSPW(self):
        return [
        ]

    def ctaPilTOE(self):
        return [
        ]

    def ctaPilVOW(self):
        return [
        ]

    def ctaPilWCN(self):
        return [
            
        ]

    def ctaPilWSW(self):
        return [

        ]

    def ctaPilZFP(self):
        return [
        ]