from collections import defaultdict
from operator import itemgetter

import pytz
from django.utils.translation import gettext_lazy as _


def make_timezones():
    data = defaultdict(list)
    for tz in pytz.all_timezones:
        if '/' in tz:
            area, loc = tz.split('/', 1)
        else:
            area, loc = 'Other', tz
        if not loc.startswith('GMT'):
            data[area].append((tz, loc))
    return sorted(data.items(), key=itemgetter(0))


TIMEZONE = make_timezones()
del make_timezones

ACE_THEMES = (
    ('ambiance', 'Ambiance'),
    ('chaos', 'Chaos'),
    ('chrome', 'Chrome'),
    ('clouds', 'Clouds'),
    ('clouds_midnight', 'Clouds Midnight'),
    ('cobalt', 'Cobalt'),
    ('crimson_editor', 'Crimson Editor'),
    ('dawn', 'Dawn'),
    ('dreamweaver', 'Dreamweaver'),
    ('eclipse', 'Eclipse'),
    ('github', 'Github'),
    ('idle_fingers', 'Idle Fingers'),
    ('katzenmilch', 'Katzenmilch'),
    ('kr_theme', 'KR Theme'),
    ('kuroir', 'Kuroir'),
    ('merbivore', 'Merbivore'),
    ('merbivore_soft', 'Merbivore Soft'),
    ('mono_industrial', 'Mono Industrial'),
    ('monokai', 'Monokai'),
    ('pastel_on_dark', 'Pastel on Dark'),
    ('solarized_dark', 'Solarized Dark'),
    ('solarized_light', 'Solarized Light'),
    ('terminal', 'Terminal'),
    ('textmate', 'Textmate'),
    ('tomorrow', 'Tomorrow'),
    ('tomorrow_night', 'Tomorrow Night'),
    ('tomorrow_night_blue', 'Tomorrow Night Blue'),
    ('tomorrow_night_bright', 'Tomorrow Night Bright'),
    ('tomorrow_night_eighties', 'Tomorrow Night Eighties'),
    ('twilight', 'Twilight'),
    ('vibrant_ink', 'Vibrant Ink'),
    ('xcode', 'XCode'),
)

MATH_ENGINES_CHOICES = (
    ('tex', _('Leave as LaTeX')),
    ('svg', _('SVG with PNG fallback')),
    ('mml', _('MathML only')),
    ('jax', _('MathJax with SVG/PNG fallback')),
    ('auto', _('Detect best quality')),
)

EFFECTIVE_MATH_ENGINES = ('svg', 'mml', 'tex', 'jax')