1; 2/* jQuery elevateZoom 3.0.8 - Demo's and documentation: - www.elevateweb.co.uk/image-zoom - Copyright (c) 2013 Andrew Eades - www.elevateweb.co.uk - Dual licensed under the LGPL licenses. - http://en.wikipedia.org/wiki/MIT_License - http://en.wikipedia.org/wiki/GNU_General_Public_License */ 3"function"!==typeof Object.create&&(Object.create=function(d){function h(){}h.prototype=d;return new h}); 4(function(d,h,l,m){var k={init:function(b,a){var c=this;c.elem=a;c.$elem=d(a);c.imageSrc=c.$elem.data("zoom-image")?c.$elem.data("zoom-image"):c.$elem.attr("src");c.options=d.extend({},d.fn.elevateZoom.options,b);c.options.tint&&(c.options.lensColour="none",c.options.lensOpacity="1");"inner"==c.options.zoomType&&(c.options.showLens=!1);c.$elem.parent().removeAttr("title").removeAttr("alt");c.zoomImage=c.imageSrc;c.refresh(1);d("#"+c.options.gallery+" a").click(function(a){c.options.galleryActiveClass&& 5(d("#"+c.options.gallery+" a").removeClass(c.options.galleryActiveClass),d(this).addClass(c.options.galleryActiveClass));a.preventDefault();d(this).data("zoom-image")?c.zoomImagePre=d(this).data("zoom-image"):c.zoomImagePre=d(this).data("image");c.swaptheimage(d(this).data("image"),c.zoomImagePre);return!1})},refresh:function(b){var a=this;setTimeout(function(){a.fetch(a.imageSrc)},b||a.options.refresh)},fetch:function(b){var a=this,c=new Image;c.onload=function(){a.largeWidth=c.width;a.largeHeight= 6c.height;a.startZoom();a.currentImage=a.imageSrc;a.options.onZoomedImageLoaded(a.$elem)};c.src=b},startZoom:function(){var b=this;b.nzWidth=b.$elem.width();b.nzHeight=b.$elem.height();b.isWindowActive=!1;b.isLensActive=!1;b.isTintActive=!1;b.overWindow=!1;b.options.imageCrossfade&&(b.zoomWrap=b.$elem.wrap('<div style="height:'+b.nzHeight+"px;width:"+b.nzWidth+'px;" class="zoomWrapper" />'),b.$elem.css("position","absolute"));b.zoomLock=1;b.scrollingLock=!1;b.changeBgSize=!1;b.currentZoomLevel=b.options.zoomLevel; 7b.nzOffset=b.$elem.offset();b.widthRatio=b.largeWidth/b.currentZoomLevel/b.nzWidth;b.heightRatio=b.largeHeight/b.currentZoomLevel/b.nzHeight;"window"==b.options.zoomType&&(b.zoomWindowStyle="overflow: hidden;background-position: 0px 0px;text-align:center;background-color: "+String(b.options.zoomWindowBgColour)+";width: "+String(b.options.zoomWindowWidth)+"px;height: "+String(b.options.zoomWindowHeight)+"px;float: left;background-size: "+b.largeWidth/b.currentZoomLevel+"px "+b.largeHeight/b.currentZoomLevel+ 8"px;display: none;z-index:100;border: "+String(b.options.borderSize)+"px solid "+b.options.borderColour+";background-repeat: no-repeat;position: absolute;");if("inner"==b.options.zoomType){var a=b.$elem.css("border-left-width");b.zoomWindowStyle="overflow: hidden;margin-left: "+String(a)+";margin-top: "+String(a)+";background-position: 0px 0px;width: "+String(b.nzWidth)+"px;height: "+String(b.nzHeight)+"px;float: left;display: none;cursor:"+b.options.cursor+";px solid "+b.options.borderColour+";background-repeat: no-repeat;position: absolute;"}"window"== 9b.options.zoomType&&(lensHeight=b.nzHeight<b.options.zoomWindowWidth/b.widthRatio?b.nzHeight:String(b.options.zoomWindowHeight/b.heightRatio),lensWidth=b.largeWidth<b.options.zoomWindowWidth?b.nzWidth:b.options.zoomWindowWidth/b.widthRatio,b.lensStyle="background-position: 0px 0px;width: "+String(b.options.zoomWindowWidth/b.widthRatio)+"px;height: "+String(b.options.zoomWindowHeight/b.heightRatio)+"px;float: right;display: none;overflow: hidden;z-index: 999;-webkit-transform: translateZ(0);opacity:"+ 10b.options.lensOpacity+";filter: alpha(opacity = "+100*b.options.lensOpacity+"); zoom:1;width:"+lensWidth+"px;height:"+lensHeight+"px;background-color:"+b.options.lensColour+";cursor:"+b.options.cursor+";border: "+b.options.lensBorderSize+"px solid "+b.options.lensBorderColour+";background-repeat: no-repeat;position: absolute;");b.tintStyle="display: block;position: absolute;background-color: "+b.options.tintColour+";filter:alpha(opacity=0);opacity: 0;width: "+b.nzWidth+"px;height: "+b.nzHeight+"px;"; 11b.lensRound="";"lens"==b.options.zoomType&&(b.lensStyle="background-position: 0px 0px;float: left;display: none;border: "+String(b.options.borderSize)+"px solid "+b.options.borderColour+";width:"+String(b.options.lensSize)+"px;height:"+String(b.options.lensSize)+"px;background-repeat: no-repeat;position: absolute;");"round"==b.options.lensShape&&(b.lensRound="border-top-left-radius: "+String(b.options.lensSize/2+b.options.borderSize)+"px;border-top-right-radius: "+String(b.options.lensSize/2+b.options.borderSize)+ 12"px;border-bottom-left-radius: "+String(b.options.lensSize/2+b.options.borderSize)+"px;border-bottom-right-radius: "+String(b.options.lensSize/2+b.options.borderSize)+"px;");b.zoomContainer=d('<div class="zoomContainer" style="-webkit-transform: translateZ(0);position:absolute;
12left:'+b.nzOffset.left+"px;top:"+b.nzOffset.top+"px;height:"+b.nzHeight+"px;width:"+b.nzWidth+'px;"></div>');d("body").append(b.zoomContainer);b.options.containLensZoom&&"lens"==b.options.zoomType&&b.zoomContainer.css("overflow", 13"hidden");"inner"!=b.options.zoomType&&(b.zoomLens=d("<div class='zoomLens' style='"+b.lensStyle+b.lensRound+"'> </div>").appendTo(b.zoomContainer).click(function(){b.$elem.trigger("click")}),b.options.tint&&(b.tintContainer=d("<div/>").addClass("tintContainer"),b.zoomTint=d("<div class='zoomTint' style='"+b.tintStyle+"'></div>"),b.zoomLens.wrap(b.tintContainer),b.zoomTintcss=b.zoomLens.after(b.zoomTint),b.zoomTintImage=d('<img style="position: absolute; left: 0px; top: 0px; max-width: none; width: '+ 14b.nzWidth+"px; height: "+b.nzHeight+'px;" src="'+b.imageSrc+'">').appendTo(b.zoomLens).click(function(){b.$elem.trigger("click")})));isNaN(b.options.zoomWindowPosition)?b.zoomWindow=d("<div style='z-index:999;left:"+b.windowOffsetLeft+"px;top:"+b.windowOffsetTop+"px;"+b.zoomWindowStyle+"' class='zoomWindow'> </div>").appendTo("body").click(function(){b.$elem.trigger("click")}):b.zoomWindow=d("<div style='z-index:999;left:"+b.windowOffsetLeft+"px;top:"+b.windowOffsetTop+"px;"+b.zoomWindowStyle+ 15"' class='zoomWindow'> </div>").appendTo(b.zoomContainer).click(function(){b.$elem.trigger("click")});b.zoomWindowContainer=d("<div/>").addClass("zoomWindowContainer").css("width",b.options.zoomWindowWidth);b.zoomWindow.wrap(b.zoomWindowContainer);"lens"==b.options.zoomType&&b.zoomLens.css({backgroundImage:"url('"+b.imageSrc+"')"});"window"==b.options.zoomType&&b.zoomWindow.css({backgroundImage:"url('"+b.imageSrc+"')"});"inner"==b.options.zoomType&&b.zoomWindow.css({backgroundImage:"url('"+b.imageSrc+ 16"')"});b.$elem.bind("touchmove",function(a){a.preventDefault();b.setPosition(a.originalEvent.touches[0]||a.originalEvent.changedTouches[0])});b.zoomContainer.bind("touchmove",function(a){"inner"==b.options.zoomType&&b.showHideWindow("show");a.preventDefault();b.setPosition(a.originalEvent.touches[0]||a.originalEvent.changedTouches[0])});b.zoomContainer.bind("touchend",function(a){b.showHideWindow("hide");b.options.showLens&&b.showHideLens("hide");b.options.tint&&"inner"!=b.options.zoomType&&b.showHideTint("hide")}); 17b.$elem.bind("touchend",function(a){b.showHideWindow("hide");b.options.showLens&&b.showHideLens("hide");b.options.tint&&"inner"!=b.options.zoomType&&b.showHideTint("hide")});b.options.showLens&&(b.zoomLens.bind("touchmove",function(a){a.preventDefault();b.setPosition(a.originalEvent.touches[0]||a.originalEvent.changedTouches[0])}),b.zoomLens.bind("touchend",function(a){b.showHideWindow("hide");b.options.showLens&&b.showHideLens("hide");b.options.tint&&"inner"!=b.options.zoomType&&b.showHideTint("hide")})); 18b.$elem.bind("mousemove",function(a){!1==b.overWindow&&b.setElements("show");if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});b.zoomContainer.bind("mousemove",function(a){!1==b.overWindow&&b.setElements("show");if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});"inner"!=b.options.zoomType&&b.zoomLens.bind("mousemove",function(a){if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a), 19b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});b.options.tint&&"inner"!=b.options.zoomType&&b.zoomTint.bind("mousemove",function(a){if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});"inner"==b.options.zoomType&&b.zoomWindow.bind("mousemove",function(a){if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});b.zoomContainer.add(b.$elem).mouseenter(function(){!1==b.overWindow&& 20b.setElements("show")}).mouseleave(function(){b.scrollLock||b.setElements("hide")});"inner"!=b.options.zoomType&&b.zoomWindow.mouseenter(function(){b.overWindow=!0;b.setElements("hide")}).mouseleave(function(){b.overWindow=!1});b.minZoomLevel=b.options.minZoomLevel?b.options.minZoomLevel:2*b.options.scrollZoomIncrement;b.options.scrollZoom&&b.zoomContainer.add(b.$elem).bind("mousewheel DOMMouseScroll MozMousePixelScroll",function(a){b.scrollLock=!0;clearTimeout(d.data(this,"timer"));d.data(this,"timer", 21setTimeout(function(){b.scrollLock=!1},250));var e=a.originalEvent.wheelDelta||-1*a.originalEvent.detail;a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();0<e/120?b.currentZoomLevel>=b.minZoomLevel&&b.changeZoomLevel(b.currentZoomLevel-b.options.scrollZoomIncrement):b.options.maxZoomLevel?b.currentZoomLevel<=b.options.maxZoomLevel&&b.changeZoomLevel(parseFloat(b.currentZoomLevel)+b.options.scrollZoomIncrement):b.changeZoomLevel(parseFloat(b.currentZoomLevel)+b.options.scrollZoomIncrement); 22return!1})},setElements:function(b){if(!this.options.zoomEnabled)return!1;"show"==b&&this.isWindowSet&&("inner"==this.options.zoomType&&this.showHideWindow("show"),"window"==this.options.zoomType&&this.showHideWindow("show"),this.options.showLens&&this.showHideLens("show"),this.options.tint&&"inner"!=this.options.zoomType&&this.showHideTint("show"));"hide"==b&&("window"==this.options.zoomType&&this.showHideWindow("hide"),this.options.tint||this.showHideWindow("hide"),this.options.showLens&&this.showHideLens("hide"), 23this.options.tint&&this.showHideTint("hide"))},setPosition:function(b){if(!this.options.zoomEnabled)return!1;this.nzHeight=this.$elem.height();this.nzWidth=this.$elem.width();this.nzOffset=this.$elem.offset();this.options.tint&&"inner"!=this.options.zoomType&&(this.zoomTint.css({top:0}),this.zoomTint.css({left:0}));this.options.responsive&&!this.options.scrollZoom&&this.options.showLens&&(lensHeight=this.nzHeight<this.options.zoomWindowWidth/this.widthRatio?this.nzHeight:String(this.options.zoomWindowHeight/ 24this.heightRatio),lensWidth=this.largeWidth<this.options.zoomWindowWidth?this.nzWidth:this.options.zoomWindowWidth/this.widthRatio,this.widthRatio=this.largeWidth/this.nzWidth,this.heightRatio=this.largeHeight/this.nzHeight,"lens"!=this.options.zoomType&&(lensHeight=this.nzHeight<this.options.zoomWindowWidth/this.widthRatio?this.nzHeight:String(this.options.zoomWindowHeight/this.heightRatio),lensWidth=this.options.zoomWindowWidth<this.options.zoomWindowWidth?this.nzWidth:this.options.zoomWindowWidth/ 25this.widthRatio,this.zoomLens.css("width",lensWidth),this.zoomLens.css("height",lensHeight),this.options.tint&&(this.zoomTintImage.css("width",this.nzWidth),this.zoomTintImage.css("height",this.nzHeight))),"lens"==this.options.zoomType&&this.zoomLens.css({width:String(this.options.lensSize)+"px",height:String(this.options.lensSize)+"px"}));this.zoomContainer.css({top:this.nzOffset.top});this.zoomContainer.css({left:this.nzOffset.left});this.mouseLeft=parseInt(b.pageX-this.nzOffset.left);this.mouseTop= 26parseInt(b.pageY-this.nzOffset.top);"window"==this.options.zoomType&&(this.Etoppos=this.mouseTop<this.zoomLens.height()/2,this.Eboppos=this.mouseTop>this.nzHeight-this.zoomLens.height()/2-2*this.options.lensBorderSize,this.Eloppos=this.mouseLeft<0+this.zoomLens.width()/2,this.Eroppos=this.mouseLeft>this.nzWidth-this.zoomLens.width()/2-2*this.options.lensBorderSize);"inner"==this.options.zoomType&&(this.Etoppos=this.mouseTop<this.nzHeight/2/this.heightRatio,this.Eboppos=this.mouseTop>this.nzHeight- 27this.nzHeight/2/this.heightRatio,this.Eloppos=this.mouseLeft<0+this.nzWidth/2/this.widthRatio,this.Eroppos=this.mouseLeft>this.nzWidth-this.nzWidth/2/this.widthRatio-2*this.options.lensBorderSize);0>=this.mouseLeft||0>this.mouseTop||this.mouseLeft>this.nzWidth||this.mouseTop>this.nzHeight?this.setElements("hide"):(this.options.showLens&&(this.lensLeftPos=String(this.mouseLeft-this.zoomLens.width()/2),this.lensTopPos=String(this.mouseTop-this.zoomLens.height()/2)),this.Etoppos&&(this.lensTopPos=0), 28this.Eloppos&&(this.tintpos=this.lensLeftPos=this.windowLeftPos=0),"window"==this.options.zoomType&&(this.Eboppos&&(this.lensTopPos=Math.max(this.nzHeight-this.zoomLens.height()-2*this.options.lensBorderSize,0)),this.Eroppos&&(this.lensLeftPos=this.nzWidth-this.zoomLens.width()-2*this.options.lensBorderSize)),"inner"==this.options.zoomType&&(this.Eboppos&&(this.lensTopPos=Math.max(this.nzHeight-2*this.options.lensBorderSize,0)),this.Eroppos&&(this.lensLeftPos=this.nzWidth-this.nzWidth-2*this.options.lensBorderSize)), 29"lens"==this.options.zoomType&&(this.windowLeftPos=String(-1*((b.pageX-this.nzOffset.left)*this.widthRatio-this.zoomLens.width()/2)),this.windowTopPos=String(-1*((b.pageY-this.nzOffset.top)*this.heightRatio-this.zoomLens.height()/2)),this.zoomLens.css({backgroundPosition:this.windowLeftPos+"px "+this.windowTopPos+"px"}),this.changeBgSize&&(this.nzHeight>this.nzWidth?("lens"==this.options.zoomType&&this.zoomLens.css({"background-size":this.largeWidth/this.newvalueheight+"px "+this.largeHeight/this.newvalueheight+ 30"px"}),this.zoomWindow.css({"background-size":this.largeWidth/this.newvalueheight+"px "+this.largeHeight/this.newvalueheight+"px"})):("lens"==this.options.zoomType&&this.zoomLens.css({"background-size":this.largeWidth/this.newvaluewidth+"px "+this.largeHeight/this.newvaluewidth+"px"}),this.zoomWindow.css({"background-size":this.largeWidth/this.newvaluewidth+"px "+this.largeHeight/this.newvaluewidth+"px"})),this.changeBgSize=!1),this.setWindowPostition(b)),this.options.tint&&"inner"!=this.options.zoomType&& 31this.setTintPosition(b),"window"==this.options.zoomType&&this.setWindowPostition(b),"inner"==this.options.zoomType&&this.setWindowPostition(b),this.options.showLens&&(this.fullwidth&&"lens"!=this.options.zoomType&&(this.lensLeftPos=0),this.zoomLens.css({left:this.lensLeftPos+"px",top:this.lensTopPos+"px"})))},showHideWindow:function(b){"show"!=b||this.isWindowActive||(this.options.zoomWindowFadeIn?this.zoomWindow.stop(!0,!0,!1).fadeIn(this.options.zoomWindowFadeIn):this.zoomWindow.show(),this.isWindowActive= 32!0);"hide"==b&&this.isWindowActive&&(this.options.zoomWindowFadeOut?this.zoomWindow.stop(!0,!0).fadeOut(this.options.zoomWindowFadeOut):this.zoomWindow.hide(),this.isWindowActive=!1)},showHideLens:function(b){"show"!=b||this.isLensActive||(this.options.lensFadeIn?this.zoomLens.stop(!0,!0,!1).fadeIn(this.options.lensFadeIn):this.zoomLens.show(),this.isLensActive=!0);"hide"==b&&this.isLensActive&&(this.options.lensFadeOut?this.zoomLens.stop(!0,!0).fadeOut(this.options.lensFadeOut):this.zoomLens.hide(), 33this.isLensActive=!1)},showHideTint:function(b){"show"!=b||this.isTintActive||(this.options.zoomTintFadeIn?this.zoomTint.css({opacity:this.options.tintOpacity}).animate().stop(!0,!0).fadeIn("slow"):(this.zoomTint.css({opacity:this.options.tintOpacity}).animate(),this.zoomTint.show()),this.isTintActive=!0);"hide"==b&&this.isTintActive&&(this.options.zoomTintFadeOut?this.zoomTint.stop(!0,!0).fadeOut(this.options.zoomTintFadeOut):this.zoomTint.hide(),this.isTintActive=!1)},setLensPostition:function(b){}, 34setWindowPostition:function(b){var a=this;if(isNaN(a.options.zoomWindowPosition))a.externalContainer=d("#"+a.options.zoomWindowPosition),a.externalContainerWidth=a.externalContainer.width(),a.externalContainerHeight=a.externalContainer.height(),a.externalContainerOffset=a.externalContainer.offset(),a.windowOffsetTop=a.externalContainerOffset.top,a.windowOffsetLeft=a.externalContainerOffset.left;else switch(a.options.zoomWindowPosition){case 1:a.windowOffsetTop=a.options.zoomWindowOffety;a.windowOffsetLeft= 35+a.nzWidth;break;case 2:a.options.zoomWindowHeight>a.nzHeight&&(a.windowOffsetTop=-1*(a.options.zoomWindowHeight/2-a.nzHeight/2),a.windowOffsetLeft=a.nzWidth);break;case 3:a.windowOffsetTop=a.nzHeight-a.zoomWindow.height()-2*a.options.borderSize;a.windowOffsetLeft=a.nzWidth;break;case 4:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=a.nzWidth;break;case 5:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=a.nzWidth-a.zoomWindow.width()-2*a.options.borderSize;break;case 6:a.options.zoomWindowHeight> 36a.nzHeight&&(a.windowOffsetTop=a.nzHeight,a.windowOffsetLeft=-1*(a.options.zoomWindowWidth/2-a.nzWidth/2+2*a.options.borderSize));break;case 7:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=0;break;case 8:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 9:a.windowOffsetTop=a.nzHeight-a.zoomWindow.height()-2*a.options.borderSize;a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 10:a.options.zoomWindowHeight>a.nzHeight&& 37(a.windowOffsetTop=-1*(a.options.zoomWindowHeight/2-a.nzHeight/2),a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize));break;case 11:a.windowOffsetTop=a.options.zoomWindowOffety;a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 12:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 13:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft= 380;break;case 14:a.options.zoomWindowHeight>a.nzHeight&&(a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize),a.windowOffsetLeft=-1*(a.options.zoomWindowWidth/2-a.nzWidth/2+2*a.options.borderSize));break;case 15:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft=a.nzWidth-a.zoomWindow.width()-2*a.options.borderSize;break;case 16:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft=a.nzWidth;break;default:a.windowOffsetTop= 39a.options.zoomWindowOffety,a.windowOffsetLeft=a.nzWidth}a.isWindowSet=!0;a.windowOffsetTop+=a.options.zoomWindowOffety;a.windowOffsetLeft+=a.options.zoomWindowOffetx;a.zoomWindow.css({top:a.windowOffsetTop});a.zoomWindow.css({left:a.windowOffsetLeft});"inner"==a.options.zoomType&&(a.zoomWindow.css({top:0}),a.zoomWindow.css({left:0}));a.windowLeftPos=String(-1*((b.pageX-a.nzOffset.left)*a.widthRatio-a.zoomWindow.width()/2));a.windowTopPos=String(-1*((b.pageY-a.nzOffset.top)*a.heightRatio-a.zoomWindow.height()/ 402));a.Etoppos&&(a.windowTopPos=0);a.Eloppos&&(a.windowLeftPos=0);a.Eboppos&&(a.windowTopPos=-1*(a.largeHeight/a.currentZoomLevel-a.zoomWindow.height()));a.Eroppos&&(a.windowLeftPos=-1*(a.largeWidth/a.currentZoomLevel-a.zoomWindow.width()));a.fullheight&&(a.windowTopPos=0);a.fullwidth&&(a.windowLeftPos=0);if("window"==a.options.zoomType||"inner"==a.options.zoomType)1==a.zoomLock&&(1>=a.widthRatio&&(a.windowLeftPos=0),1>=a.heightRatio&&(a.windowTopPos=0)),a.largeHeight<a.options.zoomWindowHeight&&(a.windowTopPos= 410),a.largeWidth<a.options.zoomWindowWidth&&(a.windowLeftPos=0),a.options.easing?(a.xp||(a.xp=0),a.yp||(a.yp=0),a.loop||(a.loop=setInterval(function(){a.xp+=(a.windowLeftPos-a.xp
41)/a.options.easingAmount;a.yp+=(a.windowTopPos-a.yp)/a.options.easingAmount;a.scrollingLock?(clearInterval(a.loop),a.xp=a.windowLeftPos,a.yp=a.windowTopPos,a.xp=-1*((b.pageX-a.nzOffset.left)*a.widthRatio-a.zoomWindow.width()/2),a.yp=-1*((b.pageY-a.nzOffset.top)*a.heightRatio-a.zoomWindow.height()/2),a.changeBgSize&&(a.nzHeight> 42a.nzWidth?("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"})):("lens"!=a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"})), 43a.changeBgSize=!1),a.zoomWindow.css({backgroundPosition:a.windowLeftPos+"px "+a.windowTopPos+"px"}),a.scrollingLock=!1,a.loop=!1):(a.changeBgSize&&(a.nzHeight>a.nzWidth?("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"})):("lens"!=a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvaluewidth+ 44"px "+a.largeHeight/a.newvaluewidth+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"})),a.changeBgSize=!1),a.zoomWindow.css({backgroundPosition:a.xp+"px "+a.yp+"px"}))},16))):(a.changeBgSize&&(a.nzHeight>a.nzWidth?("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/ 45a.newvalueheight+"px"})):("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"}),a.largeHeight/a.newvaluewidth<a.options.zoomWindowHeight?a.zoomWindow.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"}):a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"})),a.changeBgSize=!1),a.zoomWindow.css({backgroundPosition:a.windowLeftPos+ 46"px "+a.windowTopPos+"px"}))},setTintPosition:function(b){this.nzOffset=this.$elem.offset();this.tintpos=String(-1*(b.pageX-this.nzOffset.left-this.zoomLens.width()/2));this.tintposy=String(-1*(b.pageY-this.nzOffset.top-this.zoomLens.height()/2));this.Etoppos&&(this.tintposy=0);this.Eloppos&&(this.tintpos=0);this.Eboppos&&(this.tintposy=-1*(this.nzHeight-this.zoomLens.height()-2*this.options.lensBorderSize));this.Eroppos&&(this.tintpos=-1*(this.nzWidth-this.zoomLens.width()-2*this.options.lensBorderSize)); 47this.options.tint&&(this.fullheight&&(this.tintposy=0),this.fullwidth&&(this.tintpos=0),this.zoomTintImage.css({left:this.tintpos+"px"}),this.zoomTintImage.css({top:this.tintposy+"px"}))},swaptheimage:function(b,a){var c=this,e=new Image;c.options.loadingIcon&&(c.spinner=d("<div style=\"background: url('"+c.options.loadingIcon+"') no-repeat center;height:"+c.nzHeight+"px;width:"+c.nzWidth+'px;z-index: 2000;position: absolute; background-position: center center;"></div>'),c.$elem.after(c.spinner)); 48c.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= 49!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"); 50f.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|| 51(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&& 52(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&& 53(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"== 54c.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", 55c.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(); 56this.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.nzHeight<this.options.zoomWindowWidth/this.widthRatio?this.nzHeight:String(this.options.zoomWindowHeight/this.heightRatio),lensWidth=this.options.zoomWindowWidth<this.options.zoomWindowWidth?this.nzWidth:this.options.zoomWindowWidth/this.widthRatio,this.zoomLens&&(this.zoomLens.css("width", 57lensWidth),this.zoomLens.css("height",lensHeight)))},getCurrentImage:function(){return this.zoomImage},getGalleryList:function(){var b=this;b.gallerylist=[];b.options.gallery?d("#"+b.options.gallery+" a").each(function(){var a="";d(this).data("zoom-image")?a=d(this).data("zoom-image"):d(this).data("image")&&(a=d(this).data("image"));a==b.zoomImage?b.gallerylist.unshift({href:""+a+"",title:d(this).find("img").attr("title")}):b.gallerylist.push({href:""+a+"",title:d(this).find("img").attr("title")})}): 58b.gallerylist.push({href:""+b.zoomImage+"",title:d(this).find("img").attr("title")});return b.gallerylist},changeZoomLevel:function(b){this.scrollingLock=!0;this.newvalue=parseFloat(b).toFixed(2);newvalue=parseFloat(b).toFixed(2);maxheightnewvalue=this.largeHeight/(this.options.zoomWindowHeight/this.nzHeight*this.nzHeight);maxwidthtnewvalue=this.largeWidth/(this.options.zoomWindowWidth/this.nzWidth*this.nzWidth);
58"inner"!=this.options.zoomType&&(maxheightnewvalue<=newvalue?(this.heightRatio=this.largeHeight/ 59maxheightnewvalue/this.nzHeight,this.newvalueheight=maxheightnewvalue,this.fullheight=!0):(this.heightRatio=this.largeHeight/newvalue/this.nzHeight,this.newvalueheight=newvalue,this.fullheight=!1),maxwidthtnewvalue<=newvalue?(this.widthRatio=this.largeWidth/maxwidthtnewvalue/this.nzWidth,this.newvaluewidth=maxwidthtnewvalue,this.fullwidth=!0):(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth=newvalue,this.fullwidth=!1),"lens"==this.options.zoomType&&(maxheightnewvalue<=newvalue? 60(this.fullwidth=!0,this.newvaluewidth=maxheightnewvalue):(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth=newvalue,this.fullwidth=!1)));"inner"==this.options.zoomType&&(maxheightnewvalue=parseFloat(this.largeHeight/this.nzHeight).toFixed(2),maxwidthtnewvalue=parseFloat(this.largeWidth/this.nzWidth).toFixed(2),newvalue>maxheightnewvalue&&(newvalue=maxheightnewvalue),newvalue>maxwidthtnewvalue&&(newvalue=maxwidthtnewvalue),maxheightnewvalue<=newvalue?(this.heightRatio=this.largeHeight/ 61newvalue/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= 62newvalue,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&& 63(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&& 64"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(); 65self.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, 66zoomWindowWidth: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, 67galleryActiveClass:"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); 68; 69/// <reference path="jquery-1.8.3.min.js" /> 70 71/*! 72* JavaScript fbits.produto.atributos Library v1.0.0 73* Copyright 2012, Fbits e-Partner Business 74* 75* Modificado 76* Date: 04/09/2012 77* Por: Maykol Rypka 78* 79*Funções: 80* adicionaEventosASelecaoAtributos 81* appendHtmlSelectedAttrGroup 82* carregarOpcoes
83* changeEventsSelQuantidade 84* checkOpcoesSelecionadas 85* initProdutoAtributos 86* hideErrors 87* removeHtmlSelectedAttrGroup 88* selectedUnits 89* showError 90* showSelectedUnits 91*/ 92var Fbits = Fbits || { __namespace: true }; 93Fbits.Produto = Fbits.Produto || { __namespace: true }; 94Fbits.Produto.Atributos = Fbits.Produto.Atributos || {}; 95Fbits.Produto.Atributos.urlAtualizar = fbits.ecommerce.urlEcommerce + 'Produto/AtualizarProduto'; 96 97/** 98* Para identificar as classes no visual studio 99*/ 100Fbits.Produto.Atributos.__class = true 101 102//Variaveis 103var caminhoProdutoDetalhe = ""; //Caminho Action Atualizar 104var produtoId = 0; //Id do produto em questão 105var btnRemove = "divRemoveItem-"; 106var labelErroPartialId = 'mensagem-erro-'; 107 108//Configurações das escolhas do produto 109var htmlProductOptions = ''; 110var divOpcoesPartialId = 'divOpcoes-'; 111var selectAtributoPartialId = 'selAtributo-'; 112var divItensComboPartialId = 'divItensCombo-'; 113 114var divBtnRemove = document.createElement('div'); 115$(divBtnRemove).attr('id', 'divRemoveItem'); 116$(divBtnRemove).attr('class', 'delete'); 117$(divBtnRemove).html('<span>Excluir Seleção</span>'); 118 119var divMsgErro = document.createElement('div'); 120$(divMsgErro).attr('id', 'divMsgErro'); 121$(divMsgErro).attr('class', 'erro'); 122$(divMsgErro).text('Você selecionou uma quantidade acima do permitido. Por favor verifique.'); 123 124//Adiciona o novo elementento abaixo do elemento passado como parametro. 125function appendHtmlSelectedAttrGroup(beforeElement) { 126 var divOpcoesId = $(beforeElement).attr('id'); 127 var divOpcoesContador = parseInt(divOpcoesId.replace(divOpcoesPartialId, '')); 128 var tempHtml = htmlProductOptions.clone().addClass('opcoesProdutosFirst'); 129 130 tempHtml.attr('id', divOpcoesPartialId + (divOpcoesContador + 1)); 131 tempHtml.find('#divRemoveItem').attr('id', btnRemove + (divOpcoesContador + 1)); 132 133 //tempHtml.find('[id^="' + divItensComboPartialId + '"]').append(labelErro()); 134 var msgErroNovoId = tempHtml.find('[id^="' + labelErroPartialId + '"]').attr('id').replace(labelErroPartialId, ''); 135 tempHtml.find('[id^="' + labelErroPartialId + '"]').attr('id', labelErroPartialId + (parseInt(msgErroNovoId) + 1)); 136 137 $(beforeElement).after(tempHtml); 138 139 changeEventsSelQuantidade(); 140} 141 142/* 143* A cada mudança de seleção de qualquer uma das comboboxes das 144* opções de produto, realiza uma requisição AJAX 145* passando o código do produto (Grade) e as opções selecionadas. 146* No retorno da chamada AJAX, atualiza os dados do produto e dos 147* atributos nas "Selects" 148*/ 149function carregarOpcoes(elementOpcoes) { 150 151 if (elementOpcoes.href != undefined) { 152 if ($(elementOpcoes).find('div[data-valoratributo]').length > 0) 153 elementOpcoes = $(elementOpcoes).find('div[data-valoratributo]'); 154 else 155 return; 156 } 157 158 //VARIAVEIS 159 var produtoId = $('#hdnProdutoId').val(); 160 var atributoProduto = []; 161 var atributoSelecionado = ""; 162 var opcaoSelecionada = 0; 163 var comboSelecionado = 0; 164 var grupoAtributos = 0; 165 var optionString = "Selecione"; 166 var isThumb = false; 167 var produtoVarianteIdAdicional = 0; 168 var isCompreJunto = false; 169 170 //INICIALIZAÃÃO DAS VARIAVEIS 171 var domOpcoes = $(elementOpcoes); 172 opcaoSelecionada = domOpcoes.parents('div[id^="divOpcoes-"]').attr('id').replace('divOpcoes-', ''); 173 comboSelecionado = domOpcoes.parents('li[id^="liComboItem-"]').attr('id').replace('liComboItem-', ''); 174 produtoId = domOpcoes.parents('div[id^="dvGrupoSelecaoAtributos-"]').find('input[id="hdnProdutoId"]').val(); 175 ///troca do id da div do produto 176 177 var assinaturaSelecionada = $("input[name=tipo-produto]:radio:checked", domOpcoes.parents('[id^=produto-item]')).val() 178 179 if (!assinaturaSelecionada) 180 assinaturaSelecionada = false; 181 182 if (domOpcoes.is('select')) { // domopcoes é o objeto select. 183 domOpcoes = domOpcoes.children("option:selected") // atribui o "option" selecionado para o domOpcoes. 184 } 185 186 // Marca o valor dos outros atributo como não selecionado. 187 domOpcoes.parents('[data-codigoatributo]').find('[data-valoratributo]').attr("data-atributoSelecionado", "False"); 188 189 // Marca o valor do atributo atual como selecionado. 190 domOpcoes.attr('data-atributoSelecionado', 'True'); 191 192 //Verifica se é um tumb, somente quando selecionar dados do veja tambem ou compre junto. 193 if (domOpcoes.parents('div[id^="spotVejaTambem-"]').length > 0) { 194 produtoId = domOpcoes.parents('div[id^="divSpotProdutoRecomendado"]').find('input[id="hdnProdutoId"]').val(); 195 196 //Verifica id do produto variante, somente para o veja tambem ou compre junto. 197 var idSpotRecomendadoSelecionado = domOpcoes.parents('div[id^="spotVejaTambem-"]').attr('id'); 198 $.each(domOpcoes 199 .parents('[id^=liGrupoProduto]') 200 .find('div[id^="spotVejaTambem-"]'), function (index, item) { 201 if ($(item).attr('id') != idSpotRecomendadoSelecionado) { 202 produtoVarianteIdAdicional = $(item).find('#hdnProdutoVarianteId').val(); 203 } 204 }); 205 206 if (domOpcoes.parents('div[id^="spotVejaTambem-"]').find('div[id^="divFotosProduto-"]').length > 0) { 207 isThumb = domOpcoes.parents('div[id^="spotVejaTambem-"]').find('div[id^="divFotosProduto-"]').attr('data-isthumb'); 208 isThumb = (isThumb == 'undefined' || isThumb == undefined) ? false : isThumb; 209 } 210 } 211 212 //Pega os dados dos elementos do combo. 213 domOpcoes 214 .parents('li[id^="liComboItem-' + comboSelecionado + '"]') 215 .find('[data-codigoatributo]') 216 .each(function () { 217 //$(this) = elemento da iteração 218 219 var codigoAtributo = $(this).attr('data-codigoAtributo'); 220 var valorAtributo = 'Selecione'; 221 222 if ($(this).find('[data-atributoSelecionado="True"]').length == 1) { 223 valorAtributo = $($(this).find('[data-atributoSelecionado="True"]')[0]).attr('data-valoratributo'); 224 } 225 226 atributoProduto.push(valorAtributo + ";" + codigoAtributo);
227 }); 228 229 230 231 // Ãltimo elemento selecionado. 232 if (domOpcoes.attr('data-valorAtributo') != "") { 233 234 var valorAtributo = domOpcoes.attr('data-valorAtributo'); 235 var codigoAtributo = domOpcoes.parent().attr('data-codigoAtributo'); 236 if (domOpcoes.attr('data-produtoId') != "" && domOpcoes.attr('data-produtoId') != undefined) { 237 produtoId = domOpcoes.attr('data-produtoId'); 238 } 239 240 if (codigoAtributo == undefined) 241 codigoAtributo = domOpcoes.parents('[data-codigoatributo]').attr('data-codigoatributo'); 242 243 atributoSelecionado = valorAtributo + ";" + codigoAtributo; 244 } 245 246 // 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). 247 var isPagProduto = false; 248 249 if (domOpcoes.parents('li[id^="liComboItem-' + comboSelecionado + '"]').find('[data-atributospagproduto="True"]').length > 0) 250 isPagProduto = true; 251 252 //Verifica se elemento contem div compre junto 253 if (domOpcoes.parents('div[id^="divCompreJunto"]').length > 0) { 254 isThumb = true; 255 isCompreJunto = true; 256 isPagProduto = false; 257 } 258 var quantidade = 1; 259 var sellerId = 0; 260 261 if ((typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "true") && $("input[name='checkBuyBox']:checked").length > 0) { 262 sellerId = $("input[name='checkBuyBox']:checked").data("resellerid"); 263 } 264 265 //if ($("#item-quantidade-1").length > 0) 266 // quantidade = $("#item-quantidade-1").val(); 267 268 if (isCompreJunto) { 269 if ($("#produto-item-0-" + produtoId).find('[id^="item-quantidade-"]').length > 0) { 270 quantidade = $("#produto-item-0-" + produtoId).find('[id^="item-quantidade-"]').val(); 271 } 272 } else { 273 if ($('[id^="item-quantidade-"]').length > 0) { 274 quantidade = $('[id^="item-quantidade-"]').val(); 275 } 276 } 277 278 //seta o valor do produto id caso tenha mudado 279 domOpcoes.parents('div[id^="dvGrupoSelecaoAtributos-"]').find('input[id="hdnProdutoId"]').val(produtoId); 280 domOpcoes.parents("[id^=produto-item]").first()[0].id = "produto-item-0-" + produtoId; 281 if ($("#hdnProdutoId").first().val() != produtoId) 282 domOpcoes.parents('div[id^="dvGrupoSelecaoAtributos-"]').first()[0].id = "dvGrupoSelecaoAtributos-" + produtoId; 283 284 $.ajax({
285 type: 'POST', 286 url: Fbits.Produto.Atributos.urlAtualizar, 287 data: { 288 "atributoProduto": atributoProduto.join("|") 289 , "atributoSelecionado": atributoSelecionado 290 , "produtoId": produtoId 291 , "comboIdSelecionado": comboSelecionado 292 , "opcaoParalelaSelecionada": opcaoSelecionada 293 , "optionString": optionString 294 , "isThumb": isThumb 295 , "produtoVarianteIdAdicional": produtoVarianteIdAdicional 296 , "assinaturaSelecionada": assinaturaSelecionada 297 , "isPagProduto": isPagProduto 298 , "quantidade": quantidade 299 , "sellerId": sellerId 300 }, 301 success: function (data) { 302 303 if (data.redirecionar) 304 window.location = data.urlRedirecionamento; 305 306 // Se o produto variante estiver indisponÃvel, desabilita o botão de compra 307 if (data.disponivel) { 308 $('[id^=produto-comprar-]', domOpcoes).show(); 309 $('body').removeClass('fbits-produto-indisponivel'); 310 } 311 else { 312 $('[id^=produto-comprar-]', domOpcoes).hide(); 313 } 314 315 ////Verifica a necessidade de renderizar as views opcionais 316 if (data.renderizarOpcao) { 317 // substitui o sku do produto 318 if (!isCompreJunto) 319 domOpcoes.parents('div[id^="produto-item"]').find(".fbits-sku").html("SKU " + data.SKU); 320 321 if ($("#componentePrecoCalculado.fbits-preco-calculado-precopor").length > 0 && data.precoCalculado != "") { 322 $("#componentePrecoCalculado.fbits-preco-calculado-precopor #spanPrecoCalculadoComponente").text(data.precoCalculado); 323 } 324 325 if ($("#componentePrecoCalculado.fbits-preco-calculado-precodesconto").length > 0 && data.precoCalculadoComDesconto != "") { 326 $("#componentePrecoCalculado.fbits-preco-calculado-precodesconto #spanPrecoCalculadoComponente").text(data.precoCalculadoComDesconto); 327 } 328 329 if ($("#fbits-buyBox").length > 0 && data.partialBuyBox != "") { 330 $("#fbits-buyBox").replaceWith(data.partialBuyBox); 331 } 332 333 if (isThumb) { 334 // Verifica se é compre junto do tipo produto 335 if (domOpcoes.parents('div[id^="spotVejaTambem-"]').length > 0) { 336 //Verifica se é a mesma foto, se for não recarrega. 337 var fotoProdutoThumbId = domOpcoes.parents('div[id^="spotVejaTambem-"]').find('div[id^="divFotosProduto"]').find('input[id="FotoProdutoId"]').val(); 338 339 // Verifica se o produto variante está indisponÃvel, imprimindo a div "avisoIndisponivel", senão imprime as formas de pagamento 340 if (data.fotoProdutoId != fotoProdutoThumbId) { 341 domOpcoes.parents('div[id^="spotVejaTambem-"]').find('div[id^="divFotosProduto-"]').html(data.partialImagens); 342 } 343 domOpcoes.parents('div[id^="spotVejaTambem-"]').find('[id^="produto-nome-"]').text(data.nomeProdutoVariante); 344 345 domOpcoes.parents('div[id^="spotVejaTambem-"]').find('#hdnProdutoVarianteId').val(data.produtoVarianteId).trigger('change'); 346 var opcaoResult = domOpcoes.parents('div[id^="divOpcoes-"]').attr("id").replace("divOpcoes-", ""); 347 domOpcoes.parents('div[id^="spotVejaTambem-"]').find('#hdnProdutoVarianteId-' + opcaoResult).val(data.produtoVarianteId); 348 349 var valorTotalProdutos = 0; 350 351 domOpcoes.parents('[id^=liGrupoProduto]').find('span[id="spnValorTotal"]').text(data.precoProduto); 352 domOpcoes.parents('[id^=liGrupoProduto]').find('span[id="spnValorTotalParcelado"]').text(data.precoProdutoParcelado); 353 354 } else { 355 var fotoProdutoThumbId = domOpcoes.parents('div[id^="produto-item-"]').first().find("#divFotosProduto-Principal").find('input[id="FotoProdutoId"]').val(); 356 // Verifica se o produto variante está indisponÃvel, imprimindo a div "avisoIndisponivel", senão imprime as formas de pagamento 357 if (data.fotoProdutoId != fotoProdutoThumbId) { 358 domOpcoes.parents('div[id^="produto-item-"]').first().find("#divFotosProduto-Principal").html(data.partialImagens); 359 } 360 361 if (novoCheckout) { 362 var opcaoResult = domOpcoes.parents('div[id^="divOpcoes-"]').attr("id").replace("divOpcoes-", ""); 363 domOpcoes.parents('div[id^="produto-item-"]').first().find("#hdnProdutoVarianteId-" + opcaoResult).val(data.produtoVarianteId).trigger('change'); 364 } 365 else 366 domOpcoes.parents('div[id^="produto-item-"]').first().find("#hdnProdutoVarianteId-").val(data.produtoVarianteId).trigger('change'); 367 368 // Atualiza o nome do produto variante. 369 domOpcoes.parents('[id^="produto-item-"]').first().find('[id^="produto-nome-"]').text(data.nomeProdutoVariante); 370 var valorTotalProdutos = 0; 371 domOpcoes.parents('[id^=liGrupoProduto]').find('span[id="spnValorTotal"]').text(data.precoProduto); 372 domOpcoes.parents('[id^=liGrupoProduto]').find('span[id="spnValorTotalParcelado"]').text(data.precoProdutoParcelado); 373 } 374 375 } else { 376 377 378 // Atualiza o hidden do produtoVarianteId 379 if (novoCheckout) { 380 var opcaoResult = domOpcoes.parents('div[id^="divOpcoes-"]').attr("id").replace("divOpcoes-", ""); 381 domOpcoes.parents('div[id^="produto-item-"]').first().find("#hdnProdutoVarianteId-" + opcaoResult).val(data.produtoVarianteId).trigger('change'); 382 } 383 else 384 domOpcoes.parents('div[id^="produto-item-"]').first().find('[id^="hdnProdutoVarianteId-"]').first().val(data.produtoVarianteId).trigger('change'); 385 386 387 // Atualiza o nome do produto variante. 388 domOpcoes.parents('[id^="produto-item-"]').first().find('[id^="produto-nome-"]').first().text(data.nomeProdutoVariante); 389 390 if (Fbits.Produto.Atributos.urlAtualizar.includes("ListaDeDesejos/AtualizarProduto")) { 391 domOpcoes.parents('.produtosListaDesejos').find('[id^="produto-preco-"]').find('.precoPor').first().text("R$ " + data.precoProduto) 392 } 393 394 domOpcoes.parents('[id^="produto-item-"]').first().find('[id^="produto-pagamentoparcelamento-"]').html(data.partialParcelamentoPadrao); 395 domOpcoes.parents('[id^="produto-item-"]').first().find('[id^="fbits-componente-parcelamento-"]').html(data.partialParcelamento); 396 adicionaEventoParcelamento(); 397 398 //Verifica se é a mesma foto, se for não recarrega. 399 // var fotoProdutoId = domOpcoes.parents('div[id^="produto-item-"]').find('div[id="divFotosProduto"]').find('input[id="FotoProdutoId"]').val(); 400 var fotoProdutoId = domOpcoes.parents('[id^="produto-item-"]').find('[id^="produto-imagem-"]').find('input[id="FotoProdutoId"]').val(); 401 /*if (domOpcoes.parents('[id^="produto-item-"]').first().find('[id^="produto-imagem-"]').length > 0) 402 fotoProdutoId = */ 403 404 if (data.fotoProdutoId != fotoProdutoId) { 405 domOpcoes.parents('[id^="produto-item-"]').find('[id^="produto-imagem-"]').html(data.partialImagens); 406 407 if ($('#zoomImagemProduto').length > 0) { 408 adicionaEventosImagens(); 409 adicionaEventosImagensModal(); 410 } 411 } 412 413 //TODO: VERIFICAR CÃDIGO REPLICADO: PAGINA DE PRODUTO UTILIZANDO O MÃTODO ANTIGO DE INCLUIR PRODUTO NO CARRINHO. 414 // Se produto variante não estiver disponÃvel, substitui a divFormaPagamento pela avisoIndisponivel 415 } 416 417 if (!isCompreJunto)//se o produto atualizado for compre junto não atualiza o parcelamento do gateway 418 atualizaPartialGateway(data, produtoId); 419 // Combinação de atributos não existe em nenhum variante. 420 if (data.combinacaoInexistente != "") { 421 showCombinacaoIndexistente(domOpcoes.parents('[id^="produto-item-"]'), data); 422 } 423 else { 424 if (typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "false") { 425 if (data.disponivel) { 426 if (isCompreJunto) 427 { 428 showComprar(domOpcoes.parents('[id^="produto-item-"]').first(), data, true); 429 } 430 else { 431 var el = domOpcoes.parents('[id^="produto-item-"]'); 432 el.find('[id^="combinacao-inexistente"]').first().hide(); 433 if (window.location.href.includes("checkout") && el.find('[id^="produto-variante"]').length != 0) { 434 el = el.find('[id^="produto-variante"]'); 435 } 436 437 showComprar(el, data, false); 438 } 439 } 440 else { 441 showAviseme(domOpcoes.parents('[id^="produto-item-"]').first(), data); 442 } 443 } 444 } 445 } 446 447 if (!isCompreJunto) { 448 domOpcoes.parents('[id^="produto-item-"]').find('[id^="produto-variante"]').html(data.partialComplete); 449 } 450 451 //Tem 3 tipos de quantidade, só estava mudando o 1 452 if (domOpcoes.parents('[id^="produto-item-"]').find('[id^="item-quantidade-"]').first().length > 0) { 453 domOpcoes.parents('[id^="produto-item-"]').find('[id^="item-quantidade-"]').first().focus(); 454 domOpcoes.parents('[id^="produto-item-"]').find('[id^="item-quantidade-"]').first().val(''); 455 domOpcoes.parents('[id^="produto-item-"]').find('[id^="item-quantidade-"]').first().val(quantidade); 456 } 457 //if (domOpcoes.parents('[id^="produto-item-"]').find('[id=item-quantidade-1]').length > 0) { 458 // domOpcoes.parents('[id^="produto-item-"]').find('[id=item-quantidade-1]').val(quantidade); 459 //} 460 461 var comprarModal = false; 462 //Eventos comprar do produto 463 $('[id^=produto-botao-comprar-]').unbind('click'); 464 if ($(elementOpcoes).closest("div[id^='produto-modal-']").length > 0) { 465 comprarModal = true; 466 $('[id^=produto-botao-comprar-]').bind('click', function () { 467 comprarProdutoModal($(this).parents('[id^="produto-item-"]'), true, $(this)); 468 }); 469 } else { 470 $('[id^=produto-botao-comprar-]').bind('click', function () { 471 comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar"); 472 }); 473 } 474 475 $('[id^=produto-servico-botao-comprar-]').unbind('click'); 476 $('[id^=produto-servico-botao-comprar-]').bind('click', function () {
477 comprarComServico($(this).parents('[id^="produto-servico-item-"]'), true, $(this)); 478 }); 479 //Eventos comprar do produto 480 $('[id^=produto-assinatura-botao-comprar-]').unbind('click'); 481 $('[id^=produto-assinatura-botao-comprar-]').bind('click', function () { 482 if (novoCheckout) { 483 if (vincularAssinaturaRecorrencia) { 484 vincularAssinaturaRecorrencia(); 485 } 486 487 if (comprarModal) { 488 comprarProdutoModal($(this).parents('[id^="produto-item-"]'), true, $(this)); 489 } else { 490 comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar"); 491 } 492 493 } else { 494 comprarComAssinatura($(this).parents('[id^="produto-item-"]'), true, $(this)); 495 } 496 }); 497 498 $('#msgEstoqueDisponivel').html(data.msgEstoqueDisponivel); 499 //Retorna a partialView de opções 500 domOpcoes.parents('div[id^="divOpcoes-"]').find('li[id^="liComboItem-' + comboSelecionado + '"]').html(data.partialAtributos); 501 502 // atribui o evento de carrossel nas imagens do mobile 503 if ($("#imagensProduto") != null && $("#imagensProduto").children().length > 1) { 504 $("#imagensProduto").slidesjs(produtoArgs()); 505 } 506 507 /*Imagens e vÃdeo*/ 508 $('[id="thumbItem"]').click(function () { 509 clickImagemThumb(this); 510 }); 511 512 if (typeof details_shim !== 'undefined' && $.isFunction(details_shim)) { details_shim.init(); } 513 514 if (typeof (atualizaEtiquetaAtacado) !== typeof (undefined)) 515 atualizaEtiquetaAtacado(data); 516 517 ajustaTamanhoDivCores(); 518 519 $.each(loadEvents, function (_, f) { f(); }); 520 } 521 522 }); 523 524} // FIM carregarOpcoes 525 526function ajustaTamanhoDivCores() { 527 for (var i = 0; i < $('[class*="valorAtributo valorAtributoCor"]').length; i++) { 528 var url = $('[class*="valorAtributo valorAtributoCor"]')[i].style.background.split("=") 529 var newUrl = url[0] + "=" + url[1] + "=" + $('[class*="valorAtributo valorAtributoCor"]')[i].scrollWidth + url[2].substring(url[2].indexOf("&")) + "=" + $('[class*="valorAtributoCor"]')[i].scrollHeight + "\")"; 530 $('[class*="valorAtributo valorAtributoCor"]')[i].style.background = newUrl; 531 } 532} 533 534function atualizaPartialGateway(data, produtoId) { 535 if ($('div[id^="produto-parcelamento-gateway"]').length > 0) { 536 var urlAtualizaBoleto = fbits.ecommerce.urlEcommerce + 'Produto/AtualizarProdutoVarianteBoleto'; 537 var precoPor = data.precoProduto.replace(" ", "").replace("R$", "").replace(".", "").replace(",", "."); 538 precoPor = parseFloat(precoPor); 539 //$('div[id^="produto-variante"').first().find('class=precoPor').val(); 540 $("div[id^='produto-parcelamento-gateway-']").each(function (index) { 541 var grupo = $(this); 542 var config = grupo.data('componente-fbits-config'); 543 544 $.ajax({
545 type: 'POST', 546 url: urlAtualizaBoleto, 547 data: JSON.stringify({ "produtoId": produtoId, "config": config, "precoPor": precoPor }), 548 contentType: 'application/json; charset=utf-8', 549 dataType: 'json', 550 success: function (data) { 551 if (data.ParcelamentoGateway.trim() != "") { 552 grupo.replaceWith(data.ParcelamentoGateway); 553 554 $(".summary").click(function (event) { 555 $(this).parent().find('.details-content').slideToggle(200); 556 $(this).parent().find('.details-content').prev().toggleClass("opened"); 557 558 event.stopImmediatePropagation(); 559 }); 560 } 561 } 562 }); 563 564 }); 565 } 566} 567/** 568* Mostra o combinação inexistente na pagina de produtos, lista de desejos e carrinho 569*/ 570function showCombinacaoIndexistente(produtoItemElement, data) { 571 //Site: Pagina de produto. 572 produtoItemElement.find('[id^=produto-comprar-]').hide(); 573 produtoItemElement.find('[id^="produto-aviseme-"]').hide(); 574 produtoItemElement.find('[id^="combinacao-inexistente"]').replaceWith(data.combinacaoInexistente); 575 produtoItemElement.find('[id^="combinacao-inexistente"]').show(); 576 produtoItemElement.find('[id^=produto-servicos-]').hide(); 577 produtoItemElement.find('[id=fbits-produto-promocao-divulgacao]').hide(); 578 579 produtoItemElement.find('[id^="produto-botao-adicionar-carrinho-"]').hide(); 580 581 //Site: Lista de desejos. 582 produtoItemElement.find('td[id^=produto-preco-]').replaceWith(data.combinacaoInexistente); 583 produtoItemElement.find('[id^="produto-comprar-"]').hide(); 584 585 //Carrinho: Produto brinde. 586 produtoItemElement.find('[id^=produto-brinde-quantidade-]').hide(); 587 produtoItemElement.find('[id^=produto-brinde-validar-]').hide(); 588 produtoItemElement.find('[id^=produto-brinde-texto-]').hide(); 589 produtoItemElement.find('[id^=produto-brinde-combinacao-inexistente-]').show(); 590 produtoItemElement.find('[id^=produto-brinde-aviseme-]').hide(); 591 592 //Produto: Produto recomendado. 593 produtoItemElement.find('[id^=produto-recomendado-aviseme-]').hide(); 594 produtoItemElement.find('[id^=produto-recomendado-comprar-]').hide(); 595 produtoItemElement.find('[id^=produto-recomendado-combinacao-inexistente-]').show(); 596} 597 598function adicionaEventoParcelamento() { 599 var togView = false; 600 $("#summary").on('click', function () { 601 if (togView == false) { 602 $(this).parent().find('.details-content').slideToggle(200); 603 $(this).parent().find('.details-content').prev().toggleClass("opened"); 604 togView = true; 605 return false; 606 } 607 togView = false; 608 }); 609} 610 611/** 612* Mostra o avise-me na pagina de produtos, lista de desejos e carrinho 613*/ 614function showAviseme(produtoItemElement, data) { 615 //Generico 616 produtoItemElement.find('[id^=produto-comprar-]').hide(); 617 $('.fbits-comprar[data-componente-fbits-id=27]').hide(); 618 619 //Site: Pagina de produto. 620 produtoItemElement.find('[id="divFormaPagamento"]').replaceWith(data.partialFormaPagamento); 621 produtoItemElement.find('[id^="produto-aviseme-"]').replaceWith(data.partialAviseMe); 622 produtoItemElement.find('[id^="produto-aviseme-"]').show(); 623 produtoItemElement.find('[id^="combinacao-inexistente"]').hide(); 624 produtoItemElement.find('[id^=produto-servicos-]').hide(); 625 produtoItemElement.find('[id=fbits-produto-promocao-divulgacao]').hide(); 626 //atualiza preço do produto mesmo quando estiver indisponÃvel 627 $('.fbits-preco[data-componente-fbits-id=26]').replaceWith(data.partialPreco); 628 629 //Site: Lista de desejos. 630 produtoItemElement.find('[id^=produto-preco-]').replaceWith(data.partialAviseMe); 631 produtoItemElement.find('[id^="produto-comprar-"]').hide(); 632 633 //Carrinho: Produto brinde. 634 produtoItemElement.find('[id^=produto-brinde-quantidade-]').hide(); 635 produtoItemElement.find('[id^=produto-brinde-validar-]').hide(); 636 produtoItemElement.find('[id^=produto-brinde-texto-]').hide(); 637 produtoItemElement.find('[id^=produto-brinde-combinacao-inexistente-]').hide(); 638 639 produtoItemElement.find('[id^=produto-brinde-aviseme-]').html(data.partialAviseMe); 640 produtoItemElement.find('[id^=produto-brinde-aviseme-]').show(); 641 642 //Produto: Produto recomendado.
643 produtoItemElement.find('[id^=produto-recomendado-aviseme-]').html(data.partialAviseMe); 644 produtoItemElement.find('[id^=produto-recomendado-aviseme-]').show(); 645 produtoItemElement.find('[id^=produto-recomendado-comprar-]').hide(); 646 produtoItemElement.find('[id^=produto-recomendado-combinacao-inexistente-]').hide(); 647} 648 649/** 650* Mostra as opçoes de compra do produto e esconde views como avise-me e combinação inexistente. 651*/ 652function showComprar(produtoItemElement, data, isCompreJunto) { 653 //Genericos 654 produtoItemElement.find('[id^=produto-comprar-]').show(); 655 $('.fbits-comprar[data-componente-fbits-id=27]').show(); 656 657 //Site: Pagina de produto. 658 produtoItemElement.find('[id="divFormaPagamento"]').first().replaceWith(data.partialFormaPagamento); 659 660 if (!isCompreJunto) { 661 $('.fbits-preco[data-componente-fbits-id=26]').replaceWith(data.partialPreco); 662 } 663 //produtoItemElement.find('[id^="produto-pagamentoparcelamento-"]').html(data.partialParcelamentoPadrao); 664 665 if (produtoItemElement.find('div[id="precoCompreJuntoPorProduto"]').length == 1) 666 produtoItemElement.find('div[id="precoCompreJuntoPorProduto"]').html(data.partialFormaPagamento); 667 668 if (Fbits.Evento && Fbits.Evento.TemEventoAtivo && data.partialBotaoComprar !== undefined) 669 produtoItemElement.find("[id^=produto-comprar-]").first().replaceWith(data.partialBotaoComprar); 670 671 produtoItemElement.find('[id^=produto-servicos-]').html(data.partialServicos); 672 produtoItemElement.find('[id=fbits-produto-promocao-divulgacao]').show(); 673 produtoItemElement.find('[id=fbits-produto-promocao-divulgacao]').html(data.partialDivulgacao); 674 produtoItemElement.find('[id=fbits-div-preco-off]').html(data.partialDesconto); 675 676 $("[id^=produto-servico-botao-comprar-]").unbind("click"); 677 $("[id^=produto-servico-botao-comprar-]").bind("click", function () { 678 comprarComServico($(this).parents('[id^="produto-servico-item-"]'), true, $(this)); 679 }); 680 681 produtoItemElement.find('[id^="produto-aviseme-"]').hide(); 682 produtoItemElement.find('[id^="combinacao-inexistente"]').hide(); 683 684 //Site: Lista de desejos. 685 produtoItemElement.find('[id^=produto-preco-]').html(data.partialFormaPagamento); 686 produtoItemElement.find('td[id^="produto-preco-"]').attr('colspan', 1); 687 688 //Carrinho: Produto brinde. 689 produtoItemElement.find('[id^=produto-brinde-quantidade-]').show(); 690 produtoItemElement.find('[id^=produto-brinde-validar-]').show(); 691 produtoItemElement.find('[id^=produto-brinde-texto-]').show(); 692 produtoItemElement.find('[id^=produto-servicos-]').show(); 693 produtoItemElement.find('[id^=produto-brinde-aviseme-]').hide(); 694 produtoItemElement.find('[id^=produto-brinde-combinacao-inexistente-]').hide(); 695 696 //Produto: Produto recomendado. 697 produtoItemElement.find('[id^=produto-recomendado-aviseme-]').hide(); 698 produtoItemElement.find('[id^=produto-recomendado-combinacao-inexistente-]').hide(); 699 produtoItemElement.find('[id^=produto-recomendado-comprar-]').show(); 700 701 produtoItemElement.find('[id^="produto-botao-adicionar-carrinho-"]').show(); 702} 703 704//Elemento do change dos atributos 705function changeEventsSelQuantidade() { 706 707 $('div[id="' + $(divBtnRemove).attr('id') + '"]').unbind(); 708 $('div[id^="' + $(divBtnRemove).attr('id') + '"]').click(function () { removeProductOptions(this); }); 709 710 711 //Atribui evento de change nos selects de quantidade 712 $('div[id^="dvGrupoSelecaoAtributos"]').find('select[id="selQuantidade"]').unbind('change'); 713 714 715 $('div[id^="dvGrupoSelecaoAtributos"]') 716 .find('select[id="selQuantidade"]') 717 .change(function () { 718 var domGrupoSelecaoAtributos = $(this).parents('div[id^="dvGrupoSelecaoAtributos-"]'); 719 var ultimaQuantidadeSelecionada = $(this).val(); 720 var quantidadeSelecionada = selectedUnits(domGrupoSelecaoAtributos); 721 var quantidadePermitida = $(this).parents('div[id^="divItensCombo-"]').find('input[id^="hdnMaxItemCombo-"]').val(); 722 var quantidadeNaoSelecionada = $(domGrupoSelecaoAtributos).children('div[id^="' + divOpcoesPartialId + '"]').find('select[id="selQuantidade"][value="
7220"] :selected ').length; 723 724 showSelectedUnits(quantidadeSelecionada); 725 if (quantidadePermitida > 0) { 726 if (ultimaQuantidadeSelecionada > 0) { 727 if (quantidadeSelecionada < quantidadePermitida) { 728 729 if (quantidadeNaoSelecionada <= 0) { 730 appendHtmlSelectedAttrGroup($(this).parents('div[id^="' + divOpcoesPartialId + '"]').first()); 731 732 } 733 } 734 else { 735 if (quantidadeNaoSelecionada > 0) { 736 removeHtmlSelectedAttrGroup(this); 737 } 738 } 739 740 //Insere a frase de erro 741 if (quantidadeSelecionada > quantidadePermitida && quantidadePermitida > 0 /*&& $(this).parents('div[id^="divItensCombo-"]').children('div[id="' + $(divMsgErro).attr('id') + '"]').length <= 0*/) { 742 //$(this).parents('div[id^="divItensCombo-"]').after(divMsgErro).fadeIn('slow', 100); 743 showError($(this).parents('div[id^="divItensCombo-"]'), 'Você selecionou uma quantidade acima do permitido. Por favor verifique.'); 744 if (quantidadeNaoSelecionada > 0) { 745 removeHtmlSelectedAttrGroup(this); 746 } 747 } 748 } 749 else { 750 if (quantidadeSelecionada >= quantidadePermitida) { 751 if (quantidadeNaoSelecionada > 0) { 752 removeHtmlSelectedAttrGroup(this); 753 } 754 } 755 else { 756 if (quantidadeNaoSelecionada > 1) { 757 removeHtmlSelectedAttrGroup(this); 758 } 759 } 760 } 761 762 if ($('div[id^="' + btnRemove + '"]').length >= $('div[id^="' + divOpcoesPartialId + '"]').length) { 763 $('div[id^="' + btnRemove + '"]').first().remove(); 764 } 765 } 766 }); 767} 768 769/** 770* Valida as opções selecionadas. 771*/ 772function checkOpcoesSelecionadas(domGrupoSelecaoAtributos) { 773 var quantidadeSelecionada = selectedUnits(domGrupoSelecaoAtributos); //Quantidade selecionada 774 var quantidadePermitida = $(domGrupoSelecaoAtributos).find('input[id^="hdnMaxItemCombo-"]').first().val(); //Limite de compra utilizado para produtos combo 775 776 //Validação para kits de produtos 777 if (quantidadePermitida > 0) { 778 if (quantidadeSelecionada == 0) { 779 showError($(domGrupoSelecaoAtributos).find('[id^="' + labelErroPartialId + '"]').last(), "Por favor selecione as opções para completar este Produto."); 780 return false; 781 } else if (quantidadeSelecionada > quantidadePermitida) { 782 showError($(domGrupoSelecaoAtributos).find('[id^="' + labelErroPartialId + '"]').last(), "Você deve selecionar no máximo " + quantidadePermitida + " opções para completar este Produto."); 783 return false; 784 } else if (quantidadeSelecionada < quantidadePermitida) { 785 showError($(domGrupoSelecaoAtributos).find('[id^="' + labelErroPartialId + '"]').last(), "Por favor selecione mais " + (quantidadePermitida - quantidadeSelecionada) + " opções para completar este Produto."); 786 return false; 787 } else { 788 if ($(domGrupoSelecaoAtributos).find('select[id^="selAtributo-"][value="Selecione"] :selected').length > 0) { 789 showError($(domGrupoSelecaoAtributos).find('[id^="' + labelErroPartialId + '"]').last(), "Por favor selecione as opções para completar este Produto."); 790 return false; 791 } 792 } 793 } 794 return true; 795} 796 797/** 798* Método responsavel por esconder mensagens de erro 799* @method hideErrors 800*/ 801function hideErrors() { 802 $('[id^="' + labelErroPartialId + '"]').html('').fadeOut('slow'); 803} 804 805//Inicializa a pagina de produtos, carregando o zoom se necessario e adicionando a função as dropdown 806function initProdutoAtributos() { 807 var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]'); 808 if (domGrupoSelecaoAtributos.find('#hdnQuantidadeOpcoes').val() == 1) { 809 var atrbs = domGrupoSelecaoAtributos.find('#divOpcoes-0').find('.optionAtributos'); 810 if (atrbs.length == 0) { 811 domGrupoSelecaoAtributos.find('#divOpcoes-0').find("#selQuantidade[value=0]").val(1); 812 domGrupoSelecaoAtributos.find('#divOpcoes-0').find("#selQuantidade option[value=0]").hide(); 813 showSelectedUnits(1); 814 } 815 } 816 changeEventsSelQuantidade(); 817 818 //Copia o html de opções dos produtos 819 htmlProductOptions = $('div[id^="' + divOpcoesPartialId + '"]').first().clone(); 820 htmlProductOptions.find('div[id^="divItensCombo-"]').children().first().before(divBtnRemove); 821 822 823} // FIM InitProduto 824 825//Remove os atributos - Verificar 826function removeHtmlSelectedAttrGroup(obj) { 827 $(obj).parents('div[id^="dvGrupoSelecaoAtributos-"]').children('div[id^="' + divOpcoesPartialId + '"]')
828 .find('select[id="selQuantidade"][value="0"] :selected ') 829 .last() 830 .parents('div[id^="' + divOpcoesPartialId + '"]') 831 .remove(); 832} 833 834/** 835* Método responsável por remover as div´s de opções de atributos. 836* @method removeProductOptions 837*/ 838function removeProductOptions(btnRemoveElement) { 839 $(btnRemoveElement).parents('div[id^="' + divOpcoesPartialId + '"]').remove(); 840 showSelectedUnits(selectedUnits()); 841} 842 843/** 844* Método responsavel por demonstrar as mensagens de erro na tela. 845* @method showError 846*/ 847function showError(errorObj, msg) { 848 var obj; 849 var objId = errorObj.attr('id'); 850 851 if (obj == undefined && objId == undefined) { 852 obj = $("#mensagem-erro"); 853 } 854 else { 855 if (objId.replace(labelErroPartialId) != objId) { 856 obj = errorObj; 857 } 858 else { 859 obj = errorObj.parents('[id^="' + divOpcoesPartialId + '"]').find('[id^="' + labelErroPartialId + '"]'); 860 } 861 } 862 863 obj.first().stop().html(msg).fadeTo('slow', 1.0).delay(7000).fadeOut('slow'); 864} 865 866/** 867* Método responsável por verificar a quantidade de produtos selecionados. 868* @method selectedUnits 869*/ 870function selectedUnits(domGrupoSelecaoAtributos) { 871 var quantidade = 0; 872 $(domGrupoSelecaoAtributos).find('[id="selQuantidade"]').each(function (index) { 873 if ($(this).val() == undefined || $(this).val() == 'undefined' || $(this).val() < 0) quantidade = 0; 874 quantidade += parseInt($(this).val()); 875 }); 876 877 return quantidade; 878} 879 880/** 881* Método responsável por demonstrar a quantidade de produtos selecionada selecionada. 882* @method selectedUnits 883*/ 884function showSelectedUnits(quantidade) { 885 $('div[id="productAmount-Principal"]').find('span[id="spnQuantidade"]').text(quantidade); 886} 887 888/* 889* Atualiza o preço de atacado do produto quando não tem mais de uma variante 890*/ 891function atualizarPrecoAtacado(quantidadeSelecionada) { 892 893 var quantidade = 1; 894 var produtoId = $('#hdnProdutoId').val(); 895 var produtoVarianteId = $('div[id^="produto-item-"]').first().find('[id^="hdnProdutoVarianteId-"]').first().val(); 896 897 //if ($("#item-quantidade-1").length > 0) { 898 // quantidade = $("#item-quantidade-1").val(); 899 //} 900 901 //if ($("#item-quantidade-2").length > 0) { 902 // quantidade = $("#item-quantidade-2").val(); 903 //} 904 905 if ($(quantidadeSelecionada).length > 0) { 906 quantidade = $(quantidadeSelecionada).val(); 907 } 908 909 $.ajax({
910 type: 'POST', 911 url: fbits.ecommerce.urlEcommerce + 'Produto/AtualizarPrecoAtacado', 912 data: { 913 "produtoId": produtoId, 914 "quantidade": quantidade, 915 "produtoVarianteId": produtoVarianteId 916 }, 917 success: function (data) { 918 //$('[id^="produto-item-"]').find('[id=item-quantidade-1]').val(quantidade); 919 if (data.disponivel) { 920 showComprar($('[id^="produto-item-"]').eq(0), data, false); 921 } 922 923 if (typeof (atualizaEtiquetaAtacado) !== typeof (undefined)) 924 atualizaEtiquetaAtacado(data); 925 926 } 927 }); 928 if ($('[data-atributoselecionado="True"]').first().length > 0 && $('[id^="divOpcoes-"]').first().is(":hidden") == false) { 929 carregarOpcoes($('[data-atributoselecionado="True"]').first()); 930 } 931 932} 933 934//Adiciona eventos... 935$(function () { 936 //Função responsavel por adicionar os eventos relacionados aos atributos 937 $('body').on('change', 'select[data-codigoatributo]', function (event) { 938 carregarOpcoes(this); 939 }); // Os elementos select. 940 $('body').on('click', 'div[data-codigoatributo] > * > *', function (event) { 941 event.preventDefault(); 942 carregarOpcoes(this); 943 }); // Todas as opções div. 944 945 $("body").on("change", "#item-quantidade-1", function () { 946 if (Fbits.Produto.EtiquetaAtacado != undefined && Fbits.Produto.EtiquetaAtacado.length > 0) 947 atualizarPrecoAtacado(this); 948 }); 949 950 $("body").on("keyup", "#item-quantidade-2", function () { 951 if (Fbits.Produto.EtiquetaAtacado != undefined && Fbits.Produto.EtiquetaAtacado.length > 0) 952 atualizarPrecoAtacado(this); 953 }); 954}); 955 956; 957/// <reference path="jquery-1.8.3.min.js" /> 958/// <reference path="fbits.carrinho.cabecalho.js" /> 959 960/*! 961* JavaScript fbits.produto.atributos Library v1.0.0 962* Copyright 2012, Fbits e-Partner Business 963* 964* Date: 29/10/2012 965*/ 966//var novoCheckout = document.cookie.indexOf('carrinho-id') >= 0; 967/** 968* Adiciona os eventos aos elementos da página 969*/ 970$(document).ready(function () { 971 adicionaEventosImagens(); 972 ajustaTamanhoDivCores(); 973}); 974 975var personalizacaoPendente = false; 976 977$(function () { 978 //$('[id^=spot-comprar-]', 'body').on('click', function () { 979 // if ($(this).attr('data-abrirModal') == 'True') { 980 // abrirProdutoModal($(this)); 981 // } else { 982 // comprarProdutoSpot($(this)); 983 // } 984 //}); 985 986 $('[id^=produto-botao-comprar-]', 'body').on('click', function () { 987 comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar"); 988 }); 989 990 //Eventos comprar do spot 991 //$('[id^=spot-comprar-]').unbind('click'); 992 //$('[id^=spot-comprar-]').click(function () { 993 // if ($(this).attr('data-abrirModal') == 'True') { 994 // abrirProdutoModal($(this)); 995 // } else { 996 // comprarProdutoSpot($(this)); 997 // } 998 //}); 999 1000 //Eventos comprar do produto 1001 //$('[id^=produto-botao-comprar-]').unbind('click'); 1002 //$('[id^=produto-botao-comprar-]').bind('click', function () { 1003 // comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar"); 1004 //}); 1005 1006 $('[id^=produto-botao-adicionar-carrinho-]').unbind('click'); 1007 $('[id^=produto-botao-adicionar-carrinho-]').bind('click', function () { 1008 comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoAdicionar"); 1009 }); 1010 1011 $('[id^=produto-servico-botao-comprar-]').unbind('click'); 1012 $('[id^=produto-servico-botao-comprar-]').bind('click', function () { 1013 comprarComServico($(this).parents('[id^="produto-servico-item-"]'), true, $(this)); 1014 }); 1015 1016 //Eventos comprar do produto 1017 $('[id^=produto-assinatura-botao-comprar-]').unbind('click'); 1018 $('[id^=produto-assinatura-botao-comprar-]').bind('click', function () { 1019 if (novoCheckout) { 1020 if (vincularAssinaturaRecorrencia) { 1021 vincularAssinaturaRecorrencia();
1022 } 1023 comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar"); 1024 } else { 1025 comprarComAssinatura($(this).parents('[id^="produto-item-"]'), true, $(this)); 1026 } 1027 }); 1028 1029 $("#tipoVisualizacao li").click(this, selecionaTipoVisualizacao); 1030 1031 //Eventos de video. 1032 adicionaEventosImagens(); 1033 1034 //Função responsavel por adicionar os eventos relacionados aos atributos 1035 $('body').on('change', 'select[data-codigoServico]', function (event) { 1036 if (event.srcElement) atualizarServico(event.srcElement); 1037 }); // Os elementos select. 1038 $('body').on('click', 'div[data-codigoServico] > *', function (event) { 1039 if (event.srcElement) atualizarServico(event.srcElement); 1040 else if (event.target) atualizarServico(event.target); 1041 }); // Todas as opções div. 1042}); 1043 1044/** 1045* Atualiza o resumo do carrinho. 1046*/ 1047function atualizarResumoCarrinho() { 1048 if (window.carregarCarrinho) //Verifica se existe a function 1049 carregarCarrinho(); //Atualiza o resumo do carrinho 1050} 1051 1052/** 1053* Busca a quantidade de itens na tela. 1054*/ 1055function buscaQuantidadeItensLista() { 1056 var quantidade = 0; 1057 quantidade = $('[id^=produto-item-]').length; 1058 quantidade = quantidade == undefined ? 0 : quantidade; 1059 1060 return quantidade; 1061} 1062 1063/** 1064* Busca os dados do produto da tela. 1065*/ 1066function buscaParametrosTela(domGrupoSelecaoAtributos) { 1067 //Variavéis 1068 var quantidade = 0; 1069 var quantidadeOpcoesTela = 0; 1070 var quantidadeOpcoesParalelas = 0; 1071 var quantidadeOpcoesParalelasSelecionadas = 0 1072 var optionString = "Selecione"; 1073 var prePedidiProdutoBrindeId = 0; 1074 var produtoIdPagina = 0; 1075 var produtoComboId = 0; 1076 var produtoVarianteId = 0; 1077 var textoPopUpValorReferente = ''; 1078 var IsAssinatura = false; 1079 1080 quantidadeOpcoesParalelas = $('input[id="hdnQuantidadeOpcoes"]', domGrupoSelecaoAtributos).val(); //Busca quantidade de opções paralelas 1081 quantidadeOpcoesTela = $('div[id^="divOpcoes-"]', domGrupoSelecaoAtributos).length; //Busca quantidade de opções da tela 1082 quantidadeOpcoesTela = quantidadeOpcoesTela != undefined ? quantidadeOpcoesTela : 0; 1083 produtoComboId = $('input[id="hdnProdutoComboId"]', domGrupoSelecaoAtributos).val(); //Busca o identificador do produto combo 1084 produtoIdPagina = $('input[id="hdnProdutoId"]', domGrupoSelecaoAtributos).val(); //Busca o identigicador do produto 1085 textoPopUpValorReferente = $('span[id="spnValorReferente"]', domGrupoSelecaoAtributos).text(); //Busca o texto para popup de valor referente 1086 1087 if (($("#tipo-produto-assinatura").length > 0 && $("#tipo-produto-assinatura:checked").length > 0) || 1088 ($("#tipo-produto-assinatura").length == 0 && $("a[id^='produto-assinatura-botao-comprar-']").length > 0)) { 1089 IsAssinatura = true; 1090 } 1091 1092 if (produtoIdPagina == 0 || produtoIdPagina == undefined) { //Verifica se o produtoId é válido 1093 return null; //Retorna para a tela 1094 } 1095 1096 //Lista utilizada para enviar os parametros para a controller 1097 var listaParametros = new Array(); 1098 1099 var i = 0; 1100 var attrNome; 1101 1102 do { //While nas opções paralelas 1103 var quantidade = 0; 1104 var opcaoSelecionada = true; 1105 var attrNaoSelecionado = false; 1106 var comboId = 0; 1107 var produtoId = 0; 1108 var dadosAtributo = []; 1109 var listaPersonalizacoes = []; 1110 1111 domGrupoSelecaoAtributos 1112 .find('div[id="divOpcoes-' + i + '"]') 1113 .find('[data-codigoatributo]') 1114 .each(function (contadorItemCombo, itemCombo) { 1115 //$(this) = elemento da iteração 1116 var attrId = $(itemCombo).attr('data-codigoAtributo'); 1117 attrNome = $(itemCombo).attr('data-nomeAtributo'); 1118 var attrValor = 'Selecione'; 1119 comboId = $(itemCombo).parents('li[id^="liComboItem-"]').attr('id').replace('liComboItem-', ''); 1120 produtoId = $('input[id^="hdnProdutoId"]', itemCombo).val(); //Busca o produtoId do componente do combo 1121 1122 if ($(itemCombo).find('[data-atributoSelecionado="True"]').length == 1) { 1123 attrValor = $($(itemCombo).find('[data-atributoSelecionado="True"]')[0]).attr('data-valoratributo'); 1124 } 1125 1126 if (novoCheckout && attrValor == optionString && opcaoSelecionada == true && quantidadeOpcoesParalelas == 1) { 1127 showError($('[id^=mensagem-erro-]', domGrupoSelecaoAtributos), "Selecione um(a) " + attrNome + " do produto."); 1128 attrNaoSelecionado = true; 1129 } 1130 1131 dadosAtributo.push({ AtributoId: attrId, Valor: attrValor }); //Insere os dados na lista 1132 1133 //Verifica se a opção não foi selecionada 1134 if (attrValor == optionString && opcaoSelecionada == true) { opcaoSelecionada = false; } 1135 }); 1136 1137 if (opcaoSelecionada) { quantidadeOpcoesParalelasSelecionadas++; } 1138 1139 //SELECIONA A QUANTIDADE 1140 if (domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]').find('[id^="item-quantidade"]').length > 0)//Com base na opção paralela 1141 quantidade = domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]').find('[id^="item-quantidade"]').first().val(); 1142 else if (domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]').find('[id="selQuantidade"]').length > 0)//Com no modelo antigo 1143 quantidade = domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]').find('[id="selQuantidade"]').val(); 1144 else//Com base em qualquer posição da tela.
1145 if ($("#tipo-produto-assinatura").is(":checked")) 1146 quantidade = $('div[id^="produto-assinatura-item-"]').find('[id^="item-quantidade-"]').first().val(); 1147 else if ($('[id ^=produto-variante-][id $=' + produtoIdPagina + ']').find('[id^="item-quantidade-"]').length > 0) 1148 quantidade = $('[id ^=produto-variante-][id $=' + produtoIdPagina + ']').find('[id^="item-quantidade-"]').val(); 1149 else 1150 quantidade = $(domGrupoSelecaoAtributos).parents('[id^=produto-item-]').find('[id^="item-quantidade-"]').first().val(); 1151 1152 if (typeof quantidade === 'undefined') { 1153 quantidade = 1; 1154 } 1155 1156 //SELECIONA O PRODUTO VARIANTE ID 1157 produtoVarianteId = domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]').parent().find('input[id="hdnProdutoVarianteId-' + i + '"]').val(); 1158 1159 if (typeof produtoVarianteId === 'undefined') { 1160 produtoVarianteId = domGrupoSelecaoAtributos.find('input[id="hdnProdutoVarianteId-' + i + '"]').val(); 1161 } 1162 1163 listaPersonalizacoes = buscarPersonalizacoes(domGrupoSelecaoAtributos.find('div[id="divOpcoes-' + i + '"]')); 1164 1165 if ($("#grupo-produto-personalizacao-").attr('data-personalizacao-obrigatorio') == "True" && listaParametros.length == 0 && listaPersonalizacoes == null && quantidadeOpcoesParalelas - 1 == i) { 1166 showError($('[id^=mensagem-erro-]', domGrupoSelecaoAtributos), "Selecione uma personalização do produto."); 1167 attrNaoSelecionado = true; 1168 } 1169 1170 //ADICIONA OS PARAMETROS NA LISTA 1171 if (listaPersonalizacoes != null) { 1172 listaParametros.push({ 1173 ProdutoComboId: produtoComboId, 1174 ProdutoVarianteId: produtoVarianteId, 1175 ComboId: comboId, 1176 ProdutoId: produtoId, 1177 Atributos: dadosAtributo, 1178 Quantidade: quantidade, 1179 ListaPersonalizacoes: listaPersonalizacoes 1180 }); 1181 } 1182 1183 i++; 1184 } while (i < quantidadeOpcoesParalelas || i < quantidadeOpcoesTela) 1185 1186 var sellerBuyBoxNaoSelecionado = false; 1187 1188 if ((typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "true") && $("input[name='checkBuyBox']:checked").length == 0) { 1189 showError($('#mensagem-erro-buyBox'), "Selecione uma loja."); 1190 if (!attrNaoSelecionado) { 1191 sellerBuyBoxNaoSelecionado = true; 1192 } 1193 attrNaoSelecionado = true; 1194 } 1195 1196 //Se for opção paralela e não tiver nenhum selecionado, apresenta erro e não vai para checkout 1197 if (quantidadeOpcoesParalelas > 1 && quantidadeOpcoesParalelasSelecionadas == 0 && (typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "false")) { 1198 showError($('[id^=mensagem-erro-]', domGrupoSelecaoAtributos), "Selecione um(a) " + attrNome + " do produto."); 1199 attrNaoSelecionado = true; 1200 } 1201 1202 //Se for opção paralela e ter algum selecionado, porém sem quantidade selecionada, apresenta erro e não vai para checkout 1203 if (novoCheckout && quantidadeOpcoesParalelas > 1 && quantidadeOpcoesParalelasSelecionadas > 0) { 1204 for (var i = 0; i < listaParametros.length; i++) { 1205 if (listaParametros[i].Atributos.length > 0 && listaParametros[i].Atributos[0].Valor != "Selecione" && listaParametros[i].Quantidade == 0) { 1206 showError($('[id^=mensagem-erro-]', domGrupoSelecaoAtributos), "Selecione a quantidade do produto."); 1207 attrNaoSelecionado = true; 1208 break; 1209 } 1210 } 1211 } 1212 1213 var objetoParametroComprarProduto = {}; //Objeto a ser enviado para requisição 1214 objetoParametroComprarProduto.ProdutoId = produtoIdPagina; //Identificador do produto da página 1215 objetoParametroComprarProduto.StrOpcional = optionString, //String opcional da DropDownList 1216 objetoParametroComprarProduto.IsAssinatura = IsAssinatura, //Identificador de assinatura
1217 objetoParametroComprarProduto.DadosProduto = listaParametros, /*Dados da tela, utilizado para identificar um combo, quantidade e atributos selecionados*/ 1218 objetoParametroComprarProduto.attrNaoSelecionado = attrNaoSelecionado, //Identifica que algum atributo não está selecionado 1219 objetoParametroComprarProduto.sellerBuyBoxNaoSelecionado = sellerBuyBoxNaoSelecionado //Identifica se somente está faltando selecionar o buybox 1220 1221 return objetoParametroComprarProduto; 1222} 1223 1224/** 1225* Incluir determinado produto no carrinho. 1226* @method validarItens 1227*/ 1228function comprarProduto(domProdutoItem, redirecionar, clickElement, origem) { 1229 1230 if ($().fancybox && origem == "botaoAdicionar") { 1231 $.fancybox.showActivity(); 1232 } 1233 1234 habilitarCompra(false); //Desabilida botões de compra 1235 redirecionar = redirecionar == undefined ? false : redirecionar; 1236 1237 //Busca o elemento qual possui os dados para compra do produto. 1238 var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', domProdutoItem); //Busca elemento principal 1239 if (checkOpcoesSelecionadas(domGrupoSelecaoAtributos)) { 1240 if ($(".divCompreJuntoCarrossel").length > 0) { 1241 comprarProdutoCompreJunto($('[id^="produto-item-"]'), origem); 1242 return habilitarCompra(true); //Habilita botões de compra 1243 } /*else { 1244 domGrupoSelecaoAtributos = $("#dvGrupoSelecaoAtributos-0"); 1245 }*/ 1246 } 1247 1248 var produtoIdMKP = 0; 1249 var produtoVarianteIdMKP = 0; 1250 1251 if ((typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "true")) { 1252 var buyBoxProdutoId = $("input[name='checkBuyBox']:checked").data("produtoid"); 1253 var buyBoxProdutoVarianteId = $("input[name='checkBuyBox']:checked").val(); 1254 1255 if (buyBoxProdutoId != undefined && buyBoxProdutoVarianteId != undefined) { 1256 1257 produtoIdMKP = $("#dvGrupoSelecaoAtributos-0 #hdnProdutoId").val(); 1258 produtoVarianteIdMKP = $("#dvGrupoSelecaoAtributos-0 #hdnProdutoVarianteId-0").val(); 1259 1260 $("#dvGrupoSelecaoAtributos-0 #hdnProdutoId").val(buyBoxProdutoId); 1261 $("#dvGrupoSelecaoAtributos-0 #hdnProdutoVarianteId-0").val(buyBoxProdutoVarianteId); 1262 } 1263 } 1264 1265 var objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela 1266 var objetoParametroComprarServico = buscarServicosTela(clickElement); 1267 objetoParametroComprarProduto.ListaServicos = objetoParametroComprarServico.ListaServicos; 1268 objetoParametroComprarProduto.VerificarServico = objetoParametroComprarServico.VerificarServico; 1269 1270 if (objetoParametroComprarProduto != undefined) { 1271 if (typeof (objetoParametroComprarProduto.DadosProduto) !== 'undefined') { 1272 // remove produtos com ids inválidos retornados pelo método 'buscaParametrosTela' (Acontece apenas em cenário de Compre Junto) 1273 for (var i = objetoParametroComprarProduto.DadosProduto.length - 1; i >= 0; i--) { 1274 if (typeof (objetoParametroComprarProduto.DadosProduto[i].ProdutoVarianteId) === 'undefined') { 1275 objetoParametroComprarProduto.DadosProduto.splice(i, 1); 1276 } 1277 else if (novoCheckout) { 1278 //remove opção não selecionada (no caso de opção paralela, estava mandando pro novo checkout uma opção não selecionada) 1279 var atributosSelecionados = objetoParametroComprarProduto.DadosProduto[i].Atributos.filter(function (atributo) { return atributo.Valor !== 'Selecione' }); 1280 if (objetoParametroComprarProduto.DadosProduto[i].Atributos.length > 0 && atributosSelecionados.length !== objetoParametroComprarProduto.DadosProduto[i].Atributos.length) { 1281 objetoParametroComprarProduto.DadosProduto.splice(i, 1); 1282 } 1283 } 1284 } 1285 } 1286 1287 if ((typeof isBuyBox !== 'undefined' && isBuyBox.toLocaleLowerCase() == "true") && produtoIdMKP > 0) { 1288 $("#dvGrupoSelecaoAtributos-0 #hdnProdutoId").val(produtoIdMKP); 1289 $("#dvGrupoSelecaoAtributos-0 #hdnProdutoVarianteId-0").val(produtoVarianteIdMKP); 1290 } 1291 1292 if (novoCheckout && !objetoParametroComprarProduto.attrNaoSelecionado) { 1293 comprarProdutoRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, redirecionar, origem); //Realiza a requisição para comprar o produto 1294 } 1295 else if (!novoCheckout) { 1296 comprarProdutoRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, redirecionar, origem); //Realiza a requisição para comprar o produto 1297 } 1298 else if (novoCheckout && objetoParametroComprarProduto.attrNaoSelecionado) { 1299 $.fancybox.hideActivity(); 1300 } 1301 } 1302 1303 habilitarCompra(true); //Habilita botões de compra 1304} 1305 1306/** 1307* Função responsável por enviar a requisição de compra do produto para o server.
1308*/ 1309function comprarProdutoRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, origem) { 1310 var parametroCompraProduto = JSON.stringify(objetoParametroComprarProduto); //Transforma o objeto no tipo JSON. 1311 var urlCompraProduto = fbits.ecommerce.urlEcommerce; //Url para compra de produtos. 1312 1313 1314 if (Fbits.Evento.TemEventoAtivo && Fbits.Evento.Perfil === "Dono") { 1315 // caso aja evento ativo deverá ser encaminhado para "/Produto/Comprar" 1316 urlCompraProduto = fbits.ecommerce.urlEcommerce; 1317 } 1318 else if (typeof (ListaDeDesejosCheckout) !== 'undefined' || novoCheckout) { 1319 urlCompraProduto = fbits.ecommerce.urlCarrinho; 1320 } 1321 1322 1323 var _compraProduto = function () { 1324 $.ajax({ 1325 type: 'POST', 1326 url: urlCompraProduto + 'Produto/ComprarProduto', 1327 data: parametroCompraProduto, 1328 async: false, 1329 contentType: 'application/json; charset=utf-8', 1330 dataType: 'json', 1331 xhrFields: { withCredentials: novoCheckout }, 1332 success: function (data) { 1333 if (Fbits.Evento.TemEventoAtivo && Fbits.Evento.Perfil == "Dono" && data.resultadoCompra.StatusRequisicao === 0 && (data.resultadoCompra.Mensagem == "" || data.resultadoCompra.Mensagem == null)) { 1334 if ($().fancybox) { 1335 $.fancybox('<div class="retornoVinculoEvento">' + 1336 '<div class="evento-modal" >' + 1337 '<div class="evento-modal_header">' + 1338 '<div class="tray-r">' + 1339 '<div class="tray-c-3">' + 1340 '<img src="' + Fbits.Produto.FotoPrincipal + '" width="100" height="auto">' + 1341 '</div>' + 1342 ' <div class="tray-c-9">' + 1343 '<h3 class="evento-modal_title">' + Fbits.Produto.Nome + '</h3>' + 1344 '</div>' + 1345 '</div>' + 1346 '</div>' + 1347 '<div class="tray-r">' + 1348 '<div class="mg-t-50 pd-t-30 mg-b-50">' + 1349 '<p>' + 1350 'Produto foi adicionado ao seu evento com sucesso! <br/> ' + 1351 'Continue adicionando produtos ao seu evento.' + 1352 '</p>' + 1353 '</div>' + 1354 '</div>' + 1355 '</div>' + 1356 '</div>' 1357 ); 1358 if ($("[id^=produto-comprar-]").first().find("a").length > 0) 1359 $("[id^=produto-comprar-]").first().find("a").text("Produto já adicionado a lista"); 1360 } 1361 } else { 1362 if (novoCheckout) { 1363 //Se for novo checkout, verifica o products para validar quantidade selecionada e estoque disponÃvel 1364 var redirecionar = data.redirecionar; 1365 $.ajax({
1366 type: 'GET', 1367 url: fbits.ecommerce.urlEcommerce + "Produto/GetDadosProdutoFromProducts/", 1368 data: { produtoVarianteId: objetoParametroComprarProduto.DadosProduto[0].ProdutoVarianteId }, 1369 contentType: 'application/json; charset=utf-8', 1370 dataType: 'json', 1371 success: function (dataProducts) { 1372 if (dataProducts.retorno != null && dataProducts.retorno != undefined) { 1373 var retorno = jQuery.parseJSON(dataProducts.retorno); 1374 if (retorno != null && retorno != undefined && retorno.EstoqueFisico != undefined && retorno.EstoqueFisico != null) { 1375 //url http://localhost:51189/api/produtovariante/padrao?Ids=301 1376 //var estoqueFisico = retorno[0].Estoque[0].EstoqueFisiso; 1377 //var estoqueReservado = retorno[0].Estoque[0].EstoqueReservado; 1378 //url http://localhost:51189/api/produtovariante/padrao/estoque/301 1379 var estoqueFisico = retorno.EstoqueFisico != undefined ? retorno.EstoqueFisico : 0; 1380 var estoqueReservado = retorno.EstoqueReservado != undefined ? retorno.EstoqueReservado : 0; 1381 var estoqueAtual = estoqueFisico - estoqueReservado; 1382 var quantidadeSelecionada = parseInt(objetoParametroComprarProduto.DadosProduto[0].Quantidade, 10) != undefined ? parseInt(objetoParametroComprarProduto.DadosProduto[0].Quantidade, 10) : 0; 1383 if (estoqueAtual < quantidadeSelecionada) { 1384 redirecionar = false; 1385 data.resultadoCompra.Mensagem = "Não foi possÃvel atender a quantidade solicitada, existem apenas " + estoqueAtual + " unidades disponÃveis."; 1386 data.resultadoCompra.StatusRequisicao = 1; 1387 } 1388 } 1389 1390 } 1391 //return redirecionar; 1392 }, 1393 error: function (jqXHR, textStatus, errorThrown) { 1394 personalizacaoPendente = false; 1395 console.log(jqXHR); 1396 console.log(textStatus); 1397 console.log(errorThrown); 1398 resolveResultadoComprar(data, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, objetoParametroComprarProduto, origem); 1399 } 1400 1401 }).done(function (dataProducts) { 1402 data.redirecionar = redirecionar; 1403 resolveResultadoComprar(data, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, objetoParametroComprarProduto, origem); 1404 }).fail(function () { 1405 resolveResultadoComprar(data, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, objetoParametroComprarProduto, origem); 1406 }); 1407 1408 } else { 1409 resolveResultadoComprar(data, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, objetoParametroComprarProduto, origem); 1410 } 1411 1412 1413 } 1414 } 1415 }); 1416 } 1417 1418 if (novoCheckout) { 1419 $.ajax({
1420 url: fbits.ecommerce.urlCarrinho + 'api/carrinho/', 1421 xhrFields: { 1422 withCredentials: true 1423 }, 1424 crossDomain: true, 1425 success: function (carrinho) { 1426 1427 var guidParceiro = Fbits.Framework.Cookie.getCookie("Parceiro"); 1428 if (guidParceiro != undefined && guidParceiro != null && guidParceiro != "") { 1429 1430 var dataParceiro = { 1431 carrinhoId: carrinho.Id, 1432 Parceiro: guidParceiro 1433 }; 1434 1435 var nomeCliente = fbits.ecommerce.nomeModificado; 1436 nomeCliente = (nomeCliente.split(' ').join('')).toLowerCase(); 1437 1438 $.ajax({ 1439 type: 'POST', 1440 async: false, 1441 url: "https://parceiros-pub.fbits.net/parceiros/" + nomeCliente + "/encrypt/carrinho", 1442 contentType: 'application/json', 1443 data: JSON.stringify(dataParceiro), 1444 async: false, 1445 success: function (dataParceiroResponse) { 1446 if (dataParceiroResponse) { 1447 console.log("Parceiro vinculado com sucesso!"); 1448 } 1449 } 1450 }); 1451 } 1452 1453 //var temPersonalizacao = Boolean($('.produto-personalizacao').find("[id^='txt-personalizacao']").val()); 1454 //if (temPersonalizacao) { 1455 // var qtdeProdutos = parseInt($('[id^="item-quantidade"]').val()); 1456 // var obj = { 1457 // carrinhoId: carrinho.Id, 1458 // prodComPersonalizacoes: Array.apply(null, new Array(qtdeProdutos)).map(function () { 1459 // return { 1460 // produtoId: objetoParametroComprarProduto.ProdutoId, 1461 // produtoVarianteId: objetoParametroComprarProduto.DadosProduto[0].ProdutoVarianteId, 1462 // personalizacoes: objetoParametroComprarProduto.DadosProduto[0].ListaPersonalizacoes.map(function (x) { 1463 // return { personalizacaoId: x.GrupoPersonalizacaoDetalheId, valor: x.Personalizacao }; 1464 // }) 1465 // } 1466 // }).reduce((acc, val) => acc.concat(val), []) 1467 // } 1468 //} 1469 1470 ////se tem personalização faz request 1471 //if (temPersonalizacao && obj.prodComPersonalizacoes[0].personalizacoes.length) { 1472 1473 var aux = []; 1474 var produtosComPersonalizacao = objetoParametroComprarProduto.DadosProduto.filter(dp => dp.ListaPersonalizacoes.length > 0); 1475 var temPersonalizacao = produtosComPersonalizacao.length > 0; 1476 1477 // Se existem produtos com itens na ListaPersonalizacoes montamos o objeto para enviar para o custom 1478 if (objetoParametroComprarProduto.DadosProduto.map(function (dp) { return dp.ListaPersonalizacoes }).length > 0) { 1479 var produtosPersonalizados = []; 1480 for (var i = 0; i < objetoParametroComprarProduto.DadosProduto.length; i++) { 1481 var produtoPersonalizado = { 1482 produtoId: objetoParametroComprarProduto.ProdutoId, 1483 produtoVarianteId: objetoParametroComprarProduto.DadosProduto[i].ProdutoVarianteId, 1484 personalizacoes: objetoParametroComprarProduto.DadosProduto[i].ListaPersonalizacoes.map(function (p, key) { return aux[key] = { personalizacaoId: p.GrupoPersonalizacaoDetalheId, valor: p.Personalizacao } }) 1485 }; 1486 1487 // Adicionamos na lista de acordo com a quantidade de produtos 1488 for (var ii = 0; ii < objetoParametroComprarProduto.DadosProduto[i].Quantidade; ii++) { 1489 produtosPersonalizados.push(produtoPersonalizado); 1490 } 1491 1492 } 1493 1494 var obj = { 1495 carrinhoId: carrinho.Id, 1496 prodComPersonalizacoes: produtosPersonalizados 1497 } 1498 } 1499 1500 //se tem personalização faz request 1501 if (temPersonalizacao) { 1502 if (!personalizacaoPendente) { 1503 personalizacaoPendente = true; 1504 $.ajax({
1505 type: 'POST', 1506 url: fbits.ecommerce.urlCustom + '/list', 1507 contentType: 'application/json', 1508 data: JSON.stringify(obj), 1509 success: _compraProduto, 1510 error: function (ex) { 1511 personalizacaoPendente = false; 1512 $('div.produto-personalizacao').first().append('<div class="erro-personalizacao" data-error="true">Ops! Houve um problema ao personalizar!</div>'); 1513 setTimeout(function () { 1514 $('div.produto-personalizacao div[data-error]').remove(); 1515 }, 4000); 1516 } 1517 }); 1518 } 1519 } else { 1520 _compraProduto(); 1521 } 1522 } 1523 }); 1524 } else { 1525 _compraProduto(); 1526 } 1527} 1528 1529function resolveResultadoComprar(data, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho, objetoParametroComprarProduto, origem) { 1530 1531 var removerItensComSucesso = false; 1532 1533 if (data.redirecionar) { //Remove ou não os itens 1534 removerItensComSucesso = true; 1535 } 1536 1537 tratarResultadoCompraProduto(data.resultadoCompra, domGrupoSelecaoAtributos, removerItensComSucesso); //Trata sucesso e erros da requisição 1538 1539 if (data.resultadoCompra.AbrirModal && data.urlRedirecionar) { 1540 $.get(data.urlRedirecionar, function (data) { 1541 if ($().fancybox) { 1542 var a = $.fancybox(data); 1543 $('[id^=produto-botao-comprar-]').unbind('click'); 1544 $('[id^=produto-botao-comprar-]').bind('click', function () { 1545 comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar"); 1546 }); 1547 } 1548 1549 $('[id^="tb-servico-item-"]').click(function (event) { 1550 if ($(this).find('input[id^="radio-sem-servico-"]').length > 0) { 1551 $(this).find('input[id^="radio-sem-servico-"]').prop('checked', true); 1552 atualizarServico($(this).find('input[id^="radio-sem-servico-"]')); 1553 } 1554 else if ($(this).find('input[id^="radio-servico-"]').length > 0) { 1555 $(this).find('input[id^="radio-servico-"]').prop('checked', true); 1556 atualizarServico($(this).find('input[id^="radio-servico-"]')); 1557 } 1558 }); 1559 }); 1560 } 1561 else if (data.redirecionar && enviarUsuarioAoCarrinho) { //Redireciona o usuário para o carrinho 1562 if (origem == "botaoComprar") { 1563 location.href = data.urlRedirecionar; 1564 } else if (origem == "botaoAdicionar") { 1565 personalizacaoPendente = false; 1566 $.ajax({
1567 type: 'POST', 1568 url: fbits.ecommerce.urlEcommerce + 'Produto/ModalConfirmacaoProduto', 1569 data: { produtoId: objetoParametroComprarProduto.ProdutoId }, 1570 success: function (data) { 1571 if ($().fancybox) { 1572 if (novoCheckout) { 1573 $.ajax({ 1574 type: "GET", 1575 url: fbits.ecommerce.urlCarrinho + "/api/carrinho?cache=false", 1576 xhrFields: { withCredentials: true }, 1577 success: function (dataCheckout) { 1578 var total = 0 1579 var tipoItem = "item" 1580 for (var i = 0, _len = dataCheckout.Produtos.length; i < _len; i++) { 1581 total += dataCheckout.Produtos[i].Quantidade 1582 } 1583 1584 tipoItem = total > 1 ? "itens" : "item"; 1585 1586 var modal = data.dados.replace('<span class="qtdaModalItensCesta">0</span>', '<span class="qtdaModalItensCesta">' + total + '</span>'); 1587 modal = modal.replace('<span class="itensModalItensCesta">item</span>', '<span class="itensModalItensCesta">' + tipoItem + '</span>'); 1588 1589 $.fancybox(modal) 1590 }, 1591 crossDomain: true 1592 }); 1593 } else { 1594 $.fancybox(data.dados); 1595 } 1596 } 1597 } 1598 }); 1599 1600 } 1601 } 1602 else { 1603 personalizacaoPendente = false; 1604 if ($().fancybox && origem == "botaoAdicionar") { 1605 $.fancybox.hideActivity(); 1606 } 1607 1608 //Mostra mensagens para o usuario 1609 $('html, body').animate({ 1610 //scrollTop: $(this.domGrupoSelecaoAtributos).offset().top - 70 1611 scrollTop: $(".produtoInfo").offset().top 1612 }, 'slow'); 1613 } 1614 1615 1616} 1617 1618/** 1619* Função responsável por enviar a requisição de compra do produto para o server. 1620*/ 1621function comprarProdutoAssinaturaRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho) { 1622 1623 var parametroCompraProduto = JSON.stringify(objetoParametroComprarProduto); //Transforma o objeto no tipo JSON. 1624 var urlCompraProduto = '/Produto/ComprarProdutoAssinatura'; //Url para compra de produtos. 1625 1626 //Realiza a requisição ajax 1627 $.ajax({
1628 type: 'POST', 1629 url: urlCompraProduto, 1630 data: parametroCompraProduto, 1631 contentType: 'application/json; charset=utf-8', 1632 dataType: 'json', 1633 context: { domGrupoSelecaoAtributos: domGrupoSelecaoAtributos, enviarUsuarioAoCarrinho: enviarUsuarioAoCarrinho }, 1634 success: function (data) { 1635 var removerItensComSucesso = false; 1636 1637 if (data.redirecionar) { //Remove ou não os itens 1638 removerItensComSucesso = true; 1639 } 1640 1641 tratarResultadoCompraProduto(data.resultadoCompra, this.domGrupoSelecaoAtributos, removerItensComSucesso); //Trata sucesso e erros da requisição 1642 1643 if (data.resultadoCompra.AbrirModal && data.urlRedirecionar) { 1644 $.get(data.urlRedirecionar, function (data) { 1645 if ($().fancybox) { 1646 var a = $.fancybox(data); 1647 $('[id^=produto-assinatura-botao-comprar-]').unbind('click'); 1648 $('[id^=produto-assinatura-botao-comprar-]').bind('click', function () { 1649 if (novoCheckout) { 1650 if (vincularAssinaturaRecorrencia) { 1651 vincularAssinaturaRecorrencia(); 1652 } 1653 comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this), "botaoComprar"); 1654 return; 1655 } else { 1656 comprarProduto($(this).parents('[id^="produto-item-"]'), true, $(this)); 1657 } 1658 }); 1659 } 1660 $('table[id^="tb-servico-item-"]').click(function (event) { 1661 $(event.srcElement).parents('table').find('input[id^="radio-servico-"]').click(); 1662 if ($(event.srcElement).parents('table').find('input[id^="radio-servico-"]')) atualizarServico($(event.srcElement).parents('table').find('input[id^="radio-servico-"]')); 1663 }); 1664 }); 1665 } 1666 else if (data.redirecionar && this.enviarUsuarioAoCarrinho) { //Redireciona o usuário para o carrinho 1667 location.href = data.urlRedirecionar; 1668 } 1669 else { 1670 //Mostra mensagens para o usuario 1671 $('html, body').animate({ 1672 scrollTop: $(this.domGrupoSelecaoAtributos).offset().top - 70 1673 }, 'slow'); 1674 } 1675 } 1676 }); 1677} 1678 1679// Compra todos os produtos selecionados na tela 1680function comprarProdutoCompreJunto(domListaProdutoItens, origem) { 1681 /*habilitarCompra(false); //Desabilida botões de compra 1682 1683 var domGrupoSelecaoAtributos = {}; 1684 var listaParametros = []; 1685 var objetoParametroComprarProduto = {}; 1686 var atributosSelecionados = true; 1687 var IdSeletor = 0; 1688 $(domListaProdutoItens).each(function (contador, produtoItem) { 1689 //Busca o elemento qual possui os dados para compra do produto. 1690 if ($(produtoItem).find("[id^=Adicionar-ProdutoId]").length == 1 && !$(produtoItem).hasClass("detalhe-produto-itens")) { 1691 if ($(produtoItem).find("[id^=Adicionar-ProdutoId]").is(":checked") == false) 1692 return; 1693 else 1694 IdSeletor = produtoItem.id.split("-").pop(-1); 1695 } 1696 if ($(produtoItem).parents("#divGruposProdutoRecomendado").length == 1) 1697 return; 1698 1699 domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-' + IdSeletor + '"]'); //Busca elemento principal 1700 checkOpcoesSelecionadas(domGrupoSelecaoAtributos); //Verifica a quantidade, utilizada para validar os combos 1701 1702 objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela 1703 1704 if (objetoParametroComprarProduto != null) //Adiciona o objeto com os dados da tela na lista 1705 listaParametros.push(objetoParametroComprarProduto); 1706 1707 }); 1708 1709 if (listaParametros.length > 0) 1710 comprarProdutoTodosRequest(listaParametros); //Realiza a requisição para comprar o produto 1711 1712 habilitarCompra(true); //Habilita botões de compra*/ 1713 1714 habilitarCompra(false); //Desabilida botões de compra 1715 1716 1717 var domGrupoSelecaoAtributos = {}; 1718 var listaParametros = []; 1719 var objetoParametroComprarProduto = {}; 1720 var atributosSelecionados = true; 1721 var IdSeletor = 0; 1722 1723 $(domListaProdutoItens).each(function (contador, produtoItem) {
1724 //Busca o elemento qual possui os dados para compra do produto. 1725 if ($(produtoItem).find("[id^=Adicionar-ProdutoId]").length == 1 && !$(produtoItem).hasClass("detalhe-produto-itens")) { 1726 if ($(produtoItem).find("[id^=Adicionar-ProdutoId]").is(":checked") == false) 1727 return; 1728 else 1729 IdSeletor = produtoItem.id.split("-").pop(-1); 1730 } 1731 if ($(produtoItem).parents("#divGruposProdutoRecomendado").length == 1) 1732 return; 1733 1734 domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-' + IdSeletor + '"]'); //Busca elemento principal 1735 checkOpcoesSelecionadas(domGrupoSelecaoAtributos); //Verifica a quantidade, utilizada para validar os combos 1736 1737 objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela 1738 1739 if (objetoParametroComprarProduto != null) { //Adiciona o objeto com os dados da tela na lista 1740 if (objetoParametroComprarProduto.attrNaoSelecionado) { 1741 atributosSelecionados = false; 1742 return; 1743 } 1744 1745 listaParametros.push(objetoParametroComprarProduto); 1746 } 1747 }); 1748 1749 if (novoCheckout && objetoParametroComprarProduto.attrNaoSelecionado) { 1750 $.fancybox.hideActivity(); 1751 return; 1752 } 1753 1754 var _compraProdutoJuntosPersonalizacao = function () { 1755 if (listaParametros.length > 0 && atributosSelecionados) 1756 comprarProdutoTodosRequest(listaParametros, origem); //Realiza a requisição para comprar o produto 1757 1758 habilitarCompra(true); //Habilita botões de compra 1759 } 1760 1761 if (novoCheckout) { 1762 $.ajax({
1763 url: fbits.ecommerce.urlCarrinho + 'api/carrinho/', 1764 xhrFields: { 1765 withCredentials: true 1766 }, 1767 crossDomain: true, 1768 success: function (carrinho) { 1769 1770 var guidParceiro = Fbits.Framework.Cookie.getCookie("Parceiro"); 1771 if (guidParceiro != undefined && guidParceiro != null && guidParceiro != "") { 1772 1773 var dataParceiro = { 1774 carrinhoId: carrinho.Id, 1775 Parceiro: guidParceiro 1776 }; 1777 1778 $.ajax({ 1779 type: 'POST', 1780 async: false, 1781 url: "https://parceiros-pub.fbits.net/parceiros/" + (fbits.ecommerce.nome.replace(" ", "")).toLowerCase() + "/encrypt/carrinho", 1782 contentType: 'application/json', 1783 data: JSON.stringify(dataParceiro), 1784 success: function (dataParceiroResponse) { 1785 if (dataParceiroResponse) { 1786 console.log("Parceiro vinculado com sucesso!"); 1787 } 1788 } 1789 }); 1790 } 1791 1792 if (listaParametros.length > 0) { 1793 var aux = {}; 1794 var produtos = []; 1795 var hasPersonalizacao = false; 1796 var qtdeProdutos = 0; 1797 var produtosPersonalizados = []; 1798 var aux2 = []; 1799 1800 $("[id^='produto-item']").each(function () { 1801 1802 var textPersonalizacao = ""; 1803 1804 if ($(this).find("[id^='txt-personalizacao']").length > 0) 1805 textPersonalizacao = String($(this).find("[id^='txt-personalizacao']").val()); 1806 else if ($(this).find("[id^='ddl-personalizacao-']").length > 0) 1807 textPersonalizacao = String($(this).find("[id^='ddl-personalizacao-']").val()); 1808 1809 if (textPersonalizacao !== undefined && textPersonalizacao !== "undefined" && textPersonalizacao !== '') { 1810 hasPersonalizacao = true; 1811 // Se existem produtos com itens na ListaPersonalizacoes montamos o objeto para enviar para o custom 1812 if (objetoParametroComprarProduto.DadosProduto.map(function (dp) { 1813 return dp.ListaPersonalizacoes 1814 }).length > 0) { 1815 1816 for (var a = 0; a < listaParametros.length; a++) { 1817 for (var i = 0; i < listaParametros[a].DadosProduto.length; i++) { 1818 var produtoPersonalizado = { 1819 produtoId: listaParametros[a].ProdutoId, 1820 produtoVarianteId: listaParametros[a].DadosProduto[i].ProdutoVarianteId, 1821 personalizacoes: listaParametros[a].DadosProduto[i].ListaPersonalizacoes.map(function (p, key) { 1822 return aux2[key] = { 1823 personalizacaoId: p.GrupoPersonalizacaoDetalheId, 1824 valor: p.Personalizacao 1825 } 1826 }) 1827 }; 1828 1829 // Adicionamos na lista de acordo com a quantidade de produtos 1830 for (var ii = 0; ii < listaParametros[a].DadosProduto[i].Quantidade; ii++) { 1831 if (produtoPersonalizado.produtoId != null && produtoPersonalizado.produtoVarianteId != null) { 1832 produtosPersonalizados.push(produtoPersonalizado); 1833 } 1834 } 1835 1836 } 1837 } 1838 } 1839 } 1840 }); 1841 1842 var obj = { 1843 carrinhoId: carrinho.Id, 1844 prodComPersonalizacoes: produtosPersonalizados 1845 } 1846 } 1847 1848 if (hasPersonalizacao) { 1849 $.ajax({
1850 type: 'POST', 1851 url: fbits.ecommerce.urlCustom + '/list', 1852 contentType: 'application/json', 1853 data: JSON.stringify(obj), 1854 success: _compraProdutoJuntosPersonalizacao, 1855 error: function (ex) { 1856 $('#divCompreJunto').first().append('<div class="erro-personalizacao" data-error="true">Ops! Houve um problema ao personalizar!</div>'); 1857 setTimeout(function () { 1858 $('#divCompreJunto div[data-error]').remove(); 1859 }, 4000); 1860 } 1861 }); 1862 } else { 1863 _compraProdutoJuntosPersonalizacao(); 1864 } 1865 } 1866 }); 1867 } else { 1868 _compraProdutoJuntosPersonalizacao(); 1869 } 1870} 1871 1872/** 1873* Incluir uma lista de produtos no carrinho. 1874* @method validarItens 1875*/ 1876function comprarProdutoTodos(domListaProdutoItens) { 1877 habilitarCompra(false); //Desabilida botões de compra 1878 1879 var domGrupoSelecaoAtributos = {}; 1880 var listaParametros = []; 1881 var objetoParametroComprarProduto = {}; 1882 var atributosSelecionados = true; 1883 $(domListaProdutoItens).each(function (contador, produtoItem) { 1884 if (!produtoItem.parentElement.id.includes("produto-dados-variante-")) { 1885 //Busca o elemento qual possui os dados para compra do produto. 1886 domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', produtoItem); //Busca elemento principal 1887 checkOpcoesSelecionadas(domGrupoSelecaoAtributos); //Verifica a quantidade, utilizada para validar os combos 1888 1889 objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela 1890 1891 if (objetoParametroComprarProduto != null) //Adiciona o objeto com os dados da tela na lista 1892 listaParametros.push(objetoParametroComprarProduto); 1893 } 1894 1895 }); 1896 1897 if ($.grep(listaParametros, function (dados) { return dados.attrNaoSelecionado; }).length > 0) { 1898 habilitarCompra(true); 1899 return; 1900 } 1901 1902 if (listaParametros.length > 0) 1903 comprarProdutoTodosRequest(listaParametros, 'botaoComprar'); //Realiza a requisição para comprar o produto 1904 1905 habilitarCompra(true); //Habilita botões de compra 1906} 1907 1908/** 1909* Função responsável por enviar a requisição de compra do produto para o server. 1910*/ 1911function comprarProdutoTodosRequest(listaObjetoParametroComprarProduto, origem) { 1912 var listaParametroCompraProduto = JSON.stringify(listaObjetoParametroComprarProduto); //Transforma o objeto no tipo JSON. 1913 var urlCompraProduto = (novoCheckout ? fbits.ecommerce.urlCarrinho : fbits.ecommerce.urlEcommerce) + '/Produto/ComprarProdutoTodos'; //Url para compra de produtos. 1914 1915 if (typeof (ListaDeDesejosCheckout) != 'undefined') { 1916 urlCompraProduto = fbits.ecommerce.urlCarrinho + 'Produto/ComprarProdutoTodos' 1917 } 1918 1919 //Realiza a requisição ajax 1920 $.ajax({
1921 type: 'POST', 1922 url: urlCompraProduto, 1923 data: listaParametroCompraProduto, 1924 contentType: 'application/json; charset=utf-8', 1925 dataType: 'json', 1926 xhrFields: { withCredentials: novoCheckout }, 1927 success: function (data) { 1928 tratarResultadoCompraProdutoTodos(data.resultadoCompra, data.redirecionar, origem); //Trata sucesso e erros da requisição 1929 } 1930 }); 1931} 1932 1933/** 1934* Habilita ou desabilita elementos de inclusão do produto no carrinho 1935* @param halibitar 1936* true habilita elementos. 1937* false desabilita elementos. 1938* caso seja diferente desabilita os elementos 1939*/ 1940function habilitarCompra(halibitar) { 1941 if (halibitar) { //Habilita o botão comprar e esconde a div de carregando. 1942 $('input[id^=comprar-]').removeAttr('disabled'); 1943 $('input[id^=carrinho-comprar]').removeAttr('disabled'); 1944 $('input[id=todos-comprar]').removeAttr('disabled'); 1945 $('input[id^=um-clique-comprar-]').removeAttr('disabled'); 1946 $('[id^=spot-comprar-]').removeAttr('disabled'); 1947 } else { //Desabilita o botão para evitar varios cliques 1948 $('input[id^=comprar-]').attr('disabled', 'disabled'); 1949 $('input[id^=carrinho-comprar]').attr('disabled', 'disabled'); 1950 $('input[id=todos-comprar]').attr('disabled', 'disabled'); 1951 $('input[id^=um-clique-comprar-]').attr('disabled', 'disabled'); 1952 $('[id^=spot-comprar-]').attr('disabled', 'disabled'); 1953 } 1954} 1955 1956/** 1957* Função responsável por tratar o resultado da compra de produto. 1958* @param data Dados da resposta da requisição. 1959* @param domGrupoSelecaoAtributos elemento DOM o qual comtem os dados do determinado produto. 1960*/ 1961function tratarResultadoCompraProduto(data, domGrupoSelecaoAtributos, removerItem) { 1962 if (domGrupoSelecaoAtributos != undefined) { //Vefica a existencia do grupo de seleção de atributos 1963 var produtoItem = $(domGrupoSelecaoAtributos).parents('[id^=produto-item-]'); //Busca os dados do item 1964 removerItem = (removerItem == undefined) ? true : removerItem; 1965 1966 if (data.StatusRequisicao == 0 && produtoItem != undefined) //Produto comprado com sucesso 1967 { 1968 $(produtoItem).addClass("itemEnabled"); 1969 if (removerItem) { 1970 $('input[id^="produto-remover-"]', produtoItem).trigger('click'); //Chama o evento de remover do botão 1971 } 1972 atualizarResumoCarrinho(); 1973 } 1974 else //Trata erros 1975 { 1976 //Seta as mensagens de erro. 1977 //$('[id^="divOpcoes-"]').each(function () { 1978 // hideErrors(); 1979 //}); 1980 1981 $('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(''); //Limpa mensagens de erro 1982 var index = data.indexOpcoes == undefined || data.indexOpcoes < 0 ? 0 : data.indexOpcoes; //Checa o index do produto a receber a mensagem 1983 //$('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(data.Mensagem); //Seta mensagem 1984 $(produtoItem).addClass("itemDisabled"); 1985 $('[id="produto-legenda"]').removeClass('displayNone').addClass('displayBlock'); 1986 1987 1988 if (data.erroIndex >= 0) { 1989 //domGrupoSelecaoAtributos.find('#divOpcoes-' + data.erroIndex).find('.erro').html(); 1990 showError(domGrupoSelecaoAtributos.find('#divOpcoes-' + data.erroIndex).find('[id^="' + labelErroPartialId + '"]'), data.Mensagem) 1991 } 1992 else { 1993 if (data.Mensagem != "") { 1994 showError($('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos), data.Mensagem) 1995 } 1996 else { 1997 $('[id^="divOpcoes-"]').each(function () { 1998 showError($(this).find('[id^="' + labelErroPartialId + '"]'), data.Mensagem); 1999 }); 2000 } 2001 } 2002 2003 } 2004 } 2005} 2006 2007/** 2008* Função responsável por tratar o resultado da compra de produto (quando existem múltiplos produtos na página). 2009* @param data Dados da resposta da requisição. 2010* @param domGrupoSelecaoAtributos elemento DOM o qual comtem os dados do determinado produto. 2011*/ 2012function tratarResultadoCompraProduto2(data, domGrupoSelecaoAtributos, removerItem) { 2013 if (domGrupoSelecaoAtributos != undefined) { //Vefica a existencia do grupo de seleção de atributos 2014 var produtoItem = $(domGrupoSelecaoAtributos).parents('[id^=produto-item-]');
2014 //Busca os dados do item 2015 removerItem = (removerItem == undefined) ? true : removerItem; 2016 2017 if (data.StatusRequisicao == 0 && produtoItem != undefined) //Produto comprado com sucesso 2018 { 2019 $(produtoItem).addClass("itemEnabled"); 2020 if (removerItem) { 2021 $('input[id^="produto-remover-"]', produtoItem).trigger('click'); //Chama o evento de remover do botão 2022 } 2023 atualizarResumoCarrinho(); 2024 } 2025 else //Trata erros 2026 { 2027 //Seta as mensagens de erro. 2028 $('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).html('').fadeOut('slow'); 2029 $('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(''); //Limpa mensagens de erro 2030 var index = data.indexOpcoes == undefined || data.indexOpcoes < 0 ? 0 : data.indexOpcoes; //Checa o index do produto a receber a mensagem 2031 $('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(data.Mensagem); //Seta mensagem 2032 $(produtoItem).addClass("itemDisabled"); 2033 $('[id="produto-legenda"]').removeClass('displayNone').addClass('displayBlock'); 2034 2035 if (data.erroIndex >= 0) { 2036 domGrupoSelecaoAtributos.find('#divOpcoes-' + data.erroIndex).find('[id^="' + labelErroPartialId + '"]').stop().html(data.msgErro).fadeTo('slow', 1.0).delay(7000).fadeOut('slow'); 2037 } 2038 else { 2039 if (data.Mensagem != "") { 2040 if ($(domGrupoSelecaoAtributos).parents('div[id^="divCompreJunto"]').length > 0) { 2041 $('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).stop().html(data.msgErro).focus(); 2042 } else { 2043 $('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).stop().html(data.msgErro).fadeTo("slow", 1).delay(7000).fadeOut("slow") 2044 } 2045 } 2046 else { 2047 $('[id^="divOpcoes-"]').each(function () { 2048 $(this).find('[id^="' + labelErroPartialId + '"]').stop().html(data.msgErro).fadeTo('slow', 1.0).delay(7000).fadeOut('slow'); 2049 }); 2050 } 2051 } 2052 } 2053 } 2054} 2055 2056/** 2057* Função responsável por tratar o resultado da compra de um conjunto de produtos. 2058* @param data Dados da resposta da requisição. 2059*/ 2060function tratarResultadoCompraProdutoTodos(data, redirecionar, origem) { 2061 //Variaveis 2062 var domGrupoSelecaoAtributos = {}; 2063 var redirecionar = (redirecionar == undefined) ? false : redirecionar; 2064 var removerItensComSucesso = false; 2065 var isCompreJunto = ($("#divCompreJunto").length > 0); 2066 if (redirecionar) { //Remove ou não os itens 2067 removerItensComSucesso = true; 2068 } 2069 2070 if (window.location.href.toLowerCase().indexOf("listadedesejos") > -1) { 2071 $.each($('div[id^="dvGrupoSelecaoAtributos-"]', '[id^="produto-item-"]'), function (index, value) { 2072 //console.log(value) 2073 //console.log($('input[id^="produto-remover-"]', $(value).parents('[id^=produto-item-]'))); 2074 tratarResultadoCompraProduto2(data, value, removerItensComSucesso); 2075 }); 2076 } else { 2077 //Iteração com os itens do retorno 2078 $.each(data, function (index, value) { 2079 if (isCompreJunto) 2080 tratarResultadoComprarCompreJunto(value); 2081 else { 2082 domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', '[id^="produto-item-"]')[index]; 2083 tratarResultadoCompraProduto2(value, domGrupoSelecaoAtributos, removerItensComSucesso); 2084 } 2085 }); 2086 } 2087 2088 if (origem == "botaoComprar") { 2089 if (redirecionar) { //Redireciona o usuário para o carrinho 2090 location.href = fbits.ecommerce.urlCarrinho; 2091 } 2092 else { //Mostra mensagens para o usuario 2093 if (!isCompreJunto) 2094 $('html, body').animate({ scrollTop: 100 }, 'slow'); 2095 } 2096 } else if (origem == "botaoAdicionar") { 2097 $.ajax({
2098 type: 'POST', 2099 url: fbits.ecommerce.urlEcommerce + 'Produto/ModalConfirmacaoProduto', 2100 data: { produtoId: 0 }, 2101 success: function (data) { 2102 if ($().fancybox) { 2103 if (novoCheckout) { 2104 $.ajax({ 2105 type: "GET", 2106 url: fbits.ecommerce.urlCarrinho + "/api/carrinho?cache=false", 2107 xhrFields: { withCredentials: true }, 2108 success: function (dataCheckout) { 2109 var total = 0 2110 var tipoItem = "item" 2111 for (var i = 0, _len = dataCheckout.Produtos.length; i < _len; i++) { 2112 total += dataCheckout.Produtos[i].Quantidade 2113 } 2114 2115 tipoItem = total > 1 ? "itens" : "item"; 2116 2117 var modal = data.dados.replace('<span class="qtdaModalItensCesta">0</span>', '<span class="qtdaModalItensCesta">' + total + '</span>'); 2118 modal = modal.replace('<span class="itensModalItensCesta">item</span>', '<span class="itensModalItensCesta">' + tipoItem + '</span>'); 2119 2120 $.fancybox(modal) 2121 }, 2122 crossDomain: true 2123 }); 2124 } else { 2125 $.fancybox(data.dados); 2126 } 2127 } 2128 } 2129 }); 2130 } 2131} 2132/* 2133Trata do resultado da compra do componente compre junto 2134*/ 2135function tratarResultadoComprarCompreJunto(data) { 2136 2137 if (identificador !== null && identificador !== undefined) { 2138 var identificador = data.IdentificadorDOM.split("-")[0]; 2139 var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', '[id ^=produto-item-][id $=' + identificador + ']').first(); 2140 } 2141 2142 if (domGrupoSelecaoAtributos != undefined && domGrupoSelecaoAtributos.length > 0) { //Vefica a existencia do grupo de seleção de atributos 2143 2144 if (data.StatusRequisicao == 0) //Produto comprado com sucesso 2145 { 2146 $(domGrupoSelecaoAtributos).addClass("itemEnabled"); 2147 atualizarResumoCarrinho(); 2148 } 2149 else //Trata erros 2150 { 2151 //Seta as mensagens de erro. 2152 $('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).html('').fadeOut('slow'); 2153 $('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(''); //Limpa mensagens de erro 2154 var index = data.indexOpcoes == undefined || data.indexOpcoes < 0 ? 0 : data.indexOpcoes; //Checa o index do produto a receber a mensagem 2155 $('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(data.Mensagem); //Seta mensagem 2156 $(domGrupoSelecaoAtributos).addClass("itemDisabled"); 2157 $('[id="produto-legenda"]').removeClass('displayNone').addClass('displayBlock'); 2158 2159 if (data.erroIndex >= 0) { 2160 domGrupoSelecaoAtributos.find('#divOpcoes-' + data.erroIndex).find('[id^="' + labelErroPartialId + '"]').stop().html(data.msgErro).fadeTo('slow', 1.0).delay(7000).fadeOut('slow'); 2161 } 2162 else { 2163 if (data.Mensagem != "") { 2164 if ($(domGrupoSelecaoAtributos).parents('div[id^="divCompreJunto"]').length > 0) { 2165 var indexSlide = domGrupoSelecaoAtributos.parents(".slick-slide").attr("data-slick-index"); 2166 $('.divCompreJuntoCarrossel').slick('slickGoTo', indexSlide, true); 2167 $('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).stop().html(data.msgErro); 2168 } else { 2169 $('[id^="' + labelErroPartialId + '"]', domGrupoSelecaoAtributos).stop().html(data.msgErro).fadeTo("slow", 1).delay(7000).fadeOut("slow") 2170 } 2171 } 2172 else { 2173 $('[id^="divOpcoes-"]').each(function () { 2174 $(this).find('[id^="' + labelErroPartialId + '"]').stop().html(data.msgErro).fadeTo('slow', 1.0).delay(7000).fadeOut('slow'); 2175 }); 2176 } 2177 } 2178 } 2179 } 2180} 2181 2182/**
2183* Abre uma modal pop up com os dados do produto a ser comprado. 2184* @method validarItens 2185*/ 2186 2187function trataModalProduto(event) { 2188 //var element = document.getElementById(event.context.id); 2189 var element = document.querySelector('[data-produtoId="' + event.context.dataset.produtoid + '"]'); 2190 if (element.getAttribute("data-abrirmodal") == 'True') { 2191 if (/Mobi/.test(navigator.userAgent)) { 2192 window.location.href = '/produto/' + event.attr('data-produtoId'); 2193 } else { 2194 abrirProdutoModal(event); 2195 } 2196 } else { 2197 if (novoCheckout) 2198 comprarProdutoSpotNovoCarrinho(event); 2199 else 2200 comprarProdutoSpot(event); 2201 } 2202} 2203function abrirProdutoModal(domProdutoItem) { 2204 var produtoId = domProdutoItem.attr('data-produtoId'); 2205 var imageElement = domProdutoItem.parents('[id^=produto-spot-item-]').find('[id^=produto-spot-imagem]'); 2206 if ($().fancybox) { 2207 2208 $.fancybox.showActivity(); 2209 } 2210 $.get('/ProdutoModal/' + produtoId, 2211 function (data) { 2212 if ($().fancybox) { 2213 //Monta a modal 2214 $.fancybox(data, { 2215 'showCloseButton': true, 2216 'onComplete': function () { 2217 try { 2218 if (typeof loadFacebookShare == 'function') { 2219 loadFacebookShare(); 2220 if (typeof FB !== 'undefined') { 2221 FB.XFBML.parse($('.shareFacebook')[0]); 2222 } 2223 } 2224 if (typeof loadTwitter == 'function') { 2225 loadTwitter(); 2226 if (typeof twttr !== 'undefined') { 2227 twttr.widgets.load(); 2228 } 2229 } 2230 if (typeof loadGooglePlus == 'function') { 2231 loadGooglePlus(); 2232 } 2233 if (typeof loadAddThis == 'function') { 2234 loadAddThis(); 2235 } 2236 } catch (e) { 2237 console.log("houve um problema na funçao 'OnComplete' da função abrirProdutoModal()") 2238 } 2239 2240 }, 2241 'onClosed': function () { 2242 removeModalZoomContainer(); 2243 }, 2244 'onCleanup': function () { 2245 removeModalZoomContainer(); 2246 } 2247 }); 2248 //Setamos eventos da modal 2249 adicionaEventosImagensModal(); 2250 2251 if (changeEventsSelQuantidade) { 2252 changeEventsSelQuantidade(); 2253 } 2254 //Seta eventos comprar do produto 2255 $('[id^=produto-botao-comprar-]', '[id^=produto-modal-]').unbind('click'); 2256 $('[id^=produto-botao-comprar-]', '[id^=produto-modal-]').bind('click', function (event) { 2257 event.preventDefault(); 2258 comprarProdutoModal($(this).parents('[id^="produto-item-"]'), imageElement); 2259 }); 2260 } 2261 } 2262 ); 2263 2264} 2265 2266// método para evitar que a div de zoom seja indevidamente removida 2267function removeModalZoomContainer() { 2268 var containers = $(".zoomContainer"); 2269 if (typeof containers !== 'undefined') { 2270 var containersCount = containers.length; 2271 if (containersCount > 1) { 2272 var $zoomContainer = $(".zoomContainer")[1]; 2273 if (typeof $zoomContainer !== 'undefined') { 2274 $(".zoomContainer")[1].remove(); 2275 } 2276 } 2277 } 2278} 2279 2280/** 2281* Incluir determinado produto no carrinho. 2282* @method validarItens 2283*/ 2284function comprarProdutoModal(domProdutoItem, imageElement) { 2285 habilitarCompra(false);
2286 //Busca o elemento qual possui os dados para compra do produto. 2287 var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', domProdutoItem); //Busca elemento principal 2288 if (checkOpcoesSelecionadas(domGrupoSelecaoAtributos)) { 2289 var objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela 2290 2291 if (objetoParametroComprarProduto != undefined && objetoParametroComprarProduto.attrNaoSelecionado == false) 2292 comprarProdutoModalRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, imageElement); //Realiza a requisição para comprar o produto 2293 } 2294 habilitarCompra(true); 2295} 2296 2297/** 2298* Função responsável por enviar a requisição de compra do produto para o server. 2299*/ 2300function comprarProdutoModalRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, imageElement) { 2301 var parametroCompraProduto = JSON.stringify(objetoParametroComprarProduto); //Transforma o objeto no tipo JSON. 2302 var urlCompraProduto = fbits.ecommerce.urlEcommerce + 'Produto/ComprarProduto';//Url para compra de produtos. 2303 2304 if (Fbits.Evento.TemEventoAtivo && Fbits.Evento.Perfil == "Dono") { 2305 // caso aja evento ativo deverá ser encaminhado para "/Produto/Comprar" 2306 urlCompraProduto = fbits.ecommerce.urlEcommerce + 'Produto/ComprarProduto'; 2307 } 2308 else if (novoCheckout) { 2309 urlCompraProduto = fbits.ecommerce.urlCarrinho + 'Produto/ComprarProduto'; 2310 } 2311 //Realiza a requisição ajax 2312 var _compraProduto = function () { 2313 $.ajax({
2314 type: 'POST', 2315 url: urlCompraProduto, 2316 data: parametroCompraProduto, 2317 contentType: 'application/json; charset=utf-8', 2318 dataType: 'json', 2319 xhrFields: { withCredentials: novoCheckout }, 2320 context: { domGrupoSelecaoAtributos: domGrupoSelecaoAtributos, imageElement: imageElement }, 2321 success: function (data) { 2322 tratarResultadoCompraProdutoModal(data.resultadoCompra, this.domGrupoSelecaoAtributos, this.imageElement); //Trata sucesso e erros da requisição 2323 } 2324 }); 2325 }; 2326 2327 if (novoCheckout) { 2328 $.ajax({ 2329 url: fbits.ecommerce.urlCarrinho + 'api/carrinho/', 2330 xhrFields: { 2331 withCredentials: true 2332 }, 2333 crossDomain: true, 2334 success: function (carrinho) { 2335 // vincular personalizações pelo add produto na modal (trecho similar ao do método "comprarProdutoRequest") 2336 var aux = []; 2337 var produtosComPersonalizacao = objetoParametroComprarProduto.DadosProduto.filter(dp => dp.ListaPersonalizacoes.length > 0); 2338 var temPersonalizacao = produtosComPersonalizacao.length > 0; 2339 2340 // Se existem produtos com itens na ListaPersonalizacoes montamos o objeto para enviar para o custom 2341 if (objetoParametroComprarProduto.DadosProduto.map(function (dp) { return dp.ListaPersonalizacoes }).length > 0) { 2342 var produtosPersonalizados = []; 2343 for (var i = 0; i < objetoParametroComprarProduto.DadosProduto.length; i++) { 2344 var produtoPersonalizado = { 2345 produtoId: objetoParametroComprarProduto.ProdutoId, 2346 produtoVarianteId: objetoParametroComprarProduto.DadosProduto[i].ProdutoVarianteId, 2347 personalizacoes: objetoParametroComprarProduto.DadosProduto[i].ListaPersonalizacoes.map(function (p, key) { return aux[key] = { personalizacaoId: p.GrupoPersonalizacaoDetalheId, valor: p.Personalizacao } }) 2348 }; 2349 2350 // Adicionamos na lista de acordo com a quantidade de produtos 2351 for (var ii = 0; ii < objetoParametroComprarProduto.DadosProduto[i].Quantidade; ii++) { 2352 produtosPersonalizados.push(produtoPersonalizado); 2353 } 2354 } 2355 2356 var obj = { 2357 carrinhoId: carrinho.Id, 2358 prodComPersonalizacoes: produtosPersonalizados 2359 } 2360 } 2361 2362 //se tem personalização faz request 2363 if (temPersonalizacao) { 2364 if (!personalizacaoPendente) { 2365 personalizacaoPendente = true; 2366 $.ajax({
2367 type: 'POST', 2368 url: fbits.ecommerce.urlCustom + '/list', 2369 contentType: 'application/json', 2370 data: JSON.stringify(obj), 2371 // success: _compraProduto, // neste caso não chama o _compraProduto pois ele vai ser chamado no if ou else do trecho que valida o parceiro 2372 error: function (ex) { 2373 personalizacaoPendente = false; 2374 $('div.produto-personalizacao').first().append('<div class="erro-personalizacao" data-error="true">Ops! Houve um problema ao personalizar!</div>'); 2375 setTimeout(function () { 2376 $('div.produto-personalizacao div[data-error]').remove(); 2377 }, 4000); 2378 } 2379 }); 2380 } 2381 } 2382 2383 var guidParceiro = Fbits.Framework.Cookie.getCookie("Parceiro"); 2384 if (guidParceiro != undefined && guidParceiro != null && guidParceiro != "") { 2385 var dataParceiro = { 2386 carrinhoId: carrinho.Id, 2387 Parceiro: guidParceiro 2388 }; 2389 2390 var nomeCliente = fbits.ecommerce.nomeModificado; 2391 nomeCliente = (nomeCliente.split(' ').join('')).toLowerCase(); 2392 2393 $.ajax({
2394 type: 'POST', 2395 async: false, 2396 url: "https://parceiros-pub.fbits.net/parceiros/" + nomeCliente + "/encrypt/carrinho", 2397 contentType: 'application/json', 2398 data: JSON.stringify(dataParceiro), 2399 async: false, 2400 success: _compraProduto 2401 }); 2402 } 2403 else { 2404 _compraProduto(); 2405 } 2406 } 2407 }); 2408 } else { 2409 _compraProduto(); 2410 } 2411} 2412 2413/** 2414* Função responsável por tratar o resultado da compra de produto da modal. 2415* @param data Dados da resposta da requisição. 2416* @param domGrupoSelecaoAtributos elemento DOM o qual comtem os dados do determinado produto. 2417*/ 2418function tratarResultadoCompraProdutoModal(data, domGrupoSelecaoAtributos, imageElement) { 2419 if (domGrupoSelecaoAtributos != undefined) { //Vefica a existencia do grupo de seleção de atributos 2420 var produtoItem = $(domGrupoSelecaoAtributos).parents('[id^=produto-item-]'); //Busca os dados do item 2421 2422 if (data.StatusRequisicao == 0 && produtoItem != undefined) //Produto comprado com sucesso 2423 { 2424 if (Fbits.Evento.TemEventoAtivo && Fbits.Evento.Perfil == "Dono") { 2425 if ($().fancybox) { 2426 $.fancybox('<div class="retornoVinculoEvento">' + 2427 '<div class="evento-modal" >' + 2428 '<div class="evento-modal_header">' + 2429 '<div class="tray-r">' + 2430 '<div class="tray-c-3">' + 2431 '<img src="' + Fbits.Produto.FotoPrincipal + '" width="100" height="auto">' + 2432 '</div>' + 2433 ' <div class="tray-c-9">' + 2434 '<h3 class="evento-modal_title">' + Fbits.Produto.Nome + '</h3>' + 2435 '</div>' + 2436 '</div>' + 2437 '</div>' + 2438 '<div class="tray-r">' + 2439 '<div class="mg-t-50 pd-t-30 mg-b-50">' + 2440 '<p>' + 2441 'Produto foi adicionado ao seu evento com sucesso! <br/> ' + 2442 'Continue adicionando produtos ao seu evento.' + 2443 '</p>' + 2444 '</div>' + 2445 '</div>' + 2446 '</div>' + 2447 '</div>' 2448 ); 2449 } 2450 } else { 2451 if ($().fancybox) { 2452 $.fancybox.close(); 2453 } 2454 atualizarResumoCarrinho(); 2455 efeitoSpotComprar(imageElement, $('.carrinho:first')); 2456 } 2457 } 2458 else //Trata erros 2459 { 2460 //Seta as mensagens de erro. 2461 $('[id^="divOpcoes-"]').each(function () { 2462 hideErrors(); 2463 }); 2464 2465 $('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(''); //Limpa mensagens de erro 2466 var index = data.indexOpcoes == undefined || data.indexOpcoes < 0 ? 0 : data.indexOpcoes; //Checa o index do produto a receber a mensagem 2467 $('div[id="divOpcoes-' + index + '"] [id^="mensagem-erro-"]', domGrupoSelecaoAtributos).html(data.Mensagem); //Seta mensagem 2468 $(produtoItem).addClass("itemDisabled"); 2469 $('[id="produto-legenda"]').removeClass('displayNone').addClass('displayBlock'); 2470 2471 if (data.erroIndex >= 0) { 2472 showError(domGrupoSelecaoAtributos.find('#divOpcoes-' + data.erroIndex).find('[id^="' + labelErroPartialId + '"]'), data.msgErro) 2473 } 2474 else { 2475 $('[id^="divOpcoes-"]').each(function () { 2476 showError($(this).find('[id^="' + labelErroPartialId + '"]'), data.msgErro); 2477 }); 2478 } 2479 } 2480 } 2481} 2482 2483/** 2484* Incluir determinado produto no carrinho. 2485* @method validarItens 2486*/ 2487function comprarProdutoSpot(spotComprarElement) { 2488 $(spotComprarElement).attr('disabled', 'disabled'); 2489 var produtoId = spotComprarElement.attr('data-produtoId'); 2490 var produtoVarianteId = spotComprarElement.attr('data-produtoVarianteId'); 2491 var urlCompraProdutoVariante = (novoCheckout ? fbits.ecommerce.urlCarrinho : fbits.ecommerce.urlEcommerce) + '/Produto/ComprarProdutoVariante'; //Url para compra de produtos. 2492 var imageElement = spotComprarElement.parents('[id^=produto-spot-item-]').find('img'); 2493 var quantidade = spotComprarElement.parents('[id^=produto-spot-item-]').find('[id^=produto-spot-quantidade]').val(); 2494 2495 if (quantidade === undefined) { 2496 quantidade = 1; 2497 } 2498 2499 //Realiza a requisição ajax 2500 $.ajax({
2501 type: 'POST', 2502 url: urlCompraProdutoVariante, 2503 data: { produtoId: produtoId, produtoVarianteId: produtoVarianteId, quantidade: quantidade }, 2504 context: { spotComprarElement: spotComprarElement }, 2505 success: function (data) { 2506 if (data.resultadoCompra.StatusRequisicao == 0) { 2507 efeitoSpotComprar(imageElement, $('.carrinho:first')); 2508 } else { 2509 showError($(spotComprarElement).parents('[id^="produto-spot-item-"]').find('[id="mensagem-erro-spot"]'), data.resultadoCompra.Mensagem); 2510 } 2511 }, 2512 complete: function () { 2513 $(spotComprarElement).removeAttr('disabled'); 2514 if (atualizarResumoCarrinho) { atualizarResumoCarrinho(); } 2515 } 2516 }); 2517} 2518 2519/** 2520* Compra produto spot novo carrinho. 2521*/ 2522function comprarProdutoSpotNovoCarrinho(spotComprarElement) { 2523 var produtoId = spotComprarElement.attr("data-produtoId"); 2524 var produtoVarianteId = spotComprarElement.attr("data-produtoVarianteId"); 2525 var imageElement = spotComprarElement.parents('[id^=produto-spot-item-]').find('img'); 2526 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}'; 2527 var quantidade = spotComprarElement.parents("[id^=produto-spot-item-]").find("[id^=produto-spot-quantidade]").val(); 2528 if (quantidade === undefined) { 2529 quantidade = 1 2530 } 2531 parametroCompraProduto = parametroCompraProduto.replace('{0}', produtoId); 2532 parametroCompraProduto = parametroCompraProduto.replace('{1}', produtoVarianteId); 2533 parametroCompraProduto = parametroCompraProduto.replace('{2}', quantidade); 2534 2535 var _compraProduto = function () { 2536 $.ajax({
2537 type: "POST", 2538 url: fbits.ecommerce.urlCarrinho + "Produto/ComprarProduto", 2539 data: parametroCompraProduto, 2540 async: false, 2541 contentType: "application/json; charset=utf-8", 2542 dataType: "json", 2543 xhrFields: { 2544 withCredentials: novoCheckout 2545 }, 2546 success: function (data) { 2547 if (data.resultadoCompra.StatusRequisicao == 0) { 2548 efeitoSpotComprar(imageElement, $('.carrinho:first')); 2549 } else { 2550 showError($(spotComprarElement).parents('[id^="produto-spot-item-"]').find('[id="mensagem-erro-spot"]'), data.resultadoCompra.Mensagem); 2551 } 2552 //window.location.href = fbits.ecommerce.urlCarrinho; 2553 }, 2554 complete: function () { 2555 $(spotComprarElement).removeAttr('disabled'); 2556 if (atualizarResumoCarrinho) { atualizarResumoCarrinho(); } 2557 }, 2558 fail: function (data) { 2559 showError($(spotComprarElement).parents('[id^="produto-spot-item-"]').find('[id="mensagem-erro-spot"]'), 'Não foi possivel inserir o produto no carrinho.'); 2560 } 2561 }); 2562 } 2563 2564 if (novoCheckout) { 2565 $.ajax({
2566 url: fbits.ecommerce.urlCarrinho + 'api/carrinho/', 2567 xhrFields: { 2568 withCredentials: true 2569 }, 2570 crossDomain: true, 2571 success: function (carrinho) { 2572 2573 var guidParceiro = Fbits.Framework.Cookie.getCookie("Parceiro"); 2574 if (guidParceiro != undefined && guidParceiro != null && guidParceiro != "") { 2575 var dataParceiro = { 2576 carrinhoId: carrinho.Id, 2577 Parceiro: guidParceiro 2578 }; 2579 2580 var nomeCliente = fbits.ecommerce.nomeModificado; 2581 nomeCliente = (nomeCliente.split(' ').join('')).toLowerCase(); 2582 2583 $.ajax({ 2584 type: 'POST', 2585 async: false, 2586 url: "https://parceiros-pub.fbits.net/parceiros/" + nomeCliente + "/encrypt/carrinho", 2587 contentType: 'application/json', 2588 data: JSON.stringify(dataParceiro), 2589 async: false, 2590 success: _compraProduto 2591 }); 2592 } 2593 else { 2594 _compraProduto(); 2595 } 2596 } 2597 }); 2598 } else { 2599 _compraProduto(); 2600 } 2601} 2602 2603 2604/** 2605* Cria o efeito de que o produto spot esta indo para o carrinho. 2606*/ 2607function efeitoSpotComprar(elementoOrigem, elementoDestino) { 2608 // Clona a foto e posiciona acima da foto original do spot 2609 var clone = $(elementoOrigem).clone(); 2610 $('html').append(clone); 2611 clone.css({ 2612 'position': 'absolute', 'width': elementoOrigem.width(), 2613 'height': elementoOrigem.height(), 'left': elementoOrigem.offset().left, 2614 'top': elementoOrigem.offset().top, 'z-index': 999999 2615 }); 2616 2617 // Envia elemento ao seu destino 2618 $(clone).animate({ 2619 width: '1px', 2620 height: '1px', 2621 opacity: 0.3, 2622 top: elementoDestino.offset().top, 2623 left: elementoDestino.offset().left 2624 }, 1000, function () { 2625 clone.remove(); 2626 }); 2627} 2628 2629/** 2630* Adiciona os eventos das imagens do produto. 2631*/ 2632function adicionaEventosImagens() { 2633 //Seleção de imagens 2634 $('#imagem-pagina-produto .zoom-thumbnail').on('click', function (event) { 2635 $("#videoPrincipal").hide(); 2636 $("#videoPrincipal iframe").remove(); 2637 $("#zoomImagemProduto").show(); 2638 $(".zoomWrapper").show(); 2639 $(".zoomContainer").show(); 2640 }); 2641 2642 //------------------------- Tratamento do zoom -----------------------------------// 2643 2644 if (typeof tipoZoom != 'undefined') { // bug #16862 2645 2646 if (tipoZoom == 1) { 2647 2648 $("#zoomImagemProduto").elevateZoom({ 2649 gallery: 'galeria', 2650 galleryActiveClass: "active", 2651 zoomType: "inner", 2652 cursor: "crosshair", 2653 zoomWindowWidth: 422, 2654 zoomWindowHeight: 422 2655 }); 2656 2657 } else if (tipoZoom == 3) { 2658 2659 $('#zoomImagemProduto').elevateZoom({ 2660 gallery: 'galeria', 2661 galleryActiveClass: "active", 2662 zoomType: "lens", 2663 lensShape: "round", 2664 containLensZoom: true, 2665 lensSize: 200 2666 }); 2667 2668 $("body").append("<style> .zoomContainer .zoomWindowContainer div { border: none !important; } </style>"); 2669 2670 } else { //Padrão é 2 2671 2672 $("#zoomImagemProduto").elevateZoom({ 2673 gallery: 'galeria', 2674 galleryActiveClass: "active", 2675 cursor: 'crosshair', 2676 imageCrossfade: true, 2677 zoomWindowWidth: 422, 2678 zoomWindowHeight: 422 2679 }); 2680 2681 } 2682 } 2683 2684 //pass the images to Fancybox 2685 $("#zoomImagemProduto").bind("click", function (e) { 2686 var ez = $('#zoomImagemProduto').data('elevateZoom'); 2687 var lst = ez.getGalleryList(); 2688 var nlst = []; 2689 for (var i in lst) { 2690 if (lst[i].href && lst[i].href != "") { 2691 nlst.push(lst[i]); 2692 } 2693 } 2694 $.fancybox(nlst); 2695 return false; 2696 });
2697 2698 //------------------------- Tratamento do zoom -----------------------------------// 2699 2700} 2701 2702 2703/** 2704* Adiciona os eventos das imagens do produto. (para a modal de quick view) 2705*/ 2706function adicionaEventosImagensModal() { 2707 2708 //Seleção de imagens 2709 $('[id^="produto-modal"] .zoom-thumbnail').on('click', function (event) { 2710 $('[id^="produto-modal"] #videoPrincipal').hide(); 2711 $('[id^="produto-modal"] #videoPrincipal iframe').remove(); 2712 $('[id^="produto-modal"] #zoomImagemProduto').show(); 2713 $('[id^="produto-modal"] .zoomWrapper').show(); 2714 $('[id^="produto-modal"] .zoomContainer').show(); 2715 }); 2716 2717 //------------------------- Tratamento do zoom -----------------------------------// 2718 2719 if (typeof tipoZoom != 'undefined') { // bug #16862 2720 if (tipoZoom == 1) { 2721 2722 $('[id^="produto-modal"] #zoomImagemProduto').elevateZoom({ 2723 gallery: 'galeria', 2724 galleryActiveClass: "active", 2725 zoomType: "inner", 2726 cursor: "crosshair", 2727 zoomWindowWidth: 422, 2728 zoomWindowHeight: 422 2729 }); 2730 2731 } else if (tipoZoom == 3) { 2732 2733 $('[id^="produto-modal"] #zoomImagemProduto').elevateZoom({ 2734 gallery: 'galeria', 2735 galleryActiveClass: "active", 2736 zoomType: "lens", 2737 lensShape: "round", 2738 containLensZoom: true, 2739 lensSize: 200 2740 }); 2741 2742 $("body").append("<style> .zoomContainer .zoomWindowContainer div { border: none !important; } </style>"); 2743 2744 } else { //Padrão é 2 2745 2746 $('[id^="produto-modal"] #zoomImagemProduto').elevateZoom({ 2747 gallery: 'galeria', 2748 galleryActiveClass: "active", 2749 cursor: 'crosshair', 2750 imageCrossfade: true, 2751 zoomWindowWidth: 422, 2752 zoomWindowHeight: 422 2753 }); 2754 2755 } 2756 } 2757 2758 //pass the images to Fancybox 2759 $('[id^="produto-modal"] #zoomImagemProduto').bind("click", function (e) { 2760 var ez = $('[id^="produto-modal"] #zoomImagemProduto').data('elevateZoom'); 2761 $.fancybox(ez.getGalleryList()); 2762 return false; 2763 }); 2764 2765 //------------------------- Tratamento do zoom -----------------------------------// 2766} 2767 2768 2769/** 2770* Função responsável pela compra do produto com um determinado serviço. 2771*/ 2772function comprarComServico(domServicoItem, redirecionar, clickElement) { 2773 habilitarCompra(false); //Desabilida botões de compra 2774 2775 //Variaveis iniciais 2776 var errorElement = $(domServicoItem).find('[id^="servico-mensagem-erro-"]'); 2777 var objetoParametroComprarServico = buscarServicosTela(clickElement); 2778 2779 //Validações 2780 if (objetoParametroComprarServico.ListaServicos.lenght <= 0) { 2781 showError(errorElement, 'Por favor selecione um serviço!'); return; 2782 } 2783 2784 if (!objetoParametroComprarServico.ListaServicos[0].RegulamentoAceito) { 2785 showError(errorElement, 'Você precisa aceitar o regulamento.'); return; 2786 } 2787 2788 if (!objetoParametroComprarServico.ListaServicos[0].ServicoId) { 2789 showError(errorElement, 'Não foi possivel adicionar este serviço. Favor contactar o SAC.'); return; 2790 } 2791 2792 if (!objetoParametroComprarServico.ListaServicos[0].ProdutoVarianteServicoId || objetoParametroComprarServico.ListaServicos[0].ProdutoVarianteServicoId == 0) { 2793 showError(errorElement, 'Por favor selecione um serviço!'); return; 2794 } 2795 2796 //Busca o item, caso servico esteja fora do item 2797 var domProdutoItem = $(domServicoItem).parents('[id^="produto-item-"]'); 2798 2799 if (domProdutoItem == undefined) { 2800 domProdutoItem = $('[id^="produto-item-"]').first(); 2801 console.log('Não encontrou o produto-item pai. Então pegou o primeiro.'); 2802 } 2803 2804 redirecionar = redirecionar == undefined ? false : redirecionar; 2805 2806 //Busca o elemento qual possui os dados para compra do produto. 2807 var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', domProdutoItem); //Busca elemento principal 2808 if (checkOpcoesSelecionadas(domGrupoSelecaoAtributos)) { 2809 var objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela 2810 objetoParametroComprarProduto.ListaServicos = objetoParametroComprarServico.ListaServicos; 2811 objetoParametroComprarProduto.VerificarServico = objetoParametroComprarServico.VerificarServico; 2812 2813 if (objetoParametroComprarProduto != undefined) 2814 comprarProdutoRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, redirecionar); //Realiza a requisição para comprar o produto 2815 } 2816 2817 habilitarCompra(true); //Habilita botões de compra 2818} 2819 2820 2821/** 2822* Função responsável pela compra do produto com assinatura. 2823*/ 2824function comprarComAssinatura(domProdutoItem, redirecionar, clickElement) { 2825 habilitarCompra(false); //Desabilida botões de compra 2826 2827 //Variaveis iniciais 2828 var errorElement = $(domProdutoItem).find('[id^="assinatura-mensagem-erro-"]'); 2829 2830 if (domProdutoItem == undefined) { 2831 domProdutoItem = $('[id^="produto-item-"]').first(); 2832 console.log('Não encontrou o produto-item pai. Então pegou o primeiro.'); 2833 } 2834 2835 redirecionar = redirecionar == undefined ? false : redirecionar; 2836
2837 //Busca o elemento qual possui os dados para compra do produto. 2838 var domGrupoSelecaoAtributos = $('div[id^="dvGrupoSelecaoAtributos-"]', domProdutoItem); //Busca elemento principal 2839 if (checkOpcoesSelecionadas(domGrupoSelecaoAtributos)) { 2840 var objetoParametroComprarProduto = buscaParametrosTela(domGrupoSelecaoAtributos); //Busca parametros da tela 2841 objetoParametroComprarProduto.GrupoAssinaturaPeriodoRecorrenciaId = $(domGrupoSelecaoAtributos).parents('[id^=produto-item-]').find('[name=GrupoAssinaturaPeriodoRecorrenciaId]').val(); 2842 2843 if (objetoParametroComprarProduto != undefined) 2844 comprarProdutoAssinaturaRequest(objetoParametroComprarProduto, domGrupoSelecaoAtributos, redirecionar); //Realiza a requisição para comprar o produto 2845 } 2846 2847 habilitarCompra(true); //Habilita botões de compra 2848} 2849 2850/** 2851* Atualiza os campos de seleção de serviço, podem ser select, radios ou divs. 2852*/ 2853function atualizarServico(elementOpcoes) { 2854 //INICIALIZAÃÃO DAS VARIAVEIS 2855 var domOpcoes = $(elementOpcoes); 2856 2857 // domopcoes é o objeto select. 2858 if (domOpcoes.is('select')) 2859 domOpcoes = domOpcoes.children("option:selected") // atribui o "option" selecionado para o domOpcoes. 2860 2861 domOpcoes.parents('[id^=produto-servico-item-]').find('[data-servicoselecionado]').attr('data-servicoselecionado', 'False'); //Marca todos como não selecionados. 2862 domOpcoes.parents('[id^=tb-servico-item-]').find("[data-servicoselecionado]").attr('data-servicoselecionado', 'True'); //Marca o item como selecionado 2863} 2864 2865/** 2866* Busca os dados dos servicos 2867*/ 2868function buscarServicosTela(clickElement) { 2869 var verificarServico = $(clickElement).attr('data-comprarComServico') == 'True'; 2870 2871 var listaServicos = []; 2872 2873 //Busca todos os serviços disponiveis selecionados. 2874 var item = $(clickElement).parents('[id^="produto-item-"]').find("[id^='radio-servico-']:checked").parents('[id^="tb-servico-item-"]'); 2875 var servicoId = $(item).find('[data-codigoServico]').first().attr('data-codigoServico'); 2876 var tempoServico = $(item).find('[data-tempoServico]').first().attr('data-tempoServico'); 2877 var produtoVarianteServicoId = $(item).find('[data-servicoSelecionado="True"]').first().attr('data-codigoprodutovarianteservico'); 2878 var regulamentoAceito = $("input[id^=produto-servico-termocondicoes-]:checked", item)[0]; 2879 2880 if (servicoId > 0) { 2881 //Adiciona item a lista 2882 listaServicos.push({ ServicoId: servicoId, ProdutoVarianteServicoId: produtoVarianteServicoId, Tempo: tempoServico, RegulamentoAceito: regulamentoAceito != undefined }); 2883 } 2884 2885 return { VerificarServico: verificarServico, ListaServicos: listaServicos }; 2886} 2887 2888// Seta a visualização selecionada pelo usuario 2889function selecionaTipoVisualizacao(dados) { 2890 $("#tipoVisualizacao li").each(function () { 2891 $(".mainBar").removeClass($(this).attr("data-visualizacao")); 2892 }); 2893 var tipo = $(dados.currentTarget).attr("data-visualizacao"); 2894 if (tipo != "") { 2895 $(".mainBar").addClass(tipo); 2896 } 2897 Fbits.Framework.Cookie.setCookie("tipoVisualizacao", tipo, 30); 2898} 2899 2900/** 2901* Busca os dados das personalizacoes 2902*/ 2903function buscarPersonalizacoes(domGrupoSelecaoAtributos) { 2904 var listaPersonalizacoes = []; 2905 var personalizacaoNaoSelecionada = false; 2906 2907 $('input[id^="txt-personalizacao-"], select[id^="ddl-personalizacao-"]', domGrupoSelecaoAtributos).each(function () { 2908 var id = $(this).attr('data-personalizacao-id'); 2909 var nome = $(this).attr('data-personalizacao-nome'); 2910 var ordem = $(this).attr('data-personalizacao-ordem'); 2911 var valor = $(this).attr('data-personalizacao-valor'); 2912 var personalizacao = $(this).val(); 2913 2914 if ($(this).attr('data-personalizacao-obrigatorio') == "True" && personalizacao == "") { 2915 personalizacaoNaoSelecionada = true; 2916 } 2917 2918 if (personalizacao != "") { 2919 //Adiciona item a lista 2920 listaPersonalizacoes.push({ Nome: nome, Ordem: ordem, GrupoPer
2920sonalizacaoDetalheId: id, Valor: valor, Personalizacao: personalizacao }); 2921 } 2922 }); 2923 2924 if (personalizacaoNaoSelecionada) { 2925 listaPersonalizacoes = null; 2926 } 2927 2928 return listaPersonalizacoes; 2929} 2930 2931 2932function UpdateQueryString(key, value, url) { 2933 if (!url) url = window.location.href; 2934 var re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi"), 2935 hash; 2936 2937 if (re.test(url)) { 2938 if (typeof value !== 'undefined' && value !== null) 2939 return url.replace(re, '$1' + key + "=" + value + '$2$3'); 2940 else { 2941 hash = url.split('#'); 2942 url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, ''); 2943 if (typeof hash[1] !== 'undefined' && hash[1] !== null) 2944 url += '#' + hash[1]; 2945 return url; 2946 } 2947 } 2948 else { 2949 if (typeof value !== 'undefined' && value !== null) { 2950 var separator = url.indexOf('?') !== -1 ? '&' : '?'; 2951 hash = url.split('#'); 2952 url = hash[0] + separator + key + '=' + value; 2953 if (typeof hash[1] !== 'undefined' && hash[1] !== null) 2954 url += '#' + hash[1]; 2955 return url; 2956 } 2957 else 2958 return url; 2959 } 2960} 2961 2962function getParameterByName(name, url) { 2963 if (!url) url = window.location.href; 2964 name = name.replace(/[\[\]]/g, "\\$&"); 2965 var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 2966 results = regex.exec(url); 2967 if (!results) return null; 2968 if (!results[2]) return ''; 2969 return decodeURIComponent(results[2].replace(/\+/g, " ")); 2970} 2971 2972function ajustaTamanhoDivCores() { 2973 for (var i = 0; i < $('[class*="valorAtributo valorAtributoCor"]').length; i++) { 2974 var url = $('[class*="valorAtributo valorAtributoCor"]')[i].style.background.split("=") 2975 var newUrl = url[0] + "=" + url[1] + "=" + $('[class*="valorAtributo valorAtributoCor"]')[i].scrollWidth + url[2].substring(url[2].indexOf("&")) + "=" + $('[class*="valorAtributoCor"]')[i].scrollHeight + "\")"; 2976 $('[class*="valorAtributo valorAtributoCor"]')[i].style.background = newUrl; 2977 } 2978} 2979 2980; 2981var Fbits = Fbits || {}; 2982Fbits.Assinatura = Fbits.Assinatura || {}; 2983Fbits.Assinatura.Dados = Fbits.Assinatura.Dados || {}; 2984 2985$(function () { 2986 if (novoCheckout && $('[id^=produto-assinatura-botao-comprar-]').length > 0) { 2987 $(document).ajaxComplete(function (event, request, settings) { 2988 if (typeof request.responseText !== undefined) { 2989 if (request.responseText.indexOf('header-Assinatura') > 0 || request.responseText.indexOf('produto-assinatura-botao-comprar') > 0) { 2990 initializeAssinatura(); 2991 } 2992 } 2993 }); 2994 initializeAssinatura(); 2995 } 2996}); 2997 2998function initializeAssinatura() { 2999 var recorrenciasContainer = $('.periodo'); 3000 var descontoLabel = $("#header-Assinatura > label > span"); 3001 recorrenciasContainer.hide(); // esconde a recorrencia legado 3002 descontoLabel.hide(); // esconde a desconto legado 3003 $.ajax({
3004 type: "GET", 3005 url: fbits.ecommerce.urlCarrinho + "api/carrinho", 3006 xhrFields: { 3007 withCredentials: true 3008 } 3009 }).success(function (carrinhoData) { 3010 var carrinhoId = carrinhoData.Id; 3011 var produtoId = $("#hdnProdutoId").val(); 3012 var produtoVarianteId = $('div[id^="produto-item-"]').first().find("#hdnProdutoVarianteId").val(); 3013 var endpoint = "https://pub-assinatura.fbits.net/CarrinhoAssinatura/" + carrinhoData.Loja.Nome + "?carrinhoId=" + carrinhoId + "&produtoId=" + produtoId + "&produtoVarianteId=" + produtoVarianteId; 3014 3015 $.ajax({ 3016 type: "GET", 3017 url: endpoint 3018 }).success(function (data) { 3019 Fbits.Assinatura.Dados = data; 3020 Fbits.Assinatura.CarrinhoId = carrinhoId; 3021 var html = ''; 3022 3023 var recorrenciaIdSelecionado = 0; 3024 var result; 3025 3026 for (i = 0; i < data.length; i++) { 3027 if (data[i].produtoVarianteId === parseInt(produtoVarianteId)) { 3028 result = data[i]; 3029 break; 3030 } 3031 } 3032 3033 if (typeof result === 'undefined') 3034 return; 3035 3036 console.log('Assinatura produtoVarianteId ' + produtoVarianteId); 3037 3038 var selecionado; 3039 3040 for (i = 0; i < result.recorrencias.length; i++) { 3041 if (result.recorrencias[i].selecionado === true) { 3042 selecionado = result.recorrencias[i]; 3043 break; 3044 } 3045 } 3046 3047 if (typeof selecionado !== 'undefined') 3048 recorrenciaIdSelecionado = selecionado.recorrenciaId; 3049 3050 html = ''; 3051 3052 html += '<div id="box-assinatura-' + produtoVarianteId + '" style="display: block;"><div class="col-lg-12 fbits-responsive-carrinho-assinatura-border" style="margin-top:10px;margin-bottom:10px;"><div class="col-lg-4" data-assinatura-produtovarianteid="' + produtoVarianteId + '" style="margin-top:10px;"><label>ENTREGA: </label><select id="select-assinatura-id-' + produtoVarianteId + '" class="form-control col-md-1">'; 3053 3054 if (!result.somenteAssinatura) { 3055 html += '<option value="selecione-0" ' + (recorrenciaIdSelecionado === 0 ? 'selected' : '') + '>Selecione</option>'; 3056 } 3057 3058 for (var y = 0; y < result.recorrencias.length; y++) { 3059 html += '<option value="' + result.recorrencias[y].recorrenciaId + "-" + result.recorrencias[y].grupoAssinaturaId + '" ' 3060 + (recorrenciaIdSelecionado === 0 ? result.somenteAssinatura && y === 0 ? 'selected' : '' : recorrenciaIdSelecionado === result.recorrencias[y].recorrenciaId 3061 ? 'selected' : '') + '>' + result.recorrencias[y].nome + '</option>'; 3062 } 3063 3064 html += '</select><div id="MensagemInformativa-' + produtoVarianteId + '"</div></div></div></div>'; 3065 3066 if (recorrenciaIdSelecionado === 0) { 3067 var maxDesconto = Math.max.apply(Math, result.recorrencias.map(function (o) { return o.grupoAssinaturaDesconto; })); 3068 if (maxDesconto > 0) { 3069 descontoLabel.text("Ganhe até " + maxDesconto + "% de desconto"); 3070 } else { 3071 descontoLabel.text(""); 3072 } 3073 } else { 3074 var recorrenciaSelecionadoObj; 3075 for (i = 0; i < result.recorrencias.length; i++) { 3076 if (result.recorrencias[i].recorrenciaId === recorrenciaIdSelecionado) { 3077 recorrenciaSelecionadoObj = result.recorrencias[i]; 3078 break; 3079 } 3080 } 3081 ajustarAssinaturaDesconto(recorrenciaSelecionadoObj !== undefined ? recorrenciaSelecionadoObj.grupoAssinaturaDesconto : 0); 3082 } 3083 recorrenciasContainer.html(html); 3084 recorrenciasContainer.show(); 3085 descontoLabel.show(); 3086 }); 3087 }); 3088 3089} 3090 3091function ajustarAssinaturaDesconto(desconto) { 3092 var descontoLabel = $("#header-Assinatura > label > span"); 3093 if (desconto > 0) { 3094 descontoLabel.text("Ganhe " + desconto + "% de desconto"); 3095 } else { 3096 descontoLabel.text(""); 3097 } 3098} 3099 3100function mostraRecorrencia(produtoVarianteId) { 3101 $('#box-assinatura-' + produtoVarianteId).show();
3102 $('#botao-assinatura-produtoVarianteId-' + produtoVarianteId).hide(); 3103} 3104 3105// Método que deve ser chamado pelo botão ASSINAR na página do produto 3106function vincularAssinaturaRecorrencia() { 3107 if ($('input[id^="hdnProdutoVarianteId-"]') != undefined && $('input[id^="hdnProdutoVarianteId-"]').length > 1) { 3108 if ($('[id^="select-assinatura-id-"]').length < 1) 3109 return; 3110 3111 var carrinhoId = Fbits.Assinatura.CarrinhoId; 3112 var dados = $('[id^="select-assinatura-id-"]').first().val().split("-"); 3113 3114 dados[0] = dados[0] === "selecione" ? 0 : dados[0]; 3115 3116 if (typeof Fbits.Assinatura !== "undefined" && typeof Fbits.Assinatura.Dados !== "undefined" && 3117 Fbits.Assinatura.Dados.length > 0 && typeof Fbits.Assinatura.Dados[0].recorrencias !== "undefined") { 3118 var recorrenciaSelecionadoObj; 3119 for (i = 0; i < Fbits.Assinatura.Dados[0].recorrencias.length; i++) { 3120 if (Fbits.Assinatura.Dados[0].recorrencias[i].recorrenciaId === Number(dados[0])) { 3121 recorrenciaSelecionadoObj = Fbits.Assinatura.Dados[0].recorrencias[i]; 3122 break; 3123 } 3124 } 3125 ajustarAssinaturaDesconto(typeof recorrenciaSelecionadoObj !== "undefined" ? recorrenciaSelecionadoObj.grupoAssinaturaDesconto : 0); 3126 } 3127 3128 for (let x = 0; x < $('input[id^="hdnProdutoVarianteId-"]').length; x++) { 3129 var produtoVarianteId = $('input[id^="hdnProdutoVarianteId-"]')[x].value; 3130 3131 var data = { 3132 CarrinhoId: carrinhoId, 3133 ProdutoVarianteId: Number(produtoVarianteId), 3134 RecorrenciaId: Number(dados[0]), 3135 GrupoAssinaturaId: Number(dados[1]) 3136 }; 3137 3138 $.ajax({
3139 url: "https://pub-assinatura.fbits.net/CarrinhoAssinatura/", 3140 type: "POST", 3141 data: JSON.stringify(data), 3142 contentType: "application/json", 3143 async: false, 3144 success: function () { 3145 var msg = data.RecorrenciaId !== 0 ? "Assinatura adicionada com sucesso" : "Assinatura removida"; 3146 $("#MensagemInformativa-" + produtoVarianteId).html("<span style='color:green;font-size:10px'>" + msg + "</span>"); 3147 }, 3148 error: function (jqXHR, status, err) { 3149 $("#MensagemInformativa-" + produtoVarianteId).html("<span style='color:red;font-size:10px'>Ocorreu um erro na adição da assinatura.</span>"); 3150 } 3151 }); 3152 } 3153 3154 } 3155 else { 3156 var produtoVarianteId = $('div[id^="produto-item-"]').first().find("#hdnProdutoVarianteId").val(); 3157 3158 if ($("#select-assinatura-id-" + produtoVarianteId).length === 0) // se por algum motivo a combo de recorrencia não tenha sido renderizada, pode pular esse vinculo, porque ele pode ser adicionado no checkout 3159 return; 3160 3161 var carrinhoId = Fbits.Assinatura.CarrinhoId; 3162 var dados = $("#select-assinatura-id-" + produtoVarianteId).val().split("-"); 3163 3164 dados[0] = dados[0] === "selecione" ? 0 : dados[0]; 3165 3166 if (typeof Fbits.Assinatura !== "undefined" && typeof Fbits.Assinatura.Dados !== "undefined" && 3167 Fbits.Assinatura.Dados.length > 0 && typeof Fbits.Assinatura.Dados[0].recorrencias !== "undefined") { 3168 var recorrenciaSelecionadoObj; 3169 for (i = 0; i < Fbits.Assinatura.Dados[0].recorrencias.length; i++) { 3170 if (Fbits.Assinatura.Dados[0].recorrencias[i].recorrenciaId === Number(dados[0])) { 3171 recorrenciaSelecionadoObj = Fbits.Assinatura.Dados[0].recorrencias[i]; 3172 break; 3173 } 3174 } 3175 ajustarAssinaturaDesconto(typeof recorrenciaSelecionadoObj !== "undefined" ? recorrenciaSelecionadoObj.grupoAssinaturaDesconto : 0); 3176 } 3177 3178 var data = { 3179 CarrinhoId: carrinhoId, 3180 ProdutoVarianteId: Number(produtoVarianteId), 3181 RecorrenciaId: Number(dados[0]), 3182 GrupoAssinaturaId: Number(dados[1]) 3183 }; 3184 3185 $.ajax({
3186 url: "https://pub-assinatura.fbits.net/CarrinhoAssinatura/", 3187 type: "POST", 3188 data: JSON.stringify(data), 3189 contentType: "application/json", 3190 success: function () { 3191 var msg = data.RecorrenciaId !== 0 ? "Assinatura adicionada com sucesso" : "Assinatura removida"; 3192 $("#MensagemInformativa-" + produtoVarianteId).html("<span style='color:green;font-size:10px'>" + msg + "</span>"); 3193 }, 3194 error: function (jqXHR, status, err) { 3195 $("#MensagemInformativa-" + produtoVarianteId).html("<span style='color:red;font-size:10px'>Ocorreu um erro na adição da assinatura.</span>"); 3196 } 3197 }); 3198 } 3199}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.