(function Btg360() {var _url = 'btg360.com.br';var _urlImageDev = false;var _options;var _account;var _cookieBid;var _domain = false;var _cookieUnderBtg = false;var _onCacheLastProduct = true;var _hasVitrine = false;var _events = {product: function (items) {generateProductImage(items);},cart: function (items) {generateCartImage(items);},client: function (items) {generateClientImage(items);},transaction: function (items) {generateTransactionImage(items);},search: function (items) {generateSearchImage(items);},wishlist: function (items) {generateWishlistImage(items);},warnme: function (items) {generateWarnMeImage(items);}}; function generateUUID() {var d = new Date().getTime();var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {var r = (d + Math.random() * 16) % 16 | 0;d = Math.floor(d / 16);return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);});return uuid;} function getRand(strBoolean) {var response = Math.random();return ((typeof strBoolean !== 'undefined') && (strBoolean)) ? response.toString().substr(2) : response;} function getDomain() {if (_cookieUnderBtg) {return _url;}return (_domain) ? _domain : document.domain;} function setCookie(name, value, days) {var date = new Date(), cookie;date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));cookie = name + '=' + value + '; ';cookie += 'expires=' + date.toUTCString() + '; ';document.cookie = cookie + 'path=/; domain=.' + getDomain();} function getCookie(name) {name += '=';var ca = document.cookie.split(';'), total = ca.length;for (var i = 0; i < total; i++) {var c = ca[i];while (c.charAt(0) === ' ') {c = c.substring(1);}if (c.indexOf(name) === 0) {return c.substring(name.length, c.length);}}return false;} function removeCookie(value) {if (getCookie(value)) {setCookie(value, null, -1);}} function getCookieBid() {var value = getCookie('__bid');if (!value) {value = generateUUID();setCookie('__bid', value, 21900);}return value;} function generateUrl(subdomain, filename) {var url = document.location.protocol + '//' + subdomain + '.' + _url + '/' + filename;if (_urlImageDev) {url = _urlImageDev + filename;}return url;} function toPrice(value) {var strValue = new String(value);return strValue.replace(/[a-zA-Z\$\s]/g, '').replace(/\,/g, '.');} function validateAccount(account) {var response = false, regEx = /[0-9]\:[0-9]/g;if ((typeof (account) === 'string') && (regEx.test(account))) {response = account;}return response;} function validateEvent(event) {return (typeof (event) === 'string') ? event.toLowerCase() : null;} function validateItem(item) {var blackList = ['undefined', 'null'];return (typeof (item) === 'undefined' || blackList.indexOf(String(item).toLowerCase()) >= 0) ? '' : encodeURIComponent(item);} function validateArrayItems(items) {return ((typeof (items) !== 'undefined') && (items instanceof Array)) ? items : [];} function inArray(value, data) {var total = data.length, result = false;for (var i = 0; i < total; i++) {if (data[i] === value) {result = true;}}return result;} function getQueryStringArray() {var data = [], queryString = document.location.search.slice(1).split('&'), total = queryString.length;for (var i = 0; i < total; i++) {var qs = queryString[i].split('=');data[decodeURIComponent(qs[0])] = qs[1] || '';}return data;} function lowerCamelCase(string, separator) {var toArray = string.split(separator), text = toArray[0], total = toArray.length;for (var i = 1; i < total; i++) {text += toArray[i].charAt(0).toUpperCase() + toArray[i].slice(1);}return text;} function createImage(url, parameters) {var image = new Image(1, 1);image.src = url + '?' + parameters;} function generateProductsCookieArray(productId) {var cookie = getCookie('btg_lastprod');if (cookie) {var productIdExists = false, dataJson = JSON.parse(cookie), data = dataJson.ids, total = data.length;for (var i = 0; i < total; i++) {if (productId === data[i]) {productIdExists = true;}}if (!productIdExists) {if (total >= 10) {data.shift();}data.push(productId);setCookie('btg_lastprod', JSON.stringify({"ids": data}), 365);}} else {setCookie('btg_lastprod', JSON.stringify({"ids": [productId]}), 365);}} function generateUsid() {var data = getQueryStringArray();if (validateItem(data['btg_source'])) {generateClientImage([{email: data['btg_source'], usid: data['btg_source']}]);}} function generateUtmsCookie() {removeCookie('BTG360_utms');var utms = ['utm_source', 'utm_medium', 'utm_term', 'utm_content', 'utm_campaign', 'utm_adContent', 'utm_uid', 'utm_email', 'utm_keyword'];var data = getQueryStringArray(), strUtms = '';for (var i in data) {if (inArray(i, utms)) {strUtms += '&' + lowerCamelCase(i, '_') + '=' + validateItem(data[i]);}}if (strUtms) {setCookie('__btgUtms', strUtms, 2);}} function getUtmsCookie() {var utmsCookie = getCookie('__btgUtms');return (utmsCookie) ? utmsCookie : '';} function generateModuleCookie() {var data = getQueryStringArray(), moduleId = validateItem(data['btg_module']);if (moduleId) {setCookie('__btgModule', moduleId, 1);}} function getParameters() {var parameters = 'btgId=' + _account;parameters += '&cookieBid=' + _cookieBid;parameters += '&url=' + validateItem(window.location.href);parameters += '&rand=' + getRand(true);parameters += getUtmsCookie();return parameters;} function generateModuleImage(moduleId, items) {if (moduleId) {var parameters = getParameters();parameters += '&moduleId=' + moduleId;parameters += '&transactionId=' + validateItem(items.transactionId);parameters += '&productId=' + validateItem(items.id);createImage(generateUrl('c', '__module.gif'), parameters);}} function generateProductImage(items) {if (typeof (items[0]) === 'object') {var stdParameters = getParameters();var parameters = '&email=' + validateItem(items[0].email);parameters += '&id=' + validateItem(items[0].id);parameters += '&name=' + validateItem(items[0].name);parameters += '&price=' + toPrice(items[0].price);parameters += '&department=' + validateItem(items[0].department);parameters += '&category=' + validateItem(items[0].category);parameters += '&subcategory=' + validateItem(items[0].subcategory);parameters += '&brand=' + validateItem(items[0].brand);createImage(generateUrl('c', '__product.gif'), stdParameters + parameters);removeCookie('btg_lastprod');} else {throw{message: 'BTG360 Info - Product image was not generated.'};}} function generateClientImage(items) {if ((typeof (items[0]) === 'undefined')) {return false;}if ((typeof (items[0].email) === 'string') || (typeof (items[0].token) === 'string')) {var stdParameters = getParameters(), parameters, usid = validateItem(items[0].usid);if (usid) {parameters += '&usid=' + usid;items[0].email = '';}var isOptin = ((typeof (items[0].isOptin) !== 'undefined')) ? items[0].isOptin : true;parameters += '&email=' + validateItem(items[0].email);parameters += '&facebookId=' + validateItem(items[0].facebookId);parameters += '&webPushId=' + validateItem(items[0].webPushId);parameters += '&phone=' + validateItem(items[0].phone);parameters += '&token=' + validateItem(items[0].token);parameters += '&encrypt=' + validateItem(items[0].encrypt);parameters += '&isOptin=' + isOptin;createImage(generateUrl('c', '__client.gif'), stdParameters + parameters);}} function generateCartImage(items) {var stdParameters = getParameters(), parameters, total = items.length;if (total <= 0) {throw{message: 'BTG360 Info - Cart image was not generated.'};}for (var i = 0; i < total; i++) {parameters = '&email=' + validateItem(items[i].email);parameters += '&id=' + validateItem(items[i].id);parameters += '&name=' + validateItem(items[i].name);parameters += '&price=' + toPrice(items[i].price);parameters += '&department=' + validateItem(items[i].department);parameters += '&category=' + validateItem(items[i].category);parameters += '&subcategory=' + validateItem(items[i].subcategory);parameters += '&brand=' + validateItem(items[i].brand);createImage(generateUrl('c', '__cart.gif'), stdParameters + parameters);}} function generateTransactionImage(items) {var stdParameters = getParameters(), parameters, total = items.length, moduleId = getCookie('__btgModule');if (total <= 0) {throw{message: 'BTG360 Info - Transaction image was not generated.'};}var parameterHasVitrine = (_hasVitrine) ? '&hasVitrine=true' : '';for (var i = 0; i < total; i++) {var price = toPrice(items[i].price);parameters = '&email=' + validateItem(items[i].email);parameters += '&transactionId=' + validateItem(items[i].transactionId);parameters += '&id=' + validateItem(items[i].id);parameters += '&name=' + validateItem(items[i].name);parameters += '&price=' + price;parameters += '&department=' + validateItem(items[i].department);parameters += '&category=' + validateItem(items[i].category);parameters += '&subcategory=' + validateItem(items[i].subcategory);parameters += '&brand=' + validateItem(items[i].brand);parameters += parameterHasVitrine;createImage(generateUrl('c', '__order.gif'), stdParameters + parameters);generateModuleImage(moduleId, items[i]);}removeCookie('__btgModule');removeCookie('__btgUtms');} function generateSearchImage(items) {if (typeof (items[0]) === 'object') {var parameters = getParameters(), keyword = validateItem(items[0].keyword);var minSizeChar = (items[0].minSizeChar !== undefined) ? parseInt(items[0].minSizeChar) : 2;if (keyword.length >= minSizeChar) {parameters += '&keyword=' + keyword;createImage(generateUrl('c', '__search.gif'), parameters);}} else {throw{message: 'BTG360 Info - Search image was not generated.'};}} function generateWishlistImage(items) {if (typeof (items[0]) === 'object') {var parameters = getParameters();var active = ((typeof (items[0].active) !== 'undefined') && (items[0].active || parseInt(items[0].active))) ? 1 : 0;parameters += '&productId=' + validateItem(items[0].productId);parameters += '&active=' + active;createImage(generateUrl('c', '__wishlist.gif'), parameters);} else {throw{message: 'BTG360 Info - Wishlist image was not generated.'};}} function generateWarnMeImage(items) {if (typeof (items[0]) === 'object') {var parameters = getParameters();var active = ((typeof (items[0].active) !== 'undefined') && (items[0].active || parseInt(items[0].active))) ? 1 : 0;parameters += '&productId=' + validateItem(items[0].productId);parameters += '&active=' + active;createImage(generateUrl('c', '__warnme.gif'), parameters);} else {throw{message: 'BTG360 Info - Warnme image was not generated.'};}} function internalProcess() {generateUsid();generateUtmsCookie();generateModuleCookie();} function execute(options) {if (options.account) {_account = options.account;_cookieBid = getCookieBid();internalProcess();if (typeof (_events[options.event]) === 'function') {_events[options.event](options.items);} else {throw{message: 'BTG360 Info - Event not defined or invalid.'};}} else {throw{message: 'BTG360 Info - Account unknown.'};}} this.setAccount = function (account) {_account = validateAccount(account);}; this.add = function (options) {try {if (typeof (options) === 'object') {_options = options;_urlImageDev = (typeof (options.urlImageDev) !== 'undefined') ? options.urlImageDev : false;_domain = (typeof (options.domain) === 'string') ? options.domain : false;_hasVitrine = (typeof (options.hasVitrine) === 'boolean') ? options.hasVitrine : false;_cookieUnderBtg = (typeof (options.cookieUnderBtg) !== 'undefined') ? Boolean(options.cookieUnderBtg) : false;_onCacheLastProduct = (typeof (options.onCacheLastProduct) !== 'undefined') ? Boolean(options.onCacheLastProduct) : true;execute({account: validateAccount(options.account || _account),event: validateEvent(options.event),items: validateArrayItems(options.itens || options.items)});} else {throw{message: 'BTG360 Info - Options is not an object.'};}} catch (e) {console.info(e.message);}}; this.debug = function () {console.log(_options);}; this.findCookieBid = function() {return getCookieBid();};window.Btg360 = this;})();