function SemiMarketingWidget(conf) {
var m = this,
ctool = null,
cardNumber = null,
widget = null,
cdata = null,
boxes = {
benefits: {
tickets: {
count: 0,
visible: false
},
coupons: {
count: 0,
visible: false
},
promotions: {
count: 0,
visible: false
},
owns: {
count: 0,
visible: false
},
gifts: {
count: 0,
visible: false
}
}
},
logs = new Array(),
events = null,
panelTrace = new Array();
if(!conf || !conf.branch) {
throw 'No branch configuration';
}
if('undefined' == typeof(jQuery)) {
throw 'jQuery is required';
}
jQuery.extend(m, {
config: null,
init: function() {
if (!window._SMW) {
window._SMW = this;
}
if (!window._CT) {
ctool = new CookieTool(conf.branch);
} else {
ctool = window._CT;
}
ctool.test(function(data, ct) {
if (m.valid(data)) {
m.factory();
}
cdata = data;
}, (conf.ctforce || false));
},
valid: function(data) {
var valid = false;
if(data) {
if (data.type == 'SEMIPARTNER') {
valid = true;
} else if (ctool.isAccept() && data.active) {
valid = true;
}
}
return valid;
},
build: function() {
if (m.valid(cdata)) {
m.factory();
}
},
factory: function() {
if (m.create()) {
jQuery
.ajax({
url: conf.path + 'service/semi-widget/main/' + conf.branch,
data: ctool.requestData(),
dataType: 'jsonp',
beforeSend: function(jqXHR, settings) {
},
complete: function(jqXHR, textStatus) {
},
success: function(data, textStatus, jqXHR) {
if (data && data.success) {
m.config = {
branch: data.branch,
widget: data.widget
};
if (!conf.empty) {
m.initGTM();
}
m.initEvents();
m.prepare(data);
if (!conf.empty) {
m.triggerEvent('onWidgetSuccess');
}
jQuery(conf.selector).prepend(
'
'
.replace(':color', (m.config.widget.color?' semi-widget-main-margin-' + m.config.widget.color:''))
);
jQuery(conf.selector).prepend(widget);
m.roll(!m.isMinimize(), m.isMinimize());
if (!conf.empty) {
m.pushGTM(jQuery.extend({'event': 'ajax-virtual-page-semi', 'avp-url': '/' + data.branch.slug + '/wid-mar'}, (cardNumber?{'avp-no': '' + cardNumber + ''}:{})));
} else {
m.triggerEvent('onWidgetSuccess');
}
} else {
}
},
error: function(jqXHR, textStatus, errorThrown) {
}
});
}
},
create: function() {
return (
0 < jQuery(conf.selector).length && 0 == jQuery(conf.selector + ' > div.semi-widget-main').length &&
(0 == jQuery('div.semi-widget-transaction').length || 0 < jQuery('div.semi-widget-transaction.semi-widget-main-force').length || m.isEmpty())
);
},
prepare: function(data) {
widget = jQuery(
m.template(data)
.replace(':color', (m.config.widget.color?' semi-widget-main-' + m.config.widget.color:''))
);
widget.siblings('.semi-widget-main').css({left: '8192px', display: 'block' });
if (!conf.empty) {
if (data.card && 'undefined' != typeof(data.card)) {
m.updateCardInfo(1, data.card, data.widget.pbjoin);
} else if (ctool.isAccept()) {
m.updateCardInfo(2, null, data.widget.pbjoin);
} else {
m.updateCardInfo(2, null, data.widget.pbjoin);
}
m.updateBenefits(data);
widget.find('.semi-widget-roll a').bind('click.wi', function(ev) { m.roll(false); return false; });
widget.siblings('.semi-widget-main-bookmark').find('a').bind('click.wi', function(ev) { m.roll(true); return false; });
jQuery(window).on('resize.wi', function(ev) {
m.sizes();
m.resize(ev);
if (!m.isMinimize()) {
m.roll(!m.isMinimize());
}
m.triggerEvent('onWidgetResize');
});
if (data.widget.pbjoin) {
if (!window._SRW) {
window._SRW = new SemiRegistrationWidget({
branch: conf.branch,
path: conf.path
});
}
}
} else {
jQuery(window).on('resize.wi', function(ev) {
m.resize(ev);
m.triggerEvent('onWidgetResize');
});
}
},
destroy: function() {
jQuery(conf.selector + ' > div.semi-widget-main').remove();
jQuery(conf.selector + ' .semi-widget-main-margin').remove();
},
template: function(data) {
var tmpl =
'' +
'
' +
'
';
if (data.branch) {
tmpl +=
'
' +
'PAYBACK w ' + data.branch.name + '
' + data.branch.ppcu + ' ºP za ' + data.branch.cu + ' zł' +
'
';
}
tmpl +=
'
' +
'
' +
'
' +
'
' +
'
' +
'';
return tmpl;
},
cardTemplate: function(type, card, join) {
if (1 == type) {
tmpl = (
'' +
'Twój nr PAYBACK
' + card + '' +
'
' +
''
);
} else if (2 == type) {
tmpl = (
(join?'':'') +
''
);
} else if (3 == type) {
tmpl = 'Pamiętaj, aby zebrać punkty, wpisz swój numer
PAYBACK na stronie z potwierdzeniem zamówienia.';
} else {
tmpl = '';
}
return tmpl;
},
updateCardInfo: function(type, card, join) {
widget.find('.semi-widget-card-info').html(m.cardTemplate(type, card, join));
cardNumber = card;
if (1 == type) {
//widget.find('.semi-widget-card-info a.semi-widget-card-info-change').bind('click.wi', function(ev) { m.updateCardInfo(2, cardNumber, join); m.sizes(); m.resize(); return false; });
widget.find('.semi-widget-card-info a.semi-widget-card-info-change').off('click.wi').on('click.wi', function(ev) {
ev.preventDefault();
m.createLoginPanel().show();
});
widget.find('.semi-widget-card-info').removeClass('semi-widget-card-info-edit');
} else if (2 == type) {
widget.find('.semi-widget-card-info').addClass('semi-widget-card-info-edit');
widget.find('.semi-widget-card-info .semi-widget-join button').off('click.wi').on('click.wi', function(ev) {
ev.preventDefault();
if ('undefined' != typeof(window._SRW)) {
m.createJoinOrRegisterPanel().show();
}
});
widget.find('.semi-widget-card-info .semi-widget-set-number button').off('click.wi').on('click.wi', function(ev) {
ev.preventDefault();
m.createLoginPanel().show();
});
} else {
widget.find('.semi-widget-card-info').removeClass('semi-widget-card-info-edit');
}
m.sizes();
m.resize();
},
updateBenefits: function(data) {
var box = null;
if (data.data) {
if (data.data.tickets) {
boxes.benefits.tickets.count = data.data.tickets.length;
if (data.data.tickets.length) {
box = widget.find('.semi-widget-benefits-tickets .semi-widget-scroll-items').eq(0);
box.empty();
for (key = 0; key < data.data.tickets.length; key++) {
var c = jQuery(m.ticketTemplate(data.data.tickets[key]));
new SemiTooltip({
selector: c.find('.semi-widget-i-mark'),
content: data.data.tickets[key].description,
to: widget.find('.semi-widget-benefits-tickets'),
margin: {
top: 40,
left: -31
}
});
box.append(c);
delete c;
}
new SemiScroll({
selector: widget.find('.semi-widget-benefits-tickets'),
width: 189
});
} else {
widget.find('.semi-widget-benefits-tickets .semi-widget-scroll-items').empty();
widget.find('.semi-widget-benefits-tickets .semi-widget-scroll-dots').remove();
}
}
if (data.data.coupons) {
boxes.benefits.coupons.count = data.data.coupons.length;
if (data.data.coupons.length) {
box = widget.find('.semi-widget-benefits-coupons .semi-widget-scroll-items').eq(0);
box.empty();
for (key = 0; key < data.data.coupons.length; key++) {
var c = jQuery(m.couponTemplate(data.data.coupons[key]));
c.find('button').bind('click.wi', function(ev) { m.activate(jQuery(this).data('couponid'), jQuery(this).data('coupongtm')); return false; });
new SemiTooltip({
selector: c.find('.semi-widget-i-mark'),
content: m.couponTooltipTemplate(data.data.coupons[key]),
to: widget.find('.semi-widget-benefits-coupons'),
margin: {
top: 40,
left: 57
}
});
box.append(c);
delete c;
}
var cscroll = new SemiScroll({
selector: widget.find('.semi-widget-benefits-coupons'),
width: 279
});
widget
.find('.semi-widget-benefits-coupons')
.bind('mouseenter.wi', function(ev) {
var el = jQuery(this).find('.semi-widget-scroll-item').eq(cscroll.dot());
var eW = el.find('.semi-widget-cont-1 > div > div').width();
var vW = el.find('.semi-widget-cont-1').width();
if (0 < (eW - vW)) {
jQuery(el)
.find('.semi-widget-cont-1 > div')
.stop(true, false)
.animate({left: '-' + (eW - vW) + 'px'}, ((eW - vW) / 40) * 1000, 'linear', function() {});
}
})
.bind('mouseleave.wi', function(ev) {
var el = jQuery(this).find('.semi-widget-scroll-item').eq(cscroll.dot());
jQuery(el).find('.semi-widget-cont-1 > div').stop(true, false).animate({left: '0px'}, 1000, 'linear', function() {});
});
} else {
widget.find('.semi-widget-benefits-coupons .semi-widget-scroll-items').empty();
widget.find('.semi-widget-benefits-coupons .semi-widget-scroll-dots').remove();
}
}
if (data.data.promotions) {
boxes.benefits.promotions.count = data.data.promotions.length;
if (data.data.promotions.length) {
box = widget.find('.semi-widget-benefits-promotions .semi-widget-scroll-items').eq(0);
box.empty();
for (key = 0; key < data.data.promotions.length; key++) {
var c = jQuery(m.promotionTemplate(data.data.promotions[key]));
new SemiTooltip({
selector: c.find('.semi-widget-i-mark'),
content: data.data.promotions[key].full_description,
to: widget.find('.semi-widget-benefits-promotions'),
margin: {
top: 40,
left: -31
}
});
box.append(c);
delete c;
}
new SemiScroll({
selector: widget.find('.semi-widget-benefits-promotions'),
width: 189
});
} else {
widget.find('.semi-widget-benefits-promotions .semi-widget-scroll-items').empty();
widget.find('.semi-widget-benefits-promotions .semi-widget-scroll-dots').remove();
}
}
if (data.data.owns) {
boxes.benefits.owns.count = data.data.owns.length;
if (data.data.owns.length) {
box = widget.find('.semi-widget-benefits-owns .semi-widget-scroll-items').eq(0);
box.empty();
for(key = 0; key < data.data.owns.length; key++) {
var c = jQuery(m.ownTemplate(data.data.owns[key]));
new SemiTooltip({
selector: c.find('.semi-widget-i-mark'),
content: data.data.owns[key].description,
to: widget.find('.semi-widget-benefits-owns'),
margin: {
top: 40,
left: -27
}
});
box.append(c);
delete c;
}
new SemiScroll({
selector: widget.find('.semi-widget-benefits-owns'),
width: 194
});
} else {
widget.find('.semi-widget-benefits-owns .semi-widget-scroll-items').empty();
widget.find('.semi-widget-benefits-owns .semi-widget-scroll-dots').remove();
}
}
if (data.data.gifts) {
boxes.benefits.gifts.count = data.data.gifts.length;
if (data.data.gifts.length) {
box = widget.find('.semi-widget-benefits-gifts .semi-widget-scroll-items').eq(0);
box.empty();
for (key = 0; key < data.data.gifts.length; key++) {
var c = jQuery(m.giftTemplate(data.data.gifts[key]));
new SemiTooltip({
selector: c.find('.semi-widget-i-mark'),
content: data.data.gifts[key].description,
to: widget.find('.semi-widget-benefits-gifts'),
margin: {
top: 40,
left: -152
}
});
box.append(c);
delete c;
}
} else {
widget.find('.semi-widget-benefits-gifts .semi-widget-scroll-items').empty();
widget.find('.semi-widget-benefits-gifts .semi-widget-scroll-dots').remove();
}
}
}
delete box;
},
ticketTemplate: function(tobj) {
return (
''
);
},
couponTemplate: function(tobj) {
return (
''
);
},
couponTooltipTemplate: function(tobj) {
return (
'' + tobj.text_front + '' +
'Jak działa eKupon?
' +
'' + tobj.text_back + '' +
'' + tobj.escape_clause + ''
);
},
promotionTemplate: function(tobj) {
return (
''
);
},
ownTemplate: function(tobj) {
return (
''
);
},
giftTemplate: function(tobj) {
return (
''
);
},
isMinimize: function() {
var lm = m.storageGet('pb-marketing-widget-minimize', null, false);
if (m.isEmpty()) {
return false;
} else if('MAXIMIZE' == conf.size) {
return false;
} else if('MINIMIZE' == conf.size) {
return true;
} else if(null != lm) {
return ('1' == lm);
} else {
return ('MAX' != conf.size);
}
},
roll: function(show, init) {
if(show) {
if(!init) {
widget
.siblings('.semi-widget-main-bookmark')
.stop(true, true)
.animate({left: '-55px'}, 250, 'swing', function() {
});
if('MIN' == conf.size || 'MAX' == conf.size) {
m.storageSet('pb-marketing-widget-minimize', '0', false);
}
m.pushGTM({'event': 'trackEvent', 'tE-Category': 'widget-marketingowy', 'tE-Action': 'unfold'});
}
m.triggerEvent('onWidgetMaximize');
var css = m.cssMod(); // TFIX
if('1' != m.storageGet('pb-marketing-widget-showed', null)) {
widget
.siblings('.semi-widget-main')
.show(0, function() {
m.sizes();
m.resize();
jQuery(this)
.css({opacity: 0.3, left: -(jQuery('body').width()), top: '16%'})
.stop(true, true)
.animate(css.widget.offset, 400, 'swing', function() {
jQuery(conf.selector + ' .semi-widget-main-margin').animate(css.margin.size, 200, function() {
jQuery(this).removeClass('semi-widget-main-margin-closed').addClass('semi-widget-main-margin-opened');
});
});
});
m.storageSet('pb-marketing-widget-showed', '1');
} else {
widget
.siblings('.semi-widget-main')
.hide()
.css(css.widget.offset)
.show(0, function() {
m.sizes();
m.resize();
jQuery(conf.selector + ' .semi-widget-main-margin')
.hide()
.css(css.margin.size)
.show(0, function() {
jQuery(this).removeClass('semi-widget-main-margin-closed').addClass('semi-widget-main-margin-opened');
});
});
}
} else {
widget
.siblings('.semi-widget-main-bookmark')
.stop(true, true)
.animate({left: 0}, 250, 'swing', function() {
if('MIN' == conf.size || 'MAX' == conf.size) {
m.storageSet('pb-marketing-widget-minimize', '1', false);
}
m.storageSet('pb-marketing-widget-showed', '0')
});
m.triggerEvent('onWidgetMinimize');
if(!init) {
jQuery(conf.selector + ' .semi-widget-main-margin').animate({height: 0}, 200, function() {
jQuery(this).removeClass('semi-widget-main-margin-opened').addClass('semi-widget-main-margin-closed');
widget
.siblings('.semi-widget-main')
.css({opacity: 1, left: 0, top: 0})
.stop(true, true)
.animate({opacity: 0.3, left: -(jQuery('body').width()), top: '16%'}, 400, function() {
jQuery(this).hide();
});
});
m.pushGTM({'event': 'trackEvent', 'tE-Category': 'widget-marketingowy', 'tE-Action': 'fold'});
}
}
},
cssMod: function() {
var data = {
widget: {
offset: {
opacity: 1,
top: 0,
left: 0
},
size: {
width: '100%',
maxWidth: '100%'
}
},
margin: {
size: {
height: widget.siblings('.semi-widget-main').height()
}
}
};
return data;
},
login: function(callback, card) {
if (!card) {
card = widget.find('.semi-widget-panel input').val();
}
m.notice(null, '.semi-widget-panel');
var noticeMargin = {
top: 9,
left: 3
};
if('' == card || m.isValidCardNumber(card)) {
m.loader('.semi-widget-panel', true);
jQuery
.ajax({
url: conf.path + 'service/semi-widget/login/' + conf.branch,
data: ctool.requestData({
card: card
}),
dataType: 'jsonp',
beforeSend: function(jqXHR, settings) {
m.loader('.semi-widget-panel', true);
m.notice(null, '.semi-widget-panel');
},
complete: function(jqXHR, textStatus) {
m.loader('.semi-widget-panel', false);
},
success: function(data, textStatus, jqXHR) {
if(data) {
if(data.success) {
var panel = null;
if (data.card && 'undefined' != typeof(data.card)) {
cardNumber = data.card;
m.updateCardInfo(1, data.card, data.widget.pbjoin);
if (data.enroll) {
if (data.widget.pbjoin &&
!m.isCalledFromPanel('register') &&
!m.isCalledFromPanel('join')) {
panel = m.createEnrollPanel(false);
callback = null;
}
} else if (m.isCalledFromPanel('joinOrRegister') &&
m.isCalledFromPanel('login')) {
panel = m.createRegisteredPanel();
}
} else if(ctool.isAccept()) {
m.updateCardInfo(2, null, data.widget.pbjoin);
} else {
m.updateCardInfo(2, null, data.widget.pbjoin);
}
m.updateBenefits(data);
m.sizes();
m.resize();
if (callback &&
jQuery.isFunction(callback)) {
callback.call(this, data);
}
if (panel) {
panel.show();
}
} else if(data.notice) {
if (jQuery('.semi-widget-panel input').length) {
m.notice(
'.semi-widget-panel input',
'.semi-widget-panel',
data.notice.replace('-', '
-'),
noticeMargin
);
}
}
}
},
error: function(jqXHR, textStatus, errorThrown) {
}
});
} else {
m.notice('.semi-widget-panel input', '.semi-widget-panel', 'Nr niepoprawny
– spróbuj ponownie', noticeMargin);
}
delete card;
},
loader: function(container, show) {
widget
.find(container + ' .semi-widget-loader')
.css({display: (show?'inline-block':'none')});
},
notice: function(sin, sout, text, margin) {
if(text) {
var n = jQuery('' + text +'');
var p = widget.find(sin).position();
margin = (margin || {top: 0, left: 0});
n.css({top: p.top + margin.top, left: p.left + margin.left});
widget.find(sin).before(n);
m.notice(null, sout);
delete n;
delete p;
} else {
setTimeout(function() {
widget.find(sout + ' .semi-widget-notice').fadeOut(250, function() { jQuery(this).remove(); });
}, 3000);
}
},
isValidCardNumber: function(card) {
if((new RegExp(/^[0-9]{10}$/i)).test(card)) {
card = '308359' + card;
var len = card.length,
mul = 0,
prodArr = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]],
sum = 0;
while (len--) {
sum += prodArr[mul][parseInt(card.charAt(len), 10)];
mul ^= 1;
}
return (sum % 10 === 0 && sum > 0);
}
return false;
},
validNumber: function(input, length) {
var number = input.val().replace(/[^0-9]/g, '');
if(length < number.length) {
number = number.substring(0, length);
}
if(number != input.val()) {
input.val(number);
}
},
activate: function(id, gtm) {
m.loader('.semi-widget-benefits-coupons', true);
jQuery
.ajax({
url: conf.path + 'service/semi-widget/activate/' + conf.branch,
data: ctool.requestData({
couponId: id
}),
dataType: 'jsonp',
beforeSend: function(jqXHR, settings) {
m.loader('.semi-widget-benefits-coupons', true);
},
complete: function(jqXHR, textStatus) {
m.loader('.semi-widget-benefits-coupons', false);
},
success: function(data, textStatus, jqXHR) {
if(data) {
if(data.success) {
m.updateBenefits(data);
m.sizes();
m.resize();
m.pushGTM({'event': 'trackEvent', 'tE-Category': 'ekupon', 'tE-Action': 'activation-semi', 'tE-Label': '' + gtm + ''});
}
}
},
error: function(jqXHR, textStatus, errorThrown) {
}
});
},
resize: function(ev) {
var width = jQuery(conf.selector).parent().width();
if (widget.data('size')) {
width = widget.data('size');
}
widget
.siblings('.semi-widget-main')
.removeClass('semi-widget-main-768')
.removeClass('semi-widget-main-640');
if (width < 768) {
var size = 0;
if (640 >= width) {
size = 640;
} else if (768 >= width) {
size = 768;
}
widget.siblings('.semi-widget-main').addClass('semi-widget-main-' + size);
}
var css = m.cssMod();
widget
.siblings('.semi-widget-main')
.css(css.widget.size);
m.checkVisible();
if (!widget.find('.semi-widget-panel').is(':visible')) {
if (boxes.roll.visible) {
widget.find('.semi-widget-roll').css({display: 'block'});
} else {
widget.find('.semi-widget-roll').css({display: 'none'});
}
if (boxes.logo.visible) {
widget.find('.semi-widget-logo').css({display: 'block'});
} else {
widget.find('.semi-widget-logo').css({display: 'none'});
}
if (boxes.where.visible) {
widget.find('.semi-widget-where').css({display: 'block'});
} else {
widget.find('.semi-widget-where').css({display: 'none'});
}
if (boxes.card.visible) {
widget.find('.semi-widget-card-info').css({display: 'block'});
} else {
widget.find('.semi-widget-card-info').css({display: 'none'});
}
if (boxes.benefits.tickets.visible) {
widget.find('.semi-widget-benefits-tickets').css({display: 'inline-block'});
} else {
widget.find('.semi-widget-benefits-tickets').css({display: 'none'});
}
if (boxes.benefits.coupons.visible) {
widget.find('.semi-widget-benefits-coupons').css({display: 'inline-block'});
} else {
widget.find('.semi-widget-benefits-coupons').css({display: 'none'});
}
if (boxes.benefits.promotions.visible) {
widget.find('.semi-widget-benefits-promotions').css({display: 'inline-block'});
} else {
widget.find('.semi-widget-benefits-promotions').css({display: 'none'});
}
if (boxes.benefits.owns.visible) {
widget.find('.semi-widget-benefits-owns').css({display: 'inline-block'});
} else {
widget.find('.semi-widget-benefits-owns').css({display: 'none'});
}
if (boxes.benefits.gifts.visible) {
widget.find('.semi-widget-benefits-gifts').css({display: 'inline-block'});
} else {
widget.find('.semi-widget-benefits-gifts').css({display: 'none'});
}
if (boxes.benefits.label.visible) {
widget.find('.semi-widget-benefits-label').css({display: 'inline-block'});
} else {
widget.find('.semi-widget-benefits-label').css({display: 'none'});
}
if (widget.find('.semi-widget-benefits').children(':not([style*="display: none;"])').length) {
widget.find('.semi-widget-benefits').show();
}
}
},
checkVisible: function() {
var width = (
widget.siblings('.semi-widget-main').width() -
(boxes.back.width + boxes.where.width + boxes.card.width)
);
boxes.roll.visible = false;
boxes.logo.visible = false;
boxes.benefits.tickets.visible = false;
boxes.benefits.coupons.visible = false;
boxes.benefits.promotions.visible = false;
boxes.benefits.owns.visible = false;
boxes.benefits.gifts.visible = false;
boxes.benefits.label.visible = false;
if (width > boxes.roll.width) {
boxes.roll.visible = true;
width -= boxes.roll.width;
if (width > boxes.logo.width) {
boxes.logo.visible = true;
width -= boxes.logo.width;
if (width > boxes.benefits.tickets.width) {
if (0 < boxes.benefits.tickets.count) {
boxes.benefits.tickets.visible = true;
width -= boxes.benefits.tickets.width;
}
if (width > boxes.benefits.coupons.width) {
if (0 < boxes.benefits.coupons.count) {
boxes.benefits.coupons.visible = true;
width -= boxes.benefits.coupons.width;
}
if (width > boxes.benefits.promotions.width) {
if (0 < boxes.benefits.promotions.count) {
boxes.benefits.promotions.visible = true;
width -= boxes.benefits.promotions.width;
}
if (width > boxes.benefits.owns.width) {
if (0 < boxes.benefits.owns.count) {
boxes.benefits.owns.visible = true;
width -= boxes.benefits.owns.width;
}
if (width > boxes.benefits.gifts.width) {
if (0 < boxes.benefits.gifts.count) {
boxes.benefits.gifts.visible = true;
width -= boxes.benefits.gifts.width;
}
}
}
}
}
}
if (width > boxes.benefits.label.width &&
(boxes.benefits.tickets.visible || 0 == boxes.benefits.tickets.count) &&
(boxes.benefits.coupons.visible || 0 == boxes.benefits.coupons.count) &&
(boxes.benefits.promotions.visible || 0 == boxes.benefits.promotions.count) &&
(boxes.benefits.owns.visible || 0 == boxes.benefits.owns.count) &&
(boxes.benefits.gifts.visible || 0 == boxes.benefits.gifts.count) &&
(0 < boxes.benefits.coupons.count + boxes.benefits.promotions.count + boxes.benefits.owns.count + boxes.benefits.gifts.count)) {
boxes.benefits.label.visible = true;
}
}
}
},
sizes: function() {
var width = jQuery(conf.selector).width();
jQuery.extend(true, boxes, {
back: {
width: (
(!widget.siblings('.semi-widget-main').hasClass('.semi-widget-main-640'))?
43:
0
),
visible: (
!widget.siblings('.semi-widget-main').hasClass('.semi-widget-main-640')
)
},
logo: {
width: widget.find('.semi-widget-logo').outerWidth(true),
visible: true
},
where: {
width: (null != cardNumber?widget.find('.semi-widget-where').outerWidth(true):0),
visible: (null != cardNumber)
},
card: {
width: widget.find('.semi-widget-card-info').outerWidth(true),
visible: true
},
benefits: {
label: {
width: widget.find('.semi-widget-benefits-label').outerWidth(true)
},
tickets: {
width: widget.find('.semi-widget-benefits-tickets').outerWidth(true)
},
coupons: {
width: widget.find('.semi-widget-benefits-coupons').outerWidth(true)
},
promotions: {
width: widget.find('.semi-widget-benefits-promotions').outerWidth(true)
},
owns: {
width: widget.find('.semi-widget-benefits-owns').outerWidth(true)
},
gifts: {
width: widget.find('.semi-widget-benefits-gifts').outerWidth(true)
}
},
roll: {
width: 56,
visible: true
}
});
},
initGTM: function() {
if (m.config.widget.gtm && 'undefined' == typeof(pbGTM)) {
new SemiGTM(window, document, 'script', 'pbGTM', 'GTM-T223JM');
}
},
pushGTM: function(data) {
if(m.config.widget.gtm && 'undefined' != typeof(pbGTM)) {
pbGTM.push(data);
} else if(m.config.widget.gtm && console) {
console.log('NO pbGTM');
}
},
storageSet: function(key, value, forceCookie) {
if(!forceCookie &&
'undefined' != typeof(sessionStorage)) {
sessionStorage.setItem(key, value);
} else if('undefined' != typeof(ctool)) {
value = ctool.localwrite(key, value);
}
},
storageGet: function(key, def, forceCookie) {
var value = def;
if(!forceCookie &&
'undefined' != typeof(sessionStorage)) {
value = sessionStorage.getItem(key);
} else if('undefined' != typeof(ctool)) {
value = ctool.localread(key);
}
return value;
},
cookieSet: function(key, val, expire) {
if('undefined' != typeof(ctool)) {
if(ctool.isAccept()) {
value = ctool.write(key, value, expire);
} else {
value = ctool.localwrite(key, value);
}
}
},
cookieGet: function(key, def) {
var value = def;
if('undefined' != typeof(ctool)) {
if(ctool.isAccept()) {
value = ctool.read(key);
} else {
value = ctool.localread(key);
}
}
return value;
},
initEvents: function() {
events = new SemiEvents({
init: ['onWidgetSuccess', 'onWidgetMinimize', 'onWidgetMaximize', 'onWidgetResize', 'onPanelClose', 'onRegisterSuccess', 'onJoinSuccess']
});
if (conf.events) {
events.bindAll(conf.events);
}
},
triggerEvent: function() {
if (events) {
events.trigger.apply(events, arguments);
}
},
updateEvents: function(evs) {
$.extend(conf.events, evs);
events.bindAll(conf.events);
},
createLoginPanel: function(open) {
m.panelTrace('login');
return (
new SemiPanels({
btn: '.semi-widget-main .semi-widget-back a',
panel: '.semi-widget-main .semi-widget-panel',
open: (open?true:false),
show: function(p, sp) {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-logo').hide();
widget.find('.semi-widget-back').show();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-logo').hide();
widget.find('.semi-widget-back').show();
}
m.loginPanel(p, sp);
},
close: function() {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').hide();
widget.find('.semi-widget-logo').show();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-back').hide();
widget.find('.semi-widget-logo').show();
}
m.sizes();
m.resize();
m.clearPanelTrace();
m.triggerEvent('onPanelClose');
}
})
);
},
loginPanel: function(container, panel) {
widget.find('.semi-widget-where,.semi-widget-card-info,.semi-widget-roll').hide();
container.html((
''
));
var callback = function(ldata) {
panel.close();
};
widget.find('.semi-widget-panel button').bind('click.wi', function(ev) { m.login(callback); return false; });
widget.find('.semi-widget-panel input')
.bind('keyup.wi', function(ev) { m.validNumber(jQuery(this), 10); return false; })
.bind('keydown.wi', function(ev) {
if (13 == ev.which) {
m.login(callback);
ev.preventDefault();
}
});
},
createEnrollPanel: function(open) {
m.panelTrace('enroll');
return (
new SemiPanels({
btn: '.semi-widget-main .semi-widget-back a',
panel: '.semi-widget-main .semi-widget-panel',
open: (open?true:false),
show: function(p, sp) {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').show();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-logo').hide();
widget.find('.semi-widget-back').show();
}
m.enrollPanel(p, sp);
},
close: function() {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').hide();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-back').hide();
widget.find('.semi-widget-logo').show();
}
m.sizes();
m.resize();
m.clearPanelTrace();
m.triggerEvent('onPanelClose');
}
})
);
},
enrollPanel: function(container, panel) {
widget.find('.semi-widget-logo,.semi-widget-where,.semi-widget-card-info,.semi-widget-roll').hide();
container.html((
''
));
widget.find('.semi-widget-panel button.semi-widget-button-yes')
.bind('click.wi', function(ev) {
if ('undefined' != typeof(window._SRW)) {
m.createRegisterPanel().show();
}
return false;
});
widget.find('.semi-widget-panel button.semi-widget-button-no')
.bind('click.wi', function(ev) {
panel.close();
return false;
});
},
createRegisterPanel: function(open) {
m.panelTrace('register');
return (
new SemiPanels({
btn: '.semi-widget-main .semi-widget-back a',
panel: '.semi-widget-main .semi-widget-panel',
open: (open?true:false),
show: function(p, sp, pdata) {
m.registerPanel(p, sp);
window._SRW.show(
'register',
(pdata.cardNumber?pdata.cardNumber:cardNumber),
function(data) {
m.onRegisterSuccess(data, sp);
}
);
},
close: function() {
window._SRW.hide();
m.sizes();
m.resize();
m.clearPanelTrace();
m.triggerEvent('onPanelClose');
}
})
);
},
registerPanel: function(container, panel) {
widget.find('.semi-widget-logo,.semi-widget-where,.semi-widget-card-info,.semi-widget-benefits,.semi-widget-roll').hide();
container.html((
'' +
'Uzupełnij formularz
' +
'i zarejestruj kartę:' +
'
'
));
},
onRegisterSuccess: function(data, panel) {
if (data.card) {
m.login(function(ldata) {
if (data.registered) {
m.createRegisteredPanel(false).show();
} else if (data.papercard) {
m.createRegisterPaperCardPanel(false).show();
} else if (data.email) {
m.createRegisterEmailPanel(false).show({email: data.email});
} else if (data.noemail) {
m.createRegisterNoEmailPanel(false).show();
} else {
panel.close();
}
m.triggerEvent('onRegisterSuccess', data, ldata);
}, data.card);
} else {
panel.close();
m.triggerEvent('onRegisterSuccess', data, ldata);
}
window._SRW.hide();
},
createJoinPanel: function(open) {
m.panelTrace('join');
return (
new SemiPanels({
btn: '.semi-widget-main .semi-widget-back a',
panel: '.semi-widget-main .semi-widget-panel',
open: (open?true:false),
show: function(p, sp) {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').show();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-logo').hide();
widget.find('.semi-widget-back').show();
}
m.joinPanel(p, sp);
window._SRW.show(
'join',
null,
function(data) {
m.onJoinSuccess(data, sp);
});
},
close: function() {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').hide();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-back').hide();
widget.find('.semi-widget-logo').show();
}
window._SRW.hide();
m.sizes();
m.resize();
m.clearPanelTrace();
m.triggerEvent('onPanelClose');
}
})
);
},
joinPanel: function(container, panel) {
widget.find('.semi-widget-logo,.semi-widget-where,.semi-widget-card-info,.semi-widget-benefits,.semi-widget-roll').hide();
container.html((
'' +
'Uzupełnij formularz
aby dołączyć do PAYBACK:' +
'
'
));
},
onJoinSuccess: function(data, panel) {
if (data.card) {
m.login(function(ldata) {
if (data.email) {
m.createJoinEmailPanel(false).show({email: data.email});
} else if (data.noemail) {
m.createJoinNoEmailPanel(false).show();
} else {
panel.close();
}
m.triggerEvent('onJoinSuccess', data, ldata);
}, data.card);
} else {
panel.close();
m.triggerEvent('onJoinSuccess', data, ldata);
}
window._SRW.hide();
},
createJoinOrRegisterPanel: function(open) {
m.panelTrace('joinOrRegister');
return (
new SemiPanels({
btn: '.semi-widget-main .semi-widget-back a',
panel: '.semi-widget-main .semi-widget-panel',
open: (open?true:false),
show: function(p, sp) {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').show();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-logo').hide();
widget.find('.semi-widget-back').show();
}
m.joinOrRegisterPanel(p, sp);
},
close: function() {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').hide();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-back').hide();
widget.find('.semi-widget-logo').show();
}
m.sizes();
m.resize();
m.clearPanelTrace();
m.triggerEvent('onPanelClose');
}
})
);
},
joinOrRegisterPanel: function(container, panel) {
widget.find('.semi-widget-logo,.semi-widget-where,.semi-widget-card-info,.semi-widget-benefits,.semi-widget-roll').hide();
container.html((
''
));
widget.find('.semi-widget-panel button.semi-widget-button-yes')
.bind('click.wi', function(ev) {
if ('undefined' != typeof(window._SRW)) {
m.createLoginPanel().show();
}
return false;
});
widget.find('.semi-widget-panel button.semi-widget-button-no')
.bind('click.wi', function(ev) {
if ('undefined' != typeof(window._SRW)) {
m.createJoinPanel().show();
}
return false;
});
},
createRegisteredPanel: function(open) {
m.panelTrace('registered');
return (
new SemiPanels({
btn: '.semi-widget-main .semi-widget-back a',
panel: '.semi-widget-main .semi-widget-panel',
open: (open?true:false),
autoClose: (m.isEmpty()?null:3),
show: function(p, sp) {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').show();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-logo').hide();
widget.find('.semi-widget-back').show();
}
m.registeredPanel(p, sp);
},
close: function() {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').hide();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-back').hide();
widget.find('.semi-widget-logo').show();
}
m.sizes();
m.resize();
m.clearPanelTrace();
m.triggerEvent('onPanelClose');
}
})
);
},
registeredPanel: function(container, panel) {
widget.find('.semi-widget-logo,.semi-widget-where,.semi-widget-card-info,.semi-widget-roll').hide();
container.html((
'' +
'Twoja karta jest zarejestrowana.' +
'
'
));
},
createRegisterEmailPanel: function(open) {
m.panelTrace('registerEmail');
return (
new SemiPanels({
btn: '.semi-widget-main .semi-widget-back a',
panel: '.semi-widget-main .semi-widget-panel',
open: (open?true:false),
show: function(p, sp, data) {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').show();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-logo').hide();
widget.find('.semi-widget-back').show();
}
m.registerEmailPanel(p, sp, data);
},
close: function() {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').hide();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-back').hide();
widget.find('.semi-widget-logo').show();
}
m.sizes();
m.resize();
m.clearPanelTrace();
m.triggerEvent('onPanelClose');
}
})
);
},
registerEmailPanel: function(container, panel, data) {
widget.find('.semi-widget-logo,.semi-widget-where,.semi-widget-card-info,.semi-widget-roll').hide();
container.html((
'' +
'' +
'Karta PAYBACK zarejestrowana.
' +
'Odbierz
' +
'wiadomość
' +
'na :email
' +
'i potwierdź swój adres e-mail.' +
'' +
'
'
).replace(':email', (data && data.email?data.email:'swój adres e-mail')));
},
createRegisterNoEmailPanel: function(open) {
m.panelTrace('registerNoEmail');
return (
new SemiPanels({
btn: '.semi-widget-main .semi-widget-back a',
panel: '.semi-widget-main .semi-widget-panel',
open: (open?true:false),
show: function(p, sp) {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').show();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-logo').hide();
widget.find('.semi-widget-back').show();
}
m.registerNoEmailPanel(p, sp);
},
close: function() {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').hide();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-back').hide();
widget.find('.semi-widget-logo').show();
}
m.sizes();
m.resize();
m.clearPanelTrace();
m.triggerEvent('onPanelClose');
}
})
);
},
registerNoEmailPanel: function(container, panel) {
widget.find('.semi-widget-logo,.semi-widget-where,.semi-widget-card-info,.semi-widget-roll').hide();
container.html((
'' +
'' +
'Karta PAYBACK zarejestrowana.
' +
'Udanych zakupów!' +
'' +
'
'
));
},
createRegisterPaperCardPanel: function(open) {
m.panelTrace('registerPapercard');
return (
new SemiPanels({
btn: '.semi-widget-main .semi-widget-back a',
panel: '.semi-widget-main .semi-widget-panel',
open: (open?true:false),
show: function(p, sp) {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').show();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-logo').hide();
widget.find('.semi-widget-back').show();
}
m.registerPaperCardPanel(p, sp);
},
close: function() {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').hide();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-back').hide();
widget.find('.semi-widget-logo').show();
}
m.sizes();
m.resize();
m.clearPanelTrace();
m.triggerEvent('onPanelClose');
}
})
);
},
registerPaperCardPanel: function(container, panel) {
widget.find('.semi-widget-logo,.semi-widget-where,.semi-widget-card-info,.semi-widget-roll').hide();
container.html((
'' +
'' +
'Karta tymczasowa została zarejestrowana.
' +
'W ciągu 3 tygodni
' +
'dotrze do Ciebie karta
' +
'PAYBACK, która zastąpi kartę tymczasową.' +
'' +
'
'
));
},
createJoinEmailPanel: function(open) {
m.panelTrace('registerEmail');
return (
new SemiPanels({
btn: '.semi-widget-main .semi-widget-back a',
panel: '.semi-widget-main .semi-widget-panel',
open: (open?true:false),
show: function(p, sp, data) {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').show();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-logo').hide();
widget.find('.semi-widget-back').show();
}
m.joinEmailPanel(p, sp, data);
},
close: function() {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').hide();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-back').hide();
widget.find('.semi-widget-logo').show();
}
m.sizes();
m.resize();
m.clearPanelTrace();
m.triggerEvent('onPanelClose');
}
})
);
},
joinEmailPanel: function(container, panel, data) {
widget.find('.semi-widget-logo,.semi-widget-where,.semi-widget-card-info,.semi-widget-roll').hide();
container.html((
'' +
'' +
'Witaj w PAYBACK! W ciągu 3 tygodni dotrze
' +
'do Ciebie karta PAYBACK.
' +
'Odbierz wiadomość
' +
'na :email
' +
'i potwierdź swój adres e-mail.' +
'' +
'
'
).replace(':email', (data && data.email?data.email:'swój adres e-mail')));
},
createJoinNoEmailPanel: function(open) {
m.panelTrace('registerNoEmail');
return (
new SemiPanels({
btn: '.semi-widget-main .semi-widget-back a',
panel: '.semi-widget-main .semi-widget-panel',
open: (open?true:false),
show: function(p, sp) {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').show();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-logo').hide();
widget.find('.semi-widget-back').show();
}
m.joinNoEmailPanel(p, sp);
},
close: function() {
if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-768')) {
widget.find('.semi-widget-back').hide();
} else if (widget.siblings('.semi-widget-main').hasClass('semi-widget-main-640')) {
widget.find('.semi-widget-back').hide();
widget.find('.semi-widget-logo').show();
}
m.sizes();
m.resize();
m.clearPanelTrace();
m.triggerEvent('onPanelClose');
}
})
);
},
joinNoEmailPanel: function(container, panel) {
widget.find('.semi-widget-logo,.semi-widget-where,.semi-widget-card-info,.semi-widget-roll').hide();
container.html((
'' +
'' +
'Witaj w PAYBACK!
' +
'W ciągu 3 tygodni dotrze
' +
'do Ciebie karta PAYBACK.' +
'' +
'
'
));
},
panelTrace: function(panel) {
panelTrace.push(panel);
},
isCalledFromPanel: function(panel, deep) {
var called = false;
if ('undefined' != typeof(deep)) {
if (0 < (panelTrace.length - deep)) {
called = (panel == panelTrace[panelTrace.length - deep]);
}
} else {
for (key in panelTrace) {
if (panel == panelTrace[(panelTrace.length - key - 1)]) {
called = true;
break;
}
}
}
return called;
},
clearPanelTrace: function() {
panelTrace = new Array();
},
isEmpty: function() {
return (conf.empty?true:false);
}
});
jQuery(document)
.ready(function() {
m.init();
});
};