var adsTracking;

adsTracking = {

  indexes: {},

  setObject: function(params){

    if(typeof params.key !== "undefined"){
      if(typeof this.indexes["_" + params.key] === "undefined"){
        var defaultParams = {
          mrecGptIndex: typeof params.mrecGptIndex === "undefined" ?  null : params.mrecGptIndex,
          leaderGptIndex: typeof params.leaderGptIndex === "undefined" ?  null : params.leaderGptIndex,
          footerGptIndex: typeof params.footerGptIndex === "undefined" ?  null : params.footerGptIndex,
          bannerMrecGptIndex: typeof params.bannerMrecGptIndex === "undefined" ?  null : params.bannerMrecGptIndex,
          skyGptIndex: typeof params.skyGptIndex === "undefined" ?  null : params.skyGptIndex,
          buttonGptIndexes: [],
          adLoadTime: null
        }

        this.indexes["_" + params.key] = defaultParams;
      } else {

        for(var k in params){
          if(params.hasOwnProperty(k) && k != "key"){
            this.indexes["_" + params.key][k] = params[k];
          }
        }

      }
    } else {
      console.error("Missing 'key' parameter");
    }

  },

  setTime: function(key){
    if(typeof key !== "undefined" && key != ""){
      key = key.charAt(0) == "_" ? key : "_" + key;
      this.indexes[key].adLoadTime = Math.round(Date.now() / 1000);
    } else {
      console.error("Invalid key");
    }
  },

  refreshAd: function(key){
    // console.log(key);
    key = "_" + key;

    var target = this.indexes[key];

    if(typeof this.indexes[key] !== "undefined"){
      var timeOfCall = (Math.round(Date.now() / 1000) - target.adLoadTime);
      // console.info("Time since ad @ " + key + " has been loaded / refreshed: " + timeOfCall);
      if(timeOfCall >= 60){

        for(var k in this.indexes[key]){
          if (this.indexes[key].hasOwnProperty(k)) {
            if(this.indexes[key][k] != null){
              if(k == "buttonGptIndexes"){
                if(this.indexes[key][k].length > 0){
                  for(var i = 0; i < this.indexes[key][k].length; i++){
                    googletag.pubads().refresh([gptAdSlots[this.indexes[key][k][i]]]);
                  }
                }
              }else {
                  googletag.pubads().refresh([gptAdSlots[this.indexes[key][k]]]);
              }
            }
          }
        }

        this.setTime(key);

      }
    } else {
      // console.error("key " + key + " does not exist");
    }

  }

}
