- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
/*
* Because Dynamic Tag Manager uses and RS and RSUI object, we unfortunally have to create one. gg dependency hell
* So everything below this comment is so that tag manager works. yes, the code in tag manages does expect
* parseUri to be on the global scope.
*/
var rs = {}
var RSUI = {
util: {}
}
// parseUri 1.2.2
// (c) Steven Levithan <stevenlevithan.com>
// MIT License
parseUri = function (str) {
var o = parseUri.options,
m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
uri = {},
i = 14;
while (i--) uri[o.key[i]] = m[i] || "";
uri[o.q.name] = {};
uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
if ($1) uri[o.q.name][$1] = $2;
});
return uri;
};
parseUri.options = {
strictMode: false,
key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
q: {
name: "queryKey",
parser: /(?:^|&)([^&=]*)=?([^&]*)/g
},
parser: {
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
}
};
RSUI.util.setCookie = function(name, value, b_custom, expires_ms, path, domain, secure){
//name = cookie name to set.
//value = cookie value to set.
//b_custom = optional boolean value which will allow custom settings
//expires_ms = optional milliseconds till cookie expires (#days * 1000 * 60 * 60 * 24).
//path = optional path.
//domain = optional domain.
//secure = optional secure setting.
if(!b_custom){
expires_ms = 30 * 1000 * 60 * 60 * 24; //30 days
path = "/";
domain = this.cookieDomain();
}
var today = new Date();
var exdate = new Date(today.getTime() + (expires_ms));
exdate = exdate.toUTCString();
var c_verb = 'setting'; //for debugging string below
if(expires_ms == -1) {
expires_ms = 1;
exdate = new Date(today.getTime() - (30 * 1000 * 60 * 60 * 24));
exdate = exdate.toUTCString();
c_verb = 'removing'; //for debugging string below
}
document.cookie = name + "=" + escape(value)+
((expires_ms) ? ";expires=" + exdate : "") +
((path) ? ";path="+path : "") +
((domain) ? ";domain="+domain : "") +
((secure) ? ";secure" : "");
};
RSUI.util.cookieDomain = function(){
var hp = parseUri(document.location).host.split('.');
hp.reverse();
domain = "." + hp[1] + "." + hp[0];
if (hp.length >= 3 && hp[2] != 'www' && hp[2] == 'stg')
domain = "." + hp[2] + "." + hp[1] + "." + hp[0];
return domain;
}
RSUI.util.getCookie = function(check_name){
var a_all_cookies = document.cookie.split(";");
var a_temp_cookie = "";
var cookie_name = "";
var cookie_value = "";
var b_cookie_found = false;
for(i = 0; i < a_all_cookies.length; i++){
a_temp_cookie = a_all_cookies[i].split("=");
cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g,"");
if(cookie_name == check_name){
b_cookie_found = true;
if (a_temp_cookie.length > 1) {
cookie_value = unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g,""));
}
return cookie_value;
break;
}
a_temp_cookie = null;
cookie_name = "";
}
if(!b_cookie_found) {
return null;
}
};
RSUI.util.eraseCookie = function(name) {
this.setCookie(name,"",true,-1,'/',this.cookieDomain());
}
/* Former jb_utils.js
* helper functions for analytics client-side code
* jbeach, created: 2010-04-06, updated: 2010-09-02
*/
/* get local time increment */
//This will output a time string in client browser's local time, only in 10 minute increments.
RSUI.util.getLocalTimeIncrement = function(){
var t;
try {
RSUI.util.dateFormat.masks.timeIncrement="yyyy-mm-dd HH:";
var now = new Date();
var t1 = now.format_rs("timeIncrement");
var t2 = Math.floor(now.getMinutes()/10).toString();
t = t1 + t2 + "0";
}
catch(err){t = err;}
return t;
}
RSUI.util.dateFormat = function () {
var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
timezoneClip = /[^-+\dA-Z]/g,
pad = function (val, len) {
val = String(val);
len = len || 2;
while (val.length < len) val = "0" + val;
return val;
};
// Regexes and supporting functions are cached through closure
return function (date, mask, utc) {
var dF = RSUI.util.dateFormat;
// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
mask = date;
date = undefined;
}
// Passing date through Date applies Date.parse, if necessary
date = date ? new Date(date) : new Date;
if (isNaN(date)) throw SyntaxError("invalid date");
mask = String(dF.masks[mask] || mask || dF.masks["default"]);
// Allow setting the utc argument via the mask
if (mask.slice(0, 4) == "UTC:") {
mask = mask.slice(4);
utc = true;
}
var _ = utc ? "getUTC" : "get",
d = date[_ + "Date"](),
D = date[_ + "Day"](),
m = date[_ + "Month"](),
y = date[_ + "FullYear"](),
H = date[_ + "Hours"](),
M = date[_ + "Minutes"](),
s = date[_ + "Seconds"](),
L = date[_ + "Milliseconds"](),
o = utc ? 0 : date.getTimezoneOffset(),
flags = {
d: d,
dd: pad(d),
ddd: dF.i18n.dayNames[D],
dddd: dF.i18n.dayNames[D + 7],
m: m + 1,
mm: pad(m + 1),
mmm: dF.i18n.monthNames[m],
mmmm: dF.i18n.monthNames[m + 12],
yy: String(y).slice(2),
yyyy: y,
h: H % 12 || 12,
hh: pad(H % 12 || 12),
H: H,
HH: pad(H),
M: M,
MM: pad(M),
s: s,
ss: pad(s),
l: pad(L, 3),
L: pad(L > 99 ? Math.round(L / 10) : L),
t: H < 12 ? "a" : "p",
tt: H < 12 ? "am" : "pm",
T: H < 12 ? "A" : "P",
TT: H < 12 ? "AM" : "PM",
Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
};
return mask.replace(token, function ($0) {
return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
});
};
}();
// Some common format strings
RSUI.util.dateFormat.masks = {
"default": "ddd mmm dd yyyy HH:MM:ss",
shortDate: "m/d/yy",
mediumDate: "mmm d, yyyy",
longDate: "mmmm d, yyyy",
fullDate: "dddd, mmmm d, yyyy",
shortTime: "h:MM TT",
mediumTime: "h:MM:ss TT",
longTime: "h:MM:ss TT Z",
isoDate: "yyyy-mm-dd",
isoTime: "HH:MM:ss",
isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};
// Internationalization strings
RSUI.util.dateFormat.i18n = {
dayNames: [
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
],
monthNames: [
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
]
};
Date.prototype.format_rs = function (mask, utc) {
return RSUI.util.dateFormat(this, mask, utc);
};
/*
* Needed. Something in DTM uses this function. Don't
* know why it's not there itself.
*/
String.prototype.getHostname = function(){
var a = new RegExp("^((?:f|ht)tp(?:s)?://[^/]+)","im");
return this.match(a) && this.match(a)[1].toString();
};
function ltrim(b,a){
a=a||"\\s";if(typeof b!="undefined"){return b.replace(new RegExp("^["+a+"]+","g"),"")}else{return""}
}
function rtrim(b,a){
a=a||"\\s";if(typeof b!="undefined"){return b.replace(new RegExp("["+a+"]+$","g"),"")}else{return""}
}
rs.community="USA";
rs.pagename="/lp/opdemo-esp";
rs.currency="USD";
rs.omniture_tracksrv="o.rosettastone.com";
rs.omniture_tracksrv_secure="s.rosettastone.com";
rs.urlObject = parseUri(window.document.location.href)