New Collect tag workaround : scope to tag

                  // SCOPE TO TAG TO ENSURE COMPATIBLE ON OLDER UTAG VERSIONS
// author : roshan@tealium.com

if (!utag.ut.pad) {
  utag.ut.pad = function(a, b, c, d) {
    a = "" + ((a - 0).toString(16));
    d = '';
    if (b > a.length) {
      for (c = 0; c < (b - a.length); c++) {
        d += '0'
      }
    }
    return "" + d + a
  }
}
if (!utag.ut.vi){utag.ut.vi = function(t, a, b) {
    if (!utag.v_id) {
      a = this.pad(t, 12);
      b = "" + Math.random();
      a += this.pad(b.substring(2, b.length), 16);
      try {
        a += this.pad((navigator.plugins.length ? navigator.plugins.length : 0), 2);
        a += this.pad(navigator.userAgent.length, 3);
        a += this.pad(document.URL.length, 4);
        a += this.pad(navigator.appVersion.length, 3);
        a += this.pad(screen.width + screen.height + parseInt((screen.colorDepth) ? screen.colorDepth : screen.pixelDepth), 5)
      } catch (e) {
        utag.DB(e);
        a += "12345"
      };
      utag.v_id = a;
    }
    return utag.v_id
  }
}


if(!utag.ut.hasOwn){utag.ut.hasOwn = function(o, a) {
    return o != null && Object.prototype.hasOwnProperty.call(o, a)
  }
}

if(!utag.ut.isEmptyObject){utag.ut.isEmptyObject = function(o, a) {
    for (a in o) {
      if (utag.ut.hasOwn(o, a)) return false
    }
    return true
  }
}

if(!utag.ut.isEmpty){utag.ut.isEmpty = function(o) {
    var t = utag.ut.typeOf(o);
    if (t == "number") {
      return isNaN(o)
    } else if (t == "boolean") {
      return false
    } else if (t == "string") {
      return o.length === 0
    } else return utag.ut.isEmptyObject(o)
  }
}

  if(!utag.ut.typeOf){utag.ut.typeOf = function(e) {
    return ({}).toString.call(e).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
  }
}

if(!utag.ut.flatten){utag.ut.flatten = function(o) {
    // stop when arriving at a string, array, boolean, number (float or integer)
    var a = {};

    function r(c, p) {
      if (Object(c) !== c || c instanceof Array) {
        a[p] = c;
      } else {
        if (utag.ut.isEmptyObject(c)) {
          //a[p] = {};
        } else {
          for (var d in c) {
            r(c[d], p ? p + "." + d : d);
          }
        }
      }
    }
    r(o, "");

    return a;
  }
}

if(!utag.merge){utag.ut.merge = function(a, b, c, d) {
    if (c) {
      for (d in utag.loader.GV(b)) {
        a[d] = b[d]
      }
    } else {
      for (d in utag.loader.GV(b)) {
        if (typeof a[d] == "undefined") a[d] = b[d]
      }
    }
  }
}
if(!utag.ut.decode){utag.ut.decode = function(a, b) {
    b = "";
    try {
      b = decodeURIComponent(a)
    } catch (e) {
      utag.DB(e)
    };
    if (b == "") {
      b = unescape(a)
    };
    return b
  }
}