<?php

if (!defined('ABSPATH')) { exit; }

class AIEO_Greek_Nomi {

    
    public static function nomi() {
        return array(
            
            'ATH' => 'Αθηνών',
            'PIR' => 'Πειραιά',
            'EAT' => 'Ανατολικής Αττικής',
            'DAT' => 'Δυτικής Αττικής',
            
            'TSL' => 'Θεσσαλονίκης',
            'PAT' => 'Αχαΐας',         
            'LAR' => 'Λάρισας',
            'HER' => 'Ηρακλείου',
            
            'AET' => 'Αιτωλοακαρνανίας',
            'VOI' => 'Βοιωτίας',
            'EVI' => 'Ευβοίας',
            'EVT' => 'Ευρυτανίας',
            'FTH' => 'Φθιώτιδας',
            'FOK' => 'Φωκίδας',
            
            'ARG' => 'Αργολίδας',
            'ARK' => 'Αρκαδίας',
            'KOR' => 'Κορινθίας',
            'LAK' => 'Λακωνίας',
            'MES' => 'Μεσσηνίας',
            
            'ILE' => 'Ηλείας',
            
            'KER' => 'Κερκύρας',
            'KEF' => 'Κεφαλληνίας',
            'LEF' => 'Λευκάδας',
            'ZAK' => 'Ζακύνθου',
            
            'MAG' => 'Μαγνησίας',
            'KAR' => 'Καρδίτσας',
            'TRI' => 'Τρικάλων',
            
            'IOA' => 'Ιωαννίνων',
            'ART' => 'Άρτας',
            'THP' => 'Θεσπρωτίας',
            'PRE' => 'Πρέβεζας',
            
            'KOZ' => 'Κοζάνης',
            'GRE' => 'Γρεβενών',
            'KAS' => 'Καστοριάς',
            'FLO' => 'Φλωρίνης',
            
            'IMA' => 'Ημαθίας',
            'KIL' => 'Κιλκίς',
            'PEL' => 'Πέλλας',
            'PIE' => 'Πιερίας',
            'SER' => 'Σερρών',
            'HAL' => 'Χαλκιδικής',
            
            'DRA' => 'Δράμας',
            'KAV' => 'Καβάλας',
            'XAN' => 'Ξάνθης',
            'ROD' => 'Ροδόπης',
            'EVU' => 'Έβρου',
            
            'HAN' => 'Χανίων',
            'RET' => 'Ρεθύμνου',
            'LAS' => 'Λασιθίου',
            
            'LES' => 'Λέσβου',
            'CHI' => 'Χίου',
            'SAM' => 'Σάμου',
            
            'KYK' => 'Κυκλάδων',
            'DOD' => 'Δωδεκανήσου',
            
            'AGI' => 'Αγίου Όρους',
        );
    }

    
    public static function postcode_to_nomos($postcode) {
        if (!is_string($postcode) || $postcode === '') { return ''; }
        $digits = preg_replace('/\D+/', '', $postcode);
        if (strlen($digits) < 3) { return ''; }
        $three = (int) substr($digits, 0, 3);
        $two   = (int) substr($digits, 0, 2);

        
        if ($three >= 100 && $three <= 119) { return 'ATH'; } 
        if ($three >= 120 && $three <= 122) { return 'ATH'; } 
        if ($three >= 123 && $three <= 132) { return 'ATH'; } 
        if ($three >= 133 && $three <= 137) { return 'ATH'; } 
        if ($three >= 140 && $three <= 159) { return 'EAT'; } 
        if ($three >= 160 && $three <= 179) { return 'ATH'; } 
        if ($three >= 180 && $three <= 189) { return 'PIR'; } 
        if ($three >= 190 && $three <= 199) { return 'DAT'; } 
        
        if ($two === 20 || $two === 21) { return 'KOR'; }
        if ($two === 22) { return 'ARG'; }
        if ($two === 32 && $three <= 322) { return 'VOI'; }
        if ($two === 33) { return 'FOK'; }
        if ($two === 34) { return 'EVI'; }
        if ($two === 35) { return 'FTH'; }
        if ($two === 36) { return 'EVT'; }
        
        if ($two === 23) { return 'LAK'; }
        if ($two === 24) { return 'MES'; }
        
        if ($two === 25 || $two === 26) { return 'PAT'; }
        if ($two === 27) { return 'ILE'; }
        
        if ($two === 28) { return 'KEF'; }
        if ($two === 29) { return 'ZAK'; }
        if ($two === 31) { return 'LEF'; }
        if ($two === 49) { return 'KER'; }
        
        if ($two === 30) { return 'AET'; }
        
        if ($two === 37 || $two === 38) { return 'MAG'; }
        if ($two === 40 || $two === 41) { return 'LAR'; }
        if ($two === 42) { return 'KAR'; }
        if ($two === 43) { return 'TRI'; }
        
        if ($two === 44 || $two === 45) { return 'IOA'; }
        if ($two === 46) { return 'THP'; }
        if ($two === 47) { return 'ART'; }
        if ($two === 48) { return 'PRE'; }
        
        if ($two === 50) { return 'KOZ'; }
        if ($two === 51) { return 'GRE'; }
        if ($two === 52) { return 'KAS'; }
        if ($two === 53) { return 'FLO'; }
        
        if ($two === 54 || $two === 55 || $two === 56 || $two === 57) { return 'TSL'; }
        if ($two === 58) { return 'PEL'; }
        if ($two === 59) { return 'IMA'; }
        if ($two === 60) { return 'PIE'; }
        if ($two === 61 || $two === 62) { return 'SER'; }
        if ($two === 63) { return 'HAL'; }
        
        if ($two === 64 || $two === 65) { return 'KAV'; }
        if ($two === 66) { return 'DRA'; }
        if ($two === 67) { return 'XAN'; }
        if ($two === 68) { return 'ROD'; }
        if ($two === 69) { return 'EVU'; }
        
        if ($two === 70 || $two === 71) { return 'HER'; }
        if ($two === 72) { return 'LAS'; }
        if ($two === 73) { return 'HAN'; }
        if ($two === 74) { return 'RET'; }
        
        if ($two === 80) { return 'SAM'; }
        if ($two === 81) { return 'LES'; }
        if ($two === 82) { return 'CHI'; }
        if ($two === 83 || $two === 84) { return 'KYK'; }
        if ($two === 85) { return 'DOD'; }
        return '';
    }

    
    public static function register() {
        add_filter('woocommerce_states', array(__CLASS__, 'inject_states'), 10, 1);
    }

    public static function inject_states($states) {
        if (!is_array($states)) { $states = array(); }
        $states['GR'] = self::nomi();
        return $states;
    }
}
