';
} else {
miniCartReturn = 'Carrinho Vazio';
}
$('.carrinhoHead').html(miniCartReturn);
$('#cart-header').html(miniCartReturn);
//$("#resumoCarrinho").html(miniCartReturn);
//$(".carrinho.carrinhoHead").html(miniCartReturn);
},
crossDomain: true
});
}
function carregarCarrinho() {
if (!novoCheckout) {
if (document.cookie.indexOf('prePedido=') >= 0) {
$.getJSON(fbits.ecommerce.urlCarrinho + "Carrinho/ResumoCarrinho?format=json&jsoncallback=?",
function (data) {
Fbits.Componentes.ResumoCarrinho.montar(data);
});
}
} else {
atualizaResumo();
}
}
//INIT
$(document).ready(function () {
carregarDadosLogin();
carregarSaldoCreditoMarka();
carregarCarrinho();
});
/**
* Extenção para formatar numeros em money BRL por default.
* @param c => número de casas decimais, para centavos..
* @param d => separador de centavos.
* @param t => separador de milhar.
* @method formatMoney
* @Example. Number(1000).formatMoney(2,'.', ',') result=> 1,000.00
* @Example. Number(1000).formatMoney() result=> 1.000,00
*/
Number.prototype.formatMoney = function (c, d, t) {
var n = this,
c = isNaN(c = Math.abs(c)) ? 2 : c,
d = d == undefined ? "," : d,
t = t == undefined ? "." : t,
s = n < 0 ? "-" : "",
i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "",
j = (j = i.length) > 3 ? j % 3 : 0;
return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
};
;
/*!
*Jquery Share Plugin v1.0.0
*Copyright 2012, Fbits e-Partner Business
*
* Descrição:
* Biblioteca utilizada para incluir plugins de compartilhamento
* de modo assincrono, como facebook e twitter.
*
*/
$(window).ready(function () {
loadFacebookBar();
loadFacebookShare();
loadFacebookLogin();
loadAddThis();
loadGooglePlus();
loadTwitter();
});
/**
* Realiza o load do script do facebook bar
*/
function loadFacebookBar() {
if ($('[data-facebook-bar="true"]').length > 0 || $('.fb-like-box').length > 0)
getFacebookScript(document, 'script', 'facebook-jssdk'); //Busca o script do facebook
if ($('[data-facebook-bar="true"]').length > 0) //Identifica o local para inserir o facebook bar
{
$('[data-facebook-bar="true"]').each(function (index, value) {
if ($(this).attr('data-facebook-page').length > 0) {
facebookUsersBar(this, $(this).attr('data-facebook-page'));
}
});
}
}
/**
* Carregamento e inicialização as configurações do login integrado, abertura da pop-up de login.
*/
function loadFacebookLogin() {
if ($('[data-facebook-login="true"],[data-facebook-login-pedido="true"]').length > 0) {
getFacebookScript(document, 'script', 'facebook-jssdk'); //Busca o script do facebook
$('[data-facebook-login="true"]').click( // click no botão do facebook
function () {
FB.login(function (response) {
if (response.authResponse) {
jQuery.ajax({
url: fbits.ecommerce.urlCarrinho + "Login/FacebookLogin",
type: 'POST',
data: { token: response.authResponse.accessToken },
dataType: "text",
async: false
}).done(function (data) {
if (data != '0') // 0 indica erro, diferente de 0 indica URL.
window.location = data;
else
alert('Não foi possível se conectar ao facebook.');
});
} else {
alert('Não foi possível se conectar ao facebook.');
}
}, { scope: 'email,user_birthday' }) // permissões adicionais (email, data aniversário)
});
}
}
/**
* Realiza o load do script do facebook bar
*/
function loadFacebookShare() {
if ($('[data-facebook-share="true"]').length > 0) //Identifica o local para inserir o facebook share
{
getFacebookScript(document, 'script', 'facebook-jssdk');
$('[data-facebook-share="true"]').each(function (index, value) {
shareLinkFacebook(this, $(this).attr('data-facebook-url'));
});
}
}
/**
* Realiza o load do script do add this
*/
function loadAddThis() {
if ($('[data-addThis-share="true"]').length > 0) //Identifica o local para inserir o addThis share
{
$('[data-addThis-share="true"]').each(function (index, value) {
if ($(this).attr('data-addThis-icon-url').length > 0) {
shareLinkAddThis(this, $(this).attr('data-addThis-icon-url'));
}
});
}
}
/**
* Realiza o load do script do google plus
*/
function loadGooglePlus() {
if ($('[data-plusone-share=true]').length > 0) //Identifica o local para inserir o Google Plus +1
{
getGooglePlusScript();
$('[data-plusone-share="true"]').each(function () {
shareGooglePlus(this, $(this).attr('data-gplus-url'));
});
}
}
/**
* Realiza o load do script do twitter
*/
function loadTwitter() {
if ($('[data-twitter-share=true]').length > 0) //Identifica o local para inserir o Twitter
{
if ($('#twitter-wjs').length <= 0)
getTwitterScript();
$('[data-twitter-share="true"]').each(function () {
shareTwitter(this, $(this).attr('data-twitter-url'));
});
}
}
/**
* Busca o script do facebook
*/
var fbJsLoaded = false;
function getFacebookScript(d, s, id) {
if ($(id).length <= 0 && !fbJsLoaded) {
window.fbAsyncInit = function () {
if (typeof FB_APPID !== 'undefined') {
FB.init({
appId: FB_APPID, // App ID from the app dashboard
channelUrl: fbits.ecommerce.urlCarrinho + 'Login', // Channel file for x-domain comms
status: true, // Check Facebook Login status
xfbml: true, // Look for social plugins on the page
version: 'v2.0'
});
} else {
FB.init({
status: true, // Check Facebook Login status
xfbml: true, // Look for social plugins on the page
cookie: true,
version: 'v2.0'
});
}
};
// window.fbAsyncInit = function () {
// FB.init({ status: true, cookie: true, xfbml: true, version: 'v2.0' });
// };
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.async = true;
js.src = document.location.protocol + "//connect.facebook.net/pt_BR/sdk.js#xfbml=1&version=v2.3";
fjs.parentNode.insertBefore(js, fjs);
fbJsLoaded = true;
}
};
function getGooglePlusScript() {
window.___gcfg = { lang: 'pt-BR' };
(function () {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = document.location.protocol + '//apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
}
function getTwitterScript() {
!function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';
if (!d.getElementById(id)) {
js = d.createElement(s); js.async = true;
js.id = id; js.src = p + '://platform.twitter.com/widgets.js';
fjs.parentNode.insertBefore(js, fjs);
}
}(document, 'script', 'twitter-wjs');
}
/**
* Adiciona o facebook user bar plugin a um determinado elemento
*/
function facebookUsersBar(element, username) {
//Curtir Facebook
var data = ''
+ '
'
+ '
';
$(element).html(data).fadeIn('slow'); //Insere o plugin nos elementos do seletor
}
/**
* Adiciona o addThis plugin a um determinado elemento
*/
function shareLinkAddThis(element, icon) {
var data = ''
+ ''
+ '';
$(element).html(data).fadeIn('slow'); //Insere o plugin nos elementos do seletor
$.getScript('http://s7.addthis.com/js/250/addthis_widget.js#pubid=xa-4f2c2b167a25e0fa');
};
/**
* Adiciona o share link do facebook a um determinado elemento
*/
function shareLinkFacebook(element, url) {
if (url == null || url == '') //Verifica o parametro
url = window.location.href;
var data = '';
// var data = '';
$(element).html(data).fadeIn('slow'); //Insere o plugin nos elementos do seletor
//FB.XFBML.parse($('.shareFacebook')[0]);
};
function shareGooglePlus(element, url) {
if (!(url == null || url == ''))
url = ' data-href="' + url + '"';
var data = '';
$(element).html(data).fadeIn('slow');
}
function shareTwitter(element, url) {
if (!(url == null || url == ''))
url = ' data-url="' + url + '"';
var data = 'Tweetar';
$(element).html(data).fadeIn('slow');
}
;
/*
* jQuery Autocomplete plugin 1.1
*
* Copyright (c) 2009 Jörn Zaefferer
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
*/
; (function ($) {
var existeLinkProduto = false;
var elemento = null;
var local = null;
if (typeof ($) === 'undefined') { return; }
$.fn.extend({
autocomplete: function (urlOrData, options) {
var isUrl = typeof urlOrData == "string";
options = $.extend({}, $.Autocompleter.defaults, {
url: isUrl ? urlOrData : null,
data: isUrl ? null : urlOrData,
delay: isUrl ? $.Autocompleter.defaults.delay : 10,
max: options && !options.scroll ? 10 : 150
}, options);
// if highlight is set to false, replace it with a do-nothing function
options.highlight = options.highlight || function (value) { return value; };
// if the formatMatch option is not specified, then use formatItem for backwards compatibility
options.formatMatch = options.formatMatch || options.formatItem;
return this.each(function () {
new $.Autocompleter(this, options);
});
},
result: function (handler) {
return this.bind("result", handler);
},
search: function (handler) {
return this.trigger("search", [handler]);
},
flushCache: function () {
return this.trigger("flushCache");
},
setOptions: function (options) {
return this.trigger("setOptions", [options]);
},
unautocomplete: function () {
return this.trigger("unautocomplete");
}
});
$.Autocompleter = function (input, options) {
var KEY = {
UP: 38,
DOWN: 40,
DEL: 46,
TAB: 9,
RETURN: 13,
ESC: 27,
COMMA: 188,
PAGEUP: 33,
PAGEDOWN: 34,
BACKSPACE: 8
};
var acceptingResults = false;
// Create $ object for input element
var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass);
var timeout;
var previousValue = "";
var cache = $.Autocompleter.Cache(options);
var hasFocus = 0;
var lastKeyPressCode;
var config = {
mouseDownOnSelect: false
};
var select = $.Autocompleter.Select(options, input, selectCurrent, config);
var blockSubmit;
// prevent form submit in opera when selecting with return key
$.browser.opera && $(input.form).bind("submit.autocomplete", function () {
if (blockSubmit) {
blockSubmit = false;
return false;
}
});
// only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function (event) {
// a keypress means the input has focus
// avoids issue where input had focus before the autocomplete was applied
hasFocus = 1;
// track last key pressed
lastKeyPressCode = event.keyCode;
switch (event.keyCode) {
case KEY.UP:
acceptingResults = true;
event.preventDefault();
if (select.visible()) {
select.prev();
} else {
onChange(0, true);
}
break;
case KEY.DOWN:
acceptingResults = true;
event.preventDefault();
if (select.visible()) {
select.next();
} else {
onChange(0, true);
}
break;
case KEY.PAGEUP:
acceptingResults = true;
event.preventDefault();
if (select.visible()) {
select.pageUp();
} else {
onChange(0, true);
}
break;
case KEY.PAGEDOWN:
acceptingResults = true;
event.preventDefault();
if (select.visible()) {
select.pageDown();
} else {
onChange(0, true);
}
break;
// matches also semicolon
case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
case KEY.TAB:
if (select.visible()) {
selectCurrent();
event.preventDefault();
}
break;
case KEY.RETURN:
var urlProduto = retornaUrlProduto();
acceptingResults = false;
selectCurrent();
select.hide();
if (urlProduto != "") {
existeLinkProduto = true;
window.location.href = urlProduto;
return false;
} else {
existeLinkProduto = false;
endereco = window.location.href;
var selector = "#" + $(this).attr("id");
var buscaInput = "";
var buscaForm = "";
for (i = 0; i < fbitsSearchConfig.selectors.length; i++){
var config = fbitsSearchConfig.selectors[i];
if (selector == config.searchTextBoxSelector) {
buscaInput = config.searchTextBoxSelector;
buscaForm = config.searchForm;
}
}
// Verifica se o conteúdo digitado sendo enviado não está vazio ou com o texto padrão
if ($(buscaInput).val() != textoPadrao && $(buscaInput).val().trim() != "" && $(buscaInput) != null && $(buscaInput).val() != undefined) {
$(buscaForm).submit();
return false;
} else {
return false;
}
}
break;
case KEY.ESC:
acceptingResults = false;
select.hide();
break;
default:
acceptingResults = true;
clearTimeout(timeout);
timeout = setTimeout(onChange, options.delay);
break;
}
}).focus(function () {
// track whether the field has focus, we shouldn't process any
// results if the field no longer has focus
hasFocus++;
}).blur(function () {
hasFocus = 0;
if (!config.mouseDownOnSelect) {
hideResults();
}
}).click(function () {
// show select when clicking in a focused field
if (hasFocus++ > 1 && !select.visible()) {
onChange(0, true);
}
}).bind("search", function () {
// TODO why not just specifying both arguments?
var fn = (arguments.length > 1) ? arguments[1] : null;
function findValueCallback(q, data) {
var result;
if (data && data.length) {
for (var i = 0; i < data.length; i++) {
if (data[i].result.toLowerCase() == q.toLowerCase()) {
result = data[i];
break;
}
}
}
if (typeof fn == "function") fn(result);
else $input.trigger("result", result && [result.data, result.value]);
}
$.each(trimWords($input.val()), function (i, value) {
request(value, findValueCallback, findValueCallback);
});
}).bind("flushCache", function () {
cache.flush();
}).bind("setOptions", function () {
$.extend(options, arguments[1]);
// if we've updated the data, repopulate
if ("data" in arguments[1])
cache.populate();
}).bind("unautocomplete", function () {
select.unbind();
$input.unbind();
$(input.form).unbind(".autocomplete");
});
// Retorna a Url do Produto que foi selecionado/clicado
// pelo usuário
function retornaUrlProduto() {
var selected = select.selected();
if (typeof selected != 'undefined' && selected != 0 && selected != '' && $(selected.value) != null && $(selected.value)[0].className == "autocomplete-produto") {
return $(selected.value)[0].children[0].href;
}
return "";
}
function selectCurrent() {
var selected = select.selected();
if (!selected)
return false;
var v = selected.result;
previousValue = v;
if (options.multiple) {
var words = trimWords($input.val());
if (words.length > 1) {
var seperator = options.multipleSeparator.length;
var cursorAt = $(input).selection().start;
var wordAt, progress = 0;
$.each(words, function (i, word) {
progress += word.length;
if (cursorAt <= progress) {
wordAt = i;
return false;
}
progress += seperator;
});
words[wordAt] = v;
// TODO this should set the cursor to the right position, but it gets overriden somewhere
//$.Autocompleter.Selection(input, progress + seperator, progress + seperator);
v = words.join(options.multipleSeparator);
}
v += options.multipleSeparator;
}
$input.val(v);
hideResultsNow();
$input.trigger("result", [selected.data, selected.value]);
return true;
}
function onChange(crap, skipPrevCheck) {
if (lastKeyPressCode == KEY.DEL) {
select.hide();
return;
}
var currentValue = $input.val();
if (!skipPrevCheck && currentValue == previousValue)
return;
previousValue = currentValue;
currentValue = lastWord(currentValue);
if (currentValue.length >= options.minChars) {
if (!options.matchCase)
currentValue = currentValue.toLowerCase();
request(currentValue, receiveData, hideResultsNow);
} else {
select.hide();
}
};
function trimWords(value) {
if (!value)
return [""];
if (!options.multiple)
return [$.trim(value)];
return $.map(value.split(options.multipleSeparator), function (word) {
return $.trim(value).length ? $.trim(word) : null;
});
}
function lastWord(value) {
if (!options.multiple)
return value;
var words = trimWords(value);
if (words.length == 1)
return words[0];
var cursorAt = $(input).selection().start;
if (cursorAt == value.length) {
words = trimWords(value)
} else {
words = trimWords(value.replace(value.substring(cursorAt), ""));
}
return words[words.length - 1];
}
// fills in the input box w/the first match (assumed to be the best match)
// q: the term entered
// sValue: the first matching result
function autoFill(q, sValue) {
// autofill in the complete box w/the first match as long as the user hasn't entered in more data
// if the last user key pressed was backspace, don't autofill
if (options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE) {
// fill in the value (keep the case the user has typed)
$input.val($input.val() + sValue.substring(lastWord(previousValue).length));
// select the portion of the value not typed by the user (so the next character will erase)
$(input).selection(previousValue.length, previousValue.length + sValue.length);
}
};
function hideResults() {
clearTimeout(timeout);
timeout = setTimeout(hideResultsNow, 200);
};
function hideResultsNow() {
var wasVisible = select.visible();
select.hide();
clearTimeout(timeout);
if (options.mustMatch) {
// call search and run callback
$input.search(
function (result) {
// if no value found, clear the input box
if (!result) {
if (options.multiple) {
var words = trimWords($input.val()).slice(0, -1);
$input.val(words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : ""));
}
else {
$input.val("");
$input.trigger("result", null);
}
}
}
);
}
};
function receiveData(q, data) {
if (data && data.length && hasFocus) {
select.display(data, q);
autoFill(q, data[0].value);
select.show();
} else {
hideResultsNow();
}
};
function request(term, success, failure) {
if (!options.matchCase)
term = term.toLowerCase();
var data = cache.load(term);
// recieve the cached data
if (data && data.length && acceptingResults) {
success(term, data);
// if an AJAX url has been supplied, try loading the data now
} else if ((typeof options.url == "string") && (options.url.length > 0)) {
var extraParams = {
timestamp: +new Date()
};
$.each(options.extraParams, function (key, param) {
extraParams[key] = typeof param == "function" ? param() : param;
});
$.ajax({
// try to leverage ajaxQueue plugin to abort previous requests
mode: "abort",
// limit abortion to this input
port: "autocomplete" + input.name,
dataType: options.dataType,
url: options.url,
data: $.extend({ busca: lastWord(term) }, extraParams),
success: function (data) {
var parsed = options.parse && options.parse(data) || parse(data);
cache.add(term, parsed);
if (acceptingResults) success(term, parsed);
}
});
} else {
// if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
select.emptyList();
failure(term);
}
};
function parse(data) {
var parsed = [];
var rows = [];
var autocompleteItems = jQuery('').html(data.htmlAutoComplete || '').find('.autocomplete-item');
if (autocompleteItems.size() > 0) {
autocompleteItems.each(function () {
rows[rows.length] = jQuery(this).html();
});
}
for (var i = 0; i < rows.length; i++) {
var row = $.trim(rows[i]);
if (row) {
row = [row];
parsed[parsed.length] = {
data: row,
value: row[0],
result: options.formatResult && options.formatResult(row, row[0]) || row[0]
};
}
}
return parsed;
};
};
$.Autocompleter.defaults = {
inputClass: "ac_input",
resultsClass: "ac_results",
loadingClass: "ac_loading",
minChars: 1,
delay: 400,
matchCase: false,
matchSubset: true,
matchContains: false,
cacheLength: 10,
max: 100,
mustMatch: false,
extraParams: {},
selectFirst: true,
formatItem: function (row) { return row[0]; },
formatMatch: null,
autoFill: false,
width: 0,
multiple: false,
multipleSeparator: ", ",
highlight: function (value, term) {
return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "$1");
},
scroll: true,
scrollHeight: 180,
searchForm: "",
searchTextBox: ""
};
$.Autocompleter.Cache = function (options) {
var data = {};
var length = 0;
function matchSubset(s, sub) {
if (!options.matchCase)
s = s.toLowerCase();
var i = s.indexOf(sub);
if (options.matchContains == "word") {
i = s.toLowerCase().search("\\b" + sub.toLowerCase());
}
if (i == -1) return false;
return i == 0 || options.matchContains;
};
function add(q, value) {
if (length > options.cacheLength) {
flush();
}
if (!data[q]) {
length++;
}
data[q] = value;
}
function populate() {
if (!options.data) return false;
// track the matches
var stMatchSets = {},
nullData = 0;
// no url was specified, we need to adjust the cache length to make sure it fits the local data store
if (!options.url) options.cacheLength = 1;
// track all options for minChars = 0
stMatchSets[""] = [];
// loop through the array and create a lookup structure
for (var i = 0, ol = options.data.length; i < ol; i++) {
var rawValue = options.data[i];
// if rawValue is a string, make an array otherwise just reference the array
rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue;
var value = options.formatMatch(rawValue, i + 1, options.data.length);
if (value === false)
continue;
var firstChar = value.charAt(0).toLowerCase();
// if no lookup array for this character exists, look it up now
if (!stMatchSets[firstChar])
stMatchSets[firstChar] = [];
// if the match is a string
var row = {
value: value,
data: rawValue,
result: options.formatResult && options.formatResult(rawValue) || value
};
// push the current match into the set list
stMatchSets[firstChar].push(row);
// keep track of minChars zero items
if (nullData++ < options.max) {
stMatchSets[""].push(row);
}
};
// add the data items to the cache
$.each(stMatchSets, function (i, value) {
// increase the cache size
options.cacheLength++;
// add to the cache
add(i, value);
});
}
// populate any existing data
setTimeout(populate, 25);
function flush() {
data = {};
length = 0;
}
return {
flush: flush,
add: add,
populate: populate,
load: function (q) {
if (!options.cacheLength || !length)
return null;
/*
* if dealing w/local data and matchContains than we must make sure
* to loop through all the data collections looking for matches
*/
if (!options.url && options.matchContains) {
// track all matches
var csub = [];
// loop through all the data grids for matches
for (var k in data) {
// don't search through the stMatchSets[""] (minChars: 0) cache
// this prevents duplicates
if (k.length > 0) {
var c = data[k];
$.each(c, function (i, x) {
// if we've got a match, add it to the array
if (matchSubset(x.value, q)) {
csub.push(x);
}
});
}
}
return csub;
} else
// if the exact item exists, use it
if (data[q]) {
return data[q];
} else
if (options.matchSubset) {
for (var i = q.length - 1; i >= options.minChars; i--) {
var c = data[q.substr(0, i)];
if (c) {
var csub = [];
$.each(c, function (i, x) {
if (matchSubset(x.value, q)) {
csub[csub.length] = x;
}
});
return csub;
}
}
}
return null;
}
};
};
$.Autocompleter.Select = function (options, input, select, config) {
var CLASSES = {
ACTIVE: "ac_over"
};
var listItems,
active = -1,
data,
term = "",
needsInit = true,
element,
list;
// Create results
function init() {
if (!needsInit)
return;
var offset = $(input).offset();
element = $("")
.hide()
.addClass(options.resultsClass)
.css("position", options.positionAutoComplete)
.appendTo(document.body);
/* descomentar caso haja busca flutuante no cliente */
//if(options.positionAutoComplete == "fixed"){
// $(element).attr("id","flutuante");
//}
list = $("
")
.appendTo(element)
.mousemove(function (event) {
if (target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') {
active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event));
$(target(event)).addClass(CLASSES.ACTIVE);
}
})
.click(function (event) {
$(target(event)).addClass(CLASSES.ACTIVE);
select();
// Só para quando está no site do cliente (script de integração) e no IE.
//alert(event.target.nodeName.toLowerCase());
//return false;
endereco = window.location.href;
elemento = "," + (event.target.nodeName + "," + event.target.parentElement.nodeName + "," + event.target.parentElement.parentElement.nodeName).toLowerCase() + ",";
if (elemento.indexOf(",a,") == -1) {
var selector = "#" + $(this).attr("id");
var buscaInput = "";
var buscaForm = "";
for (i = 0; i < fbitsSearchConfig.selectors.length; i++){
var config = fbitsSearchConfig.selectors[i];
if (selector == config.searchTextBoxSelector) {
buscaInput = config.searchTextBoxSelector;
buscaForm = config.searchForm;
}
}
// Verifica se o conteúdo digitado sendo enviado não está vazio ou com o texto padrão
if ($(buscaInput).val() != textoPadrao && $(buscaInput).val().trim() != "" && $(buscaInput) != null && $(buscaInput).val() != undefined) {
$(buscaForm).submit();
return false;
} else {
return false;
}
}
})
.mousedown(function () {
config.mouseDownOnSelect = true;
})
.mouseup(function () {
config.mouseDownOnSelect = false;
});
if (options.width > 0)
element.css("width", options.width);
needsInit = false;
}
function target(event) {
var element = event.target;
while (element && element.tagName != "LI")
element = element.parentNode;
// more fun with IE, sometimes event.target is empty, just ignore it then
if (!element)
return [];
return element;
}
function moveSelect(step) {
listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE);
movePosition(step);
var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE);
if (options.scroll) {
var offset = 0;
listItems.slice(0, active).each(function () {
offset += this.offsetHeight;
});
if ((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) {
list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight());
} else if (offset < list.scrollTop()) {
list.scrollTop(offset);
}
}
};
function movePosition(step) {
active += step;
if (active < 0) {
active = listItems.size() - 1;
} else if (active >= listItems.size()) {
active = 0;
}
}
function limitNumberOfItems(available) {
return options.max && options.max < available
? options.max
: available;
}
function fillList() {
list.empty();
var max = limitNumberOfItems(data.length);
for (var i = 0; i < max; i++) {
if (!data[i])
continue;
var formatted = options.formatItem(data[i].data, i + 1, max, data[i].value, term);
if (formatted === false)
continue;
var li = $("").html(options.highlight(formatted, term))/*.addClass(i % 2 == 0 ? "ac_even" : "ac_odd")*/.appendTo(list)[0];
$.data(li, "ac_data", data[i]);
}
listItems = list.find("li");
if (options.selectFirst) {
listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
active = 0;
}
// Aplica classes de "cor-sim" "cor-não".
list.find('.autocomplete-termo-sugerido').parent().each(function (i, el) {
$(el).addClass(i % 2 == 0 ? 'ac_even' : 'ac_odd');
//Aplica um click nas opções do autocomplete (adicionado para funcionar no cliente)
//$(el).click(clickAutoComplete);
});
list.find('.autocomplete-produto').parent().each(function (i, el) {
$(el).addClass(i % 2 == 0 ? 'ac_even' : 'ac_odd');
//Aplica um click nas opções do autocomplete (adicionado para funcionar no cliente)
//$(el).click(clickAutoComplete);
});
var exibepoweredbyClass;
// Adiciona os tÃÂtulos de "Termos sugeridos" e "Produtos sugeridos", bem como a imagem de "powered-by".
var liTermoSugerido = list.find('.autocomplete-termo-sugerido:first').parent(),
liProdutoSugerido = list.find('.autocomplete-produto:first').parent();
if (liTermoSugerido.length > 0) {
liTermoSugerido.before($('
').addClass('autocomplete-header-termos-sugeridos').text('Termos sugeridos'));
}
if (liProdutoSugerido.length > 0) {
liProdutoSugerido.before($('
')
.mouseover(function (e) { list.find('.' + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE); })
.addClass('autocomplete-vertodos')
.text('Clique para ver todos')
);
}
// apply bgiframe if available
if ($.fn.bgiframe)
list.bgiframe();
}
function detectMobile() {
if( navigator.userAgent.match(/Android/i)
|| navigator.userAgent.match(/webOS/i)
|| navigator.userAgent.match(/iPhone/i)
|| navigator.userAgent.match(/iPad/i)
|| navigator.userAgent.match(/iPod/i)
|| navigator.userAgent.match(/BlackBerry/i)
|| navigator.userAgent.match(/Windows Phone/i)
)
return true;
else
return false;
}
return {
display: function (d, q) {
init();
data = d;
term = q;
fillList();
},
next: function () {
moveSelect(1);
},
prev: function () {
moveSelect(-1);
},
pageUp: function () {
if (active != 0 && active - 8 < 0) {
moveSelect(-active);
} else {
moveSelect(-8);
}
},
pageDown: function () {
if (active != listItems.size() - 1 && active + 8 > listItems.size()) {
moveSelect(listItems.size() - 1 - active);
} else {
moveSelect(8);
}
},
hide: function () {
element && element.hide();
listItems && listItems.removeClass(CLASSES.ACTIVE);
active = -1;
},
visible: function () {
return element && element.is(":visible");
},
current: function () {
return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]);
},
// Posiciona o menu do autocomplete
show: function () {
var offset = $(input).offset();
var bottom;
var top;
var right;
// verifica se o navegador é mobile
if(detectMobile()){
right = 0;
} else {
// verifica a posição do input de busca
right = ($(window).width() - (offset.left + $(input).outerWidth()));
}
if (options.positionAutoComplete == "fixed") {
top = options.top != undefined && options.top > 0 ? options.top : offset.top + 40;
} else {
//se for o busca inferior, autocomplete pra cima
//alert("Input top: "+offset.top);
if (offset.top < 200) {
top = offset.top + $(input).height() + 10;
}
else {
// Valor relativo, necessário alterar dependendo do cliente.
// Pega o tamanho do corpo da página
var height = $('body').height();
bottom = height - offset.top;
element.css({ bottom: bottom });
}
}
element.css({
width: options.width != undefined ? options.width : $(input).width(),
top: top,
left: "inherit",
right: right
}).show();
$(element).find("ul").attr("id", options.searchTextBox.replace("#", ""));
$(element).find(".autocomplete-vertodos").click(function (event) {
var endereco = window.location.href;
$(options.searchForm).submit();
return false;
})
if (options.scroll) {
list.scrollTop(0);
list.css({
maxHeight: options.scrollHeight,
overflow: 'auto'
});
if ($.browser.msie && typeof document.body.style.maxHeight === "undefined") {
var listHeight = 0;
listItems.each(function () {
listHeight += this.offsetHeight;
});
var scrollbarsVisible = listHeight > options.scrollHeight;
list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight);
if (!scrollbarsVisible) {
// IE doesn't recalculate width when scrollbar disappears
listItems.width(list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")));
}
}
}
},
selected: function () {
var selected = listItems && listItems.filter("." + CLASSES.ACTIVE)/*.removeClass(CLASSES.ACTIVE)*/;
return selected && selected.length && $.data(selected[0], "ac_data");
},
emptyList: function () {
list && list.empty();
},
unbind: function () {
element && element.remove();
}
};
};
$.fn.selection = function (start, end) {
if (start !== undefined) {
return this.each(function () {
if (this.createTextRange) {
var selRange = this.createTextRange();
if (end === undefined || start == end) {
selRange.move("character", start);
selRange.select();
} else {
selRange.collapse(true);
selRange.moveStart("character", start);
selRange.moveEnd("character", end);
selRange.select();
}
} else if (this.setSelectionRange) {
this.setSelectionRange(start, end);
} else if (this.selectionStart) {
this.selectionStart = start;
this.selectionEnd = end;
}
});
}
var field = this[0];
if (field.createTextRange) {
var range = document.selection.createRange(),
orig = field.value,
teststring = "<->",
textLength = range.text.length;
range.text = teststring;
var caretAt = field.value.indexOf(teststring);
field.value = orig;
this.selection(caretAt, caretAt + textLength);
return {
start: caretAt,
end: caretAt + textLength
}
} else if (field.selectionStart !== undefined) {
return {
start: field.selectionStart,
end: field.selectionEnd
}
}
};
})(jQuery);
;
var fbitsSearchConfig = {
// Configurações básicas.
filtersContainerSelector: ".filtro",
pagerContainerSelector: ".paginacao",
suspendedTermsContainerSelector: "#termosSuspensos",
exibepoweredby: true,
selectors: [{
searchForm: '#searchFormHeader',
searchTextBoxSelector: '#txtBuscaPrincipal',
searchButtonSelector: '#btnBusca',
autocomplete: { width: 450, position: 'absolute' }
},
{
searchForm: '#searchFormFooter',
searchTextBoxSelector: '#txtBuscaFooter',
searchButtonSelector: '#btnBuscaFooter',
autocomplete: { width: 650, position: 'absolute' }
},
{
searchForm: '#searchFormMobile',
searchTextBoxSelector: '#txtBuscaMobile',
searchButtonSelector: '#btnBuscaMobile',
autocomplete: { width: 450, position: 'absolute' }
},
{
searchForm: '#searchFormBarraFixa',
searchTextBoxSelector: '#txtBuscaBarraFixa',
searchButtonSelector: '#btnBuscaBarraFixa',
autocomplete: { width: 550, top: 60, position: 'fixed'}
}],
// Função chamada antes da incialização do JavaScript da busca.
clientScript_beforeInit: function () {
},
// Função chamada após o término da inicialização do JavaScript da busca.
clientScript_afterInit: function () {
// $("#linkVejaMaisProdutos").bind("click", { self: this }, linkVejaMaisProdutos_click);
}
};
;
// Inicializa uma nova instância de FbitsSearch.
// @config: Object: Os parâmetros de configuração.
function FbitsSearch(config) {
$.extend(this, config);
this.init();
}
//executa a função trim()
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g, "");
}
/********************
Métodos.
********************/
var textoPadrao = fbits.search.placeholder;
var qualForm = null;
// Aplica as funções que tratam os eventos da página de busca e seus controles.
FbitsSearch.prototype.applyEventHandlers = function () {
var eventData = { self: this };
$(this.filtersContainerSelector).add(this.filterContainerTopSelector).find(":checkbox").bind("click", eventData, this.filter_click);
$(this.pagerContainerSelector).find("a").unbind("click").bind("click", eventData, this.pager_click);
$(this.suspendedTermsContainerSelector).find("a").unbind("click").bind("click", eventData, this.suspendedTermsLink_click);
};
// Inicializa a funcionalidade JavaScript da busca.
FbitsSearch.prototype.init = function () {
if ($.isFunction(this.clientScript_beforeInit))
this.clientScript_beforeInit();
this.applyEventHandlers();
this.createAutoComplete();
// Copia o valor do hidden field de busca para a caixa de texto de busca.
// Todo o código é necessário por causa do IE para que apareça a mensagem caso clique fora do campo.
var searchHiddenField = $("#searchHiddenField");
var texto = "";
if (searchHiddenField.val() != "" && searchHiddenField.val() != null)
texto = searchHiddenField.val();
else
texto = textoPadrao;
$(this.selectors).each(function (i, item) {
if (texto == textoPadrao) {
$(item.searchTextBoxSelector).attr("placeholder", texto);
}
else {
$(item.searchTextBoxSelector).val(texto);
}
//Adiciona eventos
$(item.searchTextBoxSelector).blur(
function () {
var elem = $(this);
if (elem.val() == '' || elem.val() == null)
$(item).attr("placeholder", textoPadrao);
});
var editarTermoPesquisado = false;
if (typeof (configEditarTermoPesquisado) != "undefined") {
editarTermoPesquisado = configEditarTermoPesquisado
}
if ($.browser.webkit) {
$(item.searchTextBoxSelector).click(function (e) {
if (texto != textoPadrao) {
if (!editarTermoPesquisado) {
$(this).val(texto)
$(this).select();
}
} else {
$(this).val('');
}
});
} else {
$(item.searchTextBoxSelector).focus(function () {
if (texto != textoPadrao) {
if (!editarTermoPesquisado) {
$(this).val(texto)
$(this).select();
}
} else {
$(this).val('');
}
});
}
});
// Esconde os botões de aplicação de filtro de busca.
$(this.filtersContainerSelector).find(":submit").hide();
if ($.isFunction(this.clientScript_afterInit)) {
this.clientScript_afterInit();
}
addCookieHistoricoBusca();
};
/********************
Eventos.
********************/
// Ocorre quando um dos itens de filtro é clicado.
// Simula um clique no botão de aplicação de filtros.
FbitsSearch.prototype.filter_click = function (e) {
var filtroNome = $(this).attr('value').split(':')[0];
filtroNome = filtroNome.substring(0, filtroNome.length - 2)
var filtroValor = $(this).attr('value').split(':')[1];
if ($(this).attr('checked') == 'checked') {
$("input[value^='" + filtroNome + "'][value$=':" + filtroValor + "']").attr('checked', true);
} else {
$("input[value^='" + filtroNome + "'][value$=':" + filtroValor + "']").attr('checked', false);
}
$(e.data.self.filtersContainerSelector).find(":submit").eq(0).click();
};
//Gerencia os filtros de ordenação
function submitOrder(element) {
var valorOrdenacao = '';
if ($(element).val() != null && $(element).val() != '') {
valorOrdenacao = $(element).val();
if ($('#Ordem').val() != null && $('#Ordem').val() != '')
valorOrdenacao += ':' + $(element).val();
}
$('#hdnOrdenacao').val(valorOrdenacao);
$("#searchForm").submit();
}
/********************
Auto Complete.
********************/
// Aplica o auto-complete na caixa de texto de busca do topo.
FbitsSearch.prototype.createAutoComplete = function () {
if ($().autocomplete) {
$(this.selectors).each(function (i, item) {
$(item.searchTextBoxSelector)
.autocomplete(fbits.ecommerce.urlEcommerce + "/Busca/AutoComplete", {
delay: 200,
highlight: false,
scroll: false,
selectFirst: false,
top: item.autocomplete.top,
width: item.autocomplete.width,
searchForm: item.searchForm,
searchTextBox: item.searchTextBoxSelector,
positionAutoComplete: item.autocomplete.position,
formatResult: function (data, value) {
// O template de item de auto-complete pode especificar um HTML.
// Neste caso, o designer deve aplicar a classe CSS "item-value" aos elementos que contém o texto que deve ser considerado como "valor selecionado" do item.
// O código abaixo procura todos os elementos que contém essa classe CSS, recupera seus respectivos textos e os separa com espaço.
// Caso nenhum elemento com a classe CSS "item-value" seja encontrado, o "valor selecionado" será o valor completo do item, mesmo que contenha HTML.
var parsedValue = [];
$("
").html(value).find(".autocomplete-item-value").each(function () {
parsedValue[parsedValue.length] = $.trim($(this).text().replace(/[\r\f\n]/g, ""));
});
parsedValue = parsedValue.join(" ");
return parsedValue.length > 0 ? parsedValue : value;
}
});
});
}
};
/********************
Inicialização do JavaScript do sistema de busca.
********************/
$(function () {
window.fbitsSearch = new FbitsSearch(fbitsSearchConfig);
//CarregarHistoricoBuscas();
CarregarNuvemTags();
});
// Retira os "|" dentro do menu de filtros.
$(document).ready(function () {
$('.item span').each(function () {
while ($(this).text().indexOf('|') > -1) {
$(this).text(
$(this).text().replace('|', '')
);
}
});
});
//Preenche a caixa de NuvemTags
function CarregarNuvemTags() {
$.ajax({
type: 'GET',
url: fbits.ecommerce.urlEcommerce + "Busca/nuvemtags",
dataType: 'json',
success: function (data) {
//console.log(data);
var html = "
";
var termos = $.parseJSON(data.nuvemTags);
//Recebe a quantidade para cada tamanho de tag (ex: 10 tags / 3 = 4... Assim a cada 4 tags será modificado o tamanho da fonte)
//O arredondamento é sempre para o próximo numero inteiro
var qtdPorTag = Math.ceil(termos.ResultadosNuvemTags.length / 3);
//Contador
var qtdPorTagLoop = qtdPorTag;
var numTag = 1;
//Receberá uma lista de objetos json com o html para cada tag
var objTag = [];
$.each(termos.ResultadosNuvemTags, function () {
var textTag = "tag-";
if (qtdPorTagLoop == 0) {
numTag++;
qtdPorTagLoop = qtdPorTag;
}
//tag-1
textTag = textTag + numTag;
objTag.push({ "value": "
" });
qtdPorTagLoop--;
});
var i = 1;
//Armazena keys já adicionadas a html
var added = [];
//Quantidade de tags retornadas
var size = termos.ResultadosNuvemTags.length;
while (i < size) {
//Pega as posições do objeto randomicamente
var key = Math.ceil((Math.random() * size) + -1);
//Verifica se a chave já foi adicionada
var pos = $.inArray(key, added);
if (key > 0 && pos == -1) {
added.push(key);
html += objTag[key].value;
i++;
}
}
html = html + '
';
if (termos.ResultadosNuvemTags.length > 0) {
$('#nuvemTags').html(html);
$('#tagCloud').show();
}
}
});
}
function submitSearchForm(conteudo, formSearch) {
if (conteudo != textoPadrao && conteudo.trim() != "" && conteudo != null && conteudo != undefined) {
$(formSearch).submit();
}
}
$(function () {
$(fbitsSearchConfig.selectors).each(function (i, item) {
$(item.searchButtonSelector).click(function () {
submitSearchForm($(item.searchTextBoxSelector).attr('value'), item.searchForm);
});
});
});
function addCookieHistoricoBusca() {
var searchTermo = getParameterByName("busca");
if (searchTermo !== null && searchTermo !== undefined && searchTermo !== "") {
searchTermo = encodeURI(searchTermo);
var primeiroTermo = "termo=[" + searchTermo + "]";
var cookieHistoricoBusca = Fbits.Cookie.Get("historicoBuscas");
if (cookieHistoricoBusca == null || cookieHistoricoBusca == undefined || cookieHistoricoBusca == "") {
Fbits.Cookie.Set("historicoBuscas", primeiroTermo, 1, "", true);
} else {
cookieHistoricoBusca = cookieHistoricoBusca.replace("termo=", "");
cookieHistoricoBusca += "," + "[" + searchTermo + "]";
var cookieItens = cookieHistoricoBusca.split(',');
var uniqueItens = [];
$.each(cookieItens, function (i, el) {
if ($.inArray(el, uniqueItens) === -1) {
if (el !== null) {
uniqueItens.push(el);
}
}
});
Fbits.Cookie.Set("historicoBuscas", "termo=" + uniqueItens.toString(), 1, "", true);
}
}
}
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
;
var Fbits = Fbits || {};
Fbits.Componentes = Fbits.Componentes || {};
Fbits.Componentes.Historico = Fbits.Componentes.Historico || {};
Fbits.Componentes.Historico.Buscas = Fbits.Componentes.Historico.Buscas || {};
Fbits.Componentes.Historico.Buscas.termosBuscadosExibirImagens = Fbits.Componentes.Historico.Buscas.termosBuscadosExibirImagens || false;
function montarHistorico() {
$.ajax({
type: 'GET',
url: fbits.ecommerce.urlEcommerce + 'GerenciadorCookie/ListarHistorico',
success: function (data) {
$("#historyBoard").replaceWith(data);
if (Fbits.Componentes.Historico.Buscas.termosBuscadosExibirImagens == true) {
var primeiroTermo = $('[data-produtosAcessados-termo]:first', '#dvTermosPesquisados').attr('data-produtosAcessados-termo');
buscarSpots(primeiroTermo);
}
}
});
}
function buscarSpots(termo) {
$.ajax({
method: "GET",
url: "/Busca/BuscarSpots",
data: { busca: termo, quantidade: 3 },
cache: true,
success: function (data) {
$('[data-produtosAcessados-resultado="' + termo + '"]').html(data);
}
});
}
if (Fbits.Componentes.Historico.Buscas.termosBuscadosExibirImagens == true) {
$(function () {
//Fazer o hover dos termos.
//Não fazer requisições ajax repetidas. Para isso pode-se verificar o conteudo da div de resultado. //Validar retornos vazios.
});
}
;
/*
* FancyBox - jQuery Plugin
* Simple and fancy lightbox alternative
*
* Examples and documentation at: http://fancybox.net
*
* Copyright (c) 2008 - 2010 Janis Skarnelis
* That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
*
* Version: 1.3.4 (11/11/2010)
* Requires: jQuery v1.3+
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
;(function($) {
var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right,
selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [],
ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i,
loadingTimer, loadingFrame = 1,
titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('')[0], { prop: 0 }),
isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
/*
* Private methods
*/
_abort = function() {
loading.hide();
imgPreloader.onerror = imgPreloader.onload = null;
if (ajaxLoader) {
ajaxLoader.abort();
}
tmp.empty();
},
_error = function() {
if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) {
loading.hide();
busy = false;
return;
}
selectedOpts.titleShow = false;
selectedOpts.width = 'auto';
selectedOpts.height = 'auto';
tmp.html( '
The requested content cannot be loaded. Please try again later.
');
retorno = false;
} else {
$('*#error').remove();
retorno = true;
}
return retorno;
};
;
///
///
//Variaveis globais
var PID_LINK_ADD_LISTA_DE_DESEJOS = 'link-lista-de-desejos-produto-';
var PID_LINK_ADD_LISTA_DE_DESEJOS_PV = 'link-lista-de-desejos-pv-';
var PID_PRODUTO_DADOS_VARIANTE = 'produto-dados-variante-';
var PID_PRODUTO_PRECO = 'produto-preco-';
var PID_PRODUTO_COMPRAR = 'produto-comprar-';
var Fbits = Fbits || {};
Fbits.ListaDeDesejo = Fbits.ListaDeDesejo || {};
Fbits.ListaDeDesejo.ProdutoVariante = Fbits.ListaDeDesejo.ProdutoVariante || {};
Fbits.ListaDeDesejo.ProdutoVariante = [];
/**
* Inicializa as funções assim que o html estiver renderizado.
*/
$(function () {
initListaDesejos();
});
/**
* Adiciona um determinado produto a lista de desejos.
* @method addLista
* @param codigo: Código do produto ("ProdutoId")
*/
function addProdutoLista(codigo) {
var urlAdicionarDoSpot = fbits.ecommerce.urlEcommerce + "ListaDeDesejos/AdicionarProduto";
var produtoId = 0;
if (!isNaN(codigo) && codigo > 0) {
produtoId = Number(codigo); //Convert o parâmetro para número
$.ajax({
type: 'POST',
url: urlAdicionarDoSpot,
data: { produtoId: produtoId, produtoComboId: 0, comboId: 0 },
context: { codigo: codigo },
success: function (data) {
if (data.isAuth != undefined && !data.isAuth)
{
window.location.assign(`${fbits.ecommerce.urlCarrinho}/Login/Authenticate?ReturnUrl=${window.location.href}`);
}
else if (data) {
$('a[id="' + PID_LINK_ADD_LISTA_DE_DESEJOS + this.codigo + '"]').unbind(); //Retira o eventos do link
var elementListaDesejos = $('a[id="' + PID_LINK_ADD_LISTA_DE_DESEJOS + this.codigo + '"]');
elementListaDesejos = elementListaDesejos != undefined ? elementListaDesejos : $('a[id="' + PID_LINK_ADD_LISTA_DE_DESEJOS_PV + this.codigo + '"]');
if (elementListaDesejos != undefined && elementListaDesejos.length > 0) {
if (elementListaDesejos.attr("data-Texto-AdicionadoAListaDesejos") != undefined && elementListaDesejos.attr('data-Texto-AdicionadoAListaDesejos').length > 0) {
elementListaDesejos.html(
elementListaDesejos.attr('data-Texto-AdicionadoAListaDesejos')
); //Altera texto do link
} else {
elementListaDesejos.html("Adicionado à lista de desejos");
}
}
}
}
});
}
}
/**
* Adiciona um determinado produto a lista de desejos.
* @method addProdutoVarianteLista
* @param codigo: Combinação do codigo do produto combo ("ProdutoComboId") + '-' + Código do produto ("ProdutoId")
*/
function addProdutoVarianteLista(codigo) {
habilitarCompra(false); //Desabilida botões de compra
var produtoItemDOM = null;
//IF feito para buscar o elemento que contém o produto
if ($('[id="produto-item-' + codigo + '"]').length > 0){
produtoItemDOM = $('[id="produto-item-' + codigo + '"]');
} else {
produtoItemDOM = $('[id="produto-item-' + codigo.replace("0-0-", "0-") + '"]');
}
//Busca o elemento qual possui os dados para compra do produto.
var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', produtoItemDOM[0]); //Busca elemento principal
var objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela
if (objetoParametroComprarProduto != undefined && !objetoParametroComprarProduto.attrNaoSelecionado) {
addProdutoVarianteListaRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos); //Realiza a requisição para comprar o produto
}
habilitarCompra(true); //Habilita botões de compra
}
function addProdutoVarianteListaRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos) {
var parametroCompraProduto = JSON.stringify(objetoParametroComprarProduto); //Transforma o objeto no tipo JSON.
var urlCompraProduto = '/ListaDeDesejos/AdicionarProdutoVariante'; //Url para compra de produtos.
//Realiza a requisição ajax
$.ajax({
type: 'POST',
url: urlCompraProduto,
data: parametroCompraProduto,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
context: domGrupoSelecaoAtributos,
success: function (data) {
if (data.isAuth != undefined && !data.isAuth) {
window.location.assign(`${fbits.ecommerce.urlCarrinho}/Login/Authenticate?ReturnUrl=${window.location.href}`);
}
else
{
tratarResultadoaddProdutoVarianteLista(data); //Trata sucesso e erros da requisição
}
}
});
}
/**
* Função responsável por tratar o resultado da inserção de um produto na lista de desejos.
* @param data Dados da resposta da requisição.
*/
function tratarResultadoaddProdutoVarianteLista(data) {
if (data.StatusRequisicao == 0) //Trata sucesso
{
var codigo = data.IdentificadorDOM; //Identifica parte do id do elemento HTML 'a' a ser alterado
var elementListaDesejos = $('a[id="' + PID_LINK_ADD_LISTA_DE_DESEJOS_PV + codigo + '"]');
if (elementListaDesejos != undefined && elementListaDesejos.length > 0) {
$(elementListaDesejos).addClass("listaDesejosAdicionado");
if (elementListaDesejos.attr('data-Texto-AdicionadoAListaDesejos') != undefined && elementListaDesejos.attr('data-Texto-AdicionadoAListaDesejos').length > 0) {
elementListaDesejos.html(
elementListaDesejos.attr('data-Texto-AdicionadoAListaDesejos')
); //Altera texto do link
} else {
elementListaDesejos.html("Adicionado à lista de desejos");
}
}
}
}
/**
*TODO: Não utilizado no momento
* Atualiza a quantidade de cada produto no carrinho.
* A classe 'waiting' é adicionada à linha (TR) antes do retorno da requisição.
* A requisição retorna os valores dos totais do pedido (JSON).
*
* @method atualizarItem
*/
function atualizarItem() {
//Variáveis
var erros = false;
var itens = new Array();
var cep = $('input[id="txtCalculaFrete"]').val();
// Para cada linha (TR), busca o código do produto, a quantidade e adiciona no array items.
$('[id^="produto-item-"]').each(function () {
//Variavéis locais
var produtoComboId = 0;
var sequencial = 0;
var prePedidoProdutoId = 0;
var quantidade = 0;
var completeId = $(this).attr('id').replace('produto-item-', '');
var parametros = completeId.split('-');
produtoComboId = parametros[0];
sequencial = parametros[1];
prePedidoProdutoId = parametros[2];
quantidade = $('input[id="txtQuantidade-' + completeId + '"]').val();
if (quantidade <= 0 || quantidade == undefined) {
quantidade = 1;
}
//Insere no array com join dos dados do item do carrinho
itens.push(new Array(produtoComboId, sequencial, prePedidoProdutoId, quantidade).join('|'));
});
//Cria um join para os itens.
var result = itens.join('#');
if (erros)
return;
//Requisição ajax para atualização das quantidades dos produtos.
$.ajax({
type: 'POST',
url: fbits.ecommerce.urlCarrinho + "Carrinho/Atualizar",
dataType: "json",
data: { itens: result, cep: cep },
success: function (data) {
$.each(data, function () {
$.each(this, function (id, valor) {
montaItens(id, valor);
});
});
}
});
return erros;
}
/**
* Monta os itens na lista de desejos.
* @method asyncCallProdutosListaDesejos
*/
function asyncCallProdutosListaDesejos(listaProdutos) {
//Validação de parametros.
if (listaProdutos == undefined || listaProdutos.length <= 0)
return;
//Variaveis
var quantidade = 1;
var listaDesejosId = 0;
var listaDesejosProdutoId = 0;
var prePedidoProdutoBrindeId = 0;
var produtoId = 0;
var produtoComboId = 0;
var sequencial = 0;
var itemId = '';
var joinChar = '-'
//For na lista de produtos
for (var i = 0; i < listaProdutos.length; i++) {
quantidade = listaProdutos[i].Quantidade;
listaDesejosId = listaProdutos[i].ListaDesejosId;
listaDesejosProdutoId = listaProdutos[i].ListaDesejosProdutoId;
produtoId = listaProdutos[i].ProdutoId;
produtoComboId = listaProdutos[i].ProdutoComboId != undefined ? listaProdutos[i].ProdutoComboId : 0; //Identifica um produto combo
sequencial = listaProdutos[i].Sequencial != undefined ? listaProdutos[i].Sequencial : 0; //Identifica a sequencia de um item na lista
itemId = listaDesejosProdutoId; //Resulta parte do identificador de um item Ex.: 13-1-1234
$.ajax({
type: 'POST',
url: 'ListaDeDesejos/SelectProduto',
data: { id: produtoId, listaDesejosId: listaDesejosId, listaDesejosProdutoId: listaDesejosProdutoId },
context: { itemId: itemId, produtoId: produtoId, quantidade: quantidade } /*use o this.produtoId*/,
success: function (data) {
var produtoVariantes = JSON.parse(data.produtosVariante);
$.each(produtoVariantes, function (index, value) {
Fbits.ListaDeDesejo.ProdutoVariante.push(value);
});
$('tbody[id="tbdListaDeDesejos"]').find('tr[id="produto-item-' + this.itemId + '"]').find('[id^="' + PID_PRODUTO_DADOS_VARIANTE + '"]').html(data.viewDadosProduto);
if (data.disponivel) {
$('tbody[id="tbdListaDeDesejos"]').find('tr[id="produto-item-' + this.itemId + '"]').find('[id^="' + PID_PRODUTO_PRECO + '"]').css("colspan", 1);
$('tbody[id="tbdListaDeDesejos"]').find('tr[id="produto-item-' + this.itemId + '"]').find('[id^="' + PID_PRODUTO_PRECO + '"]').html(data.viewFormaPagamento);
$('tbody[id="tbdListaDeDesejos"]').find('tr[id="produto-item-' + this.itemId + '"]').find('[id^="' + PID_PRODUTO_COMPRAR + '"]').show();
}
else {
$('tbody[id="tbdListaDeDesejos"]').find('tr[id="produto-item-' + this.itemId + '"]').find('[id^="' + PID_PRODUTO_COMPRAR + '"]').hide();
$('tbody[id="tbdListaDeDesejos"]').find('tr[id="produto-item-' + this.itemId + '"]').find('[id^="' + PID_PRODUTO_PRECO + '"]').replaceWith(data.viewFormaPagamento);
}
//Inicializa os eventos dos atributos
if (initProdutoAtributos != undefined) {
initProdutoAtributos();
}
var dados = $(data.viewDadosProduto);
//Inicializa a select box com o valor do banco
if (this.quantidade != undefined && this.quantidade > 0) {
if (dados.find('select#selQuantidade > option[value=' + this.quantidade + ']').length > 0)
dados.find('select#selQuantidade > option[value=' + this.quantidade + ']').attr('selected', true);
else
dados.find('select#selQuantidade > option').last().attr('selected', true);
}
}
});
}
}
/**
* Cria os eventos nos elementos da página,
* como btnRemover, finalizar, etc..
*
* @method createEventsListaDeDesejos
*/
function createEventsListaDeDesejos() {
//Insere o evento no clique do botão comprar.
$('table').delegate('input[id^="comprar-"]',
'click',
function () {
comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), 'botaoComprar');
});
$('table').delegate('input[id^=carrinho-comprar]',
'click',
function () {
comprarProduto($(this).parents('[id^="produto-item-"]'), false);
});
//Insere o evento no botão remover.
$('table').delegate('input[id^="produto-remover-"]',
'click',
function () {
var codigo = ($(this).attr("id").toString().replace("produto-remover-", ""));
var listaDesejosId = $(this).parents("tr").children('td[id="produto-identificadores"]').find('input[id="hdnListaDesejosId"]').val();
var listaDesejosProdutoId = $(this).parents("tr").children('td[id="produto-identificadores"]').find('input[id="hdnListaDesejosProdutoId"]').val();
removeListaAttr(codigo, listaDesejosId, listaDesejosProdutoId);
});
//Trigger para os eventos de comprar todos
$('button[id=todos-comprar]').click(function () {
var listaProdutoItens = $('[id^="produto-item-"]', 'table[id="tbItensListaDesejo"]');
comprarProdutoTodos(listaProdutoItens);
});
}
/**
* Inicializa os dados da lista de desejos.
* @method initListaDesejos
*/
function initListaDesejos() {
//Remove os eventos do link caso existam
$('body').undelegate('a[id^="' + PID_LINK_ADD_LISTA_DE_DESEJOS + '"]', 'click');
$('body').undelegate('a[id^="' + PID_LINK_ADD_LISTA_DE_DESEJOS + '"]', 'click');
//Insere o evento no link de spot
$('body').delegate('a[id^="' + PID_LINK_ADD_LISTA_DE_DESEJOS + '"]',
'click',
function () {
$(this).addClass("listaDesejosAdicionado");
var codigo = ($(this).attr("id").toString().replace(PID_LINK_ADD_LISTA_DE_DESEJOS, ""));
addProdutoLista(codigo);
return false;
});
//Insere o evento no link de spot
$('body').delegate('a[id^="' + PID_LINK_ADD_LISTA_DE_DESEJOS_PV + '"]',
'click',
function () {
var codigo = ($(this).attr("id").toString().replace(PID_LINK_ADD_LISTA_DE_DESEJOS_PV, ""));
addProdutoVarianteLista(codigo);
return false;
});
}
/**
* Monta os itens do carrinho
*/
function montaItens(id, valor) {
if (id == 'isFreteGratis') {
showCampoFrete(valor);
}
else if (id != 'carrinhoItens') {
if (id == 'produtosBrinde') {
//For nos itens do carrinho para remontar a view
asyncCallProdutosBrinde(valor);
}
else if (id == 'statusCupomDesconto') {
showRemoveCupomDesconto(valor);
}
else {
$('#' + id).html(valor);
if (id == 'erros' && valor != '') {
$('div[id="erros"]').show();
} else if (id == 'errosCupomDesconto') {
$('div[id="errosCupomDesconto"]').show();
}
}
}
else {
removeItens();
if (valor.length <= 0) {
window.location.reload();
} else {
//For nos itens do carrinho para remontar a view
for (var i = 0; i < valor.length; i++) {
$('table[id="tbItensCarrinho"]').children("tbody").append(valor[i]);
}
createEvents();
}
}
}
/**
* Remove um item da lista de desejosatravés de uma requisição ajax (POST).
* A requisição retorna os valores dos totais do pedido (JSON).
* A classe 'waiting' é adicionada à linha (TR) antes do retorno da requisição.
* A linha (TR) é removida do html.
*
* @method removerItem
*/
function removerItem() {
//Variáveis
var prePedidoProdutoId = 0;
var completeId = $(this).attr('id').replace('produto-remover-', '');
var parametros = completeId.split('-');
//Inicialização das variáveis
prePedidoProdutoId = parametros[2];
//Verifica o prepedidoProdutoId
if (prePedidoProdutoId > 0 && prePedidoProdutoId != undefined) {
$.ajax({
type: 'POST',
url: fbits.ecommerce.urlCarrinho + "Carrinho/Remover",
data: { "prePedidoProdutoId": prePedidoProdutoId },
success: function (data) {
$('[id=produto-item-' + completeId + ']').remove();
$.each(data, function () {
$.each(this, function (id, valor) {
montaItens(id, valor);
}); //Fim each 2
}); //Fim each 1
}
});
}
}
/**
* Remove um item da lista de desejosatravés de uma requisição ajax (POST).
* A requisição retorna os valores dos totais do pedido (JSON).
* A linha (TR) é removida do html.
*
* @method removerItem
*/
function removeListaAttr(codigo, listaDesejosId, listaDesejosProdutoId) {
var urlRemoverItem = "ListaDeDesejos/Remover";
var urlListaDesejos = "ListaDeDesejos";
$.ajax({
type: 'POST',
url: urlRemoverItem,
data: { listaDesejosId: listaDesejosId, listaDesejosProdutoId: listaDesejosProdutoId },
async: false,
context: { codigo: codigo },
success: function (data) {
if (data) { //Removido com sucesso
$('[id="produto-item-' + this.codigo + '"]').remove();
if (buscaQuantidadeItensLista() <= 0) //Reload na página
location.href = urlListaDesejos;
}
}
});
}
;
// SlidesJS 3.0.3 - http://slidesjs.com
;
(function() {
(function(a, b, c) {
var d, e, f;
return f = "slidesjs", e = {
width: 940,
height: 528,
start: 1,
navigation: {
active: !0,
effect: "slide"
},
pagination: {
active: !0,
effect: "slide"
},
play: {
active: !0,
effect: "slide",
interval: 8e3,
auto: !0,
swap: !0,
pauseOnHover: !0,
restartDelay: 2500
},
effect: {
slide: {
speed: 500
},
fade: {
speed: 300,
crossfade: !0
}
},
callback: {
loaded: function() {},
start: function() {},
complete: function() {}
}
}, d = function() {
function b(b, c) {
this.element = b, this.options = a.extend(!0, {}, e, c), this._defaults = e, this._name = f, this.init()
}
return b
}(), d.prototype.init = function() {
var c, d, e, f, g, h, i = this;
return c = a(this.element), this.data = a.data(this), a.data(this, "animating", !1), a.data(this, "total", c.children().not(".slidesjs-navigation", c).length), a.data(this, "current", this.options.start - 1), a.data(this, "vendorPrefix", this._getVendorPrefix()), "undefined" != typeof TouchEvent && (a.data(this, "touch", !0), this.options.effect.slide.speed = this.options.effect.slide.speed / 2), c.css({
overflow: "hidden"
}), c.slidesContainer = c.children().not(".slidesjs-navigation", c).wrapAll("
'),c.$elem.after(c.spinner));
c.options.onImageSwap(c.$elem);e.onload=function(){c.largeWidth=e.width;c.largeHeight=e.height;c.zoomImage=a;c.zoomWindow.css({"background-size":c.largeWidth+"px "+c.largeHeight+"px"});c.zoomWindow.css({"background-size":c.largeWidth+"px "+c.largeHeight+"px"});c.swapAction(b,a)};e.src=a},swapAction:function(b,a){var c=this,e=new Image;e.onload=function(){c.nzHeight=e.height;c.nzWidth=e.width;c.options.onImageSwapComplete(c.$elem);c.doneCallback()};e.src=b;c.currentZoomLevel=c.options.zoomLevel;c.options.maxZoomLevel=
!1;"lens"==c.options.zoomType&&c.zoomLens.css({backgroundImage:"url('"+a+"')"});"window"==c.options.zoomType&&c.zoomWindow.css({backgroundImage:"url('"+a+"')"});"inner"==c.options.zoomType&&c.zoomWindow.css({backgroundImage:"url('"+a+"')"});c.currentImage=a;if(c.options.imageCrossfade){var f=c.$elem,g=f.clone();c.$elem.attr("src",b);c.$elem.after(g);g.stop(!0).fadeOut(c.options.imageCrossfade,function(){d(this).remove()});c.$elem.width("auto").removeAttr("width");c.$elem.height("auto").removeAttr("height");
f.fadeIn(c.options.imageCrossfade);c.options.tint&&"inner"!=c.options.zoomType&&(f=c.zoomTintImage,g=f.clone(),c.zoomTintImage.attr("src",a),c.zoomTintImage.after(g),g.stop(!0).fadeOut(c.options.imageCrossfade,function(){d(this).remove()}),f.fadeIn(c.options.imageCrossfade),c.zoomTint.css({height:c.$elem.height()}),c.zoomTint.css({width:c.$elem.width()}));c.zoomContainer.css("height",c.$elem.height());c.zoomContainer.css("width",c.$elem.width());"inner"!=c.options.zoomType||c.options.constrainType||
(c.zoomWrap.parent().css("height",c.$elem.height()),c.zoomWrap.parent().css("width",c.$elem.width()),c.zoomWindow.css("height",c.$elem.height()),c.zoomWindow.css("width",c.$elem.width()))}else c.$elem.attr("src",b),c.options.tint&&(c.zoomTintImage.attr("src",a),c.zoomTintImage.attr("height",c.$elem.height()),c.zoomTintImage.css({height:c.$elem.height()}),c.zoomTint.css({height:c.$elem.height()})),c.zoomContainer.css("height",c.$elem.height()),c.zoomContainer.css("width",c.$elem.width());c.options.imageCrossfade&&
(c.zoomWrap.css("height",c.$elem.height()),c.zoomWrap.css("width",c.$elem.width()));c.options.constrainType&&("height"==c.options.constrainType&&(c.zoomContainer.css("height",c.options.constrainSize),c.zoomContainer.css("width","auto"),c.options.imageCrossfade?(c.zoomWrap.css("height",c.options.constrainSize),c.zoomWrap.css("width","auto"),c.constwidth=c.zoomWrap.width()):(c.$elem.css("height",c.options.constrainSize),c.$elem.css("width","auto"),c.constwidth=c.$elem.width()),"inner"==c.options.zoomType&&
(c.zoomWrap.parent().css("height",c.options.constrainSize),c.zoomWrap.parent().css("width",c.constwidth),c.zoomWindow.css("height",c.options.constrainSize),c.zoomWindow.css("width",c.constwidth)),c.options.tint&&(c.tintContainer.css("height",c.options.constrainSize),c.tintContainer.css("width",c.constwidth),c.zoomTint.css("height",c.options.constrainSize),c.zoomTint.css("width",c.constwidth),c.zoomTintImage.css("height",c.options.constrainSize),c.zoomTintImage.css("width",c.constwidth))),"width"==
c.options.constrainType&&(c.zoomContainer.css("height","auto"),c.zoomContainer.css("width",c.options.constrainSize),c.options.imageCrossfade?(c.zoomWrap.css("height","auto"),c.zoomWrap.css("width",c.options.constrainSize),c.constheight=c.zoomWrap.height()):(c.$elem.css("height","auto"),c.$elem.css("width",c.options.constrainSize),c.constheight=c.$elem.height()),"inner"==c.options.zoomType&&(c.zoomWrap.parent().css("height",c.constheight),c.zoomWrap.parent().css("width",c.options.constrainSize),c.zoomWindow.css("height",
c.constheight),c.zoomWindow.css("width",c.options.constrainSize)),c.options.tint&&(c.tintContainer.css("height",c.constheight),c.tintContainer.css("width",c.options.constrainSize),c.zoomTint.css("height",c.constheight),c.zoomTint.css("width",c.options.constrainSize),c.zoomTintImage.css("height",c.constheight),c.zoomTintImage.css("width",c.options.constrainSize))))},doneCallback:function(){this.options.loadingIcon&&this.spinner.hide();this.nzOffset=this.$elem.offset();this.nzWidth=this.$elem.width();
this.nzHeight=this.$elem.height();this.currentZoomLevel=this.options.zoomLevel;this.widthRatio=this.largeWidth/this.nzWidth;this.heightRatio=this.largeHeight/this.nzHeight;"window"==this.options.zoomType&&(lensHeight=this.nzHeightmaxheightnewvalue&&(newvalue=maxheightnewvalue),newvalue>maxwidthtnewvalue&&(newvalue=maxwidthtnewvalue),maxheightnewvalue<=newvalue?(this.heightRatio=this.largeHeight/
newvalue/this.nzHeight,this.newvalueheight=newvalue>maxheightnewvalue?maxheightnewvalue:newvalue,this.fullheight=!0):(this.heightRatio=this.largeHeight/newvalue/this.nzHeight,this.newvalueheight=newvalue>maxheightnewvalue?maxheightnewvalue:newvalue,this.fullheight=!1),maxwidthtnewvalue<=newvalue?(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth=newvalue>maxwidthtnewvalue?maxwidthtnewvalue:newvalue,this.fullwidth=!0):(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth=
newvalue,this.fullwidth=!1));scrcontinue=!1;"inner"==this.options.zoomType&&(this.nzWidth>this.nzHeight&&(this.newvaluewidth<=maxwidthtnewvalue?scrcontinue=!0:(scrcontinue=!1,this.fullwidth=this.fullheight=!0)),this.nzHeight>this.nzWidth&&(this.newvaluewidth<=maxwidthtnewvalue?scrcontinue=!0:(scrcontinue=!1,this.fullwidth=this.fullheight=!0)));"inner"!=this.options.zoomType&&(scrcontinue=!0);scrcontinue&&(this.zoomLock=0,this.changeZoom=!0,this.options.zoomWindowHeight/this.heightRatio<=this.nzHeight&&
(this.currentZoomLevel=this.newvalueheight,"lens"!=this.options.zoomType&&"inner"!=this.options.zoomType&&(this.changeBgSize=!0,this.zoomLens.css({height:String(this.options.zoomWindowHeight/this.heightRatio)+"px"})),"lens"==this.options.zoomType||"inner"==this.options.zoomType)&&(this.changeBgSize=!0),this.options.zoomWindowWidth/this.widthRatio<=this.nzWidth&&("inner"!=this.options.zoomType&&this.newvaluewidth>this.newvalueheight&&(this.currentZoomLevel=this.newvaluewidth),"lens"!=this.options.zoomType&&
"inner"!=this.options.zoomType&&(this.changeBgSize=!0,this.zoomLens.css({width:String(this.options.zoomWindowWidth/this.widthRatio)+"px"})),"lens"==this.options.zoomType||"inner"==this.options.zoomType)&&(this.changeBgSize=!0),"inner"==this.options.zoomType&&(this.changeBgSize=!0,this.nzWidth>this.nzHeight&&(this.currentZoomLevel=this.newvaluewidth),this.nzHeight>this.nzWidth&&(this.currentZoomLevel=this.newvaluewidth)));this.setPosition(this.currentLoc)},closeAll:function(){self.zoomWindow&&self.zoomWindow.hide();
self.zoomLens&&self.zoomLens.hide();self.zoomTint&&self.zoomTint.hide()},changeState:function(b){"enable"==b&&(this.options.zoomEnabled=!0);"disable"==b&&(this.options.zoomEnabled=!1)}};d.fn.elevateZoom=function(b){return this.each(function(){var a=Object.create(k);a.init(b,this);d.data(this,"elevateZoom",a)})};d.fn.elevateZoom.options={zoomActivation:"hover",zoomEnabled:!0,preloading:1,zoomLevel:1,scrollZoom:!1,scrollZoomIncrement:0.1,minZoomLevel:!1,maxZoomLevel:!1,easing:!1,easingAmount:12,lensSize:200,
zoomWindowWidth:400,zoomWindowHeight:400,zoomWindowOffetx:0,zoomWindowOffety:0,zoomWindowPosition:1,zoomWindowBgColour:"#fff",lensFadeIn:!1,lensFadeOut:!1,debug:!1,zoomWindowFadeIn:!1,zoomWindowFadeOut:!1,zoomWindowAlwaysShow:!1,zoomTintFadeIn:!1,zoomTintFadeOut:!1,borderSize:4,showLens:!0,borderColour:"#888",lensBorderSize:1,lensBorderColour:"#000",lensShape:"square",zoomType:"window",containLensZoom:!1,lensColour:"white",lensOpacity:0.4,lenszoom:!1,tint:!1,tintColour:"#333",tintOpacity:0.4,gallery:!1,
galleryActiveClass:"zoomGalleryActive",imageCrossfade:!1,constrainType:!1,constrainSize:!1,loadingIcon:!1,cursor:"default",responsive:!0,onComplete:d.noop,onZoomedImageLoaded:function(){},onImageSwap:d.noop,onImageSwapComplete:d.noop}})(jQuery,window,document);
;
///
/*!
* JavaScript fbits.produto.atributos Library v1.0.0
* Copyright 2012, Fbits e-Partner Business
*
* Modificado
* Date: 04/09/2012
* Por: Maykol Rypka
*
*Funções:
* adicionaEventosASelecaoAtributos
* appendHtmlSelectedAttrGroup
* carregarOpcoes
* changeEventsSelQuantidade
* checkOpcoesSelecionadas
* initProdutoAtributos
* hideErrors
* removeHtmlSelectedAttrGroup
* selectedUnits
* showError
* showSelectedUnits
*/
var Fbits = Fbits || { __namespace: true };
Fbits.Produto = Fbits.Produto || { __namespace: true };
Fbits.Produto.Atributos = Fbits.Produto.Atributos || {};
Fbits.Produto.Atributos.urlAtualizar = fbits.ecommerce.urlEcommerce + 'Produto/AtualizarProduto';
/**
* Para identificar as classes no visual studio
*/
Fbits.Produto.Atributos.__class = true
//Variaveis
var caminhoProdutoDetalhe = ""; //Caminho Action Atualizar
var produtoId = 0; //Id do produto em questão
var btnRemove = "divRemoveItem-";
var labelErroPartialId = 'mensagem-erro-';
//Configurações das escolhas do produto
var htmlProductOptions = '';
var divOpcoesPartialId = 'divOpcoes-';
var selectAtributoPartialId = 'selAtributo-';
var divItensComboPartialId = 'divItensCombo-';
var divBtnRemove = document.createElement('div');
$(divBtnRemove).attr('id', 'divRemoveItem');
$(divBtnRemove).attr('class', 'delete');
$(divBtnRemove).html('Excluir Seleção');
var divMsgErro = document.createElement('div');
$(divMsgErro).attr('id', 'divMsgErro');
$(divMsgErro).attr('class', 'erro');
$(divMsgErro).text('Você selecionou uma quantidade acima do permitido. Por favor verifique.');
//Adiciona o novo elementento abaixo do elemento passado como parametro.
function appendHtmlSelectedAttrGroup(beforeElement) {
var divOpcoesId = $(beforeElement).attr('id');
var divOpcoesContador = parseInt(divOpcoesId.replace(divOpcoesPartialId, ''));
var tempHtml = htmlProductOptions.clone().addClass('opcoesProdutosFirst');
tempHtml.attr('id', divOpcoesPartialId + (divOpcoesContador + 1));
tempHtml.find('#divRemoveItem').attr('id', btnRemove + (divOpcoesContador + 1));
//tempHtml.find('[id^="' + divItensComboPartialId + '"]').append(labelErro());
var msgErroNovoId = tempHtml.find('[id^="' + labelErroPartialId + '"]').attr('id').replace(labelErroPartialId, '');
tempHtml.find('[id^="' + labelErroPartialId + '"]').attr('id', labelErroPartialId + (parseInt(msgErroNovoId) + 1));
$(beforeElement).after(tempHtml);
changeEventsSelQuantidade();
}
/*
* A cada mudança de seleção de qualquer uma das comboboxes das
* opções de produto, realiza uma requisição AJAX
* passando o código do produto (Grade) e as opções selecionadas.
* No retorno da chamada AJAX, atualiza os dados do produto e dos
* atributos nas "Selects"
*/
function carregarOpcoes(elementOpcoes) {
if (elementOpcoes.href != undefined) {
if ($(elementOpcoes).find('div[data-valoratributo]').length > 0)
elementOpcoes = $(elementOpcoes).find('div[data-valoratributo]');
else
return;
}
//VARIAVEIS
var produtoId = $('#hdnProdutoId').val();
var atributoProduto = [];
var atributoSelecionado = "";
var opcaoSelecionada = 0;
var comboSelecionado = 0;
var grupoAtributos = 0;
var optionString = "Selecione";
var isThumb = false;
var produtoVarianteIdAdicional = 0;
var isCompreJunto = false;
//INICIALIZAÇÃO DAS VARIAVEIS
var domOpcoes = $(elementOpcoes);
opcaoSelecionada = domOpcoes.parents('div[id^="divOpcoes-"]').attr('id').replace('divOpcoes-', '');
comboSelecionado = domOpcoes.parents('li[id^="liComboItem-"]').attr('id').replace('liComboItem-', '');
produtoId = domOpcoes.parents('div[id^="dvGrupoSelecaoAtributos-"]').find('input[id="hdnProdutoId"]').val();
///troca do id da div do produto
var assinaturaSelecionada = $("input[name=tipo-produto]:radio:checked", domOpcoes.parents('[id^=produto-item]')).val()
if (!assinaturaSelecionada)
assinaturaSelecionada = false;
if (domOpcoes.is('select')) { // domopcoes é o objeto select.
domOpcoes = domOpcoes.children("option:selected") // atribui o "option" selecionado para o domOpcoes.
}
// Marca o valor dos outros atributo como não selecionado.
domOpcoes.parents('[data-codigoatributo]').find('[data-valoratributo]').attr("data-atributoSelecionado", "False");
// Marca o valor do atributo atual como selecionado.
domOpcoes.attr('data-atributoSelecionado', 'True');
//Verifica se é um tumb, somente quando selecionar dados do veja tambem ou compre junto.
if (domOpcoes.parents('div[id^="spotVejaTambem-"]').length > 0) {
produtoId = domOpcoes.parents('div[id^="divSpotProdutoRecomendado"]').find('input[id="hdnProdutoId"]').val();
//Verifica id do produto variante, somente para o veja tambem ou compre junto.
var idSpotRecomendadoSelecionado = domOpcoes.parents('div[id^="spotVejaTambem-"]').attr('id');
$.each(domOpcoes
.parents('[id^=liGrupoProduto]')
.find('div[id^="spotVejaTambem-"]'), function (index, item) {
if ($(item).attr('id') != idSpotRecomendadoSelecionado) {
produtoVarianteIdAdicional = $(item).find('#hdnProdutoVarianteId').val();
}
});
if (domOpcoes.parents('div[id^="spotVejaTambem-"]').find('div[id^="divFotosProduto-"]').length > 0) {
isThumb = domOpcoes.parents('div[id^="spotVejaTambem-"]').find('div[id^="divFotosProduto-"]').attr('data-isthumb');
isThumb = (isThumb == 'undefined' || isThumb == undefined) ? false : isThumb;
}
}
//Pega os dados dos elementos do combo.
domOpcoes
.parents('li[id^="liComboItem-' + comboSelecionado + '"]')
.find('[data-codigoatributo]')
.each(function () {
//$(this) = elemento da iteração
var codigoAtributo = $(this).attr('data-codigoAtributo');
var valorAtributo = 'Selecione';
if ($(this).find('[data-atributoSelecionado="True"]').length == 1) {
valorAtributo = $($(this).find('[data-atributoSelecionado="True"]')[0]).attr('data-valoratributo');
}
atributoProduto.push(valorAtributo + ";" + codigoAtributo);
});
// Último elemento selecionado.
if (domOpcoes.attr('data-valorAtributo') != "") {
var valorAtributo = domOpcoes.attr('data-valorAtributo');
var codigoAtributo = domOpcoes.parent().attr('data-codigoAtributo');
if (domOpcoes.attr('data-produtoId') != "" && domOpcoes.attr('data-produtoId') != undefined) {
produtoId = domOpcoes.attr('data-produtoId');
}
if (codigoAtributo == undefined)
codigoAtributo = domOpcoes.parents('[data-codigoatributo]').attr('data-codigoatributo');
atributoSelecionado = valorAtributo + ";" + codigoAtributo;
}
// Indica se a seleção se refere aos atributos principais da página do produto (E não de produtos relacionados, lista de desejos, etc).
var isPagProduto = false;
if (domOpcoes.parents('li[id^="liComboItem-' + comboSelecionado + '"]').find('[data-atributospagproduto="True"]').length > 0)
isPagProduto = true;
//Verifica se elemento contem div compre junto
if (domOpcoes.parents('div[id^="divCompreJunto"]').length > 0) {
isThumb = true;
isCompreJunto = true;
isPagProduto = false;
}
var quantidade = 1;
var sellerId = 0;
if ((typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "true") && $("input[name='checkBuyBox']:checked").length > 0) {
sellerId = $("input[name='checkBuyBox']:checked").data("resellerid");
}
//if ($("#item-quantidade-1").length > 0)
// quantidade = $("#item-quantidade-1").val();
if (isCompreJunto) {
if ($("#produto-item-0-" + produtoId).find('[id^="item-quantidade-"]').length > 0) {
quantidade = $("#produto-item-0-" + produtoId).find('[id^="item-quantidade-"]').val();
}
} else {
if ($('[id^="item-quantidade-"]').length > 0) {
quantidade = $('[id^="item-quantidade-"]').val();
}
}
//seta o valor do produto id caso tenha mudado
domOpcoes.parents('div[id^="dvGrupoSelecaoAtributos-"]').find('input[id="hdnProdutoId"]').val(produtoId);
domOpcoes.parents("[id^=produto-item]").first()[0].id = "produto-item-0-" + produtoId;
if ($("#hdnProdutoId").first().val() != produtoId)
domOpcoes.parents('div[id^="dvGrupoSelecaoAtributos-"]').first()[0].id = "dvGrupoSelecaoAtributos-" + produtoId;
$.ajax({
type: 'POST',
url: Fbits.Produto.Atributos.urlAtualizar,
data: {
"atributoProduto": atributoProduto.join("|")
, "atributoSelecionado": atributoSelecionado
, "produtoId": produtoId
, "comboIdSelecionado": comboSelecionado
, "opcaoParalelaSelecionada": opcaoSelecionada
, "optionString": optionString
, "isThumb": isThumb
, "produtoVarianteIdAdicional": produtoVarianteIdAdicional
, "assinaturaSelecionada": assinaturaSelecionada
, "isPagProduto": isPagProduto
, "quantidade": quantidade
, "sellerId": sellerId
},
success: function (data) {
if (data.redirecionar)
window.location = data.urlRedirecionamento;
// Se o produto variante estiver indisponível, desabilita o botão de compra
if (data.disponivel) {
$('[id^=produto-comprar-]', domOpcoes).show();
$('body').removeClass('fbits-produto-indisponivel');
}
else {
$('[id^=produto-comprar-]', domOpcoes).hide();
}
////Verifica a necessidade de renderizar as views opcionais
if (data.renderizarOpcao) {
// substitui o sku do produto
if (!isCompreJunto)
domOpcoes.parents('div[id^="produto-item"]').find(".fbits-sku").html("SKU " + data.SKU);
if ($("#componentePrecoCalculado.fbits-preco-calculado-precopor").length > 0 && data.precoCalculado != "") {
$("#componentePrecoCalculado.fbits-preco-calculado-precopor #spanPrecoCalculadoComponente").text(data.precoCalculado);
}
if ($("#componentePrecoCalculado.fbits-preco-calculado-precodesconto").length > 0 && data.precoCalculadoComDesconto != "") {
$("#componentePrecoCalculado.fbits-preco-calculado-precodesconto #spanPrecoCalculadoComponente").text(data.precoCalculadoComDesconto);
}
if ($("#fbits-buyBox").length > 0 && data.partialBuyBox != "") {
$("#fbits-buyBox").replaceWith(data.partialBuyBox);
}
if (isThumb) {
// Verifica se é compre junto do tipo produto
if (domOpcoes.parents('div[id^="spotVejaTambem-"]').length > 0) {
//Verifica se é a mesma foto, se for não recarrega.
var fotoProdutoThumbId = domOpcoes.parents('div[id^="spotVejaTambem-"]').find('div[id^="divFotosProduto"]').find('input[id="FotoProdutoId"]').val();
// Verifica se o produto variante está indisponível, imprimindo a div "avisoIndisponivel", senão imprime as formas de pagamento
if (data.fotoProdutoId != fotoProdutoThumbId) {
domOpcoes.parents('div[id^="spotVejaTambem-"]').find('div[id^="divFotosProduto-"]').html(data.partialImagens);
}
domOpcoes.parents('div[id^="spotVejaTambem-"]').find('[id^="produto-nome-"]').text(data.nomeProdutoVariante);
domOpcoes.parents('div[id^="spotVejaTambem-"]').find('#hdnProdutoVarianteId').val(data.produtoVarianteId).trigger('change');
var opcaoResult = domOpcoes.parents('div[id^="divOpcoes-"]').attr("id").replace("divOpcoes-", "");
domOpcoes.parents('div[id^="spotVejaTambem-"]').find('#hdnProdutoVarianteId-' + opcaoResult).val(data.produtoVarianteId);
var valorTotalProdutos = 0;
domOpcoes.parents('[id^=liGrupoProduto]').find('span[id="spnValorTotal"]').text(data.precoProduto);
domOpcoes.parents('[id^=liGrupoProduto]').find('span[id="spnValorTotalParcelado"]').text(data.precoProdutoParcelado);
} else {
var fotoProdutoThumbId = domOpcoes.parents('div[id^="produto-item-"]').first().find("#divFotosProduto-Principal").find('input[id="FotoProdutoId"]').val();
// Verifica se o produto variante está indisponível, imprimindo a div "avisoIndisponivel", senão imprime as formas de pagamento
if (data.fotoProdutoId != fotoProdutoThumbId) {
domOpcoes.parents('div[id^="produto-item-"]').first().find("#divFotosProduto-Principal").html(data.partialImagens);
}
if (novoCheckout) {
var opcaoResult = domOpcoes.parents('div[id^="divOpcoes-"]').attr("id").replace("divOpcoes-", "");
domOpcoes.parents('div[id^="produto-item-"]').first().find("#hdnProdutoVarianteId-" + opcaoResult).val(data.produtoVarianteId).trigger('change');
}
else
domOpcoes.parents('div[id^="produto-item-"]').first().find("#hdnProdutoVarianteId-").val(data.produtoVarianteId).trigger('change');
// Atualiza o nome do produto variante.
domOpcoes.parents('[id^="produto-item-"]').first().find('[id^="produto-nome-"]').text(data.nomeProdutoVariante);
var valorTotalProdutos = 0;
domOpcoes.parents('[id^=liGrupoProduto]').find('span[id="spnValorTotal"]').text(data.precoProduto);
domOpcoes.parents('[id^=liGrupoProduto]').find('span[id="spnValorTotalParcelado"]').text(data.precoProdutoParcelado);
}
} else {
// Atualiza o hidden do produtoVarianteId
if (novoCheckout) {
var opcaoResult = domOpcoes.parents('div[id^="divOpcoes-"]').attr("id").replace("divOpcoes-", "");
domOpcoes.parents('div[id^="produto-item-"]').first().find("#hdnProdutoVarianteId-" + opcaoResult).val(data.produtoVarianteId).trigger('change');
}
else
domOpcoes.parents('div[id^="produto-item-"]').first().find('[id^="hdnProdutoVarianteId-"]').first().val(data.produtoVarianteId).trigger('change');
// Atualiza o nome do produto variante.
domOpcoes.parents('[id^="produto-item-"]').first().find('[id^="produto-nome-"]').first().text(data.nomeProdutoVariante);
if (Fbits.Produto.Atributos.urlAtualizar.includes("ListaDeDesejos/AtualizarProduto")) {
domOpcoes.parents('.produtosListaDesejos').find('[id^="produto-preco-"]').find('.precoPor').first().text("R$ " + data.precoProduto)
}
domOpcoes.parents('[id^="produto-item-"]').first().find('[id^="produto-pagamentoparcelamento-"]').html(data.partialParcelamentoPadrao);
domOpcoes.parents('[id^="produto-item-"]').first().find('[id^="fbits-componente-parcelamento-"]').html(data.partialParcelamento);
adicionaEventoParcelamento();
//Verifica se é a mesma foto, se for não recarrega.
// var fotoProdutoId = domOpcoes.parents('div[id^="produto-item-"]').find('div[id="divFotosProduto"]').find('input[id="FotoProdutoId"]').val();
var fotoProdutoId = domOpcoes.parents('[id^="produto-item-"]').find('[id^="produto-imagem-"]').find('input[id="FotoProdutoId"]').val();
/*if (domOpcoes.parents('[id^="produto-item-"]').first().find('[id^="produto-imagem-"]').length > 0)
fotoProdutoId = */
if (data.fotoProdutoId != fotoProdutoId) {
domOpcoes.parents('[id^="produto-item-"]').find('[id^="produto-imagem-"]').html(data.partialImagens);
if ($('#zoomImagemProduto').length > 0) {
adicionaEventosImagens();
adicionaEventosImagensModal();
}
}
//TODO: VERIFICAR CÓDIGO REPLICADO: PAGINA DE PRODUTO UTILIZANDO O MÉTODO ANTIGO DE INCLUIR PRODUTO NO CARRINHO.
// Se produto variante não estiver disponível, substitui a divFormaPagamento pela avisoIndisponivel
}
if (!isCompreJunto)//se o produto atualizado for compre junto não atualiza o parcelamento do gateway
atualizaPartialGateway(data, produtoId);
// Combinação de atributos não existe em nenhum variante.
if (data.combinacaoInexistente != "") {
showCombinacaoIndexistente(domOpcoes.parents('[id^="produto-item-"]'), data);
}
else {
if (typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "false") {
if (data.disponivel) {
if (isCompreJunto)
{
showComprar(domOpcoes.parents('[id^="produto-item-"]').first(), data, true);
}
else {
var el = domOpcoes.parents('[id^="produto-item-"]');
el.find('[id^="combinacao-inexistente"]').first().hide();
if (window.location.href.includes("checkout") && el.find('[id^="produto-variante"]').length != 0) {
el = el.find('[id^="produto-variante"]');
}
showComprar(el, data, false);
}
}
else {
showAviseme(domOpcoes.parents('[id^="produto-item-"]').first(), data);
}
}
}
}
if (!isCompreJunto) {
domOpcoes.parents('[id^="produto-item-"]').find('[id^="produto-variante"]').html(data.partialComplete);
}
//Tem 3 tipos de quantidade, só estava mudando o 1
if (domOpcoes.parents('[id^="produto-item-"]').find('[id^="item-quantidade-"]').first().length > 0) {
domOpcoes.parents('[id^="produto-item-"]').find('[id^="item-quantidade-"]').first().focus();
domOpcoes.parents('[id^="produto-item-"]').find('[id^="item-quantidade-"]').first().val('');
domOpcoes.parents('[id^="produto-item-"]').find('[id^="item-quantidade-"]').first().val(quantidade);
}
//if (domOpcoes.parents('[id^="produto-item-"]').find('[id=item-quantidade-1]').length > 0) {
// domOpcoes.parents('[id^="produto-item-"]').find('[id=item-quantidade-1]').val(quantidade);
//}
var comprarModal = false;
//Eventos comprar do produto
$('[id^=produto-botao-comprar-]').unbind('click');
if ($(elementOpcoes).closest("div[id^='produto-modal-']").length > 0) {
comprarModal = true;
$('[id^=produto-botao-comprar-]').bind('click', function () {
comprarProdutoModal($(this).parents('[id^="produto-item-"]'), true, $(this));
});
} else {
$('[id^=produto-botao-comprar-]').bind('click', function () {
comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar");
});
}
$('[id^=produto-servico-botao-comprar-]').unbind('click');
$('[id^=produto-servico-botao-comprar-]').bind('click', function () {
comprarComServico($(this).parents('[id^="produto-servico-item-"]'), true, $(this));
});
//Eventos comprar do produto
$('[id^=produto-assinatura-botao-comprar-]').unbind('click');
$('[id^=produto-assinatura-botao-comprar-]').bind('click', function () {
if (novoCheckout) {
if (vincularAssinaturaRecorrencia) {
vincularAssinaturaRecorrencia();
}
if (comprarModal) {
comprarProdutoModal($(this).parents('[id^="produto-item-"]'), true, $(this));
} else {
comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar");
}
} else {
comprarComAssinatura($(this).parents('[id^="produto-item-"]'), true, $(this));
}
});
$('#msgEstoqueDisponivel').html(data.msgEstoqueDisponivel);
//Retorna a partialView de opções
domOpcoes.parents('div[id^="divOpcoes-"]').find('li[id^="liComboItem-' + comboSelecionado + '"]').html(data.partialAtributos);
// atribui o evento de carrossel nas imagens do mobile
if ($("#imagensProduto") != null && $("#imagensProduto").children().length > 1) {
$("#imagensProduto").slidesjs(produtoArgs());
}
/*Imagens e vídeo*/
$('[id="thumbItem"]').click(function () {
clickImagemThumb(this);
});
if (typeof details_shim !== 'undefined' && $.isFunction(details_shim)) { details_shim.init(); }
if (typeof (atualizaEtiquetaAtacado) !== typeof (undefined))
atualizaEtiquetaAtacado(data);
ajustaTamanhoDivCores();
$.each(loadEvents, function (_, f) { f(); });
}
});
} // FIM carregarOpcoes
function ajustaTamanhoDivCores() {
for (var i = 0; i < $('[class*="valorAtributo valorAtributoCor"]').length; i++) {
var url = $('[class*="valorAtributo valorAtributoCor"]')[i].style.background.split("=")
var newUrl = url[0] + "=" + url[1] + "=" + $('[class*="valorAtributo valorAtributoCor"]')[0].scrollWidth + url[2].substring(url[2].indexOf("&")) + "=" + $('[class*="valorAtributoCor"]')[0].scrollHeight + "\")";
$('[class*="valorAtributo valorAtributoCor"]')[i].style.background = newUrl;
}
}
function atualizaPartialGateway(data, produtoId) {
if ($('div[id^="produto-parcelamento-gateway"]').length > 0) {
var urlAtualizaBoleto = fbits.ecommerce.urlEcommerce + 'Produto/AtualizarProdutoVarianteBoleto';
var precoPor = data.precoProduto.replace(" ", "").replace("R$", "").replace(".", "").replace(",", ".");
precoPor = parseFloat(precoPor);
//$('div[id^="produto-variante"').first().find('class=precoPor').val();
$("div[id^='produto-parcelamento-gateway-']").each(function (index) {
var grupo = $(this);
var config = grupo.data('componente-fbits-config');
$.ajax({
type: 'POST',
url: urlAtualizaBoleto,
data: JSON.stringify({ "produtoId": produtoId, "config": config, "precoPor": precoPor }),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
if (data.ParcelamentoGateway.trim() != "") {
grupo.replaceWith(data.ParcelamentoGateway);
$(".summary").click(function (event) {
$(this).parent().find('.details-content').slideToggle(200);
$(this).parent().find('.details-content').prev().toggleClass("opened");
event.stopImmediatePropagation();
});
}
}
});
});
}
}
/**
* Mostra o combinação inexistente na pagina de produtos, lista de desejos e carrinho
*/
function showCombinacaoIndexistente(produtoItemElement, data) {
//Site: Pagina de produto.
produtoItemElement.find('[id^=produto-comprar-]').hide();
produtoItemElement.find('[id^="produto-aviseme-"]').hide();
produtoItemElement.find('[id^="combinacao-inexistente"]').replaceWith(data.combinacaoInexistente);
produtoItemElement.find('[id^="combinacao-inexistente"]').show();
produtoItemElement.find('[id^=produto-servicos-]').hide();
produtoItemElement.find('[id=fbits-produto-promocao-divulgacao]').hide();
produtoItemElement.find('[id^="produto-botao-adicionar-carrinho-"]').hide();
//Site: Lista de desejos.
produtoItemElement.find('td[id^=produto-preco-]').replaceWith(data.combinacaoInexistente);
produtoItemElement.find('[id^="produto-comprar-"]').hide();
//Carrinho: Produto brinde.
produtoItemElement.find('[id^=produto-brinde-quantidade-]').hide();
produtoItemElement.find('[id^=produto-brinde-validar-]').hide();
produtoItemElement.find('[id^=produto-brinde-texto-]').hide();
produtoItemElement.find('[id^=produto-brinde-combinacao-inexistente-]').show();
produtoItemElement.find('[id^=produto-brinde-aviseme-]').hide();
//Produto: Produto recomendado.
produtoItemElement.find('[id^=produto-recomendado-aviseme-]').hide();
produtoItemElement.find('[id^=produto-recomendado-comprar-]').hide();
produtoItemElement.find('[id^=produto-recomendado-combinacao-inexistente-]').show();
}
function adicionaEventoParcelamento() {
var togView = false;
$("#summary").on('click', function () {
if (togView == false) {
$(this).parent().find('.details-content').slideToggle(200);
$(this).parent().find('.details-content').prev().toggleClass("opened");
togView = true;
return false;
}
togView = false;
});
}
/**
* Mostra o avise-me na pagina de produtos, lista de desejos e carrinho
*/
function showAviseme(produtoItemElement, data) {
//Generico
produtoItemElement.find('[id^=produto-comprar-]').hide();
$('.fbits-comprar[data-componente-fbits-id=27]').hide();
//Site: Pagina de produto.
produtoItemElement.find('[id="divFormaPagamento"]').replaceWith(data.partialFormaPagamento);
produtoItemElement.find('[id^="produto-aviseme-"]').replaceWith(data.partialAviseMe);
produtoItemElement.find('[id^="produto-aviseme-"]').show();
produtoItemElement.find('[id^="combinacao-inexistente"]').hide();
produtoItemElement.find('[id^=produto-servicos-]').hide();
produtoItemElement.find('[id=fbits-produto-promocao-divulgacao]').hide();
//atualiza preço do produto mesmo quando estiver indisponível
$('.fbits-preco[data-componente-fbits-id=26]').replaceWith(data.partialPreco);
//Site: Lista de desejos.
produtoItemElement.find('[id^=produto-preco-]').replaceWith(data.partialAviseMe);
produtoItemElement.find('[id^="produto-comprar-"]').hide();
//Carrinho: Produto brinde.
produtoItemElement.find('[id^=produto-brinde-quantidade-]').hide();
produtoItemElement.find('[id^=produto-brinde-validar-]').hide();
produtoItemElement.find('[id^=produto-brinde-texto-]').hide();
produtoItemElement.find('[id^=produto-brinde-combinacao-inexistente-]').hide();
produtoItemElement.find('[id^=produto-brinde-aviseme-]').html(data.partialAviseMe);
produtoItemElement.find('[id^=produto-brinde-aviseme-]').show();
//Produto: Produto recomendado.
produtoItemElement.find('[id^=produto-recomendado-aviseme-]').html(data.partialAviseMe);
produtoItemElement.find('[id^=produto-recomendado-aviseme-]').show();
produtoItemElement.find('[id^=produto-recomendado-comprar-]').hide();
produtoItemElement.find('[id^=produto-recomendado-combinacao-inexistente-]').hide();
}
/**
* Mostra as opçoes de compra do produto e esconde views como avise-me e combinação inexistente.
*/
function showComprar(produtoItemElement, data, isCompreJunto) {
//Genericos
produtoItemElement.find('[id^=produto-comprar-]').show();
$('.fbits-comprar[data-componente-fbits-id=27]').show();
//Site: Pagina de produto.
produtoItemElement.find('[id="divFormaPagamento"]').first().replaceWith(data.partialFormaPagamento);
if (!isCompreJunto) {
$('.fbits-preco[data-componente-fbits-id=26]').replaceWith(data.partialPreco);
}
//produtoItemElement.find('[id^="produto-pagamentoparcelamento-"]').html(data.partialParcelamentoPadrao);
if (produtoItemElement.find('div[id="precoCompreJuntoPorProduto"]').length == 1)
produtoItemElement.find('div[id="precoCompreJuntoPorProduto"]').html(data.partialFormaPagamento);
if (Fbits.Evento && Fbits.Evento.TemEventoAtivo && data.partialBotaoComprar !== undefined)
produtoItemElement.find("[id^=produto-comprar-]").first().replaceWith(data.partialBotaoComprar);
produtoItemElement.find('[id^=produto-servicos-]').html(data.partialServicos);
produtoItemElement.find('[id=fbits-produto-promocao-divulgacao]').show();
produtoItemElement.find('[id=fbits-produto-promocao-divulgacao]').html(data.partialDivulgacao);
produtoItemElement.find('[id=fbits-div-preco-off]').html(data.partialDesconto);
$("[id^=produto-servico-botao-comprar-]").unbind("click");
$("[id^=produto-servico-botao-comprar-]").bind("click", function () {
comprarComServico($(this).parents('[id^="produto-servico-item-"]'), true, $(this));
});
produtoItemElement.find('[id^="produto-aviseme-"]').hide();
produtoItemElement.find('[id^="combinacao-inexistente"]').hide();
//Site: Lista de desejos.
produtoItemElement.find('[id^=produto-preco-]').html(data.partialFormaPagamento);
produtoItemElement.find('td[id^="produto-preco-"]').attr('colspan', 1);
//Carrinho: Produto brinde.
produtoItemElement.find('[id^=produto-brinde-quantidade-]').show();
produtoItemElement.find('[id^=produto-brinde-validar-]').show();
produtoItemElement.find('[id^=produto-brinde-texto-]').show();
produtoItemElement.find('[id^=produto-servicos-]').show();
produtoItemElement.find('[id^=produto-brinde-aviseme-]').hide();
produtoItemElement.find('[id^=produto-brinde-combinacao-inexistente-]').hide();
//Produto: Produto recomendado.
produtoItemElement.find('[id^=produto-recomendado-aviseme-]').hide();
produtoItemElement.find('[id^=produto-recomendado-combinacao-inexistente-]').hide();
produtoItemElement.find('[id^=produto-recomendado-comprar-]').show();
produtoItemElement.find('[id^="produto-botao-adicionar-carrinho-"]').show();
}
//Elemento do change dos atributos
function changeEventsSelQuantidade() {
$('div[id="' + $(divBtnRemove).attr('id') + '"]').unbind();
$('div[id^="' + $(divBtnRemove).attr('id') + '"]').click(function () { removeProductOptions(this); });
//Atribui evento de change nos selects de quantidade
$('div[id^="dvGrupoSelecaoAtributos"]').find('select[id="selQuantidade"]').unbind('change');
$('div[id^="dvGrupoSelecaoAtributos"]')
.find('select[id="selQuantidade"]')
.change(function () {
var domGrupoSelecaoAtributos = $(this).parents('div[id^="dvGrupoSelecaoAtributos-"]');
var ultimaQuantidadeSelecionada = $(this).val();
var quantidadeSelecionada = selectedUnits(domGrupoSelecaoAtributos);
var quantidadePermitida = $(this).parents('div[id^="divItensCombo-"]').find('input[id^="hdnMaxItemCombo-"]').val();
var quantidadeNaoSelecionada = $(domGrupoSelecaoAtributos).children('div[id^="' + divOpcoesPartialId + '"]').find('select[id="selQuantidade"][value="0"] :selected ').length;
showSelectedUnits(quantidadeSelecionada);
if (quantidadePermitida > 0) {
if (ultimaQuantidadeSelecionada > 0) {
if (quantidadeSelecionada < quantidadePermitida) {
if (quantidadeNaoSelecionada <= 0) {
appendHtmlSelectedAttrGroup($(this).parents('div[id^="' + divOpcoesPartialId + '"]').first());
}
}
else {
if (quantidadeNaoSelecionada > 0) {
removeHtmlSelectedAttrGroup(this);
}
}
//Insere a frase de erro
if (quantidadeSelecionada > quantidadePermitida && quantidadePermitida > 0 /*&& $(this).parents('div[id^="divItensCombo-"]').children('div[id="' + $(divMsgErro).attr('id') + '"]').length <= 0*/) {
//$(this).parents('div[id^="divItensCombo-"]').after(divMsgErro).fadeIn('slow', 100);
showError($(this).parents('div[id^="divItensCombo-"]'), 'Você selecionou uma quantidade acima do permitido. Por favor verifique.');
if (quantidadeNaoSelecionada > 0) {
removeHtmlSelectedAttrGroup(this);
}
}
}
else {
if (quantidadeSelecionada >= quantidadePermitida) {
if (quantidadeNaoSelecionada > 0) {
removeHtmlSelectedAttrGroup(this);
}
}
else {
if (quantidadeNaoSelecionada > 1) {
removeHtmlSelectedAttrGroup(this);
}
}
}
if ($('div[id^="' + btnRemove + '"]').length >= $('div[id^="' + divOpcoesPartialId + '"]').length) {
$('div[id^="' + btnRemove + '"]').first().remove();
}
}
});
}
/**
* Valida as opções selecionadas.
*/
function checkOpcoesSelecionadas(domGrupoSelecaoAtributos) {
var quantidadeSelecionada = selectedUnits(domGrupoSelecaoAtributos); //Quantidade selecionada
var quantidadePermitida = $(domGrupoSelecaoAtributos).find('input[id^="hdnMaxItemCombo-"]').first().val(); //Limite de compra utilizado para produtos combo
//Validação para kits de produtos
if (quantidadePermitida > 0) {
if (quantidadeSelecionada == 0) {
showError($(domGrupoSelecaoAtributos).find('[id^="' + labelErroPartialId + '"]').last(), "Por favor selecione as opções para completar este Produto.");
return false;
} else if (quantidadeSelecionada > quantidadePermitida) {
showError($(domGrupoSelecaoAtributos).find('[id^="' + labelErroPartialId + '"]').last(), "Você deve selecionar no máximo " + quantidadePermitida + " opções para completar este Produto.");
return false;
} else if (quantidadeSelecionada < quantidadePermitida) {
showError($(domGrupoSelecaoAtributos).find('[id^="' + labelErroPartialId + '"]').last(), "Por favor selecione mais " + (quantidadePermitida - quantidadeSelecionada) + " opções para completar este Produto.");
return false;
} else {
if ($(domGrupoSelecaoAtributos).find('select[id^="selAtributo-"][value="Selecione"] :selected').length > 0) {
showError($(domGrupoSelecaoAtributos).find('[id^="' + labelErroPartialId + '"]').last(), "Por favor selecione as opções para completar este Produto.");
return false;
}
}
}
return true;
}
/**
* Método responsavel por esconder mensagens de erro
* @method hideErrors
*/
function hideErrors() {
$('[id^="' + labelErroPartialId + '"]').html('').fadeOut('slow');
}
//Inicializa a pagina de produtos, carregando o zoom se necessario e adicionando a função as dropdown
function initProdutoAtributos() {
var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]');
if (domGrupoSelecaoAtributos.find('#hdnQuantidadeOpcoes').val() == 1) {
var atrbs = domGrupoSelecaoAtributos.find('#divOpcoes-0').find('.optionAtributos');
if (atrbs.length == 0) {
domGrupoSelecaoAtributos.find('#divOpcoes-0').find("#selQuantidade[value=0]").val(1);
domGrupoSelecaoAtributos.find('#divOpcoes-0').find("#selQuantidade option[value=0]").hide();
showSelectedUnits(1);
}
}
changeEventsSelQuantidade();
//Copia o html de opções dos produtos
htmlProductOptions = $('div[id^="' + divOpcoesPartialId + '"]').first().clone();
htmlProductOptions.find('div[id^="divItensCombo-"]').children().first().before(divBtnRemove);
} // FIM InitProduto
//Remove os atributos - Verificar
function removeHtmlSelectedAttrGroup(obj) {
$(obj).parents('div[id^="dvGrupoSelecaoAtributos-"]').children('div[id^="' + divOpcoesPartialId + '"]')
.find('select[id="selQuantidade"][value="0"] :selected ')
.last()
.parents('div[id^="' + divOpcoesPartialId + '"]')
.remove();
}
/**
* Método responsável por remover as div´s de opções de atributos.
* @method removeProductOptions
*/
function removeProductOptions(btnRemoveElement) {
$(btnRemoveElement).parents('div[id^="' + divOpcoesPartialId + '"]').remove();
showSelectedUnits(selectedUnits());
}
/**
* Método responsavel por demonstrar as mensagens de erro na tela.
* @method showError
*/
function showError(errorObj, msg) {
var obj;
var objId = errorObj.attr('id');
if (obj == undefined && objId == undefined) {
obj = $("#mensagem-erro");
}
else {
if (objId.replace(labelErroPartialId) != objId) {
obj = errorObj;
}
else {
obj = errorObj.parents('[id^="' + divOpcoesPartialId + '"]').find('[id^="' + labelErroPartialId + '"]');
}
}
obj.first().stop().html(msg).fadeTo('slow', 1.0).delay(7000).fadeOut('slow');
}
/**
* Método responsável por verificar a quantidade de produtos selecionados.
* @method selectedUnits
*/
function selectedUnits(domGrupoSelecaoAtributos) {
var quantidade = 0;
$(domGrupoSelecaoAtributos).find('[id="selQuantidade"]').each(function (index) {
if ($(this).val() == undefined || $(this).val() == 'undefined' || $(this).val() < 0) quantidade = 0;
quantidade += parseInt($(this).val());
});
return quantidade;
}
/**
* Método responsável por demonstrar a quantidade de produtos selecionada selecionada.
* @method selectedUnits
*/
function showSelectedUnits(quantidade) {
$('div[id="productAmount-Principal"]').find('span[id="spnQuantidade"]').text(quantidade);
}
/*
* Atualiza o preço de atacado do produto quando não tem mais de uma variante
*/
function atualizarPrecoAtacado(quantidadeSelecionada) {
var quantidade = 1;
var produtoId = $('#hdnProdutoId').val();
var produtoVarianteId = $('div[id^="produto-item-"]').first().find('[id^="hdnProdutoVarianteId-"]').first().val();
//if ($("#item-quantidade-1").length > 0) {
// quantidade = $("#item-quantidade-1").val();
//}
//if ($("#item-quantidade-2").length > 0) {
// quantidade = $("#item-quantidade-2").val();
//}
if ($(quantidadeSelecionada).length > 0) {
quantidade = $(quantidadeSelecionada).val();
}
$.ajax({
type: 'POST',
url: fbits.ecommerce.urlEcommerce + 'Produto/AtualizarPrecoAtacado',
data: {
"produtoId": produtoId,
"quantidade": quantidade,
"produtoVarianteId": produtoVarianteId
},
success: function (data) {
//$('[id^="produto-item-"]').find('[id=item-quantidade-1]').val(quantidade);
if (data.disponivel) {
showComprar($('[id^="produto-item-"]').eq(0), data, false);
}
if (typeof (atualizaEtiquetaAtacado) !== typeof (undefined))
atualizaEtiquetaAtacado(data);
}
});
if ($('[data-atributoselecionado="True"]').first().length > 0 && $('[id^="divOpcoes-"]').first().is(":hidden") == false) {
carregarOpcoes($('[data-atributoselecionado="True"]').first());
}
}
//Adiciona eventos...
$(function () {
//Função responsavel por adicionar os eventos relacionados aos atributos
$('body').on('change', 'select[data-codigoatributo]', function (event) {
carregarOpcoes(this);
}); // Os elementos select.
$('body').on('click', 'div[data-codigoatributo] > * > *', function (event) {
event.preventDefault();
carregarOpcoes(this);
}); // Todas as opções div.
$("body").on("change", "#item-quantidade-1", function () {
if (Fbits.Produto.EtiquetaAtacado != undefined && Fbits.Produto.EtiquetaAtacado.length > 0)
atualizarPrecoAtacado(this);
});
$("body").on("keyup", "#item-quantidade-2", function () {
if (Fbits.Produto.EtiquetaAtacado != undefined && Fbits.Produto.EtiquetaAtacado.length > 0)
atualizarPrecoAtacado(this);
});
});
;
///
///
/*!
* JavaScript fbits.produto.atributos Library v1.0.0
* Copyright 2012, Fbits e-Partner Business
*
* Date: 29/10/2012
*/
//var novoCheckout = document.cookie.indexOf('carrinho-id') >= 0;
/**
* Adiciona os eventos aos elementos da página
*/
$(document).ready(function () {
adicionaEventosImagens();
ajustaTamanhoDivCores();
});
var personalizacaoPendente = false;
$(function () {
//$('[id^=spot-comprar-]', 'body').on('click', function () {
// if ($(this).attr('data-abrirModal') == 'True') {
// abrirProdutoModal($(this));
// } else {
// comprarProdutoSpot($(this));
// }
//});
$('[id^=produto-botao-comprar-]', 'body').on('click', function () {
comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar");
});
//Eventos comprar do spot
//$('[id^=spot-comprar-]').unbind('click');
//$('[id^=spot-comprar-]').click(function () {
// if ($(this).attr('data-abrirModal') == 'True') {
// abrirProdutoModal($(this));
// } else {
// comprarProdutoSpot($(this));
// }
//});
//Eventos comprar do produto
//$('[id^=produto-botao-comprar-]').unbind('click');
//$('[id^=produto-botao-comprar-]').bind('click', function () {
// comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar");
//});
$('[id^=produto-botao-adicionar-carrinho-]').unbind('click');
$('[id^=produto-botao-adicionar-carrinho-]').bind('click', function () {
comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoAdicionar");
});
$('[id^=produto-servico-botao-comprar-]').unbind('click');
$('[id^=produto-servico-botao-comprar-]').bind('click', function () {
comprarComServico($(this).parents('[id^="produto-servico-item-"]'), true, $(this));
});
//Eventos comprar do produto
$('[id^=produto-assinatura-botao-comprar-]').unbind('click');
$('[id^=produto-assinatura-botao-comprar-]').bind('click', function () {
if (novoCheckout) {
if (vincularAssinaturaRecorrencia) {
vincularAssinaturaRecorrencia();
}
comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar");
} else {
comprarComAssinatura($(this).parents('[id^="produto-item-"]'), true, $(this));
}
});
$("#tipoVisualizacao li").click(this, selecionaTipoVisualizacao);
//Eventos de video.
adicionaEventosImagens();
//Função responsavel por adicionar os eventos relacionados aos atributos
$('body').on('change', 'select[data-codigoServico]', function (event) {
if (event.srcElement) atualizarServico(event.srcElement);
}); // Os elementos select.
$('body').on('click', 'div[data-codigoServico] > *', function (event) {
if (event.srcElement) atualizarServico(event.srcElement);
else if (event.target) atualizarServico(event.target);
}); // Todas as opções div.
});
/**
* Atualiza o resumo do carrinho.
*/
function atualizarResumoCarrinho() {
if (window.carregarCarrinho) //Verifica se existe a function
carregarCarrinho(); //Atualiza o resumo do carrinho
}
/**
* Busca a quantidade de itens na tela.
*/
function buscaQuantidadeItensLista() {
var quantidade = 0;
quantidade = $('[id^=produto-item-]').length;
quantidade = quantidade == undefined ? 0 : quantidade;
return quantidade;
}
/**
* Busca os dados do produto da tela.
*/
function buscaParametrosTela(domGrupoSelecaoAtributos) {
//Variavéis
var quantidade = 0;
var quantidadeOpcoesTela = 0;
var quantidadeOpcoesParalelas = 0;
var quantidadeOpcoesParalelasSelecionadas = 0
var optionString = "Selecione";
var prePedidiProdutoBrindeId = 0;
var produtoIdPagina = 0;
var produtoComboId = 0;
var produtoVarianteId = 0;
var textoPopUpValorReferente = '';
var IsAssinatura = false;
quantidadeOpcoesParalelas = $('input[id="hdnQuantidadeOpcoes"]', domGrupoSelecaoAtributos).val(); //Busca quantidade de opções paralelas
quantidadeOpcoesTela = $('div[id^="divOpcoes-"]', domGrupoSelecaoAtributos).length; //Busca quantidade de opções da tela
quantidadeOpcoesTela = quantidadeOpcoesTela != undefined ? quantidadeOpcoesTela : 0;
produtoComboId = $('input[id="hdnProdutoComboId"]', domGrupoSelecaoAtributos).val(); //Busca o identificador do produto combo
produtoIdPagina = $('input[id="hdnProdutoId"]', domGrupoSelecaoAtributos).val(); //Busca o identigicador do produto
textoPopUpValorReferente = $('span[id="spnValorReferente"]', domGrupoSelecaoAtributos).text(); //Busca o texto para popup de valor referente
if (($("#tipo-produto-assinatura").length > 0 && $("#tipo-produto-assinatura:checked").length > 0) ||
($("#tipo-produto-assinatura").length == 0 && $("a[id^='produto-assinatura-botao-comprar-']").length > 0)) {
IsAssinatura = true;
}
if (produtoIdPagina == 0 || produtoIdPagina == undefined) { //Verifica se o produtoId é válido
return null; //Retorna para a tela
}
//Lista utilizada para enviar os parametros para a controller
var listaParametros = new Array();
var i = 0;
var attrNome;
do { //While nas opções paralelas
var quantidade = 0;
var opcaoSelecionada = true;
var attrNaoSelecionado = false;
var comboId = 0;
var produtoId = 0;
var dadosAtributo = [];
var listaPersonalizacoes = [];
domGrupoSelecaoAtributos
.find('div[id="divOpcoes-' + i + '"]')
.find('[data-codigoatributo]')
.each(function (contadorItemCombo, itemCombo) {
//$(this) = elemento da iteração
var attrId = $(itemCombo).attr('data-codigoAtributo');
attrNome = $(itemCombo).attr('data-nomeAtributo');
var attrValor = 'Selecione';
comboId = $(itemCombo).parents('li[id^="liComboItem-"]').attr('id').replace('liComboItem-', '');
produtoId = $('input[id^="hdnProdutoId"]', itemCombo).val(); //Busca o produtoId do componente do combo
if ($(itemCombo).find('[data-atributoSelecionado="True"]').length == 1) {
attrValor = $($(itemCombo).find('[data-atributoSelecionado="True"]')[0]).attr('data-valoratributo');
}
if (novoCheckout && attrValor == optionString && opcaoSelecionada == true && quantidadeOpcoesParalelas == 1) {
showError($('[id^=mensagem-erro-]', domGrupoSelecaoAtributos), "Selecione um(a) " + attrNome + " do produto.");
attrNaoSelecionado = true;
}
dadosAtributo.push({ AtributoId: attrId, Valor: attrValor }); //Insere os dados na lista
//Verifica se a opção não foi selecionada
if (attrValor == optionString && opcaoSelecionada == true) { opcaoSelecionada = false; }
});
if (opcaoSelecionada) { quantidadeOpcoesParalelasSelecionadas++; }
//SELECIONA A QUANTIDADE
if (domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]').find('[id^="item-quantidade"]').length > 0)//Com base na opção paralela
quantidade = domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]').find('[id^="item-quantidade"]').first().val();
else if (domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]').find('[id="selQuantidade"]').length > 0)//Com no modelo antigo
quantidade = domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]').find('[id="selQuantidade"]').val();
else//Com base em qualquer posição da tela.
if ($("#tipo-produto-assinatura").is(":checked"))
quantidade = $('div[id^="produto-assinatura-item-"]').find('[id^="item-quantidade-"]').first().val();
else if ($('[id ^=produto-variante-][id $=' + produtoIdPagina + ']').find('[id^="item-quantidade-"]').length > 0)
quantidade = $('[id ^=produto-variante-][id $=' + produtoIdPagina + ']').find('[id^="item-quantidade-"]').val();
else
quantidade = $(domGrupoSelecaoAtributos).parents('[id^=produto-item-]').find('[id^="item-quantidade-"]').first().val();
if (typeof quantidade === 'undefined') {
quantidade = 1;
}
//SELECIONA O PRODUTO VARIANTE ID
produtoVarianteId = domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]').parent().find('input[id="hdnProdutoVarianteId-' + i + '"]').val();
if (typeof produtoVarianteId === 'undefined') {
produtoVarianteId = domGrupoSelecaoAtributos.find('input[id="hdnProdutoVarianteId-' + i + '"]').val();
}
listaPersonalizacoes = buscarPersonalizacoes(domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]'));
if ($("#grupo-produto-personalizacao-").attr('data-personalizacao-obrigatorio') == "True" && listaParametros.length == 0 && listaPersonalizacoes == null && quantidadeOpcoesParalelas - 1 == i) {
showError($('[id^=mensagem-erro-]', domGrupoSelecaoAtributos), "Selecione uma personalização do produto.");
attrNaoSelecionado = true;
}
//ADICIONA OS PARAMETROS NA LISTA
if (listaPersonalizacoes != null) {
listaParametros.push({
ProdutoComboId: produtoComboId,
ProdutoVarianteId: produtoVarianteId,
ComboId: comboId,
ProdutoId: produtoId,
Atributos: dadosAtributo,
Quantidade: quantidade,
ListaPersonalizacoes: listaPersonalizacoes
});
}
i++;
} while (i < quantidadeOpcoesParalelas || i < quantidadeOpcoesTela)
var sellerBuyBoxNaoSelecionado = false;
if ((typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "true") && $("input[name='checkBuyBox']:checked").length == 0) {
showError($('#mensagem-erro-buyBox'), "Selecione uma loja.");
if (!attrNaoSelecionado) {
sellerBuyBoxNaoSelecionado = true;
}
attrNaoSelecionado = true;
}
//Se for opção paralela e não tiver nenhum selecionado, apresenta erro e não vai para checkout
if (quantidadeOpcoesParalelas > 1 && quantidadeOpcoesParalelasSelecionadas == 0 && (typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "false")) {
showError($('[id^=mensagem-erro-]', domGrupoSelecaoAtributos), "Selecione um(a) " + attrNome + " do produto.");
attrNaoSelecionado = true;
}
//Se for opção paralela e ter algum selecionado, porém sem quantidade selecionada, apresenta erro e não vai para checkout
if (novoCheckout && quantidadeOpcoesParalelas > 1 && quantidadeOpcoesParalelasSelecionadas > 0) {
for (var i = 0; i < listaParametros.length; i++) {
if (listaParametros[i].Atributos.length > 0 && listaParametros[i].Atributos[0].Valor != "Selecione" && listaParametros[i].Quantidade == 0) {
showError($('[id^=mensagem-erro-]', domGrupoSelecaoAtributos), "Selecione a quantidade do produto.");
attrNaoSelecionado = true;
break;
}
}
}
var objetoParametroComprarProduto = {}; //Objeto a ser enviado para requisição
objetoParametroComprarProduto.ProdutoId = produtoIdPagina; //Identificador do produto da página
objetoParametroComprarProduto.StrOpcional = optionString, //String opcional da DropDownList
objetoParametroComprarProduto.IsAssinatura = IsAssinatura, //Identificador de assinatura
objetoParametroComprarProduto.DadosProduto = listaParametros, /*Dados da tela, utilizado para identificar um combo, quantidade e atributos selecionados*/
objetoParametroComprarProduto.attrNaoSelecionado = attrNaoSelecionado, //Identifica que algum atributo não está selecionado
objetoParametroComprarProduto.sellerBuyBoxNaoSelecionado = sellerBuyBoxNaoSelecionado //Identifica se somente está faltando selecionar o buybox
return objetoParametroComprarProduto;
}
/**
* Incluir determinado produto no carrinho.
* @method validarItens
*/
function comprarProduto(domProdutoItem, redirecionar, clickElement, origem) {
if ($().fancybox && origem == "botaoAdicionar") {
$.fancybox.showActivity();
}
habilitarCompra(false); //Desabilida botões de compra
redirecionar = redirecionar == undefined ? false : redirecionar;
//Busca o elemento qual possui os dados para compra do produto.
var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', domProdutoItem); //Busca elemento principal
if (checkOpcoesSelecionadas(domGrupoSelecaoAtributos)) {
if ($(".divCompreJuntoCarrossel").length > 0) {
comprarProdutoCompreJunto($('[id^="produto-item-"]'), origem);
return habilitarCompra(true); //Habilita botões de compra
} /*else {
domGrupoSelecaoAtributos = $("#dvGrupoSelecaoAtributos-0");
}*/
}
var produtoIdMKP = 0;
var produtoVarianteIdMKP = 0;
if ((typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "true")) {
var buyBoxProdutoId = $("input[name='checkBuyBox']:checked").data("produtoid");
var buyBoxProdutoVarianteId = $("input[name='checkBuyBox']:checked").val();
if (buyBoxProdutoId != undefined && buyBoxProdutoVarianteId != undefined) {
produtoIdMKP = $("#dvGrupoSelecaoAtributos-0 #hdnProdutoId").val();
produtoVarianteIdMKP = $("#dvGrupoSelecaoAtributos-0 #hdnProdutoVarianteId-0").val();
$("#dvGrupoSelecaoAtributos-0 #hdnProdutoId").val(buyBoxProdutoId);
$("#dvGrupoSelecaoAtributos-0 #hdnProdutoVarianteId-0").val(buyBoxProdutoVarianteId);
}
}
var objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela
var objetoParametroComprarServico = buscarServicosTela(clickElement);
objetoParametroComprarProduto.ListaServicos = objetoParametroComprarServico.ListaServicos;
objetoParametroComprarProduto.VerificarServico = objetoParametroComprarServico.VerificarServico;
if (objetoParametroComprarProduto != undefined) {
if (typeof (objetoParametroComprarProduto.DadosProduto) !== 'undefined') {
// remove produtos com ids inválidos retornados pelo método 'buscaParametrosTela' (Acontece apenas em cenário de Compre Junto)
for (var i = objetoParametroComprarProduto.DadosProduto.length - 1; i >= 0; i--) {
if (typeof (objetoParametroComprarProduto.DadosProduto[i].ProdutoVarianteId) === 'undefined') {
objetoParametroComprarProduto.DadosProduto.splice(i, 1);
}
else if (novoCheckout) {
//remove opção não selecionada (no caso de opção paralela, estava mandando pro novo checkout uma opção não selecionada)
var atributosSelecionados = objetoParametroComprarProduto.DadosProduto[i].Atributos.filter(function (atributo) { return atributo.Valor !== 'Selecione' });
if (objetoParametroComprarProduto.DadosProduto[i].Atributos.length > 0 && atributosSelecionados.length !== objetoParametroComprarProduto.DadosProduto[i].Atributos.length) {
objetoParametroComprarProduto.DadosProduto.splice(i, 1);
}
}
}
}
if ((typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "true") && produtoIdMKP > 0) {
$("#dvGrupoSelecaoAtributos-0 #hdnProdutoId").val(produtoIdMKP);
$("#dvGrupoSelecaoAtributos-0 #hdnProdutoVarianteId-0").val(produtoVarianteIdMKP);
}
if (novoCheckout && !objetoParametroComprarProduto.attrNaoSelecionado) {
comprarProdutoRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, redirecionar, origem); //Realiza a requisição para comprar o produto
}
else if (!novoCheckout) {
comprarProdutoRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, redirecionar, origem); //Realiza a requisição para comprar o produto
}
else if (novoCheckout && objetoParametroComprarProduto.attrNaoSelecionado) {
$.fancybox.hideActivity();
}
}
habilitarCompra(true); //Habilita botões de compra
}
/**
* Função responsável por enviar a requisição de compra do produto para o server.
*/
function comprarProdutoRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, origem) {
var parametroCompraProduto = JSON.stringify(objetoParametroComprarProduto); //Transforma o objeto no tipo JSON.
var urlCompraProduto = fbits.ecommerce.urlEcommerce; //Url para compra de produtos.
if (Fbits.Evento.TemEventoAtivo && Fbits.Evento.Perfil === "Dono") {
// caso aja evento ativo deverá ser encaminhado para "/Produto/Comprar"
urlCompraProduto = fbits.ecommerce.urlEcommerce;
}
else if (typeof (ListaDeDesejosCheckout) !== 'undefined' || novoCheckout) {
urlCompraProduto = fbits.ecommerce.urlCarrinho;
}
var _compraProduto = function () {
$.ajax({
type: 'POST',
url: urlCompraProduto + 'Produto/ComprarProduto',
data: parametroCompraProduto,
async: false,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
xhrFields: { withCredentials: novoCheckout },
success: function (data) {
if (Fbits.Evento.TemEventoAtivo && Fbits.Evento.Perfil == "Dono" && data.resultadoCompra.StatusRequisicao === 0 && (data.resultadoCompra.Mensagem == "" || data.resultadoCompra.Mensagem == null)) {
if ($().fancybox) {
$.fancybox('
' +
'
' +
'
' +
'
' +
'
' +
'' +
'
' +
'
' +
'
' + Fbits.Produto.Nome + '
' +
'
' +
'
' +
'
' +
'
' +
'
' +
'
' +
'Produto foi adicionado ao seu evento com sucesso! ' +
'Continue adicionando produtos ao seu evento.' +
'
' +
'
' +
'
' +
'
' +
'
'
);
if ($("[id^=produto-comprar-]").first().find("a").length > 0)
$("[id^=produto-comprar-]").first().find("a").text("Produto já adicionado a lista");
}
} else {
if (novoCheckout) {
//Se for novo checkout, verifica o products para validar quantidade selecionada e estoque disponível
var redirecionar = data.redirecionar;
$.ajax({
type: 'GET',
url: fbits.ecommerce.urlEcommerce + "Produto/GetDadosProdutoFromProducts/",
data: { produtoVarianteId: objetoParametroComprarProduto.DadosProduto[0].ProdutoVarianteId },
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (dataProducts) {
if (dataProducts.retorno != null && dataProducts.retorno != undefined) {
var retorno = jQuery.parseJSON(dataProducts.retorno);
if (retorno != null && retorno != undefined && retorno.EstoqueFisico != undefined && retorno.EstoqueFisico != null) {
//url http://localhost:51189/api/produtovariante/padrao?Ids=301
//var estoqueFisico = retorno[0].Estoque[0].EstoqueFisiso;
//var estoqueReservado = retorno[0].Estoque[0].EstoqueReservado;
//url http://localhost:51189/api/produtovariante/padrao/estoque/301
var estoqueFisico = retorno.EstoqueFisico != undefined ? retorno.EstoqueFisico : 0;
var estoqueReservado = retorno.EstoqueReservado != undefined ? retorno.EstoqueReservado : 0;
var estoqueAtual = estoqueFisico - estoqueReservado;
var quantidadeSelecionada = parseInt(objetoParametroComprarProduto.DadosProduto[0].Quantidade, 10) != undefined ? parseInt(objetoParametroComprarProduto.DadosProduto[0].Quantidade, 10) : 0;
if (estoqueAtual < quantidadeSelecionada) {
redirecionar = false;
data.resultadoCompra.Mensagem = "Não foi possível atender a quantidade solicitada, existem apenas " + estoqueAtual + " unidades disponíveis.";
data.resultadoCompra.StatusRequisicao = 1;
}
}
}
//return redirecionar;
},
error: function (jqXHR, textStatus, errorThrown) {
personalizacaoPendente = false;
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
resolveResultadoComprar(data, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, objetoParametroComprarProduto, origem);
}
}).done(function (dataProducts) {
data.redirecionar = redirecionar;
resolveResultadoComprar(data, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, objetoParametroComprarProduto, origem);
}).fail(function () {
resolveResultadoComprar(data, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, objetoParametroComprarProduto, origem);
});
} else {
resolveResultadoComprar(data, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, objetoParametroComprarProduto, origem);
}
}
}
});
}
if (novoCheckout) {
$.ajax({
url: fbits.ecommerce.urlCarrinho + 'api/carrinho/',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function (carrinho) {
var guidParceiro = Fbits.Framework.Cookie.getCookie("Parceiro");
if (guidParceiro != undefined && guidParceiro != null && guidParceiro != "") {
var dataParceiro = {
carrinhoId: carrinho.Id,
Parceiro: guidParceiro
};
var nomeCliente = fbits.ecommerce.nomeModificado;
nomeCliente = (nomeCliente.split(' ').join('')).toLowerCase();
$.ajax({
type: 'POST',
async: false,
url: "https://parceiros-pub.fbits.net/parceiros/" + nomeCliente + "/encrypt/carrinho",
contentType: 'application/json',
data: JSON.stringify(dataParceiro),
async: false,
success: function (dataParceiroResponse) {
if (dataParceiroResponse) {
console.log("Parceiro vinculado com sucesso!");
}
}
});
}
//var temPersonalizacao = Boolean($('.produto-personalizacao').find("[id^='txt-personalizacao']").val());
//if (temPersonalizacao) {
// var qtdeProdutos = parseInt($('[id^="item-quantidade"]').val());
// var obj = {
// carrinhoId: carrinho.Id,
// prodComPersonalizacoes: Array.apply(null, new Array(qtdeProdutos)).map(function () {
// return {
// produtoId: objetoParametroComprarProduto.ProdutoId,
// produtoVarianteId: objetoParametroComprarProduto.DadosProduto[0].ProdutoVarianteId,
// personalizacoes: objetoParametroComprarProduto.DadosProduto[0].ListaPersonalizacoes.map(function (x) {
// return { personalizacaoId: x.GrupoPersonalizacaoDetalheId, valor: x.Personalizacao };
// })
// }
// }).reduce((acc, val) => acc.concat(val), [])
// }
//}
////se tem personalização faz request
//if (temPersonalizacao && obj.prodComPersonalizacoes[0].personalizacoes.length) {
var aux = [];
var produtosComPersonalizacao = objetoParametroComprarProduto.DadosProduto.filter(dp => dp.ListaPersonalizacoes.length > 0);
var temPersonalizacao = produtosComPersonalizacao.length > 0;
// Se existem produtos com itens na ListaPersonalizacoes montamos o objeto para enviar para o custom
if (objetoParametroComprarProduto.DadosProduto.map(function (dp) { return dp.ListaPersonalizacoes }).length > 0) {
var produtosPersonalizados = [];
for (var i = 0; i < objetoParametroComprarProduto.DadosProduto.length; i++) {
var produtoPersonalizado = {
produtoId: objetoParametroComprarProduto.ProdutoId,
produtoVarianteId: objetoParametroComprarProduto.DadosProduto[i].ProdutoVarianteId,
personalizacoes: objetoParametroComprarProduto.DadosProduto[i].ListaPersonalizacoes.map(function (p, key) { return aux[key] = { personalizacaoId: p.GrupoPersonalizacaoDetalheId, valor: p.Personalizacao } })
};
// Adicionamos na lista de acordo com a quantidade de produtos
for (var ii = 0; ii < objetoParametroComprarProduto.DadosProduto[i].Quantidade; ii++) {
produtosPersonalizados.push(produtoPersonalizado);
}
}
var obj = {
carrinhoId: carrinho.Id,
prodComPersonalizacoes: produtosPersonalizados
}
}
//se tem personalização faz request
if (temPersonalizacao) {
if (!personalizacaoPendente) {
personalizacaoPendente = true;
$.ajax({
type: 'POST',
url: fbits.ecommerce.urlCustom + '/list',
contentType: 'application/json',
data: JSON.stringify(obj),
success: _compraProduto,
error: function (ex) {
personalizacaoPendente = false;
$('div.produto-personalizacao').first().append('
Ops! Houve um problema ao personalizar!
');
setTimeout(function () {
$('div.produto-personalizacao div[data-error]').remove();
}, 4000);
}
});
}
} else {
_compraProduto();
}
}
});
} else {
_compraProduto();
}
}
function resolveResultadoComprar(data, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, objetoParametroComprarProduto, origem) {
var removerItensComSucesso = false;
if (data.redirecionar) { //Remove ou não os itens
removerItensComSucesso = true;
}
tratarResultadoCompraProduto(data.resultadoCompra, domGrupoSelecaoAtributos, removerItensComSucesso); //Trata sucesso e erros da requisição
if (data.resultadoCompra.AbrirModal && data.urlRedirecionar) {
$.get(data.urlRedirecionar, function (data) {
if ($().fancybox) {
var a = $.fancybox(data);
$('[id^=produto-botao-comprar-]').unbind('click');
$('[id^=produto-botao-comprar-]').bind('click', function () {
comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar");
});
}
$('[id^="tb-servico-item-"]').click(function (event) {
if ($(this).find('input[id^="radio-sem-servico-"]').length > 0) {
$(this).find('input[id^="radio-sem-servico-"]').prop('checked', true);
atualizarServico($(this).find('input[id^="radio-sem-servico-"]'));
}
else if ($(this).find('input[id^="radio-servico-"]').length > 0) {
$(this).find('input[id^="radio-servico-"]').prop('checked', true);
atualizarServico($(this).find('input[id^="radio-servico-"]'));
}
});
});
}
else if (data.redirecionar && enviarUsuarioAoCarrinho) { //Redireciona o usuário para o carrinho
if (origem == "botaoComprar") {
location.href = data.urlRedirecionar;
} else if (origem == "botaoAdicionar") {
personalizacaoPendente = false;
$.ajax({
type: 'POST',
url: fbits.ecommerce.urlEcommerce + 'Produto/ModalConfirmacaoProduto',
data: { produtoId: objetoParametroComprarProduto.ProdutoId },
success: function (data) {
if ($().fancybox) {
if (novoCheckout) {
$.ajax({
type: "GET",
url: fbits.ecommerce.urlCarrinho + "/api/carrinho?cache=false",
xhrFields: { withCredentials: true },
success: function (dataCheckout) {
var total = 0
var tipoItem = "item"
for (var i = 0, _len = dataCheckout.Produtos.length; i < _len; i++) {
total += dataCheckout.Produtos[i].Quantidade
}
tipoItem = total > 1 ? "itens" : "item";
var modal = data.dados.replace('0', '' + total + '');
modal = modal.replace('item', '' + tipoItem + '');
$.fancybox(modal)
},
crossDomain: true
});
} else {
$.fancybox(data.dados);
}
}
}
});
}
}
else {
personalizacaoPendente = false;
if ($().fancybox && origem == "botaoAdicionar") {
$.fancybox.hideActivity();
}
//Mostra mensagens para o usuario
$('html, body').animate({
//scrollTop: $(this.domGrupoSelecaoAtributos).offset().top - 70
scrollTop: $(".produtoInfo").offset().top
}, 'slow');
}
}
/**
* Função responsável por enviar a requisição de compra do produto para o server.
*/
function comprarProdutoAssinaturaRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho) {
var parametroCompraProduto = JSON.stringify(objetoParametroComprarProduto); //Transforma o objeto no tipo JSON.
var urlCompraProduto = '/Produto/ComprarProdutoAssinatura'; //Url para compra de produtos.
//Realiza a requisição ajax
$.ajax({
type: 'POST',
url: urlCompraProduto,
data: parametroCompraProduto,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
context: { domGrupoSelecaoAtributos: domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho: enviarUsuarioAoCarrinho },
success: function (data) {
var removerItensComSucesso = false;
if (data.redirecionar) { //Remove ou não os itens
removerItensComSucesso = true;
}
tratarResultadoCompraProduto(data.resultadoCompra, this.domGrupoSelecaoAtributos, removerItensComSucesso); //Trata sucesso e erros da requisição
if (data.resultadoCompra.AbrirModal && data.urlRedirecionar) {
$.get(data.urlRedirecionar, function (data) {
if ($().fancybox) {
var a = $.fancybox(data);
$('[id^=produto-assinatura-botao-comprar-]').unbind('click');
$('[id^=produto-assinatura-botao-comprar-]').bind('click', function () {
if (novoCheckout) {
if (vincularAssinaturaRecorrencia) {
vincularAssinaturaRecorrencia();
}
comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar");
return;
} else {
comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this));
}
});
}
$('table[id^="tb-servico-item-"]').click(function (event) {
$(event.srcElement).parents('table').find('input[id^="radio-servico-"]').click();
if ($(event.srcElement).parents('table').find('input[id^="radio-servico-"]')) atualizarServico($(event.srcElement).parents('table').find('input[id^="radio-servico-"]'));
});
});
}
else if (data.redirecionar && this.enviarUsuarioAoCarrinho) { //Redireciona o usuário para o carrinho
location.href = data.urlRedirecionar;
}
else {
//Mostra mensagens para o usuario
$('html, body').animate({
scrollTop: $(this.domGrupoSelecaoAtributos).offset().top - 70
}, 'slow');
}
}
});
}
// Compra todos os produtos selecionados na tela
function comprarProdutoCompreJunto(domListaProdutoItens, origem) {
/*habilitarCompra(false); //Desabilida botões de compra
var domGrupoSelecaoAtributos = {};
var listaParametros = [];
var objetoParametroComprarProduto = {};
var atributosSelecionados = true;
var IdSeletor = 0;
$(domListaProdutoItens).each(function (contador, produtoItem) {
//Busca o elemento qual possui os dados para compra do produto.
if ($(produtoItem).find("[id^=Adicionar-ProdutoId]").length == 1 && !$(produtoItem).hasClass("detalhe-produto-itens")) {
if ($(produtoItem).find("[id^=Adicionar-ProdutoId]").is(":checked") == false)
return;
else
IdSeletor = produtoItem.id.split("-").pop(-1);
}
if ($(produtoItem).parents("#divGruposProdutoRecomendado").length == 1)
return;
domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-' + IdSeletor + '"]'); //Busca elemento principal
checkOpcoesSelecionadas(domGrupoSelecaoAtributos); //Verifica a quantidade, utilizada para validar os combos
objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela
if (objetoParametroComprarProduto != null) //Adiciona o objeto com os dados da tela na lista
listaParametros.push(objetoParametroComprarProduto);
});
if (listaParametros.length > 0)
comprarProdutoTodosRequest(listaParametros); //Realiza a requisição para comprar o produto
habilitarCompra(true); //Habilita botões de compra*/
habilitarCompra(false); //Desabilida botões de compra
var domGrupoSelecaoAtributos = {};
var listaParametros = [];
var objetoParametroComprarProduto = {};
var atributosSelecionados = true;
var IdSeletor = 0;
$(domListaProdutoItens).each(function (contador, produtoItem) {
//Busca o elemento qual possui os dados para compra do produto.
if ($(produtoItem).find("[id^=Adicionar-ProdutoId]").length == 1 && !$(produtoItem).hasClass("detalhe-produto-itens")) {
if ($(produtoItem).find("[id^=Adicionar-ProdutoId]").is(":checked") == false)
return;
else
IdSeletor = produtoItem.id.split("-").pop(-1);
}
if ($(produtoItem).parents("#divGruposProdutoRecomendado").length == 1)
return;
domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-' + IdSeletor + '"]'); //Busca elemento principal
checkOpcoesSelecionadas(domGrupoSelecaoAtributos); //Verifica a quantidade, utilizada para validar os combos
objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela
if (objetoParametroComprarProduto != null) { //Adiciona o objeto com os dados da tela na lista
if (objetoParametroComprarProduto.attrNaoSelecionado) {
atributosSelecionados = false;
return;
}
listaParametros.push(objetoParametroComprarProduto);
}
});
if (novoCheckout && objetoParametroComprarProduto.attrNaoSelecionado) {
$.fancybox.hideActivity();
return;
}
var _compraProdutoJuntosPersonalizacao = function () {
if (listaParametros.length > 0 && atributosSelecionados)
comprarProdutoTodosRequest(listaParametros, origem); //Realiza a requisição para comprar o produto
habilitarCompra(true); //Habilita botões de compra
}
if (novoCheckout) {
$.ajax({
url: fbits.ecommerce.urlCarrinho + 'api/carrinho/',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function (carrinho) {
var guidParceiro = Fbits.Framework.Cookie.getCookie("Parceiro");
if (guidParceiro != undefined && guidParceiro != null && guidParceiro != "") {
var dataParceiro = {
carrinhoId: carrinho.Id,
Parceiro: guidParceiro
};
$.ajax({
type: 'POST',
async: false,
url: "https://parceiros-pub.fbits.net/parceiros/" + (fbits.ecommerce.nome.replace(" ", "")).toLowerCase() + "/encrypt/carrinho",
contentType: 'application/json',
data: JSON.stringify(dataParceiro),
success: function (dataParceiroResponse) {
if (dataParceiroResponse) {
console.log("Parceiro vinculado com sucesso!");
}
}
});
}
if (listaParametros.length > 0) {
var aux = {};
var produtos = [];
var hasPersonalizacao = false;
var qtdeProdutos = 0;
var produtosPersonalizados = [];
var aux2 = [];
$("[id^='produto-item']").each(function () {
var textPersonalizacao = "";
if ($(this).find("[id^='txt-personalizacao']").length > 0)
textPersonalizacao = String($(this).find("[id^='txt-personalizacao']").val());
else if ($(this).find("[id^='ddl-personalizacao-']").length > 0)
textPersonalizacao = String($(this).find("[id^='ddl-personalizacao-']").val());
if (textPersonalizacao !== undefined && textPersonalizacao !== "undefined" && textPersonalizacao !== '') {
hasPersonalizacao = true;
// Se existem produtos com itens na ListaPersonalizacoes montamos o objeto para enviar para o custom
if (objetoParametroComprarProduto.DadosProduto.map(function (dp) {
return dp.ListaPersonalizacoes
}).length > 0) {
for (var a = 0; a < listaParametros.length; a++) {
for (var i = 0; i < listaParametros[a].DadosProduto.length; i++) {
var produtoPersonalizado = {
produtoId: listaParametros[a].ProdutoId,
produtoVarianteId: listaParametros[a].DadosProduto[i].ProdutoVarianteId,
personalizacoes: listaParametros[a].DadosProduto[i].ListaPersonalizacoes.map(function (p, key) {
return aux2[key] = {
personalizacaoId: p.GrupoPersonalizacaoDetalheId,
valor: p.Personalizacao
}
})
};
// Adicionamos na lista de acordo com a quantidade de produtos
for (var ii = 0; ii < listaParametros[a].DadosProduto[i].Quantidade; ii++) {
if (produtoPersonalizado.produtoId != null && produtoPersonalizado.produtoVarianteId != null) {
produtosPersonalizados.push(produtoPersonalizado);
}
}
}
}
}
}
});
var obj = {
carrinhoId: carrinho.Id,
prodComPersonalizacoes: produtosPersonalizados
}
}
if (hasPersonalizacao) {
$.ajax({
type: 'POST',
url: fbits.ecommerce.urlCustom + '/list',
contentType: 'application/json',
data: JSON.stringify(obj),
success: _compraProdutoJuntosPersonalizacao,
error: function (ex) {
$('#divCompreJunto').first().append('
Ops! Houve um problema ao personalizar!
');
setTimeout(function () {
$('#divCompreJunto div[data-error]').remove();
}, 4000);
}
});
} else {
_compraProdutoJuntosPersonalizacao();
}
}
});
} else {
_compraProdutoJuntosPersonalizacao();
}
}
/**
* Incluir uma lista de produtos no carrinho.
* @method validarItens
*/
function comprarProdutoTodos(domListaProdutoItens) {
habilitarCompra(false); //Desabilida botões de compra
var domGrupoSelecaoAtributos = {};
var listaParametros = [];
var objetoParametroComprarProduto = {};
var atributosSelecionados = true;
$(domListaProdutoItens).each(function (contador, produtoItem) {
if (!produtoItem.parentElement.id.includes("produto-dados-variante-")) {
//Busca o elemento qual possui os dados para compra do produto.
domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', produtoItem); //Busca elemento principal
checkOpcoesSelecionadas(domGrupoSelecaoAtributos); //Verifica a quantidade, utilizada para validar os combos
objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela
if (objetoParametroComprarProduto != null) //Adiciona o objeto com os dados da tela na lista
listaParametros.push(objetoParametroComprarProduto);
}
});
if ($.grep(listaParametros, function (dados) { return dados.attrNaoSelecionado; }).length > 0) {
habilitarCompra(true);
return;
}
if (listaParametros.length > 0)
comprarProdutoTodosRequest(listaParametros, 'botaoComprar'); //Realiza a requisição para comprar o produto
habilitarCompra(true); //Habilita botões de compra
}
/**
* Função responsável por enviar a requisição de compra do produto para o server.
*/
function comprarProdutoTodosRequest(listaObjetoParametroComprarProduto, origem) {
var listaParametroCompraProduto = JSON.stringify(listaObjetoParametroComprarProduto); //Transforma o objeto no tipo JSON.
var urlCompraProduto = (novoCheckout ? fbits.ecommerce.urlCarrinho : fbits.ecommerce.urlEcommerce) + '/Produto/ComprarProdutoTodos'; //Url para compra de produtos.
if (typeof (ListaDeDesejosCheckout) != 'undefined') {
urlCompraProduto = fbits.ecommerce.urlCarrinho + 'Produto/ComprarProdutoTodos'
}
//Realiza a requisição ajax
$.ajax({
type: 'POST',
url: urlCompraProduto,
data: listaParametroCompraProduto,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
xhrFields: { withCredentials: novoCheckout },
success: function (data) {
tratarResultadoCompraProdutoTodos(data.resultadoCompra, data.redirecionar, origem); //Trata sucesso e erros da requisição
}
});
}
/**
* Habilita ou desabilita elementos de inclusão do produto no carrinho
* @param halibitar
* true habilita elementos.
* false desabilita elementos.
* caso seja diferente desabilita os elementos
*/
function habilitarCompra(halibitar) {
if (halibitar) { //Habilita o botão comprar e esconde a div de carregando.
$('input[id^=comprar-]').removeAttr('disabled');
$('input[id^=carrinho-comprar]').removeAttr('disabled');
$('input[id=todos-comprar]').removeAttr('disabled');
$('input[id^=um-clique-comprar-]').removeAttr('disabled');
$('[id^=spot-comprar-]').removeAttr('disabled');
} else { //Desabilita o botão para evitar varios cliques
$('input[id^=comprar-]').attr('disabled', 'disabled');
$('input[id^=carrinho-comprar]').attr('disabled', 'disabled');
$('input[id=todos-comprar]').attr('disabled', 'disabled');
$('input[id^=um-clique-comprar-]').attr('disabled', 'disabled');
$('[id^=spot-comprar-]').attr('disabled', 'disabled');
}
}
/**
* Função responsável por tratar o resultado da compra de produto.
* @param data Dados da resposta da requisição.
* @param domGrupoSelecaoAtributos elemento DOM o qual comtem os dados do determinado produto.
*/
function tratarResultadoCompraProduto(data, domGrupoSelecaoAtributos, removerItem) {
if (domGrupoSelecaoAtributos != undefined) { //Vefica a existencia do grupo de seleção de atributos
var produtoItem = $(domGrupoSelecaoAtributos).parents('[id^=produto-item-]'); //Busca os dados do item
removerItem = (removerItem == undefined) ? true : removerItem;
if (data.StatusRequisicao == 0 && produtoItem != undefined) //Produto comprado com sucesso
{
$(produtoItem).addClass("itemEnabled");
if (removerItem) {
$('input[id^="produto-remover-"]', produtoItem).trigger('click'); //Chama o evento de remover do botão
}
atualizarResumoCarrinho();
}
else //Trata erros
{
//Seta as mensagens de erro.
//$('[id^="divOpcoes-"]').each(function () {
// hideErrors();
//});
$('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(''); //Limpa mensagens de erro
var index = data.indexOpcoes == undefined || data.indexOpcoes < 0 ? 0 : data.indexOpcoes; //Checa o index do produto a receber a mensagem
//$('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(data.Mensagem); //Seta mensagem
$(produtoItem).addClass("itemDisabled");
$('[id="produto-legenda"]').removeClass('displayNone').addClass('displayBlock');
if (data.erroIndex >= 0) {
//domGrupoSelecaoAtributos.find('#divOpcoes-' + data.erroIndex).find('.erro').html();
showError(domGrupoSelecaoAtributos.find('#divOpcoes-' + data.erroIndex).find('[id^="' + labelErroPartialId + '"]'), data.Mensagem)
}
else {
if (data.Mensagem != "") {
showError($('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos), data.Mensagem)
}
else {
$('[id^="divOpcoes-"]').each(function () {
showError($(this).find('[id^="' + labelErroPartialId + '"]'), data.Mensagem);
});
}
}
}
}
}
/**
* Função responsável por tratar o resultado da compra de produto (quando existem múltiplos produtos na página).
* @param data Dados da resposta da requisição.
* @param domGrupoSelecaoAtributos elemento DOM o qual comtem os dados do determinado produto.
*/
function tratarResultadoCompraProduto2(data, domGrupoSelecaoAtributos, removerItem) {
if (domGrupoSelecaoAtributos != undefined) { //Vefica a existencia do grupo de seleção de atributos
var produtoItem = $(domGrupoSelecaoAtributos).parents('[id^=produto-item-]'); //Busca os dados do item
removerItem = (removerItem == undefined) ? true : removerItem;
if (data.StatusRequisicao == 0 && produtoItem != undefined) //Produto comprado com sucesso
{
$(produtoItem).addClass("itemEnabled");
if (removerItem) {
$('input[id^="produto-remover-"]', produtoItem).trigger('click'); //Chama o evento de remover do botão
}
atualizarResumoCarrinho();
}
else //Trata erros
{
//Seta as mensagens de erro.
$('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).html('').fadeOut('slow');
$('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(''); //Limpa mensagens de erro
var index = data.indexOpcoes == undefined || data.indexOpcoes < 0 ? 0 : data.indexOpcoes; //Checa o index do produto a receber a mensagem
$('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(data.Mensagem); //Seta mensagem
$(produtoItem).addClass("itemDisabled");
$('[id="produto-legenda"]').removeClass('displayNone').addClass('displayBlock');
if (data.erroIndex >= 0) {
domGrupoSelecaoAtributos.find('#divOpcoes-' + data.erroIndex).find('[id^="' + labelErroPartialId + '"]').stop().html(data.msgErro).fadeTo('slow', 1.0).delay(7000).fadeOut('slow');
}
else {
if (data.Mensagem != "") {
if ($(domGrupoSelecaoAtributos).parents('div[id^="divCompreJunto"]').length > 0) {
$('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).stop().html(data.msgErro).focus();
} else {
$('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).stop().html(data.msgErro).fadeTo("slow", 1).delay(7000).fadeOut("slow")
}
}
else {
$('[id^="divOpcoes-"]').each(function () {
$(this).find('[id^="' + labelErroPartialId + '"]').stop().html(data.msgErro).fadeTo('slow', 1.0).delay(7000).fadeOut('slow');
});
}
}
}
}
}
/**
* Função responsável por tratar o resultado da compra de um conjunto de produtos.
* @param data Dados da resposta da requisição.
*/
function tratarResultadoCompraProdutoTodos(data, redirecionar, origem) {
//Variaveis
var domGrupoSelecaoAtributos = {};
var redirecionar = (redirecionar == undefined) ? false : redirecionar;
var removerItensComSucesso = false;
var isCompreJunto = ($("#divCompreJunto").length > 0);
if (redirecionar) { //Remove ou não os itens
removerItensComSucesso = true;
}
if (window.location.href.toLowerCase().indexOf("listadedesejos") > -1) {
$.each($('div[id^="dvGrupoSelecaoAtributos-"]', '[id^="produto-item-"]'), function (index, value) {
//console.log(value)
//console.log($('input[id^="produto-remover-"]', $(value).parents('[id^=produto-item-]')));
tratarResultadoCompraProduto2(data, value, removerItensComSucesso);
});
} else {
//Iteração com os itens do retorno
$.each(data, function (index, value) {
if (isCompreJunto)
tratarResultadoComprarCompreJunto(value);
else {
domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', '[id^="produto-item-"]')[index];
tratarResultadoCompraProduto2(value, domGrupoSelecaoAtributos, removerItensComSucesso);
}
});
}
if (origem == "botaoComprar") {
if (redirecionar) { //Redireciona o usuário para o carrinho
location.href = fbits.ecommerce.urlCarrinho;
}
else { //Mostra mensagens para o usuario
if (!isCompreJunto)
$('html, body').animate({ scrollTop: 100 }, 'slow');
}
} else if (origem == "botaoAdicionar") {
$.ajax({
type: 'POST',
url: fbits.ecommerce.urlEcommerce + 'Produto/ModalConfirmacaoProduto',
data: { produtoId: 0 },
success: function (data) {
if ($().fancybox) {
if (novoCheckout) {
$.ajax({
type: "GET",
url: fbits.ecommerce.urlCarrinho + "/api/carrinho?cache=false",
xhrFields: { withCredentials: true },
success: function (dataCheckout) {
var total = 0
var tipoItem = "item"
for (var i = 0, _len = dataCheckout.Produtos.length; i < _len; i++) {
total += dataCheckout.Produtos[i].Quantidade
}
tipoItem = total > 1 ? "itens" : "item";
var modal = data.dados.replace('0', '' + total + '');
modal = modal.replace('item', '' + tipoItem + '');
$.fancybox(modal)
},
crossDomain: true
});
} else {
$.fancybox(data.dados);
}
}
}
});
}
}
/*
Trata do resultado da compra do componente compre junto
*/
function tratarResultadoComprarCompreJunto(data) {
if (identificador !== null && identificador !== undefined) {
var identificador = data.IdentificadorDOM.split("-")[0];
var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', '[id ^=produto-item-][id $=' + identificador + ']').first();
}
if (domGrupoSelecaoAtributos != undefined && domGrupoSelecaoAtributos.length > 0) { //Vefica a existencia do grupo de seleção de atributos
if (data.StatusRequisicao == 0) //Produto comprado com sucesso
{
$(domGrupoSelecaoAtributos).addClass("itemEnabled");
atualizarResumoCarrinho();
}
else //Trata erros
{
//Seta as mensagens de erro.
$('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).html('').fadeOut('slow');
$('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(''); //Limpa mensagens de erro
var index = data.indexOpcoes == undefined || data.indexOpcoes < 0 ? 0 : data.indexOpcoes; //Checa o index do produto a receber a mensagem
$('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(data.Mensagem); //Seta mensagem
$(domGrupoSelecaoAtributos).addClass("itemDisabled");
$('[id="produto-legenda"]').removeClass('displayNone').addClass('displayBlock');
if (data.erroIndex >= 0) {
domGrupoSelecaoAtributos.find('#divOpcoes-' + data.erroIndex).find('[id^="' + labelErroPartialId + '"]').stop().html(data.msgErro).fadeTo('slow', 1.0).delay(7000).fadeOut('slow');
}
else {
if (data.Mensagem != "") {
if ($(domGrupoSelecaoAtributos).parents('div[id^="divCompreJunto"]').length > 0) {
var indexSlide = domGrupoSelecaoAtributos.parents(".slick-slide").attr("data-slick-index");
$('.divCompreJuntoCarrossel').slick('slickGoTo', indexSlide, true);
$('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).stop().html(data.msgErro);
} else {
$('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).stop().html(data.msgErro).fadeTo("slow", 1).delay(7000).fadeOut("slow")
}
}
else {
$('[id^="divOpcoes-"]').each(function () {
$(this).find('[id^="' + labelErroPartialId + '"]').stop().html(data.msgErro).fadeTo('slow', 1.0).delay(7000).fadeOut('slow');
});
}
}
}
}
}
/**
* Abre uma modal pop up com os dados do produto a ser comprado.
* @method validarItens
*/
function trataModalProduto(event) {
//var element = document.getElementById(event.context.id);
var element = document.querySelector('[data-produtoId="' + event.context.dataset.produtoid + '"]');
if (element.getAttribute("data-abrirmodal") == 'True') {
if (/Mobi/.test(navigator.userAgent)) {
window.location.href = '/produto/' + event.attr('data-produtoId');
} else {
abrirProdutoModal(event);
}
} else {
if (novoCheckout)
comprarProdutoSpotNovoCarrinho(event);
else
comprarProdutoSpot(event);
}
}
function abrirProdutoModal(domProdutoItem) {
var produtoId = domProdutoItem.attr('data-produtoId');
var imageElement = domProdutoItem.parents('[id^=produto-spot-item-]').find('[id^=produto-spot-imagem]');
if ($().fancybox) {
$.fancybox.showActivity();
}
$.get('/ProdutoModal/' + produtoId,
function (data) {
if ($().fancybox) {
//Monta a modal
$.fancybox(data, {
'showCloseButton': true,
'onComplete': function () {
try {
if (typeof loadFacebookShare == 'function') {
loadFacebookShare();
if (typeof FB !== 'undefined') {
FB.XFBML.parse($('.shareFacebook')[0]);
}
}
if (typeof loadTwitter == 'function') {
loadTwitter();
if (typeof twttr !== 'undefined') {
twttr.widgets.load();
}
}
if (typeof loadGooglePlus == 'function') {
loadGooglePlus();
}
if (typeof loadAddThis == 'function') {
loadAddThis();
}
} catch (e) {
console.log("houve um problema na funçao 'OnComplete' da função abrirProdutoModal()")
}
},
'onClosed': function () {
removeModalZoomContainer();
},
'onCleanup': function () {
removeModalZoomContainer();
}
});
//Setamos eventos da modal
adicionaEventosImagensModal();
if (changeEventsSelQuantidade) {
changeEventsSelQuantidade();
}
//Seta eventos comprar do produto
$('[id^=produto-botao-comprar-]', '[id^=produto-modal-]').unbind('click');
$('[id^=produto-botao-comprar-]', '[id^=produto-modal-]').bind('click', function (event) {
event.preventDefault();
comprarProdutoModal($(this).parents('[id^="produto-item-"]'), imageElement);
});
}
}
);
}
// método para evitar que a div de zoom seja indevidamente removida
function removeModalZoomContainer() {
var containers = $(".zoomContainer");
if (typeof containers !== 'undefined') {
var containersCount = containers.length;
if (containersCount > 1) {
var $zoomContainer = $(".zoomContainer")[1];
if (typeof $zoomContainer !== 'undefined') {
$(".zoomContainer")[1].remove();
}
}
}
}
/**
* Incluir determinado produto no carrinho.
* @method validarItens
*/
function comprarProdutoModal(domProdutoItem, imageElement) {
habilitarCompra(false);
//Busca o elemento qual possui os dados para compra do produto.
var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', domProdutoItem); //Busca elemento principal
if (checkOpcoesSelecionadas(domGrupoSelecaoAtributos)) {
var objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela
if (objetoParametroComprarProduto != undefined && objetoParametroComprarProduto.attrNaoSelecionado == false)
comprarProdutoModalRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, imageElement); //Realiza a requisição para comprar o produto
}
habilitarCompra(true);
}
/**
* Função responsável por enviar a requisição de compra do produto para o server.
*/
function comprarProdutoModalRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, imageElement) {
var parametroCompraProduto = JSON.stringify(objetoParametroComprarProduto); //Transforma o objeto no tipo JSON.
var urlCompraProduto = fbits.ecommerce.urlEcommerce + 'Produto/ComprarProduto';//Url para compra de produtos.
if (Fbits.Evento.TemEventoAtivo && Fbits.Evento.Perfil == "Dono") {
// caso aja evento ativo deverá ser encaminhado para "/Produto/Comprar"
urlCompraProduto = fbits.ecommerce.urlEcommerce + 'Produto/ComprarProduto';
}
else if (novoCheckout) {
urlCompraProduto = fbits.ecommerce.urlCarrinho + 'Produto/ComprarProduto';
}
//Realiza a requisição ajax
var _compraProduto = function () {
$.ajax({
type: 'POST',
url: urlCompraProduto,
data: parametroCompraProduto,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
xhrFields: { withCredentials: novoCheckout },
context: { domGrupoSelecaoAtributos: domGrupoSelecaoAtributos, imageElement: imageElement },
success: function (data) {
tratarResultadoCompraProdutoModal(data.resultadoCompra, this.domGrupoSelecaoAtributos, this.imageElement); //Trata sucesso e erros da requisição
}
});
};
if (novoCheckout) {
$.ajax({
url: fbits.ecommerce.urlCarrinho + 'api/carrinho/',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function (carrinho) {
// vincular personalizações pelo add produto na modal (trecho similar ao do método "comprarProdutoRequest")
var aux = [];
var produtosComPersonalizacao = objetoParametroComprarProduto.DadosProduto.filter(dp => dp.ListaPersonalizacoes.length > 0);
var temPersonalizacao = produtosComPersonalizacao.length > 0;
// Se existem produtos com itens na ListaPersonalizacoes montamos o objeto para enviar para o custom
if (objetoParametroComprarProduto.DadosProduto.map(function (dp) { return dp.ListaPersonalizacoes }).length > 0) {
var produtosPersonalizados = [];
for (var i = 0; i < objetoParametroComprarProduto.DadosProduto.length; i++) {
var produtoPersonalizado = {
produtoId: objetoParametroComprarProduto.ProdutoId,
produtoVarianteId: objetoParametroComprarProduto.DadosProduto[i].ProdutoVarianteId,
personalizacoes: objetoParametroComprarProduto.DadosProduto[i].ListaPersonalizacoes.map(function (p, key) { return aux[key] = { personalizacaoId: p.GrupoPersonalizacaoDetalheId, valor: p.Personalizacao } })
};
// Adicionamos na lista de acordo com a quantidade de produtos
for (var ii = 0; ii < objetoParametroComprarProduto.DadosProduto[i].Quantidade; ii++) {
produtosPersonalizados.push(produtoPersonalizado);
}
}
var obj = {
carrinhoId: carrinho.Id,
prodComPersonalizacoes: produtosPersonalizados
}
}
//se tem personalização faz request
if (temPersonalizacao) {
if (!personalizacaoPendente) {
personalizacaoPendente = true;
$.ajax({
type: 'POST',
url: fbits.ecommerce.urlCustom + '/list',
contentType: 'application/json',
data: JSON.stringify(obj),
// success: _compraProduto, // neste caso não chama o _compraProduto pois ele vai ser chamado no if ou else do trecho que valida o parceiro
error: function (ex) {
personalizacaoPendente = false;
$('div.produto-personalizacao').first().append('
Ops! Houve um problema ao personalizar!
');
setTimeout(function () {
$('div.produto-personalizacao div[data-error]').remove();
}, 4000);
}
});
}
}
var guidParceiro = Fbits.Framework.Cookie.getCookie("Parceiro");
if (guidParceiro != undefined && guidParceiro != null && guidParceiro != "") {
var dataParceiro = {
carrinhoId: carrinho.Id,
Parceiro: guidParceiro
};
var nomeCliente = fbits.ecommerce.nomeModificado;
nomeCliente = (nomeCliente.split(' ').join('')).toLowerCase();
$.ajax({
type: 'POST',
async: false,
url: "https://parceiros-pub.fbits.net/parceiros/" + nomeCliente + "/encrypt/carrinho",
contentType: 'application/json',
data: JSON.stringify(dataParceiro),
async: false,
success: _compraProduto
});
}
else {
_compraProduto();
}
}
});
} else {
_compraProduto();
}
}
/**
* Função responsável por tratar o resultado da compra de produto da modal.
* @param data Dados da resposta da requisição.
* @param domGrupoSelecaoAtributos elemento DOM o qual comtem os dados do determinado produto.
*/
function tratarResultadoCompraProdutoModal(data, domGrupoSelecaoAtributos, imageElement) {
if (domGrupoSelecaoAtributos != undefined) { //Vefica a existencia do grupo de seleção de atributos
var produtoItem = $(domGrupoSelecaoAtributos).parents('[id^=produto-item-]'); //Busca os dados do item
if (data.StatusRequisicao == 0 && produtoItem != undefined) //Produto comprado com sucesso
{
if (Fbits.Evento.TemEventoAtivo && Fbits.Evento.Perfil == "Dono") {
if ($().fancybox) {
$.fancybox('
' +
'
' +
'
' +
'
' +
'
' +
'' +
'
' +
'
' +
'
' + Fbits.Produto.Nome + '
' +
'
' +
'
' +
'
' +
'
' +
'
' +
'
' +
'Produto foi adicionado ao seu evento com sucesso! ' +
'Continue adicionando produtos ao seu evento.' +
'
' +
'
' +
'
' +
'
' +
'
'
);
}
} else {
if ($().fancybox) {
$.fancybox.close();
}
atualizarResumoCarrinho();
efeitoSpotComprar(imageElement, $('.carrinho:first'));
}
}
else //Trata erros
{
//Seta as mensagens de erro.
$('[id^="divOpcoes-"]').each(function () {
hideErrors();
});
$('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(''); //Limpa mensagens de erro
var index = data.indexOpcoes == undefined || data.indexOpcoes < 0 ? 0 : data.indexOpcoes; //Checa o index do produto a receber a mensagem
$('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(data.Mensagem); //Seta mensagem
$(produtoItem).addClass("itemDisabled");
$('[id="produto-legenda"]').removeClass('displayNone').addClass('displayBlock');
if (data.erroIndex >= 0) {
showError(domGrupoSelecaoAtributos.find('#divOpcoes-' + data.erroIndex).find('[id^="' + labelErroPartialId + '"]'), data.msgErro)
}
else {
$('[id^="divOpcoes-"]').each(function () {
showError($(this).find('[id^="' + labelErroPartialId + '"]'), data.msgErro);
});
}
}
}
}
/**
* Incluir determinado produto no carrinho.
* @method validarItens
*/
function comprarProdutoSpot(spotComprarElement) {
$(spotComprarElement).attr('disabled', 'disabled');
var produtoId = spotComprarElement.attr('data-produtoId');
var produtoVarianteId = spotComprarElement.attr('data-produtoVarianteId');
var urlCompraProdutoVariante = (novoCheckout ? fbits.ecommerce.urlCarrinho : fbits.ecommerce.urlEcommerce) + '/Produto/ComprarProdutoVariante'; //Url para compra de produtos.
var imageElement = spotComprarElement.parents('[id^=produto-spot-item-]').find('img');
var quantidade = spotComprarElement.parents('[id^=produto-spot-item-]').find('[id^=produto-spot-quantidade]').val();
if (quantidade === undefined) {
quantidade = 1;
}
//Realiza a requisição ajax
$.ajax({
type: 'POST',
url: urlCompraProdutoVariante,
data: { produtoId: produtoId, produtoVarianteId: produtoVarianteId, quantidade: quantidade },
context: { spotComprarElement: spotComprarElement },
success: function (data) {
if (data.resultadoCompra.StatusRequisicao == 0) {
efeitoSpotComprar(imageElement, $('.carrinho:first'));
} else {
showError($(spotComprarElement).parents('[id^="produto-spot-item-"]').find('[id="mensagem-erro-spot"]'), data.resultadoCompra.Mensagem);
}
},
complete: function () {
$(spotComprarElement).removeAttr('disabled');
if (atualizarResumoCarrinho) { atualizarResumoCarrinho(); }
}
});
}
/**
* Compra produto spot novo carrinho.
*/
function comprarProdutoSpotNovoCarrinho(spotComprarElement) {
var produtoId = spotComprarElement.attr("data-produtoId");
var produtoVarianteId = spotComprarElement.attr("data-produtoVarianteId");
var imageElement = spotComprarElement.parents('[id^=produto-spot-item-]').find('img');
var parametroCompraProduto = '{"ProdutoId":"{0}","StrOpcional":"Selecione","IsAssinatura":false,"DadosProduto":[{"ProdutoComboId":"0","ProdutoVarianteId":"{1}","ComboId":0,"ProdutoId":0,"Atributos":[],"Quantidade":"{2}","ListaPersonalizacoes":[]}],"attrNaoSelecionado":false,"ListaServicos":[],"VerificarServico":false}';
var quantidade = spotComprarElement.parents("[id^=produto-spot-item-]").find("[id^=produto-spot-quantidade]").val();
if (quantidade === undefined) {
quantidade = 1
}
parametroCompraProduto = parametroCompraProduto.replace('{0}', produtoId);
parametroCompraProduto = parametroCompraProduto.replace('{1}', produtoVarianteId);
parametroCompraProduto = parametroCompraProduto.replace('{2}', quantidade);
var _compraProduto = function () {
$.ajax({
type: "POST",
url: fbits.ecommerce.urlCarrinho + "Produto/ComprarProduto",
data: parametroCompraProduto,
async: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
xhrFields: {
withCredentials: novoCheckout
},
success: function (data) {
if (data.resultadoCompra.StatusRequisicao == 0) {
efeitoSpotComprar(imageElement, $('.carrinho:first'));
} else {
showError($(spotComprarElement).parents('[id^="produto-spot-item-"]').find('[id="mensagem-erro-spot"]'), data.resultadoCompra.Mensagem);
}
//window.location.href = fbits.ecommerce.urlCarrinho;
},
complete: function () {
$(spotComprarElement).removeAttr('disabled');
if (atualizarResumoCarrinho) { atualizarResumoCarrinho(); }
},
fail: function (data) {
showError($(spotComprarElement).parents('[id^="produto-spot-item-"]').find('[id="mensagem-erro-spot"]'), 'Não foi possivel inserir o produto no carrinho.');
}
});
}
if (novoCheckout) {
$.ajax({
url: fbits.ecommerce.urlCarrinho + 'api/carrinho/',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function (carrinho) {
var guidParceiro = Fbits.Framework.Cookie.getCookie("Parceiro");
if (guidParceiro != undefined && guidParceiro != null && guidParceiro != "") {
var dataParceiro = {
carrinhoId: carrinho.Id,
Parceiro: guidParceiro
};
var nomeCliente = fbits.ecommerce.nomeModificado;
nomeCliente = (nomeCliente.split(' ').join('')).toLowerCase();
$.ajax({
type: 'POST',
async: false,
url: "https://parceiros-pub.fbits.net/parceiros/" + nomeCliente + "/encrypt/carrinho",
contentType: 'application/json',
data: JSON.stringify(dataParceiro),
async: false,
success: _compraProduto
});
}
else {
_compraProduto();
}
}
});
} else {
_compraProduto();
}
}
/**
* Cria o efeito de que o produto spot esta indo para o carrinho.
*/
function efeitoSpotComprar(elementoOrigem, elementoDestino) {
// Clona a foto e posiciona acima da foto original do spot
var clone = $(elementoOrigem).clone();
$('html').append(clone);
clone.css({
'position': 'absolute', 'width': elementoOrigem.width(),
'height': elementoOrigem.height(), 'left': elementoOrigem.offset().left,
'top': elementoOrigem.offset().top, 'z-index': 999999
});
// Envia elemento ao seu destino
$(clone).animate({
width: '1px',
height: '1px',
opacity: 0.3,
top: elementoDestino.offset().top,
left: elementoDestino.offset().left
}, 1000, function () {
clone.remove();
});
}
/**
* Adiciona os eventos das imagens do produto.
*/
function adicionaEventosImagens() {
//Seleção de imagens
$('#imagem-pagina-produto .zoom-thumbnail').on('click', function (event) {
$("#videoPrincipal").hide();
$("#videoPrincipal iframe").remove();
$("#zoomImagemProduto").show();
$(".zoomWrapper").show();
$(".zoomContainer").show();
});
//------------------------- Tratamento do zoom -----------------------------------//
if (typeof tipoZoom != 'undefined') { // bug #16862
if (tipoZoom == 1) {
$("#zoomImagemProduto").elevateZoom({
gallery: 'galeria',
galleryActiveClass: "active",
zoomType: "inner",
cursor: "crosshair",
zoomWindowWidth: 422,
zoomWindowHeight: 422
});
} else if (tipoZoom == 3) {
$('#zoomImagemProduto').elevateZoom({
gallery: 'galeria',
galleryActiveClass: "active",
zoomType: "lens",
lensShape: "round",
containLensZoom: true,
lensSize: 200
});
$("body").append("");
} else { //Padrão é 2
$("#zoomImagemProduto").elevateZoom({
gallery: 'galeria',
galleryActiveClass: "active",
cursor: 'crosshair',
imageCrossfade: true,
zoomWindowWidth: 422,
zoomWindowHeight: 422
});
}
}
//pass the images to Fancybox
$("#zoomImagemProduto").bind("click", function (e) {
var ez = $('#zoomImagemProduto').data('elevateZoom');
var lst = ez.getGalleryList();
var nlst = [];
for (var i in lst) {
if (lst[i].href && lst[i].href != "") {
nlst.push(lst[i]);
}
}
$.fancybox(nlst);
return false;
});
//------------------------- Tratamento do zoom -----------------------------------//
}
/**
* Adiciona os eventos das imagens do produto. (para a modal de quick view)
*/
function adicionaEventosImagensModal() {
//Seleção de imagens
$('[id^="produto-modal"] .zoom-thumbnail').on('click', function (event) {
$('[id^="produto-modal"] #videoPrincipal').hide();
$('[id^="produto-modal"] #videoPrincipal iframe').remove();
$('[id^="produto-modal"] #zoomImagemProduto').show();
$('[id^="produto-modal"] .zoomWrapper').show();
$('[id^="produto-modal"] .zoomContainer').show();
});
//------------------------- Tratamento do zoom -----------------------------------//
if (typeof tipoZoom != 'undefined') { // bug #16862
if (tipoZoom == 1) {
$('[id^="produto-modal"] #zoomImagemProduto').elevateZoom({
gallery: 'galeria',
galleryActiveClass: "active",
zoomType: "inner",
cursor: "crosshair",
zoomWindowWidth: 422,
zoomWindowHeight: 422
});
} else if (tipoZoom == 3) {
$('[id^="produto-modal"] #zoomImagemProduto').elevateZoom({
gallery: 'galeria',
galleryActiveClass: "active",
zoomType: "lens",
lensShape: "round",
containLensZoom: true,
lensSize: 200
});
$("body").append("");
} else { //Padrão é 2
$('[id^="produto-modal"] #zoomImagemProduto').elevateZoom({
gallery: 'galeria',
galleryActiveClass: "active",
cursor: 'crosshair',
imageCrossfade: true,
zoomWindowWidth: 422,
zoomWindowHeight: 422
});
}
}
//pass the images to Fancybox
$('[id^="produto-modal"] #zoomImagemProduto').bind("click", function (e) {
var ez = $('[id^="produto-modal"] #zoomImagemProduto').data('elevateZoom');
$.fancybox(ez.getGalleryList());
return false;
});
//------------------------- Tratamento do zoom -----------------------------------//
}
/**
* Função responsável pela compra do produto com um determinado serviço.
*/
function comprarComServico(domServicoItem, redirecionar, clickElement) {
habilitarCompra(false); //Desabilida botões de compra
//Variaveis iniciais
var errorElement = $(domServicoItem).find('[id^="servico-mensagem-erro-"]');
var objetoParametroComprarServico = buscarServicosTela(clickElement);
//Validações
if (objetoParametroComprarServico.ListaServicos.lenght <= 0) {
showError(errorElement, 'Por favor selecione um serviço!'); return;
}
if (!objetoParametroComprarServico.ListaServicos[0].RegulamentoAceito) {
showError(errorElement, 'Você precisa aceitar o regulamento.'); return;
}
if (!objetoParametroComprarServico.ListaServicos[0].ServicoId) {
showError(errorElement, 'Não foi possivel adicionar este serviço. Favor contactar o SAC.'); return;
}
if (!objetoParametroComprarServico.ListaServicos[0].ProdutoVarianteServicoId || objetoParametroComprarServico.ListaServicos[0].ProdutoVarianteServicoId == 0) {
showError(errorElement, 'Por favor selecione um serviço!'); return;
}
//Busca o item, caso servico esteja fora do item
var domProdutoItem = $(domServicoItem).parents('[id^="produto-item-"]');
if (domProdutoItem == undefined) {
domProdutoItem = $('[id^="produto-item-"]').first();
console.log('Não encontrou o produto-item pai. Então pegou o primeiro.');
}
redirecionar = redirecionar == undefined ? false : redirecionar;
//Busca o elemento qual possui os dados para compra do produto.
var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', domProdutoItem); //Busca elemento principal
if (checkOpcoesSelecionadas(domGrupoSelecaoAtributos)) {
var objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela
objetoParametroComprarProduto.ListaServicos = objetoParametroComprarServico.ListaServicos;
objetoParametroComprarProduto.VerificarServico = objetoParametroComprarServico.VerificarServico;
if (objetoParametroComprarProduto != undefined)
comprarProdutoRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, redirecionar); //Realiza a requisição para comprar o produto
}
habilitarCompra(true); //Habilita botões de compra
}
/**
* Função responsável pela compra do produto com assinatura.
*/
function comprarComAssinatura(domProdutoItem, redirecionar, clickElement) {
habilitarCompra(false); //Desabilida botões de compra
//Variaveis iniciais
var errorElement = $(domProdutoItem).find('[id^="assinatura-mensagem-erro-"]');
if (domProdutoItem == undefined) {
domProdutoItem = $('[id^="produto-item-"]').first();
console.log('Não encontrou o produto-item pai. Então pegou o primeiro.');
}
redirecionar = redirecionar == undefined ? false : redirecionar;
//Busca o elemento qual possui os dados para compra do produto.
var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', domProdutoItem); //Busca elemento principal
if (checkOpcoesSelecionadas(domGrupoSelecaoAtributos)) {
var objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela
objetoParametroComprarProduto.GrupoAssinaturaPeriodoRecorrenciaId = $(domGrupoSelecaoAtributos).parents('[id^=produto-item-]').find('[name=GrupoAssinaturaPeriodoRecorrenciaId]').val();
if (objetoParametroComprarProduto != undefined)
comprarProdutoAssinaturaRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, redirecionar); //Realiza a requisição para comprar o produto
}
habilitarCompra(true); //Habilita botões de compra
}
/**
* Atualiza os campos de seleção de serviço, podem ser select, radios ou divs.
*/
function atualizarServico(elementOpcoes) {
//INICIALIZAÇÃO DAS VARIAVEIS
var domOpcoes = $(elementOpcoes);
// domopcoes é o objeto select.
if (domOpcoes.is('select'))
domOpcoes = domOpcoes.children("option:selected") // atribui o "option" selecionado para o domOpcoes.
domOpcoes.parents('[id^=produto-servico-item-]').find('[data-servicoselecionado]').attr('data-servicoselecionado', 'False'); //Marca todos como não selecionados.
domOpcoes.parents('[id^=tb-servico-item-]').find("[data-servicoselecionado]").attr('data-servicoselecionado', 'True'); //Marca o item como selecionado
}
/**
* Busca os dados dos servicos
*/
function buscarServicosTela(clickElement) {
var verificarServico = $(clickElement).attr('data-comprarComServico') == 'True';
var listaServicos = [];
//Busca todos os serviços disponiveis selecionados.
var item = $(clickElement).parents('[id^="produto-item-"]').find("[id^='radio-servico-']:checked").parents('[id^="tb-servico-item-"]');
var servicoId = $(item).find('[data-codigoServico]').first().attr('data-codigoServico');
var tempoServico = $(item).find('[data-tempoServico]').first().attr('data-tempoServico');
var produtoVarianteServicoId = $(item).find('[data-servicoSelecionado="True"]').first().attr('data-codigoprodutovarianteservico');
var regulamentoAceito = $("input[id^=produto-servico-termocondicoes-]:checked", item)[0];
if (servicoId > 0) {
//Adiciona item a lista
listaServicos.push({ ServicoId: servicoId, ProdutoVarianteServicoId: produtoVarianteServicoId, Tempo: tempoServico, RegulamentoAceito: regulamentoAceito != undefined });
}
return { VerificarServico: verificarServico, ListaServicos: listaServicos };
}
// Seta a visualização selecionada pelo usuario
function selecionaTipoVisualizacao(dados) {
$("#tipoVisualizacao li").each(function () {
$(".mainBar").removeClass($(this).attr("data-visualizacao"));
});
var tipo = $(dados.currentTarget).attr("data-visualizacao");
if (tipo != "") {
$(".mainBar").addClass(tipo);
}
Fbits.Framework.Cookie.setCookie("tipoVisualizacao", tipo, 30);
}
/**
* Busca os dados das personalizacoes
*/
function buscarPersonalizacoes(domGrupoSelecaoAtributos) {
var listaPersonalizacoes = [];
var personalizacaoNaoSelecionada = false;
$('input[id^="txt-personalizacao-"], select[id^="ddl-personalizacao-"]', domGrupoSelecaoAtributos).each(function () {
var id = $(this).attr('data-personalizacao-id');
var nome = $(this).attr('data-personalizacao-nome');
var ordem = $(this).attr('data-personalizacao-ordem');
var valor = $(this).attr('data-personalizacao-valor');
var personalizacao = $(this).val();
if ($(this).attr('data-personalizacao-obrigatorio') == "True" && personalizacao == "") {
personalizacaoNaoSelecionada = true;
}
if (personalizacao != "") {
//Adiciona item a lista
listaPersonalizacoes.push({ Nome: nome, Ordem: ordem, GrupoPersonalizacaoDetalheId: id, Valor: valor, Personalizacao: personalizacao });
}
});
if (personalizacaoNaoSelecionada) {
listaPersonalizacoes = null;
}
return listaPersonalizacoes;
}
function UpdateQueryString(key, value, url) {
if (!url) url = window.location.href;
var re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi"),
hash;
if (re.test(url)) {
if (typeof value !== 'undefined' && value !== null)
return url.replace(re, '$1' + key + "=" + value + '$2$3');
else {
hash = url.split('#');
url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
if (typeof hash[1] !== 'undefined' && hash[1] !== null)
url += '#' + hash[1];
return url;
}
}
else {
if (typeof value !== 'undefined' && value !== null) {
var separator = url.indexOf('?') !== -1 ? '&' : '?';
hash = url.split('#');
url = hash[0] + separator + key + '=' + value;
if (typeof hash[1] !== 'undefined' && hash[1] !== null)
url += '#' + hash[1];
return url;
}
else
return url;
}
}
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
function ajustaTamanhoDivCores() {
for (var i = 0; i < $('[class*="valorAtributo valorAtributoCor"]').length; i++) {
var url = $('[class*="valorAtributo valorAtributoCor"]')[i].style.background.split("=")
var newUrl = url[0] + "=" + url[1] + "=" + $('[class*="valorAtributo valorAtributoCor"]')[0].scrollWidth + url[2].substring(url[2].indexOf("&")) + "=" + $('[class*="valorAtributoCor"]')[0].scrollHeight + "\")";
$('[class*="valorAtributo valorAtributoCor"]')[i].style.background = newUrl;
}
}