function checkCookie() { } window.EpioData || (window.EpioData = function () { !function (e, o) { var t = e.detect = function () { function e(e) { this.browser = {}, this.browser.family = e || "Other" } function o(e) { return "undefined" != typeof e && null != e } var t = { user_agent_parsers: [{ regex: "^(Opera)/(\\d+)\\.(\\d+) \\(Nintendo Wii", family_replacement: "Wii" }, { regex: "(SeaMonkey|Camino)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)" }, { regex: "(Pale[Mm]oon)/(\\d+)\\.(\\d+)\\.?(\\d+)?", family_replacement: "Pale Moon (Firefox Variant)" }, { regex: "(Fennec)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)", family_replacement: "Firefox Mobile" }, { regex: "(Fennec)/(\\d+)\\.(\\d+)(pre)", family_replacment: "Firefox Mobile" }, { regex: "(Fennec)/(\\d+)\\.(\\d+)", family_replacement: "Firefox Mobile" }, { regex: "Mobile.*(Firefox)/(\\d+)\\.(\\d+)", family_replacement: "Firefox Mobile" }, { regex: "(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?)", family_replacement: "Firefox ($1)" }, { regex: "(Firefox)/(\\d+)\\.(\\d+)(a\\d+[a-z]*)", family_replacement: "Firefox Alpha" }, { regex: "(Firefox)/(\\d+)\\.(\\d+)(b\\d+[a-z]*)", family_replacement: "Firefox Beta" }, { regex: "(Firefox)-(?:\\d+\\.\\d+)?/(\\d+)\\.(\\d+)(a\\d+[a-z]*)", family_replacement: "Firefox Alpha" }, { regex: "(Firefox)-(?:\\d+\\.\\d+)?/(\\d+)\\.(\\d+)(b\\d+[a-z]*)", family_replacement: "Firefox Beta" }, { regex: "(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?", family_replacement: "Firefox ($1)" }, { regex: "(Firefox).*Tablet browser (\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "MicroB" }, { regex: "(MozillaDeveloperPreview)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?" }, { regex: "(Flock)/(\\d+)\\.(\\d+)(b\\d+?)" }, { regex: "(RockMelt)/(\\d+)\\.(\\d+)\\.(\\d+)" }, { regex: "(Navigator)/(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Netscape" }, { regex: "(Navigator)/(\\d+)\\.(\\d+)([ab]\\d+)", family_replacement: "Netscape" }, { regex: "(Netscape6)/(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Netscape" }, { regex: "(MyIBrow)/(\\d+)\\.(\\d+)", family_replacement: "My Internet Browser" }, { regex: "(Opera Tablet).*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?" }, { regex: "(Opera)/.+Opera Mobi.+Version/(\\d+)\\.(\\d+)", family_replacement: "Opera Mobile" }, { regex: "Opera Mobi", family_replacement: "Opera Mobile" }, { regex: "(Opera Mini)/(\\d+)\\.(\\d+)" }, { regex: "(Opera Mini)/att/(\\d+)\\.(\\d+)" }, { regex: "(Opera)/9.80.*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?" }, { regex: "(webOSBrowser)/(\\d+)\\.(\\d+)" }, { regex: "(webOS)/(\\d+)\\.(\\d+)", family_replacement: "webOSBrowser" }, { regex: "(wOSBrowser).+TouchPad/(\\d+)\\.(\\d+)", family_replacement: "webOS TouchPad" }, { regex: "(luakit)", family_replacement: "LuaKit" }, { regex: "(Lightning)/(\\d+)\\.(\\d+)([ab]?\\d+[a-z]*)" }, { regex: "(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?) \\(Swiftfox\\)", family_replacement: "Swiftfox" }, { regex: "(Firefox)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)? \\(Swiftfox\\)", family_replacement: "Swiftfox" }, { regex: "rekonq", family_replacement: "Rekonq" }, { regex: "(conkeror|Conkeror)/(\\d+)\\.(\\d+)\\.?(\\d+)?", family_replacement: "Conkeror" }, { regex: "(konqueror)/(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Konqueror" }, { regex: "(WeTab)-Browser" }, { regex: "(Comodo_Dragon)/(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Comodo Dragon" }, { regex: "(YottaaMonitor)" }, { regex: "(Kindle)/(\\d+)\\.(\\d+)" }, { regex: "(Symphony) (\\d+).(\\d+)" }, { regex: "Minimo" }, { regex: "(CrMo)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Chrome Mobile" }, { regex: "(CriOS)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Chrome Mobile iOS" }, { regex: "(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+) Mobile", family_replacement: "Chrome Mobile" }, { regex: "(chromeframe)/(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Chrome Frame" }, { regex: "(UC Browser)(\\d+)\\.(\\d+)\\.(\\d+)" }, { regex: "(SLP Browser)/(\\d+)\\.(\\d+)", family_replacement: "Tizen Browser" }, { regex: "(Epiphany)/(\\d+)\\.(\\d+).(\\d+)" }, { regex: "(SE 2\\.X) MetaSr (\\d+)\\.(\\d+)", family_replacement: "Sogou Explorer" }, { regex: "(Pingdom.com_bot_version_)(\\d+)\\.(\\d+)", family_replacement: "PingdomBot" }, { regex: "(facebookexternalhit)/(\\d+)\\.(\\d+)", family_replacement: "FacebookBot" }, { regex: "(Twitterbot)/(\\d+)\\.(\\d+)", family_replacement: "TwitterBot" }, { regex: "(AdobeAIR|Chromium|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Shiira|Sunrise|Chrome|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iron|Iris|UP\\.Browser|Bunjaloo|Google Earth|Raven for Mac)/(\\d+)\\.(\\d+)\\.(\\d+)" }, { regex: "(Bolt|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|NetNewsWire|Iron|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris)/(\\d+)\\.(\\d+)" }, { regex: "(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\\d+)\\.(\\d+)\\.(\\d+)" }, { regex: "(iCab|Lunascape|Opera|Android|Jasmine|Polaris|BREW) (\\d+)\\.(\\d+)\\.?(\\d+)?" }, { regex: "(Android) Donut", v2_replacement: "2", v1_replacement: "1" }, { regex: "(Android) Eclair", v2_replacement: "1", v1_replacement: "2" }, { regex: "(Android) Froyo", v2_replacement: "2", v1_replacement: "2" }, { regex: "(Android) Gingerbread", v2_replacement: "3", v1_replacement: "2" }, { regex: "(Android) Honeycomb", v1_replacement: "3" }, { regex: "(IEMobile)[ /](\\d+)\\.(\\d+)", family_replacement: "IE Mobile" }, { regex: "(MSIE) (\\d+)\\.(\\d+).*XBLWP7", family_replacement: "IE Large Screen" }, { regex: "(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+)" }, { regex: "(Firefox)/(\\d+)\\.(\\d+)(pre|[ab]\\d+[a-z]*)?" }, { regex: "(Obigo)InternetBrowser" }, { regex: "(Obigo)\\-Browser" }, { regex: "(Obigo|OBIGO)[^\\d]*(\\d+)(?:.(\\d+))?" }, { regex: "(MAXTHON|Maxthon) (\\d+)\\.(\\d+)", family_replacement: "Maxthon" }, { regex: "(Maxthon|MyIE2|Uzbl|Shiira)", v1_replacement: "0" }, { regex: "(PLAYSTATION) (\\d+)", family_replacement: "PlayStation" }, { regex: "(PlayStation Portable)[^\\d]+(\\d+).(\\d+)" }, { regex: "(BrowseX) \\((\\d+)\\.(\\d+)\\.(\\d+)" }, { regex: "(POLARIS)/(\\d+)\\.(\\d+)", family_replacement: "Polaris" }, { regex: "(Embider)/(\\d+)\\.(\\d+)", family_replacement: "Polaris" }, { regex: "(BonEcho)/(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Bon Echo" }, { regex: "(iPod).+Version/(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Mobile Safari" }, { regex: "(iPod).*Version/(\\d+)\\.(\\d+)", family_replacement: "Mobile Safari" }, { regex: "(iPod)", family_replacement: "Mobile Safari" }, { regex: "(iPhone).*Version/(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Mobile Safari" }, { regex: "(iPhone).*Version/(\\d+)\\.(\\d+)", family_replacement: "Mobile Safari" }, { regex: "(iPhone)", family_replacement: "Mobile Safari" }, { regex: "(iPad).*Version/(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Mobile Safari" }, { regex: "(iPad).*Version/(\\d+)\\.(\\d+)", family_replacement: "Mobile Safari" }, { regex: "(iPad)", family_replacement: "Mobile Safari" }, { regex: "(AvantGo) (\\d+).(\\d+)" }, { regex: "(Avant)", v1_replacement: "1" }, { regex: "^(Nokia)", family_replacement: "Nokia Services (WAP) Browser" }, { regex: "(NokiaBrowser)/(\\d+)\\.(\\d+).(\\d+)\\.(\\d+)" }, { regex: "(NokiaBrowser)/(\\d+)\\.(\\d+).(\\d+)" }, { regex: "(NokiaBrowser)/(\\d+)\\.(\\d+)" }, { regex: "(BrowserNG)/(\\d+)\\.(\\d+).(\\d+)", family_replacement: "NokiaBrowser" }, { regex: "(Series60)/5\\.0", v2_replacement: "0", v1_replacement: "7", family_replacement: "NokiaBrowser" }, { regex: "(Series60)/(\\d+)\\.(\\d+)", family_replacement: "Nokia OSS Browser" }, { regex: "(S40OviBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Nokia Series 40 Ovi Browser" }, { regex: "(Nokia)[EN]?(\\d+)" }, { regex: "(PlayBook).+RIM Tablet OS (\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Blackberry WebKit" }, { regex: "(Black[bB]erry).+Version/(\\d+)\\.(\\d+)\\.(\\d+)", family_replacement: "Blackberry WebKit" }, { regex: "(Black[bB]erry)\\s?(\\d+)", family_replacement: "Blackberry" }, { regex: "(OmniWeb)/v(\\d+)\\.(\\d+)" }, { regex: "(Blazer)/(\\d+)\\.(\\d+)", family_replacement: "Palm Blazer" }, { regex: "(Pre)/(\\d+)\\.(\\d+)", family_replacement: "Palm Pre" }, { regex: "(Links) \\((\\d+)\\.(\\d+)" }, { regex: "(QtWeb) Internet Browser/(\\d+)\\.(\\d+)" }, { regex: "(Silk)/(\\d+)\\.(\\d+)(?:\\.([0-9\\-]+))?" }, { regex: "(AppleWebKit)/(\\d+)\\.?(\\d+)?\\+ .* Version/\\d+\\.\\d+.\\d+ Safari/", family_replacement: "WebKit Nightly" }, { regex: "(Version)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*Safari/", family_replacement: "Safari" }, { regex: "(Safari)/\\d+" }, { regex: "(OLPC)/Update(\\d+)\\.(\\d+)" }, { regex: "(OLPC)/Update()\\.(\\d+)", v1_replacement: "0" }, { regex: "(SEMC\\-Browser)/(\\d+)\\.(\\d+)" }, { regex: "(Teleca)", family_replacement: "Teleca Browser" }, { regex: "(MSIE) (\\d+)\\.(\\d+)", family_replacement: "IE" }], os_parsers: [{ regex: "(Android) (\\d+)\\.(\\d+)(?:[.\\-]([a-z0-9]+))?" }, { regex: "(Android)\\-(\\d+)\\.(\\d+)(?:[.\\-]([a-z0-9]+))?" }, { regex: "(Android) Donut", os_v2_replacement: "2", os_v1_replacement: "1" }, { regex: "(Android) Eclair", os_v2_replacement: "1", os_v1_replacement: "2" }, { regex: "(Android) Froyo", os_v2_replacement: "2", os_v1_replacement: "2" }, { regex: "(Android) Gingerbread", os_v2_replacement: "3", os_v1_replacement: "2" }, { regex: "(Android) Honeycomb", os_v1_replacement: "3" }, { regex: "(Windows Phone 6\\.5)" }, { regex: "(Windows (?:NT 5\\.2|NT 5\\.1))", os_replacement: "Windows XP" }, { regex: "(XBLWP7)", os_replacement: "Windows Phone OS" }, { regex: "(Windows NT 6\\.1)", os_replacement: "Windows 7" }, { regex: "(Windows NT 6\\.0)", os_replacement: "Windows Vista" }, { regex: "(Windows 98|Windows XP|Windows ME|Windows 95|Windows CE|Windows 7|Windows NT 4\\.0|Windows Vista|Windows 2000)" }, { regex: "(Windows NT 6\\.2)", os_replacement: "Windows 8" }, { regex: "(Windows NT 5\\.0)", os_replacement: "Windows 2000" }, { regex: "(Windows Phone OS) (\\d+)\\.(\\d+)" }, { regex: "(Windows ?Mobile)", os_replacement: "Windows Mobile" }, { regex: "(WinNT4.0)", os_replacement: "Windows NT 4.0" }, { regex: "(Win98)", os_replacement: "Windows 98" }, { regex: "(Tizen)/(\\d+)\\.(\\d+)" }, { regex: "(Mac OS X) (\\d+)[_.](\\d+)(?:[_.](\\d+))?" }, { regex: "(?:PPC|Intel) (Mac OS X)" }, { regex: "(CPU OS|iPhone OS) (\\d+)_(\\d+)(?:_(\\d+))?", os_replacement: "iOS" }, { regex: "(iPhone|iPad|iPod); Opera", os_replacement: "iOS" }, { regex: "(iPhone|iPad|iPod).*Mac OS X.*Version/(\\d+)\\.(\\d+)", os_replacement: "iOS" }, { regex: "(CrOS) [a-z0-9_]+ (\\d+)\\.(\\d+)(?:\\.(\\d+))?", os_replacement: "Chrome OS" }, { regex: "(Debian)-(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?" }, { regex: "(Linux Mint)(?:/(\\d+))?" }, { regex: "(Mandriva)(?: Linux)?/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?" }, { regex: "(Symbian[Oo][Ss])/(\\d+)\\.(\\d+)", os_replacement: "Symbian OS" }, { regex: "(Symbian/3).+NokiaBrowser/7\\.3", os_replacement: "Symbian^3 Anna" }, { regex: "(Symbian/3).+NokiaBrowser/7\\.4", os_replacement: "Symbian^3 Belle" }, { regex: "(Symbian/3)", os_replacement: "Symbian^3" }, { regex: "(Series 60|SymbOS|S60)", os_replacement: "Symbian OS" }, { regex: "(MeeGo)" }, { regex: "Symbian [Oo][Ss]", os_replacement: "Symbian OS" }, { regex: "(Black[Bb]erry)[0-9a-z]+/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?", os_replacement: "BlackBerry OS" }, { regex: "(Black[Bb]erry).+Version/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?", os_replacement: "BlackBerry OS" }, { regex: "(RIM Tablet OS) (\\d+)\\.(\\d+)\\.(\\d+)", os_replacement: "BlackBerry Tablet OS" }, { regex: "(Play[Bb]ook)", os_replacement: "BlackBerry Tablet OS" }, { regex: "(Black[Bb]erry)", os_replacement: "Blackberry OS" }, { regex: "(webOS|hpwOS)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?", os_replacement: "webOS" }, { regex: "(SUSE|Fedora|Red Hat|PCLinuxOS)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)" }, { regex: "(SUSE|Fedora|Red Hat|Puppy|PCLinuxOS|CentOS)/(\\d+)\\.(\\d+)\\.(\\d+)" }, { regex: "(Ubuntu|Kindle|Bada|Lubuntu|BackTrack|Red Hat|Slackware)/(\\d+)\\.(\\d+)" }, { regex: "(Windows|OpenBSD|FreeBSD|NetBSD|Ubuntu|Kubuntu|Android|Arch Linux|CentOS|WeTab|Slackware)" }, { regex: "(Linux|BSD)" }], mobile_os_families: ["Windows Phone 6.5", "Windows CE", "Symbian OS"], device_parsers: [{ regex: "HTC ([A-Z][a-z0-9]+) Build", device_replacement: "HTC $1" }, { regex: "HTC ([A-Z][a-z0-9 ]+) \\d+\\.\\d+\\.\\d+\\.\\d+", device_replacement: "HTC $1" }, { regex: "HTC_Touch_([A-Za-z0-9]+)", device_replacement: "HTC Touch ($1)" }, { regex: "USCCHTC(\\d+)", device_replacement: "HTC $1 (US Cellular)" }, { regex: "Sprint APA(9292)", device_replacement: "HTC $1 (Sprint)" }, { regex: "HTC ([A-Za-z0-9]+ [A-Z])", device_replacement: "HTC $1" }, { regex: "HTC-([A-Za-z0-9]+)", device_replacement: "HTC $1" }, { regex: "HTC_([A-Za-z0-9]+)", device_replacement: "HTC $1" }, { regex: "HTC ([A-Za-z0-9]+)", device_replacement: "HTC $1" }, { regex: "(ADR[A-Za-z0-9]+)", device_replacement: "HTC $1" }, { regex: "(HTC)" }, { regex: "SonyEricsson([A-Za-z0-9]+)/", device_replacement: "Ericsson $1" }, { regex: "Android[\\- ][\\d]+\\.[\\d]+\\; [A-Za-z]{2}\\-[A-Za-z]{2}\\; WOWMobile (.+) Build" }, { regex: "Android[\\- ][\\d]+\\.[\\d]+\\.[\\d]+; [A-Za-z]{2}\\-[A-Za-z]{2}\\; (.+) Build" }, { regex: "Android[\\- ][\\d]+\\.[\\d]+\\-update1\\; [A-Za-z]{2}\\-[A-Za-z]{2}\\; (.+) Build" }, { regex: "Android[\\- ][\\d]+\\.[\\d]+\\; [A-Za-z]{2}\\-[A-Za-z]{2}\\; (.+) Build" }, { regex: "Android[\\- ][\\d]+\\.[\\d]+\\.[\\d]+; (.+) Build" }, { regex: "NokiaN([0-9]+)", device_replacement: "Nokia N$1" }, { regex: "Nokia([A-Za-z0-9\\v-]+)", device_replacement: "Nokia $1" }, { regex: "NOKIA ([A-Za-z0-9\\-]+)", device_replacement: "Nokia $1" }, { regex: "Nokia ([A-Za-z0-9\\-]+)", device_replacement: "Nokia $1" }, { regex: "Lumia ([A-Za-z0-9\\-]+)", device_replacement: "Lumia $1" }, { regex: "Symbian", device_replacement: "Nokia" }, { regex: "(PlayBook).+RIM Tablet OS", device_replacement: "Blackberry Playbook" }, { regex: "(Black[Bb]erry [0-9]+);" }, { regex: "Black[Bb]erry([0-9]+)", device_replacement: "BlackBerry $1" }, { regex: "(Pre)/(\\d+)\\.(\\d+)", device_replacement: "Palm Pre" }, { regex: "(Pixi)/(\\d+)\\.(\\d+)", device_replacement: "Palm Pixi" }, { regex: "(Touchpad)/(\\d+)\\.(\\d+)", device_replacement: "HP Touchpad" }, { regex: "HPiPAQ([A-Za-z0-9]+)/(\\d+).(\\d+)", device_replacement: "HP iPAQ $1" }, { regex: "Palm([A-Za-z0-9]+)", device_replacement: "Palm $1" }, { regex: "Treo([A-Za-z0-9]+)", device_replacement: "Palm Treo $1" }, { regex: "webOS.*(P160UNA)/(\\d+).(\\d+)", device_replacement: "HP Veer" }, { regex: "(Kindle Fire)" }, { regex: "(Kindle)" }, { regex: "(Silk)/(\\d+)\\.(\\d+)(?:\\.([0-9\\-]+))?", device_replacement: "Kindle Fire" }, { regex: "(iPad) Simulator;" }, { regex: "(iPad);" }, { regex: "(iPod);" }, { regex: "(iPhone) Simulator;" }, { regex: "(iPhone);" }, { regex: "Nexus\\ ([A-Za-z0-9\\-]+)", device_replacement: "Nexus $1" }, { regex: "acer_([A-Za-z0-9]+)_", device_replacement: "Acer $1" }, { regex: "acer_([A-Za-z0-9]+)_", device_replacement: "Acer $1" }, { regex: "Amoi\\-([A-Za-z0-9]+)", device_replacement: "Amoi $1" }, { regex: "AMOI\\-([A-Za-z0-9]+)", device_replacement: "Amoi $1" }, { regex: "Asus\\-([A-Za-z0-9]+)", device_replacement: "Asus $1" }, { regex: "ASUS\\-([A-Za-z0-9]+)", device_replacement: "Asus $1" }, { regex: "BIRD\\-([A-Za-z0-9]+)", device_replacement: "Bird $1" }, { regex: "BIRD\\.([A-Za-z0-9]+)", device_replacement: "Bird $1" }, { regex: "BIRD ([A-Za-z0-9]+)", device_replacement: "Bird $1" }, { regex: "Dell ([A-Za-z0-9]+)", device_replacement: "Dell $1" }, { regex: "DoCoMo/2\\.0 ([A-Za-z0-9]+)", device_replacement: "DoCoMo $1" }, { regex: "([A-Za-z0-9]+)\\_W\\;FOMA", device_replacement: "DoCoMo $1" }, { regex: "([A-Za-z0-9]+)\\;FOMA", device_replacement: "DoCoMo $1" }, { regex: "vodafone([A-Za-z0-9]+)", device_replacement: "Huawei Vodafone $1" }, { regex: "i\\-mate ([A-Za-z0-9]+)", device_replacement: "i-mate $1" }, { regex: "Kyocera\\-([A-Za-z0-9]+)", device_replacement: "Kyocera $1" }, { regex: "KWC\\-([A-Za-z0-9]+)", device_replacement: "Kyocera $1" }, { regex: "Lenovo\\-([A-Za-z0-9]+)", device_replacement: "Lenovo $1" }, { regex: "Lenovo\\_([A-Za-z0-9]+)", device_replacement: "Lenovo $1" }, { regex: "LG/([A-Za-z0-9]+)", device_replacement: "LG $1" }, { regex: "LG-LG([A-Za-z0-9]+)", device_replacement: "LG $1" }, { regex: "LGE-LG([A-Za-z0-9]+)", device_replacement: "LG $1" }, { regex: "LGE VX([A-Za-z0-9]+)", device_replacement: "LG $1" }, { regex: "LG ([A-Za-z0-9]+)", device_replacement: "LG $1" }, { regex: "LGE LG\\-AX([A-Za-z0-9]+)", device_replacement: "LG $1" }, { regex: "LG\\-([A-Za-z0-9]+)", device_replacement: "LG $1" }, { regex: "LGE\\-([A-Za-z0-9]+)", device_replacement: "LG $1" }, { regex: "LG([A-Za-z0-9]+)", device_replacement: "LG $1" }, { regex: "(KIN)\\.One (\\d+)\\.(\\d+)", device_replacement: "Microsoft $1" }, { regex: "(KIN)\\.Two (\\d+)\\.(\\d+)", device_replacement: "Microsoft $1" }, { regex: "(Motorola)\\-([A-Za-z0-9]+)" }, { regex: "MOTO\\-([A-Za-z0-9]+)", device_replacement: "Motorola $1" }, { regex: "MOT\\-([A-Za-z0-9]+)", device_replacement: "Motorola $1" }, { regex: "Philips([A-Za-z0-9]+)", device_replacement: "Philips $1" }, { regex: "Philips ([A-Za-z0-9]+)", device_replacement: "Philips $1" }, { regex: "SAMSUNG-([A-Za-z0-9\\-]+)", device_replacement: "Samsung $1" }, { regex: "SAMSUNG\\; ([A-Za-z0-9\\-]+)", device_replacement: "Samsung $1" }, { regex: "Softbank/1\\.0/([A-Za-z0-9]+)", device_replacement: "Softbank $1" }, { regex: "Softbank/2\\.0/([A-Za-z0-9]+)", device_replacement: "Softbank $1" }, { regex: "(hiptop|avantgo|plucker|xiino|blazer|elaine|up.browser|up.link|mmp|smartphone|midp|wap|vodafone|o2|pocket|mobile|pda)", device_replacement: "Generic Smartphone" }, { regex: "^(1207|3gso|4thp|501i|502i|503i|504i|505i|506i|6310|6590|770s|802s|a wa|acer|acs\\-|airn|alav|asus|attw|au\\-m|aur |aus |abac|acoo|aiko|alco|alca|amoi|anex|anny|anyw|aptu|arch|argo|bell|bird|bw\\-n|bw\\-u|beck|benq|bilb|blac|c55/|cdm\\-|chtm|capi|comp|cond|craw|dall|dbte|dc\\-s|dica|ds\\-d|ds12|dait|devi|dmob|doco|dopo|el49|erk0|esl8|ez40|ez60|ez70|ezos|ezze|elai|emul|eric|ezwa|fake|fly\\-|fly\\_|g\\-mo|g1 u|g560|gf\\-5|grun|gene|go.w|good|grad|hcit|hd\\-m|hd\\-p|hd\\-t|hei\\-|hp i|hpip|hs\\-c|htc |htc\\-|htca|htcg)", device_replacement: "Generic Feature Phone" }, { regex: "^(htcp|htcs|htct|htc\\_|haie|hita|huaw|hutc|i\\-20|i\\-go|i\\-ma|i230|iac|iac\\-|iac/|ig01|im1k|inno|iris|jata|java|kddi|kgt|kgt/|kpt |kwc\\-|klon|lexi|lg g|lg\\-a|lg\\-b|lg\\-c|lg\\-d|lg\\-f|lg\\-g|lg\\-k|lg\\-l|lg\\-m|lg\\-o|lg\\-p|lg\\-s|lg\\-t|lg\\-u|lg\\-w|lg/k|lg/l|lg/u|lg50|lg54|lge\\-|lge/|lynx|leno|m1\\-w|m3ga|m50/|maui|mc01|mc21|mcca|medi|meri|mio8|mioa|mo01|mo02|mode|modo|mot |mot\\-|mt50|mtp1|mtv |mate|maxo|merc|mits|mobi|motv|mozz|n100|n101|n102|n202|n203|n300|n302|n500|n502|n505|n700|n701|n710|nec\\-|nem\\-|newg|neon)", device_replacement: "Generic Feature Phone" }, { regex: "^(netf|noki|nzph|o2 x|o2\\-x|opwv|owg1|opti|oran|ot\\-s|p800|pand|pg\\-1|pg\\-2|pg\\-3|pg\\-6|pg\\-8|pg\\-c|pg13|phil|pn\\-2|pt\\-g|palm|pana|pire|pock|pose|psio|qa\\-a|qc\\-2|qc\\-3|qc\\-5|qc\\-7|qc07|qc12|qc21|qc32|qc60|qci\\-|qwap|qtek|r380|r600|raks|rim9|rove|s55/|sage|sams|sc01|sch\\-|scp\\-|sdk/|se47|sec\\-|sec0|sec1|semc|sgh\\-|shar|sie\\-|sk\\-0|sl45|slid|smb3|smt5|sp01|sph\\-|spv |spv\\-|sy01|samm|sany|sava|scoo|send|siem|smar|smit|soft|sony|t\\-mo|t218|t250|t600|t610|t618|tcl\\-|tdg\\-|telm|tim\\-|ts70|tsm\\-|tsm3|tsm5|tx\\-9|tagt)", device_replacement: "Generic Feature Phone" }, { regex: "^(talk|teli|topl|tosh|up.b|upg1|utst|v400|v750|veri|vk\\-v|vk40|vk50|vk52|vk53|vm40|vx98|virg|vite|voda|vulc|w3c |w3c\\-|wapj|wapp|wapu|wapm|wig |wapi|wapr|wapv|wapy|wapa|waps|wapt|winc|winw|wonu|x700|xda2|xdag|yas\\-|your|zte\\-|zeto|aste|audi|avan|blaz|brew|brvw|bumb|ccwa|cell|cldc|cmd\\-|dang|eml2|fetc|hipt|http|ibro|idea|ikom|ipaq|jbro|jemu|jigs|keji|kyoc|kyok|libw|m\\-cr|midp|mmef|moto|mwbp|mywa|newt|nok6|o2im|pant|pdxg|play|pluc|port|prox|rozo|sama|seri|smal|symb|treo|upsi|vx52|vx53|vx60|vx61|vx70|vx80|vx81|vx83|vx85|wap\\-|webc|whit|wmlb|xda\\-|xda\\_)", device_replacement: "Generic Feature Phone" }, { regex: "(bot|borg|google(^tv)|yahoo|slurp|msnbot|msrbot|openbot|archiver|netresearch|lycos|scooter|altavista|teoma|gigabot|baiduspider|blitzbot|oegp|charlotte|furlbot|http%20client|polybot|htdig|ichiro|mogimogi|larbin|pompos|scrubby|searchsight|seekbot|semanticdiscovery|silk|snappy|speedy|spider|voila|vortex|voyager|zao|zeal|fast\\-webcrawler|converacrawler|dataparksearch|findlinks)", device_replacement: "Spider" }], mobile_user_agent_families: ["Firefox Mobile", "Opera Mobile", "Opera Mini", "Mobile Safari", "webOS", "IE Mobile", "Playstation Portable", "Nokia", "Blackberry", "Palm", "Silk", "Android", "Maemo", "Obigo", "Netfront", "AvantGo", "Teleca", "SEMC-Browser", "Bolt", "Iris", "UP.Browser", "Symphony", "Minimo", "Bunjaloo", "Jasmine", "Dolfin", "Polaris", "BREW", "Chrome Mobile", "UC Browser", "Tizen Browser"] }, i = function () { }, n = {}, r = (t.mobile_user_agent_families.map(function (e) { n[e] = !0 }), t.mobile_os_families.map(function (e) { n[e] = !0 }), t.user_agent_parsers.map(function (o) { function t(o) { var t = o.match(i); if (!t) return null; var d = r ? r.replace("$1", t[1]) : t[1], l = new e(d); return l.browser.major = parseInt(a ? a : t[2]), l.browser.minor = t[3] ? parseInt(t[3]) : null, l.browser.patch = t[4] ? parseInt(t[4]) : null, l.isMobile = n.hasOwnProperty(d), l.isSpider = "Spider" === d, l } var i = new RegExp(o.regex), r = o.family_replacement, a = o.major_version_replacement; return t })), a = function (e, o) { for (var t = 0; t < o.length; t++) { var i = o[t](e); if (i) break } return i }, d = function (e) { return t[e + "_parsers"].map(function (o) { function t(e) { var o = e.match(i); if (!o) return null; var t = {}; return t.family = n ? n.replace("$1", o[1]) : o[1], t.major = o[2] ? parseInt(o[2]) : null, t.minor = o[3] ? parseInt(o[3]) : null, t.patch = o[4] ? parseInt(o[4]) : null, t } var i = new RegExp(o.regex), n = o[e + "_replacement"]; return t }) }, l = d("os"), s = d("device"); return e.prototype.toVersionString = function (e) { var t = ""; return e = e || "browser", o(this[e]) && o(this[e].major) && (t += this[e].major, o(this[e].minor) && (t += "." + this[e].minor, o(this[e].patch) && (t += "." + this[e].patch))), t }, e.prototype.toString = function (e) { e = e || "browser"; var t = this.toVersionString(e); return t && (t = " " + t), this[e] && o(this[e].family) ? this[e].family + t : "" }, e.prototype.toJSON = function (e) { return e = e || "browser", this[e] || {} }, i.parse = function (o) { var t = a(o, r); return t = t ? t : new e, t.os = a(o, l), t.device = a(o, s), t }, i }(); "undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = t), exports.detect = t) : e.detect = t, "function" == typeof define && define.amd && define(function (e) { return t }) }(window), navigator.mobile = !1, function (e) { (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0, 4))) && (navigator.mobile = !0) }(navigator.userAgent || navigator.vendor || window.opera); var e = !0; return function () { if (window && window.console && console.log) { var o = "EpioData ::", t = Function.prototype.bind.call(console.log, console), i = Function.prototype.bind.call(console.error, console), n = Function.prototype.bind.call(console.warn, console); console.epio = {}, console.epio.error = function () { Array.prototype.unshift.call(arguments, o), i.apply(this, arguments) }, console.epio.log = function () { e && (Array.prototype.unshift.call(arguments, o), t.apply(this, arguments)) }, console.epio.warn = function () { Array.prototype.unshift.call(arguments, o), n.apply(this, arguments) } } }(), String.format = function () { for (var e = arguments[0], o = 0; o < arguments.length - 1; o++) { var t = new RegExp("\\{" + o + "\\}", "gm"); e = e.replace(t, arguments[o + 1]) } return e }, String.isNullOrWhitespace = function (e) { return "undefined" == typeof e || null == e ? !0 : e.replace(/\s/g, "").length < 1 }, Date.prototype.addHours = function (e) { return this.setTime(this.getTime() + 60 * e * 60 * 1e3), this }, { Constants: { Cookies: { COOKIE_KNOWN_CONTACT_ID_OLD: "BSContactID", COOKIE_KNOWN_CONTACT_ID_NEW: "epiodata.contact.known.id", COOKIE_UNKNOWN_CONTACT_ID_OLD: "BSUContactID", COOKIE_UNKNOWN_CONTACT_ID_NEW: "epiodata.contact.unknown.id", COOKIE_VISIT_CODE_OLD: "VisitCode", COOKIE_VISIT_CODE_NEW: "epiodata.visitcode", COOKIE_STEP_ID_OLD: "StepID", COOKIE_STEP_ID_NEW: "epiodata.stepid" } }, Settings: { Location: function () { return window.location } }, BrowserData: detect.parse(navigator.userAgent), connect: function (e) { console.epio.log("Connecting"), "undefined" != typeof e && null != e && ("function" == typeof e ? this.Settings.Location = e : this.Settings.Location = function () { return e }), console.epio.log("Location: " + this.Settings.Location()), this.trackEvent() }, generateUnknownContactID: function () { try { for (var e = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz", o = 20, t = 0, i = "", n = 0; o > n; n++)t = Math.round(Math.random() * e.length), i += e.charAt(t); return i } catch (r) { } }, getCookie: function (e) { if (document.cookie.length > 0) { var o = document.cookie.indexOf(e + "="); if (-1 != o) { o = o + e.length + 1; var t = document.cookie.indexOf(";", o); return -1 == t && (t = document.cookie.length), unescape(document.cookie.substring(o, t)) } } return "" }, getKnownContactId: function () { var e = this.getCookie(EpioData.Constants.Cookies.COOKIE_KNOWN_CONTACT_ID_NEW); return String.isNullOrWhitespace(e) && (e = this.getCookie(EpioData.Constants.Cookies.COOKIE_KNOWN_CONTACT_ID_OLD), String.isNullOrWhitespace(e) || (console.epio.warn("Moving known contact Id"), this.setCookie(EpioData.Constants.Cookies.COOKIE_KNOWN_CONTACT_ID_NEW, e, 365), this.removeCookie(EpioData.Constants.Cookies.COOKIE_KNOWN_CONTACT_ID_OLD))), String.isNullOrWhitespace(e) && (e = EpioData.getQueryValue("CID"), String.isNullOrWhitespace(e) || (console.epio.warn("Received contact Id in query"), this.setCookie(EpioData.Constants.Cookies.COOKIE_KNOWN_CONTACT_ID_NEW, e, 365), this.removeCookie(EpioData.Constants.Cookies.COOKIE_KNOWN_CONTACT_ID_OLD))), "undefined" == e || null == e ? "" : e }, getQueryValue: function (e, o) { var t = new RegExp("[?&]" + e + "=([^&#;]*)", "i"), i = t.exec(window.location.href); return i ? i[1] : o }, getStepId: function () { var e = this.getCookie(EpioData.Constants.Cookies.COOKIE_STEP_ID_NEW); return String.isNullOrWhitespace(e) && (e = this.getCookie(EpioData.Constants.Cookies.COOKIE_STEP_ID_OLD), String.isNullOrWhitespace(e) || (console.epio.warn("Moving step Id"), this.setCookie(EpioData.Constants.Cookies.COOKIE_STEP_ID_NEW, e, 365), this.removeCookie(EpioData.Constants.Cookies.COOKIE_STEP_ID_OLD))), String.isNullOrWhitespace(e) && (e = EpioData.getQueryValue("BSD_SID"), String.isNullOrWhitespace(e) || (console.epio.warn("Received step Id in query"), this.setCookie(EpioData.Constants.Cookies.COOKIE_STEP_ID_NEW, e, 365), this.removeCookie(EpioData.Constants.Cookies.COOKIE_STEP_ID_OLD))), "undefined" == e || String.isNullOrWhitespace(e) ? 0 : e }, getUnknownContactId: function () { var e = this.getCookie(EpioData.Constants.Cookies.COOKIE_UNKNOWN_CONTACT_ID_NEW); return String.isNullOrWhitespace(e) && (e = this.getCookie(EpioData.Constants.Cookies.COOKIE_UNKNOWN_CONTACT_ID_OLD), String.isNullOrWhitespace(e) || (console.epio.warn("Moving unknown contact Id"), this.setCookie(EpioData.Constants.Cookies.COOKIE_UNKNOWN_CONTACT_ID_NEW, e, 365), this.removeCookie(EpioData.Constants.Cookies.COOKIE_UNKNOWN_CONTACT_ID_OLD))), "undefined" == e || String.isNullOrWhitespace(e) ? "" : e }, getVisitCode: function () { var e = EpioData.getCookie(EpioData.Constants.Cookies.COOKIE_VISIT_CODE_NEW); return String.isNullOrWhitespace(e) && (e = this.getCookie(EpioData.Constants.Cookies.COOKIE_VISIT_CODE_OLD), String.isNullOrWhitespace(e) || (console.epio.warn("Moving visit code"), this.setCookie(EpioData.Constants.Cookies.COOKIE_VISIT_CODE_NEW, e, 365), this.removeCookie(EpioData.Constants.Cookies.COOKIE_VISIT_CODE_OLD))), String.isNullOrWhitespace(e) && (e = (new Date).getTime(), EpioData.setCookie(EpioData.Constants.Cookies.COOKIE_VISIT_CODE_NEW, e, null), this.removeCookie(EpioData.Constants.Cookies.COOKIE_VISIT_CODE_OLD)), e }, isMobile: function () { return navigator.mobile }, logVisit: function (e, o, t, i, n) { var r = new Date; r = r.getTime(); var a = EpioData.parseUri(EpioData.Settings.Location()), d = this.BrowserData, l = { event: { action: n, date: r, stepId: i, visitCode: e }, contact: { browser: null == d.browser ? {} : { family: d.browser.family, major: d.browser.major, minor: d.browser.minor }, device: null == d.device ? {} : { family: d.device.family, major: d.device.major, minor: d.device.minor, type: d.device.type }, os: null == d.os ? {} : { family: d.os.family, major: d.os.major, minor: d.os.minor }, knownContactId: o, unknownContactId: t }, url: { anchor: a.anchor, directory: a.directory, domain: a.authority, file: a.file, protocol: a.protocol, query: a.query, raw: a.source, referrer: EpioData.parseUri(document.referrer).source }, img: "true" }, s = new XMLHttpRequest; s.open("POST", "//connect.epiodata.com/web-event.php", !0), s.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"), s.onreadystatechange = function () { 4 === this.readyState && (this.status >= 200 && this.status < 400 ? console.epio.log("Connection complete") : console.epio.error("Connection failed")) }, s.send("info=" + encodeURIComponent(JSON.stringify(l))) }, parseUri: function (e) { for (var o = { strictMode: !1, 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*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ } }, t = o.parser[o.strictMode ? "strict" : "loose"].exec(e), i = {}, n = 14; n--;)i[o.key[n]] = t[n] || ""; return i[o.q.name] = {}, i[o.key[12]].replace(o.q.parser, function (e, t, n) { t && (i[o.q.name][t] = n) }), i }, removeCookie: function (e) { EpioData.getCookie(e) && (document.cookie = e + "=;expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/") }, setCookie: function (e, o, t) { var i = new Date; i.setDate(i.getDate() + t), document.cookie = e + "=" + escape(o) + (null == t ? "" : ";expires=" + i.toGMTString()) + "; path=/" }, trackEvent: function (e) { var o = this.getKnownContactId(), t = this.getUnknownContactId(), i = this.getVisitCode(), n = this.getStepId(); String.isNullOrWhitespace(o) || String.isNullOrWhitespace(t) ? String.isNullOrWhitespace(o) ? (String.isNullOrWhitespace(t) && (t = EpioData.generateUnknownContactID() + "-" + i, EpioData.setCookie(EpioData.Constants.Cookies.COOKIE_UNKNOWN_CONTACT_ID_NEW, t, 365)), EpioData.logVisit(i, "", t, n, e)) : this.logVisit(i, o, "", n, e) : (EpioData.logVisit(i, o, t, n, e), EpioData.removeCookie(EpioData.Constants.Cookies.COOKIE_UNKNOWN_CONTACT_ID_NEW)) } } }()), window.EpioDataSignup || (window.EpioDataSignup = function () { function o(e, o, t) { e.addEventListener ? e.addEventListener(o, t) : e.attachEvent("on" + o, function () { t.call(e) }) } function t(e, o) { for (var t = 0; t < e.length; t++)o(t, e[t]) } var i = window.addEventListener ? "addEventListener" : "attachEvent", n = window[i], r = "attachEvent" == i ? "onmessage" : "message"; n(r, function (e) { event.origin.indexOf("epiodata.com") < 0 || "signup" == e.data.toLowerCase() && EpioData.trackEvent(EpioDataSignup.ActiveSignup.name + (window.EpioDataSignup.ActiveSignup.AlternateStyle ? window.EpioDataSignup.ActiveSignup.AlternateStyle : "") + "Signup") }, !1); var a = function (e) { e = e || {}; for (var o = 1; o < arguments.length; o++) { var t = arguments[o]; if (t) for (var i in t) t.hasOwnProperty(i) && ("object" == typeof t[i] ? e[i] = a(e[i], t[i]) : e[i] = t[i]) } return e }, d = function (e, o, t) { var i, n = []; t = !!t; for (var r = 0, a = e.length; a > r; r++)i = !!o(e[r], r), t !== i && n.push(e[r]); return n }; return { ActiveSignup: null, Constants: { DAYS_BETWEEN_SIGNUPS: 7, DISPLAY_TYPE: { Center_Blocking: 0, Center_NonBlocking: 1, Inline: 2 }, SIZES: { DEFAULT_POPUP_WIDTH: 320, DEFAULT_POPUP_HEIGHT: 295 } }, Settings: {}, Signups: [], displayActiveSignup: function () { if (null == this.ActiveSignup) return void console.epio.warn("Asked to display active signup but none was found"); console.epio.log("Drawing active signup"), height = this.ActiveSignup.height > 0 ? this.ActiveSignup.height : this.Constants.SIZES.DEFAULT_POPUP_HEIGHT, width = this.ActiveSignup.width > 0 ? this.ActiveSignup.width : this.Constants.SIZES.DEFAULT_POPUP_WIDTH; var t = window.document.documentElement.clientWidth - 20; height = width > t ? t * (height / width) : height, width = width > t ? t : width, marginTop = height / 2, marginLeft = width / 2; var i = this.ActiveSignup.name.toLowerCase(), n = this.ActiveSignup.widgetUrl; n.indexOf("signup.epiodata.com") >= 0 && console.epio.warn("Using staging signup"), n += n.indexOf("#") < 0 ? "#" : "&", n += location.hostname, this.ActiveSignup.AlternateStyle && (n += "&" + this.ActiveSignup.AlternateStyle); var r = window.EpioData.BrowserData, a = null == r || null == r.device ? "fixed" : "iPhone" == r.device.family || "iPad" == r.device.family ? "absolute" : "fixed"; console.epio.log("Using display type " + this.Settings.DisplayType); var d = document.getElementsByTagName("body")[0]; switch (this.Settings.DisplayType) { case this.Constants.DISPLAY_TYPE.Inline: console.epio.error('Unsupported display type "Inline"'); break; case this.Constants.DISPLAY_TYPE.Center_Blocking: console.epio.error('Unsupported display type "Center_Blocking"'); break; case this.Constants.DISPLAY_TYPE.Center_NonBlocking: default: console.epio.log("Adding non-modal signup " + i); var l = document.createElement("div"); l.setAttribute("id", i), l.style.cssText = "position: " + a + "; width: " + width + "px; height: " + height + "px; top: 33%; left: 50%; margin-top: -" + marginTop + "px; margin-left: -" + marginLeft + "px; z-index:99998;"; var s = document.createElement("iframe"); s.setAttribute("id", "bsd-modal"), s.setAttribute("src", n), s.setAttribute("width", width), s.setAttribute("height", height), s.setAttribute("frameborder", "0"), s.style.cssText = "display: inline;"; var c = document.createElement("div"); c.setAttribute("id", "close-modal"), c.style.cssText = "position: " + a + "; width: 30px; height: 35px; top 33%; margin-left: " + (width - 30) + "px; display: inline; vertical-align: top; padding: 0; background-color:#206FA8; color:white; cursor:pointer; text-align:center; line-height:38px;"; var p = document.createTextNode(" X "); c.appendChild(p), l.appendChild(c), l.appendChild(s), d.appendChild(l) }var c = document.getElementById("close-modal"), m = document.getElementById(i); o(c, "click", function () { m.parentNode.removeChild(m) }), o(document, "keydown", function () { 27 === e.keyCode && m.parentNode.removeChild(m) }); var g = this.Constants.DAYS_BETWEEN_SIGNUPS; this.ActiveSignup.daysBetween && g > 0 && (g = this.ActiveSignup.daysBetween), EpioData.setCookie(this.ActiveSignup.name + "ModalFired", !0, g), EpioData.setCookie(this.ActiveSignup.name + "ModalFiredOn", new Date, g), EpioData.trackEvent(this.ActiveSignup.name + (this.ActiveSignup.AlternateStyle ? this.ActiveSignup.AlternateStyle : "") + "ModalFired") }, getRandomNumberInRange: function (e, o) { return e = Math.ceil(e), o = Math.floor(o), Math.floor(Math.random() * (o - e + 1)) + e }, getSubscriber: function (e) { console.epio.log("Retrieving subscriber data"); var o = EpioData.getKnownContactId(), t = EpioData.parseUri(EpioData.Settings.Location()), i = t.authority, n = EpioData.getCookie("epiodata.contact"); if ("" == n) if (n = { domain: i }, String.isNullOrWhitespace(o)) e({ domain: i }); else { var r = new XMLHttpRequest; r.open("POST", "//connect.epiodata.com/Popups/query.php", !0), r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"), r.onreadystatechange = function () { if (4 === this.readyState) if (this.status >= 200 && this.status < 400) { var o = this.responseText; null != o && "" != o && (console.epio.log("Retreived subscriber data"), o = JSON.parse(o), n = a(n, o), console.epio.log("Caching subscriber data"), EpioData.setCookie("epiodata.contact", JSON.stringify(n), .5), e(n)) } else console.epio.error("Error retrieving contact info") }, r.send("cid=" + o + "&domain=" + i), r = null } else console.epio.log("Using cached subscriber data"), n = JSON.parse(n), n.domain = i, e(n) }, getSignup: function () { var e = window.location.pathname, o = d(this.Signups, function (e, o) { if (null == e.group) return !1; for (var t = e.group, i = t.separateByHours, n = 0; n < t.signups.length; n++) { var r = t.signups[n], a = EpioData.getCookie(r.name + "ModalFiredOn"); if (null != a && "" != a && new Date(a) > (new Date).addHours(-i)) return console.epio.log("A grouped signup was found that displayed on " + a + "; removing group from consideration"), !1 } return !0 }); console.epio.log("Kept " + o.length + " group(s) of signups"), this.Signups = d(this.Signups, function (e, o) { return null == e.group }); for (var t = 0; t < o.length; t++)for (var i = 0; i < o[t].group.signups.length; i++)this.Signups.push(o[t].group.signups[i]); var n = d(this.Signups, function (o, t) { if (null != o.group) { console.epio.log("Evaluating signup group"); for (var i = o.group.separateByHours, n = 0; n < o.group.signups.length; n++) { var r = o.group.signups[n], a = EpioData.getCookie(r.name + "ModalFired"); if (null != a && "" != a && a < (new Date).addHours(-i)) return console.epio.log("A grouped signup was found that displayed on " + a + "; removing group from consideration"), !1 } for (var d = !0, n = 0; n < o.group.signups.length; n++) { var l = !1; l = "function" == typeof o.group.signups[n].targetUrl ? o.group.signups[n].targetUrl() : e.indexOf(o.group.signups[n].targetUrl) >= 0, d = d || l } return d } return "function" == typeof o.targetUrl ? o.targetUrl() : e.indexOf(o.targetUrl) >= 0 }); return console.epio.log("Found " + n.length + " candidate signup(s) for this page"), 0 == n.length ? null : (n = d(n, function (e, o) { var t = EpioData.getCookie(e.name + "ModalFired"); return "" == t || null === t }), console.epio.log("Reduced to " + n.length + " candidate signup(s) that have not been shown recently"), 0 == n.length ? null : void this.getSubscriber(function (e) { if (n = d(n, function (o, t) { return "true" != e[o.subscriptionKey] && 1 != e[o.subscriptionKey] }), console.epio.log("Reduced to " + n.length + " candidate signup(s) to which the contact is not subscribed"), 0 == n.length) EpioDataSignup.ActiveSignup = null; else { var o = 0; n.length > 1 && (console.epio.log("Choosing a signup at random"), o = EpioDataSignup.getRandomNumberInRange(0, n.length - 1)), EpioDataSignup.ActiveSignup = n[o] } return null == EpioDataSignup.ActiveSignup ? void console.epio.log("No signup found") : (EpioData.isMobile() && null != EpioDataSignup.ActiveSignup.mobile || (console.epio.log("Displaying signup for '" + EpioDataSignup.ActiveSignup.name + "'"), EpioDataSignup.displayActiveSignup()), void console.epio.log("Signup complete")) })) }, signup: function (e, o) { return console.epio.log("Signup"), 0 == document.getElementsByTagName("body").length ? (console.epio.log("Deferring execution"), void (document.addEventListener ? document.addEventListener("DOMContentLoaded", function () { window.EpioDataSignup.signup(e, o) }) : window.addEventListener ? window.addEventListener("load", function () { window.EpioDataSignup.signup(e, o) }) : window.attachEvent("onload", function () { window.EpioDataSignup.signup(e, o) }))) : (t(o, function i(e, o) { if (o.ABTest) { var n = EpioDataSignup.getRandomNumberInRange(0, 1); if (1 === n) { console.epio.log("Switching to challenger style for " + o.name); var r = o.ABTest; delete o.ABTest, o = a(o, r) } else console.epio.log("Sticking with champion style for " + o.name) } else o.group && t(o.group.signups, i) }), this.Settings.DisplayType = e.DisplayType, this.Settings.InlineAfterSelector = e.InlineAfterSelector, this.Signups = o, void this.getSignup()) } } }()), window.EpioDataModals || (window.EpioDataModals = function () { return [{ height: window.document.documentElement.clientWidth < 420 ? window.document.documentElement.clientWidth : 420, name: "Ballot", subscriptionKey: "custom_NewsLetter_Political", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("news/politics-government") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_Political", width: window.document.documentElement.clientWidth < 420 ? window.document.documentElement.clientWidth : 420 }, { height: window.document.documentElement.clientWidth < 420 ? window.document.documentElement.clientWidth : 420, name: "Seniors", subscriptionKey: "custom_NewsLetter_Seniors", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("living/health-family") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_Seniors", width: window.document.documentElement.clientWidth < 420 ? window.document.documentElement.clientWidth : 420 }, { height: window.document.documentElement.clientWidth < 420 ? window.document.documentElement.clientWidth : 420, name: "SouthPark", subscriptionKey: "custom_NewsLetter_SouthPark", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("news/local/community/south-charlotte") >= 0 || window.location.hostname.indexOf("southparkmagazine.com") >= 0 && "" != window.location.search }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_SouthPark", width: window.document.documentElement.clientWidth < 420 ? window.document.documentElement.clientWidth : 420 }, { height: window.document.documentElement.clientWidth < 420 ? window.document.documentElement.clientWidth : 420, name: "LakeNorman", subscriptionKey: "custom_NewsLetter_LakeNorman", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("news/local/community/lake-norman-mooresville") >= 0 || window.location.hostname.indexOf("lakenormanmagazine.com") >= 0 && "" != window.location.search }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_LakeNorman", width: window.document.documentElement.clientWidth < 420 ? window.document.documentElement.clientWidth : 420 }, { group: { separateByHours: 1, signups: [{ height: window.document.documentElement.clientWidth < 420 ? .92 * window.document.documentElement.clientWidth : 386, name: "Daily", subscriptionKey: "custom_NewsLetter_HeadLines", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("/news") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_HeadLines", width: window.document.documentElement.clientWidth < 420 ? window.document.documentElement.clientWidth : 420 }, { height: 430, name: "SouthCharlotteCommunity", subscriptionKey: "custom_NewsLetter_SouthCharlotteCommunity", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("news/local/community/south-charlotte") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_SouthCharlotteCommunity", width: 468 }, { height: 430, name: "LakeNormanCommunity", subscriptionKey: "custom_NewsLetter_LakeNormanCommunity", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("news/local/community/lake-norman-mooresville") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_LakeNormanCommunity", width: 466 }, { height: 435, name: "CollegeBound", subscriptionKey: "custom_NewsLetter_CollegeBound", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("local/education") >= 0 || window.location.hostname.indexOf("carolinacollegebound.com") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_CollegeBound", width: 472 }, { height: 435, name: "Education", subscriptionKey: "custom_NewsLetter_Education", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && (window.location.pathname.indexOf("local/education") >= 0 || window.location.pathname.indexOf("/news") >= 0) }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_Education", width: 472 }] } }, { group: { separateByHours: 1, signups: [{ height: 438, name: "TomTalks", subscriptionKey: "custom_NewsLetter_TomTalks", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("/sports") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_TomTalks", width: 438 }, { height: 295, name: "Panthers", subscriptionKey: "custom_NewsLetter_Panthers", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("/sports/nfl") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_Panthers", width: 326 }, { height: 295, name: "Hornets", subscriptionKey: "custom_NewsLetter_Hornets", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("/sports/nba") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_Hornets", width: 357 }, { height: 325, name: "Nascar", subscriptionKey: "custom_NewsLetter_Nascar", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("/sports/nascar") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_Nascar", width: 400 }, { height: 295, name: "HighSchool", subscriptionKey: "custom_NewsLetter_HSFootBall", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("/sports/high-school") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_HSFootBall", width: 369 }, { height: 435, name: "GolfCarolinas", subscriptionKey: "custom_NewsLetter_Golf", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("/sports") >= 0 || "golf.carolinas.com" == window.location.host }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_Golf", width: 472 }] } }, { group: { separateByHours: 1, signups: [{ height: window.document.documentElement.clientWidth < 420 ? .92 * window.document.documentElement.clientWidth : 386, name: "Food", subscriptionKey: "custom_NewsLetter_Food", targetUrl: function () { return window.location.hostname.indexOf("charlotteobserver.com") >= 0 && window.location.pathname.indexOf("/living/food-drink") >= 0 }, widgetUrl: "//cdn01.epiodata.com/CharlotteObserver/Popups/signup.html#NewsLetter_Food", width: window.document.documentElement.clientWidth < 420 ? window.document.documentElement.clientWidth : 420 }] } }] }()), window.EpioData.connect(), window.EpioDataSignup.signup({ DisplayType: EpioDataSignup.Constants.DISPLAY_TYPE.Center_NonBlocking }, window.EpioDataModals);