<?php
require_once("/opt/msa/lib/php/include/common.php");

if( !empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
	$ip = $_SERVER['HTTP_CLIENT_IP'];
} else if( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
	$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
	$ip = $_SERVER['REMOTE_ADDR'];
}

$county_to_lang_mapping = '{"us":"en","gb":"en","au":"en","ca":"en","in":"hi","jp":"ja","cn":"zh","kr":"ko","fr":"fr","de":"de","es":"es","it":"it","nl":"nl","ru":"ru","br":"pt","mx":"es","ar":"es","sa":"ar","ir":"fa","tr":"tr","pl":"pl","se":"sv","no":"no","fi":"fi","dk":"da","th":"th","id":"id","pk":"ur","bd":"bn","vn":"vi","gr":"el","cz":"cs","ro":"ro","ua":"uk","hu":"hu","il":"he","my":"ms","za":"en","eg":"ar","np":"ne","lk":"si"}';
$county_to_lang_mapping_arr = json_decode($county_to_lang_mapping, 1);

$location = maxmindIp2location( $ip );
$language = "en";
$isUSUser = false;

// If we couldn't determine location, default to showing the translator
$showTranslator = true;

// Only check for US users if we have valid location data
if (!empty($location) && !empty($location['country2'])) {
    if (strtolower($location['country2']) === 'us') {
        $isUSUser = true;
        $showTranslator = false; // Don't show translator for US users
    } else if (isset($county_to_lang_mapping_arr[$location['country2']])) {
        $language = $county_to_lang_mapping_arr[$location['country2']];
    }
}

// If we couldn't determine the country, default to showing the translator
if (empty($location) || empty($location['country2'])) {
    $showTranslator = true;
}

if ($showTranslator):
?>

<style>
  #google_translate_element {
    display: block;
    left: 0;
    top: 0;
    width: 100%;
    z-index: 10000001;
    background: #ffffff;
    position: relative;
    border: none;
    margin: 0;
    box-shadow: 0 0 8px 1px #999;
  }
  body{
    position: relative;
    min-height: 100%;
    top: 30px; ;
  }
  .goog-te-gadget-simple {
      background-color: #FFF !important;
      /* border-left: 1px solid #D5D5D5; */
      /* border-top: 1px solid #9B9B9B; */
      /* border-bottom: 1px solid #E8E8E8; */
      /* border-right: 1px solid #D5D5D5; */
      font-size: 10pt !important;
      display: inline-block !important;
      padding-top: 1px !important;
      padding-bottom: 2px !important;
      cursor: pointer !important;
      padding-left: 5rem !important;
  }
  .goog-te-combo
  {
    padding: 5px 10px;
    margin: 4px 4px !important;
  }
</style>

<div id="google_translate_element" style="display:none;"></div>

<script>
  // Helper: Get user's stored preference (with expiry)
  function getTranslationPreference() {
    const stored = localStorage.getItem('translate_agreed');
    if (stored) {
      try {
        const data = JSON.parse(stored);
        if (Date.now() < data.expires) {
          return data.value;
        } else {
          localStorage.removeItem('translate_agreed');
        }
      } catch {
        localStorage.removeItem('translate_agreed');
      }
    }
    return null;
  }

  // Helper: Set user preference (1-day expiry)
  function setTranslationPreference(value) {
    const expires = Date.now() + (24 * 60 * 60 * 1000);
    localStorage.setItem('translate_agreed', JSON.stringify({ value, expires }));
  }

  // Helper: Set cookie function
  function setCookie(name, value, days = 365) {
    const expires = new Date();
    expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000));
    document.cookie = name + "=" + value + ";expires=" + expires.toUTCString() + ";path=/";
  }

  // Main: Load the Google Translate widget
  function loadTranslateWidget(userLang) {
    console.log("Language : " , userLang);
    document.getElementById('google_translate_element').style.display = 'block';

    window.googleTranslateElementInit = function () {
      setCookie('googtrans', '/en/' + userLang);
      new google.translate.TranslateElement({
        pageLanguage: 'en',
        layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL,
        autoDisplay: false
      }, 'google_translate_element');
      
      setTimeout(function() {
        const translateWidget = document.getElementById('google_translate_element');
        if (translateWidget) {
          const anchorTags = translateWidget.getElementsByTagName('a');
          for (let i = 0; i < anchorTags.length; i++) {
            anchorTags[i].addEventListener('click', function(e) {
              e.preventDefault();
              return false;
            });
          }
        }
      }, 1000);

      // Auto-select target language
      let tries = 0;
      const interval = setInterval(() => {
        const select = document.querySelector('.goog-te-combo');
        console.log("select : " , select);
        console.log("select.options.length : " , select.options.length);
        if (select && select.options && select.options.length > 1) {
          select.value = userLang;

          // Trigger both 'change' and 'input' events for compatibility
          select.dispatchEvent(new Event('change'));
          select.dispatchEvent(new Event('input'));

          // Try to force translation via iframe
          const iframe = document.querySelector('iframe.goog-te-banner-frame');
          if (iframe) {
            const innerDoc = iframe.contentDocument || iframe.contentWindow.document;
            const translateButton = innerDoc.querySelector('.goog-te-button');
            if (translateButton) {
              translateButton.click();
            }
          }

          clearInterval(interval);
        }
        if (++tries > 30) clearInterval(interval);
      }, 300);

    };

    // Load the Google Translate script
    const script = document.createElement('script');
    script.src = "//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit";
    document.body.appendChild(script);
  }

  // Get target language from PHP
  const userLang = <?= json_encode($language) ?>;

  // Always load the translator for non-US users without asking
  loadTranslateWidget(userLang);

  // Check if already accepted
  /*const preference = getTranslationPreference();

  if (preference === 'yes') {
    loadTranslateWidget(userLang);
  } else if (!preference) {
    const confirmMsg = userLang !== 'en'
      ? `Do you want to translate this site into your language (${userLang})?`
      : `Do you want to use the Google Translate feature?`;

    if (confirm(confirmMsg)) {
      setTranslationPreference('yes');
      loadTranslateWidget(userLang);
    } else {
      setTranslationPreference('no');
    }
  }*/
</script>
<?php endif; /* End showTranslator check */ ?>