function goLang(lang){
  var url = window['_' + lang + '_url_'] || window._default_url_ || location.href;
  url = url.replace(/\/(en|nl|fr|de|es|it|pl|pt)\//, "/" + (lang || 'en') + "/");
  url = url.replace("location","x"); // used to disable dynamic panorama on change

  showJ2Popup = false;
  location.replace(url);
}

var Offercode = {
  PRO: ['EFAX_PRO_1995_200PGIFT', 'EFAX_PRO_1995_NOACT_200PGIFT'],
  PLUS: ['EFAX_PLUS_1695_DEFAULTRECUR_3SEND'],

  set: function(code) {
    if( code.length > 0){
      setCookie('OFFERCODE', code[0], '/', getDomain());
    }
  },

  get: function() {
    return getCookie('OFFERCODE');
  },

  reset: function(code) {
    if (!code || Offercode.get() == code[0] || (code.length > 1 && Offercode.get() == code[1])) {
      var promo = getCookie("PROMO_OFFERCODE");
      if (promo) {
        Offercode.set(promo);
      } else {
        deleteCookie('OFFERCODE', '/', getDomain());
      }
    }
  },

  mapOfferCodes: function(){
    // Map paid eFax Pro offercode to paid eFax Plus offercode
    setCookie('EFAX_PRO_1995_200PGIFT_KEY', 'EFAX_PLUS_1695_DEFAULTRECUR_3SEND', '/', getDomain());
    // Map paid eFax Plus offercode to paid eFax Pro offercode
    setCookie('EFAX_PLUS_1695_DEFAULTRECUR_3SEND_KEY', 'EFAX_PRO_1995_200PGIFT', '/', getDomain());
    // Map paid eFax Plus annual offercode to paid eFax Pro annual offercode
    setCookie('EFAX_PLUS_16950_ANN_DEFAULTRECUR_3SEND_KEY', 'EFAX_PRO_220_ANNUAL_200PGIFT', '/', getDomain());
    // Map paid eFax Pro annual offercode to paid eFax Plus annual offercode
    setCookie('EFAX_PRO_220_ANNUAL_200PGIFT_KEY', 'EFAX_PLUS_16950_ANN_DEFAULTRECUR_3SEND', '/', getDomain());
    // Map 30-day trial eFax Plus offercode to 30-day trial eFax Pro offercode
    setCookie('EFAX_PLUS_1695_1MONTHRECUR_3SEND_KEY', 'EFAX_PRO_1995_30DAYNOACT_200PGIFT', '/', getDomain());
    // Map 30-day trial eFax Pro offercode to 30-day trial eFax Plus offercode
    setCookie('EFAX_PRO_1995_30DAYNOACT_200PGIFT_KEY', 'EFAX_PLUS_1695_1MONTHRECUR_3SEND', '/', getDomain());
    // Map annual trial eFax Plus offercode to annual trial eFax Pro offercode
    setCookie('EFAX_PLUS_16950_ANN_1MONTHRECUR_3SEND_KEY','EFAX_PRO_220_ANNUAL_30DAYNOACT_200PGIFT', '/', getDomain());
    // Map annual trial eFax Pro offercode to annual trial eFax Plus offercode
    setCookie('EFAX_PRO_220_ANNUAL_30DAYNOACT_200PGIFT_KEY','EFAX_PLUS_16950_ANN_1MONTHRECUR_3SEND', '/', getDomain());
  }
}

for (k in Offercode) {
  if (/^[A-Z]+$/.test(k)) {
    var suffix = k.substring(0, 1) + k.substring(1).toLowerCase()
    Offercode['set' + suffix] = function() { var tmpArray = Offercode[k]; if(tmpArray.length >0){Offercode.set(tmpArray[0]);} }
    Offercode['reset' + suffix] = new Function(
      "Offercode.mapOfferCodes();var code = Offercode.get();" +
      "if (new RegExp('_" + k + "(_|$)').test(code)){" + // contains "_PLUS" or "_PRO" with an underscore suffix or end of string
        "Offercode.reset(Offercode['" + k + "']);}"
    );
  }
}
