#!/usr/bin/env python
# encoding: utf-8

#=============================================================================================
#
#=============================================================================================
#---------------------------------------------------------------------------------------------
import numpy as np

#=============================================================================================

def getColorRange(variablename):

    # Default variable value ranges (bounds) for plotting:
    # (? Note that datatypes should have 1 more boundary than they have colors in their colormap)
    RANGES={ 
                 'dhw' : np.concatenate([[-1 ,0.0000001], np.arange(1, 22)]),
                'baa5' : np.arange(0, 9),
    }
    return RANGES[variablename]


def getColorbarLables(variablename):
    # Values to label on the colorbar for each variable:
    COLORBAR_LABELS={ 
                      'dhw' : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
                     'baa5' : [0, 1, 2, 3, 4, 5, 6, 7],
    }
    return COLORBAR_LABELS[variablename]


def getUnits(variablename):
    # Mapping of datatypes with their respective units
    UNITS= {  
                'dhw' : u'°C-Weeks',
               'baa5' : None,
    }
    return UNITS[variablename]


def getColorkeyLabels(variablename):
    COLORKEY_LABELS={ 
                      'dhw' : None,
                     'baa5' : ['No Stress', 'Watch', 'Warning', 'Alert Level 1', 'AL2', 'AL3', 'AL4', 'AL5'],
    }
    return COLORKEY_LABELS[variablename]

def getMapOceanRegionNames():

    list_map_oceanregionname = ['tropics']
    return list_map_oceanregionname


def getMapRegionNames():

    list_map_regionname = getMapOceanRegionNames()
    return list_map_regionname


def getMapscaleForRegions(regionname):

    # For large size:
    dict_mapscales_for_regions = {
         'tropics': 0.4}

    if regionname in dict_mapscales_for_regions:
        return dict_mapscales_for_regions[regionname]
    else:
        raise ValueError("***Error: Requested regionname is not pre-defined! Quit!  ", regionname)


def getLogolocationForRegions(regionname):

    dict_logolocations_for_regions = {
      'tropics': (20.02500000004548+2.0, 38.972368421098111+2.0, -5.3749999999945857+2.0, 13.572368421058044+2.0),
    }

    if regionname in dict_logolocations_for_regions:
        return dict_logolocations_for_regions[regionname]
    else:
        raise ValueError("***Error: Requested regionname is not pre-defined! Quit!  ", regionname)


def getCoordinatesForRegions(regionname):

    dict_coordinates_for_regions = {
      'tropics': {'lowerLeftLat':-45,   'lowerLeftLon':  20,   'upperRightLat': 45,   'upperRightLon':  19.99},
           } 

    if regionname in dict_coordinates_for_regions:
        return dict_coordinates_for_regions[regionname]
    else:
        raise ValueError("***Error: Requested regionname is not pre-defined! Quit!  ", regionname)


def getValuesetForBasemap(regionname):

    dict_valueset_for_basemap = {
      'tropics': {'llcrnrlat':-45.0, 'llcrnrlon':  20.0, 'urcrnrlat': 45.0, 'urcrnrlon':380.0, 'area_thresh':0.001, 'resolution':'i'},
    }

    if regionname in dict_valueset_for_basemap:
        return dict_valueset_for_basemap[regionname]
    else:
        raise ValueError("***Error: Requested regionname is not pre-defined! Quit!  ", regionname)


#=============================================================================================
#The end
