{"version":3,"sources":["jquery.elevateZoom-3.0.8.min.js","jquery.validate.min.js","jquery.validate.unobtrusive.min.js","app.module.js","app.config.js","app.min.js","controllers/cartController.js","controllers/catalogController.js","controllers/checkoutController.js","controllers/enderecoController.js","controllers/globalController.js","controllers/productController.js","directives/busyIndicatorDirective.js","directives/clickOutsideDirective.js","directives/commonDirectives.js","directives/isLoadingDirective.js","directives/spinnerDirective.js","filters/aspnetJsonDateFilter.js","filters/uniqueFilter.js","services/cartService.js","services/catalogService.js","services/scopesService.js","services/ticketService.js","controllers/admin/clientesController.js","controllers/admin/contaController.js","controllers/admin/pedidosController.js","controllers/admin/relatorioController.js","controllers/admin/ticketsController.js","site.js"],"names":["Object","create","d","h","prototype","l","m","k","init","b","a","c","this","elem","$elem","imageSrc","data","attr","options","extend","fn","elevateZoom","tint","lensColour","lensOpacity","zoomType","showLens","parent","removeAttr","zoomImage","refresh","gallery","click","galleryActiveClass","removeClass","addClass","preventDefault","zoomImagePre","swaptheimage","setTimeout","fetch","Image","onload","largeWidth","width","largeHeight","height","startZoom","currentImage","onZoomedImageLoaded","src","nzWidth","nzHeight","isWindowActive","isLensActive","isTintActive","overWindow","imageCrossfade","zoomWrap","wrap","css","zoomLock","scrollingLock","changeBgSize","currentZoomLevel","zoomLevel","nzOffset","offset","widthRatio","heightRatio","zoomWindowStyle","String","zoomWindowBgColour","zoomWindowWidth","zoomWindowHeight","borderSize","borderColour","cursor","lensHeight","lensWidth","lensStyle","lensBorderSize","lensBorderColour","tintStyle","tintColour","lensRound","lensSize","lensShape","zoomContainer","left","top","append","containLensZoom","zoomLens","appendTo","trigger","tintContainer","zoomTint","zoomTintcss","after","zoomTintImage","isNaN","zoomWindowPosition","zoomWindow","windowOffsetLeft","windowOffsetTop","zoomWindowContainer","backgroundImage","bind","setPosition","originalEvent","touches","changedTouches","showHideWindow","showHideLens","showHideTint","setElements","lastX","clientX","lastY","clientY","currentLoc","add","mouseenter","mouseleave","scrollLock","minZoomLevel","scrollZoomIncrement","scrollZoom","clearTimeout","e","wheelDelta","detail","stopImmediatePropagation","stopPropagation","changeZoomLevel","maxZoomLevel","parseFloat","zoomEnabled","isWindowSet","responsive","mouseLeft","parseInt","pageX","mouseTop","pageY","Etoppos","Eboppos","Eloppos","Eroppos","lensLeftPos","lensTopPos","tintpos","windowLeftPos","Math","max","windowTopPos","backgroundPosition","background-size","newvalueheight","newvaluewidth","setWindowPostition","setTintPosition","fullwidth","zoomWindowFadeIn","stop","fadeIn","show","zoomWindowFadeOut","fadeOut","hide","lensFadeIn","lensFadeOut","zoomTintFadeIn","opacity","tintOpacity","animate","zoomTintFadeOut","setLensPostition","externalContainer","externalContainerWidth","externalContainerHeight","externalContainerOffset","zoomWindowOffety","zoomWindowOffetx","fullheight","easing","xp","yp","loop","setInterval","easingAmount","clearInterval","tintposy","loadingIcon","spinner","onImageSwap","swapAction","onImageSwapComplete","doneCallback","f","g","clone","remove","constrainType","constrainSize","constwidth","constheight","getCurrentImage","getGalleryList","gallerylist","each","unshift","href","title","find","push","newvalue","toFixed","maxheightnewvalue","maxwidthtnewvalue","scrcontinue","changeZoom","closeAll","self","changeState","zoomActivation","preloading","debug","zoomWindowAlwaysShow","lenszoom","onComplete","noop","jQuery","window","document","t","validate","length","console","warn","i","validator","settings","onsubmit","validateDelegate","submitHandler","submitButton","target","hasClass","cancelSubmit","submit","s","name","val","currentForm","call","form","pendingRequest","formSubmitted","focusInvalid","valid","is","element","removeAttrs","split","rules","r","n","staticRules","normalizeRule","messages","u","o","normalizeRules","classRules","attributeRules","dataRules","required","expr","blank","trim","filled","unchecked","prop","defaults","format","arguments","makeArray","apply","constructor","Array","slice","replace","RegExp","groups","errorClass","validClass","errorElement","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","focusCleanup","blockFocusCleanup","unhighlight","addWrapper","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","which","elementValue","lastElement","onclick","parentNode","highlight","type","findByName","setDefaults","remote","email","url","date","dateISO","number","digits","creditcard","equalTo","maxlength","minlength","rangelength","range","min","autoCreateRanges","labelContainer","errorContext","containers","valueCache","pending","invalid","reset","invalidHandler","checkForm","errorMap","triggerHandler","showErrors","prepareForm","currentElements","elements","check","validationTargetFor","clean","prepareElement","numberOfInvalids","toHide","errorList","message","successList","grep","defaultShowErrors","resetForm","hideErrors","removeData","objectLength","size","findLastActive","filter","focus","not","error","errors","toShow","method","parameters","methods","formatAndAdd","log","id","customDataMessage","toLowerCase","attributes","customMessage","findDefined","defaultMessage","test","wrapper","showLabel","success","validElements","invalidElements","map","html","idOrName","errorPlacement","insertAfter","text","getLength","nodeName","depend","dependTypes","boolean","string","function","startRequest","stopRequest","previousValue","old","classRuleSettings","addClassRules","getAttribute","get","Number","param","depends","isFunction","isArray","addMethod","Date","charAt","unbind","originalMessage","ajax","mode","port","dataType","ajaxPrefilter","abort","ajaxSettings","j","substr","lastIndexOf","indexOf","parseJSON","empty","proxy","unobtrusive","attachValidation","off","on","adapters","parseElement","parents","undefined","params","adapt","__dummy__","parse","addBack","has","addBool","addMinMax","addSingleVal","exec","index","match","extension","other","tagName","toUpperCase","additionalfields","nonalphamin","regex","angular","module","config","$httpProvider","$asideProvider","alertify","container","interceptors","$q","$rootScope","numLoadings","request","isBusy","when","response","responseError","reject","status","info","$inject","constant","$","cartController","$scope","$window","Cart","vm","added","cart","read","$on","$apply","controller","catalogController","$http","reqObj","paginate","pageSize","pageSizeModel","value","orderBy","orderModel","orderDirection","cores","corData","x","isSelected","Id","join","location","pathname","selectedColors","order","_","orderData","pageSizeData","el","precoModel","filterBy","checkoutController","$modal","setPaymentMethod","card","cpf","paymentMethod","setCardInstallment","model","cardInstallment","getPaymentMethods","PagSeguroDirectPayment","amount","total","res","key","paymentMethods","display","getCreditCardBrand","cardBrand","bin","getBrand","cardBin","brand","getCreditCardToken","getCreditCardInstallments","createCardToken","cardNumber","cvv","ccv","expirationMonth","expMonth","expirationYear","expYear","resp","token","err","getInstallments","totalWithFrete","maxInstallmentNoInterest","cardInstallments","installments","finalizar","transactionType","ccToken","numParcelas","quantity","valorParcela","installmentAmount","ccName","ccCpf","ccDdd","ddd","ccPhone","phone","ccDataNasc","dataNasc","headers","Content-Type","then","Success","Data","ex","Message","checkConta","hash","isCompleteContaEnabled","completeContaModal","$promise","completeCadastro","post","isEnderecoSelected","completeCadastroModel","boletoLink","boletoText","completeCadastroModalVm","scope","templateUrl","Valor","enderecoController","isAddEnabled","isSearchEnabled","selectedModelId","address","cep","numero","complemento","estado","cidade","bairro","endereco","estadoData","cidadeData","bairroData","enderecoData","clienteEnderecoData","isEstadoEnabled","isCidadeEnabled","isBairroEnabled","isEnderecoEnabled","readEnderecos","bairroId","isLoading","enderecoChanged","CEP","Cep","updateAddressText","readBairros","cidadeId","bairroChanged","readCidades","estadoId","cidademChanged","readEstados","estadoChanged","searchMode","resetModel","closeAdd","cepChanged","isCepLoading","resetEndereco","EnderecoModel","Nome","EstadoModel","CidadeModel","BairroModel","select","selectedEnderecoId","calcFrete","confirm","isEnderecoLoading","save","enderecoId","EnderecoId","enderecoNum","enderecoComp","isFreteLoading","freteData","setFreteModel","freteModel","isFreteSelected","freteVal","globalController","$timeout","showSearchResult","isSearchResultOpen","hideSearchResult","search","json","searchResultData","searchText","filterTextTimeout","$watch","cancel","productController","$focus","IsGrid","selectionModel","gridData","hasInGrid","colorId","valCaractId","some","Produtos","CorId","ValorCaracteristicaId","readGridData","first","sizeId","setModel","qtd","isQtdFocused","sizeFilter","ValorId","colorFilter","color","addToCart","busyIndicator","link","attrs","cont","directive","transclude","active","template","restrict","clickOutside","$document","$parse","eventHandler","classNames","className","classList","baseVal","_hasTouch","navigator","maxTouchPoints","outsideIfNot","factory","getElementById","ngFocus","newval","prepend","pattern","results","dt","getDate","getMonth","getFullYear","collection","keyname","output","keys","forEach","item","service","count","Items","Thumb","getImageUrl","prodId","$broadcast","removeAll","cb","relativeUrl","encodeURI","Quantidade","Preco","catalog","$resource","mem","store","ticket","beautify","mes","calcPercentage","current","addListItem","list","pedido","findWhere","label","pedidos","toDate","str","parts","y","chart","baseCalculo","valorTotal","percentage","Pedidos","dataPedido","Total","page","detailModel","Status","StatusNumber","concat","loadMore","setDetailModel","printBoleto","win","open","Url","getDanfe","getXml","RelatorioController","criarResumo","calcularComissao","totais","pluck","comissoes","Comissao","ValorFrete","comissao","reportData","revendedores","gerarRelatorio","dataInicial","dataFinal","dataComissao","ticketController","FastClick","notNeeded","layer","metaViewport","chromeVersion","blackberryVersion","firefoxVersion","ontouchstart","userAgent","deviceIsAndroid","querySelector","content","documentElement","scrollWidth","outerWidth","deviceIsBlackBerry10","style","msTouchAction","touchAction","attach","body","handleInputFocus","prev","center","outerHeight","livequery","inArray","keyCode","ctrlKey","shiftKey","modal","basic","frameless","movable","resizable","closable","closableByDimmer","maximizable","startMaximized","pinnable","pinned","padding","overflow","maintainFocus","transition","autoReset","notifier","delay","position","glossary","ok","theme","input","ready","tooltip","mouseup"],"mappings":"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","file":"app.min.js","sourcesContent":["/* 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 */\r\n\"function\"!==typeof Object.create&&(Object.create=function(d){function h(){}h.prototype=d;return new h});\r\n(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&&\r\n(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=\r\nc.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('
'),b.$elem.css(\"position\",\"absolute\"));b.zoomLock=1;b.scrollingLock=!1;b.changeBgSize=!1;b.currentZoomLevel=b.options.zoomLevel;\r\nb.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+\r\n\"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\"==\r\nb.options.zoomType&&(lensHeight=b.nzHeight
');d(\"body\").append(b.zoomContainer);b.options.containLensZoom&&\"lens\"==b.options.zoomType&&b.zoomContainer.css(\"overflow\",\r\n\"hidden\");\"inner\"!=b.options.zoomType&&(b.zoomLens=d(\"
 
\").appendTo(b.zoomContainer).click(function(){b.$elem.trigger(\"click\")}),b.options.tint&&(b.tintContainer=d(\"
\").addClass(\"tintContainer\"),b.zoomTint=d(\"
\"),b.zoomLens.wrap(b.tintContainer),b.zoomTintcss=b.zoomLens.after(b.zoomTint),b.zoomTintImage=d('').appendTo(b.zoomLens).click(function(){b.$elem.trigger(\"click\")})));isNaN(b.options.zoomWindowPosition)?b.zoomWindow=d(\"
 
\").appendTo(\"body\").click(function(){b.$elem.trigger(\"click\")}):b.zoomWindow=d(\"
 
\").appendTo(b.zoomContainer).click(function(){b.$elem.trigger(\"click\")});b.zoomWindowContainer=d(\"
\").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+\r\n\"')\"});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\")});\r\nb.$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\")}));\r\nb.$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),\r\nb.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&&\r\nb.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\",\r\nsetTimeout(function(){b.scrollLock=!1},250));var e=a.originalEvent.wheelDelta||-1*a.originalEvent.detail;a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();0=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);\r\nreturn!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\"),\r\nthis.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.nzHeightthis.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.mouseTopthis.nzHeight-\r\nthis.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),\r\nthis.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)),\r\n\"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+\r\n\"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&&\r\nthis.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=\r\n!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(),\r\nthis.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){},\r\nsetWindowPostition: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=\r\n+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>\r\na.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&&\r\n(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=\r\n0;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=\r\na.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()/\r\n2));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\r\na.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\"})),\r\na.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+\r\n\"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/\r\na.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
'),c.$elem.after(c.spinner));\r\nc.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=\r\n!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\");\r\nf.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||\r\n(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&&\r\n(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&&\r\n(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\"==\r\nc.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\",\r\nc.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();\r\nthis.nzHeight=this.$elem.height();this.currentZoomLevel=this.options.zoomLevel;this.widthRatio=this.largeWidth/this.nzWidth;this.heightRatio=this.largeHeight/this.nzHeight;\"window\"==this.options.zoomType&&(lensHeight=this.nzHeightmaxheightnewvalue&&(newvalue=maxheightnewvalue),newvalue>maxwidthtnewvalue&&(newvalue=maxwidthtnewvalue),maxheightnewvalue<=newvalue?(this.heightRatio=this.largeHeight/\r\nnewvalue/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=\r\nnewvalue,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&&\r\n(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&&\r\n\"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();\r\nself.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,\r\nzoomWindowWidth: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,\r\ngalleryActiveClass:\"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);","/* NUGET: BEGIN LICENSE TEXT\r\n *\r\n * Microsoft grants you the right to use these script files for the sole\r\n * purpose of either: (i) interacting through your browser with the Microsoft\r\n * website or online service, subject to the applicable licensing or use\r\n * terms; or (ii) using the files as included with a Microsoft product subject\r\n * to that product's license terms. Microsoft reserves all other rights to the\r\n * files not expressly granted by Microsoft, whether by implication, estoppel\r\n * or otherwise. Insofar as a script file is dual licensed under GPL,\r\n * Microsoft neither took the code under GPL nor distributes it thereunder but\r\n * under the terms set out in this paragraph. All notices and licenses\r\n * below are for informational purposes only.\r\n *\r\n * NUGET: END LICENSE TEXT */\r\n/*! jQuery Validation Plugin - v1.11.1 - 3/22/2013\\n* https://github.com/jzaefferer/jquery-validation\r\n* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT */(function(t){t.extend(t.fn,{validate:function(e){if(!this.length)return e&&e.debug&&window.console&&console.warn(\"Nothing selected, can't validate, returning nothing.\"),void 0;var i=t.data(this[0],\"validator\");return i?i:(this.attr(\"novalidate\",\"novalidate\"),i=new t.validator(e,this[0]),t.data(this[0],\"validator\",i),i.settings.onsubmit&&(this.validateDelegate(\":submit\",\"click\",function(e){i.settings.submitHandler&&(i.submitButton=e.target),t(e.target).hasClass(\"cancel\")&&(i.cancelSubmit=!0),void 0!==t(e.target).attr(\"formnovalidate\")&&(i.cancelSubmit=!0)}),this.submit(function(e){function s(){var s;return i.settings.submitHandler?(i.submitButton&&(s=t(\"\").attr(\"name\",i.submitButton.name).val(t(i.submitButton).val()).appendTo(i.currentForm)),i.settings.submitHandler.call(i,i.currentForm,e),i.submitButton&&s.remove(),!1):!0}return i.settings.debug&&e.preventDefault(),i.cancelSubmit?(i.cancelSubmit=!1,s()):i.form()?i.pendingRequest?(i.formSubmitted=!0,!1):s():(i.focusInvalid(),!1)})),i)},valid:function(){if(t(this[0]).is(\"form\"))return this.validate().form();var e=!0,i=t(this[0].form).validate();return this.each(function(){e=e&&i.element(this)}),e},removeAttrs:function(e){var i={},s=this;return t.each(e.split(/\\s/),function(t,e){i[e]=s.attr(e),s.removeAttr(e)}),i},rules:function(e,i){var s=this[0];if(e){var r=t.data(s.form,\"validator\").settings,n=r.rules,a=t.validator.staticRules(s);switch(e){case\"add\":t.extend(a,t.validator.normalizeRule(i)),delete a.messages,n[s.name]=a,i.messages&&(r.messages[s.name]=t.extend(r.messages[s.name],i.messages));break;case\"remove\":if(!i)return delete n[s.name],a;var u={};return t.each(i.split(/\\s/),function(t,e){u[e]=a[e],delete a[e]}),u}}var o=t.validator.normalizeRules(t.extend({},t.validator.classRules(s),t.validator.attributeRules(s),t.validator.dataRules(s),t.validator.staticRules(s)),s);if(o.required){var l=o.required;delete o.required,o=t.extend({required:l},o)}return o}}),t.extend(t.expr[\":\"],{blank:function(e){return!t.trim(\"\"+t(e).val())},filled:function(e){return!!t.trim(\"\"+t(e).val())},unchecked:function(e){return!t(e).prop(\"checked\")}}),t.validator=function(e,i){this.settings=t.extend(!0,{},t.validator.defaults,e),this.currentForm=i,this.init()},t.validator.format=function(e,i){return 1===arguments.length?function(){var i=t.makeArray(arguments);return i.unshift(e),t.validator.format.apply(this,i)}:(arguments.length>2&&i.constructor!==Array&&(i=t.makeArray(arguments).slice(1)),i.constructor!==Array&&(i=[i]),t.each(i,function(t,i){e=e.replace(RegExp(\"\\\\{\"+t+\"\\\\}\",\"g\"),function(){return i})}),e)},t.extend(t.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:\"error\",validClass:\"valid\",errorElement:\"label\",focusInvalid:!0,errorContainer:t([]),errorLabelContainer:t([]),onsubmit:!0,ignore:\":hidden\",ignoreTitle:!1,onfocusin:function(t){this.lastActive=t,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,t,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(t)).hide())},onfocusout:function(t){this.checkable(t)||!(t.name in this.submitted)&&this.optional(t)||this.element(t)},onkeyup:function(t,e){(9!==e.which||\"\"!==this.elementValue(t))&&(t.name in this.submitted||t===this.lastElement)&&this.element(t)},onclick:function(t){t.name in this.submitted?this.element(t):t.parentNode.name in this.submitted&&this.element(t.parentNode)},highlight:function(e,i,s){\"radio\"===e.type?this.findByName(e.name).addClass(i).removeClass(s):t(e).addClass(i).removeClass(s)},unhighlight:function(e,i,s){\"radio\"===e.type?this.findByName(e.name).removeClass(i).addClass(s):t(e).removeClass(i).addClass(s)}},setDefaults:function(e){t.extend(t.validator.defaults,e)},messages:{required:\"This field is required.\",remote:\"Please fix this field.\",email:\"Please enter a valid email address.\",url:\"Please enter a valid URL.\",date:\"Please enter a valid date.\",dateISO:\"Please enter a valid date (ISO).\",number:\"Please enter a valid number.\",digits:\"Please enter only digits.\",creditcard:\"Please enter a valid credit card number.\",equalTo:\"Please enter the same value again.\",maxlength:t.validator.format(\"Please enter no more than {0} characters.\"),minlength:t.validator.format(\"Please enter at least {0} characters.\"),rangelength:t.validator.format(\"Please enter a value between {0} and {1} characters long.\"),range:t.validator.format(\"Please enter a value between {0} and {1}.\"),max:t.validator.format(\"Please enter a value less than or equal to {0}.\"),min:t.validator.format(\"Please enter a value greater than or equal to {0}.\")},autoCreateRanges:!1,prototype:{init:function(){function e(e){var i=t.data(this[0].form,\"validator\"),s=\"on\"+e.type.replace(/^validate/,\"\");i.settings[s]&&i.settings[s].call(i,this[0],e)}this.labelContainer=t(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||t(this.currentForm),this.containers=t(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var i=this.groups={};t.each(this.settings.groups,function(e,s){\"string\"==typeof s&&(s=s.split(/\\s/)),t.each(s,function(t,s){i[s]=e})});var s=this.settings.rules;t.each(s,function(e,i){s[e]=t.validator.normalizeRule(i)}),t(this.currentForm).validateDelegate(\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] \",\"focusin focusout keyup\",e).validateDelegate(\"[type='radio'], [type='checkbox'], select, option\",\"click\",e),this.settings.invalidHandler&&t(this.currentForm).bind(\"invalid-form.validate\",this.settings.invalidHandler)},form:function(){return this.checkForm(),t.extend(this.submitted,this.errorMap),this.invalid=t.extend({},this.errorMap),this.valid()||t(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var t=0,e=this.currentElements=this.elements();e[t];t++)this.check(e[t]);return this.valid()},element:function(e){e=this.validationTargetFor(this.clean(e)),this.lastElement=e,this.prepareElement(e),this.currentElements=t(e);var i=this.check(e)!==!1;return i?delete this.invalid[e.name]:this.invalid[e.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),i},showErrors:function(e){if(e){t.extend(this.errorMap,e),this.errorList=[];for(var i in e)this.errorList.push({message:e[i],element:this.findByName(i)[0]});this.successList=t.grep(this.successList,function(t){return!(t.name in e)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){t.fn.resetForm&&t(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData(\"previousValue\")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(t){var e=0;for(var i in t)e++;return e},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{t(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(\":visible\").focus().trigger(\"focusin\")}catch(e){}},findLastActive:function(){var e=this.lastActive;return e&&1===t.grep(this.errorList,function(t){return t.element.name===e.name}).length&&e},elements:function(){var e=this,i={};return t(this.currentForm).find(\"input, select, textarea\").not(\":submit, :reset, :image, [disabled]\").not(this.settings.ignore).filter(function(){return!this.name&&e.settings.debug&&window.console&&console.error(\"%o has no name assigned\",this),this.name in i||!e.objectLength(t(this).rules())?!1:(i[this.name]=!0,!0)})},clean:function(e){return t(e)[0]},errors:function(){var e=this.settings.errorClass.replace(\" \",\".\");return t(this.settings.errorElement+\".\"+e,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=t([]),this.toHide=t([]),this.currentElements=t([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(t){this.reset(),this.toHide=this.errorsFor(t)},elementValue:function(e){var i=t(e).attr(\"type\"),s=t(e).val();return\"radio\"===i||\"checkbox\"===i?t(\"input[name='\"+t(e).attr(\"name\")+\"']:checked\").val():\"string\"==typeof s?s.replace(/\\r/g,\"\"):s},check:function(e){e=this.validationTargetFor(this.clean(e));var i,s=t(e).rules(),r=!1,n=this.elementValue(e);for(var a in s){var u={method:a,parameters:s[a]};try{if(i=t.validator.methods[a].call(this,n,e,u.parameters),\"dependency-mismatch\"===i){r=!0;continue}if(r=!1,\"pending\"===i)return this.toHide=this.toHide.not(this.errorsFor(e)),void 0;if(!i)return this.formatAndAdd(e,u),!1}catch(o){throw this.settings.debug&&window.console&&console.log(\"Exception occurred when checking element \"+e.id+\", check the '\"+u.method+\"' method.\",o),o}}return r?void 0:(this.objectLength(s)&&this.successList.push(e),!0)},customDataMessage:function(e,i){return t(e).data(\"msg-\"+i.toLowerCase())||e.attributes&&t(e).attr(\"data-msg-\"+i.toLowerCase())},customMessage:function(t,e){var i=this.settings.messages[t];return i&&(i.constructor===String?i:i[e])},findDefined:function(){for(var t=0;arguments.length>t;t++)if(void 0!==arguments[t])return arguments[t];return void 0},defaultMessage:function(e,i){return this.findDefined(this.customMessage(e.name,i),this.customDataMessage(e,i),!this.settings.ignoreTitle&&e.title||void 0,t.validator.messages[i],\"Warning: No message defined for \"+e.name+\"\")},formatAndAdd:function(e,i){var s=this.defaultMessage(e,i.method),r=/\\$?\\{(\\d+)\\}/g;\"function\"==typeof s?s=s.call(this,i.parameters,e):r.test(s)&&(s=t.validator.format(s.replace(r,\"{$1}\"),i.parameters)),this.errorList.push({message:s,element:e}),this.errorMap[e.name]=s,this.submitted[e.name]=s},addWrapper:function(t){return this.settings.wrapper&&(t=t.add(t.parent(this.settings.wrapper))),t},defaultShowErrors:function(){var t,e;for(t=0;this.errorList[t];t++){var i=this.errorList[t];this.settings.highlight&&this.settings.highlight.call(this,i.element,this.settings.errorClass,this.settings.validClass),this.showLabel(i.element,i.message)}if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(t=0;this.successList[t];t++)this.showLabel(this.successList[t]);if(this.settings.unhighlight)for(t=0,e=this.validElements();e[t];t++)this.settings.unhighlight.call(this,e[t],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return t(this.errorList).map(function(){return this.element})},showLabel:function(e,i){var s=this.errorsFor(e);s.length?(s.removeClass(this.settings.validClass).addClass(this.settings.errorClass),s.html(i)):(s=t(\"<\"+this.settings.errorElement+\">\").attr(\"for\",this.idOrName(e)).addClass(this.settings.errorClass).html(i||\"\"),this.settings.wrapper&&(s=s.hide().show().wrap(\"<\"+this.settings.wrapper+\"/>\").parent()),this.labelContainer.append(s).length||(this.settings.errorPlacement?this.settings.errorPlacement(s,t(e)):s.insertAfter(e))),!i&&this.settings.success&&(s.text(\"\"),\"string\"==typeof this.settings.success?s.addClass(this.settings.success):this.settings.success(s,e)),this.toShow=this.toShow.add(s)},errorsFor:function(e){var i=this.idOrName(e);return this.errors().filter(function(){return t(this).attr(\"for\")===i})},idOrName:function(t){return this.groups[t.name]||(this.checkable(t)?t.name:t.id||t.name)},validationTargetFor:function(t){return this.checkable(t)&&(t=this.findByName(t.name).not(this.settings.ignore)[0]),t},checkable:function(t){return/radio|checkbox/i.test(t.type)},findByName:function(e){return t(this.currentForm).find(\"[name='\"+e+\"']\")},getLength:function(e,i){switch(i.nodeName.toLowerCase()){case\"select\":return t(\"option:selected\",i).length;case\"input\":if(this.checkable(i))return this.findByName(i.name).filter(\":checked\").length}return e.length},depend:function(t,e){return this.dependTypes[typeof t]?this.dependTypes[typeof t](t,e):!0},dependTypes:{\"boolean\":function(t){return t},string:function(e,i){return!!t(e,i.form).length},\"function\":function(t,e){return t(e)}},optional:function(e){var i=this.elementValue(e);return!t.validator.methods.required.call(this,i,e)&&\"dependency-mismatch\"},startRequest:function(t){this.pending[t.name]||(this.pendingRequest++,this.pending[t.name]=!0)},stopRequest:function(e,i){this.pendingRequest--,0>this.pendingRequest&&(this.pendingRequest=0),delete this.pending[e.name],i&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(t(this.currentForm).submit(),this.formSubmitted=!1):!i&&0===this.pendingRequest&&this.formSubmitted&&(t(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.formSubmitted=!1)},previousValue:function(e){return t.data(e,\"previousValue\")||t.data(e,\"previousValue\",{old:null,valid:!0,message:this.defaultMessage(e,\"remote\")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(e,i){e.constructor===String?this.classRuleSettings[e]=i:t.extend(this.classRuleSettings,e)},classRules:function(e){var i={},s=t(e).attr(\"class\");return s&&t.each(s.split(\" \"),function(){this in t.validator.classRuleSettings&&t.extend(i,t.validator.classRuleSettings[this])}),i},attributeRules:function(e){var i={},s=t(e),r=s[0].getAttribute(\"type\");for(var n in t.validator.methods){var a;\"required\"===n?(a=s.get(0).getAttribute(n),\"\"===a&&(a=!0),a=!!a):a=s.attr(n),/min|max/.test(n)&&(null===r||/number|range|text/.test(r))&&(a=Number(a)),a?i[n]=a:r===n&&\"range\"!==r&&(i[n]=!0)}return i.maxlength&&/-1|2147483647|524288/.test(i.maxlength)&&delete i.maxlength,i},dataRules:function(e){var i,s,r={},n=t(e);for(i in t.validator.methods)s=n.data(\"rule-\"+i.toLowerCase()),void 0!==s&&(r[i]=s);return r},staticRules:function(e){var i={},s=t.data(e.form,\"validator\");return s.settings.rules&&(i=t.validator.normalizeRule(s.settings.rules[e.name])||{}),i},normalizeRules:function(e,i){return t.each(e,function(s,r){if(r===!1)return delete e[s],void 0;if(r.param||r.depends){var n=!0;switch(typeof r.depends){case\"string\":n=!!t(r.depends,i.form).length;break;case\"function\":n=r.depends.call(i,i)}n?e[s]=void 0!==r.param?r.param:!0:delete e[s]}}),t.each(e,function(s,r){e[s]=t.isFunction(r)?r(i):r}),t.each([\"minlength\",\"maxlength\"],function(){e[this]&&(e[this]=Number(e[this]))}),t.each([\"rangelength\",\"range\"],function(){var i;e[this]&&(t.isArray(e[this])?e[this]=[Number(e[this][0]),Number(e[this][1])]:\"string\"==typeof e[this]&&(i=e[this].split(/[\\s,]+/),e[this]=[Number(i[0]),Number(i[1])]))}),t.validator.autoCreateRanges&&(e.min&&e.max&&(e.range=[e.min,e.max],delete e.min,delete e.max),e.minlength&&e.maxlength&&(e.rangelength=[e.minlength,e.maxlength],delete e.minlength,delete e.maxlength)),e},normalizeRule:function(e){if(\"string\"==typeof e){var i={};t.each(e.split(/\\s/),function(){i[this]=!0}),e=i}return e},addMethod:function(e,i,s){t.validator.methods[e]=i,t.validator.messages[e]=void 0!==s?s:t.validator.messages[e],3>i.length&&t.validator.addClassRules(e,t.validator.normalizeRule(e))},methods:{required:function(e,i,s){if(!this.depend(s,i))return\"dependency-mismatch\";if(\"select\"===i.nodeName.toLowerCase()){var r=t(i).val();return r&&r.length>0}return this.checkable(i)?this.getLength(e,i)>0:t.trim(e).length>0},email:function(t,e){return this.optional(e)||/^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i.test(t)},url:function(t,e){return this.optional(e)||/^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(t)},date:function(t,e){return this.optional(e)||!/Invalid|NaN/.test(\"\"+new Date(t))},dateISO:function(t,e){return this.optional(e)||/^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/.test(t)},number:function(t,e){return this.optional(e)||/^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(t)},digits:function(t,e){return this.optional(e)||/^\\d+$/.test(t)},creditcard:function(t,e){if(this.optional(e))return\"dependency-mismatch\";if(/[^0-9 \\-]+/.test(t))return!1;var i=0,s=0,r=!1;t=t.replace(/\\D/g,\"\");for(var n=t.length-1;n>=0;n--){var a=t.charAt(n);s=parseInt(a,10),r&&(s*=2)>9&&(s-=9),i+=s,r=!r}return 0===i%10},minlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s},maxlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||s>=r},rangelength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s[0]&&s[1]>=r},min:function(t,e,i){return this.optional(e)||t>=i},max:function(t,e,i){return this.optional(e)||i>=t},range:function(t,e,i){return this.optional(e)||t>=i[0]&&i[1]>=t},equalTo:function(e,i,s){var r=t(s);return this.settings.onfocusout&&r.unbind(\".validate-equalTo\").bind(\"blur.validate-equalTo\",function(){t(i).valid()}),e===r.val()},remote:function(e,i,s){if(this.optional(i))return\"dependency-mismatch\";var r=this.previousValue(i);if(this.settings.messages[i.name]||(this.settings.messages[i.name]={}),r.originalMessage=this.settings.messages[i.name].remote,this.settings.messages[i.name].remote=r.message,s=\"string\"==typeof s&&{url:s}||s,r.old===e)return r.valid;r.old=e;var n=this;this.startRequest(i);var a={};return a[i.name]=e,t.ajax(t.extend(!0,{url:s,mode:\"abort\",port:\"validate\"+i.name,dataType:\"json\",data:a,success:function(s){n.settings.messages[i.name].remote=r.originalMessage;var a=s===!0||\"true\"===s;if(a){var u=n.formSubmitted;n.prepareElement(i),n.formSubmitted=u,n.successList.push(i),delete n.invalid[i.name],n.showErrors()}else{var o={},l=s||n.defaultMessage(i,\"remote\");o[i.name]=r.message=t.isFunction(l)?l(e):l,n.invalid[i.name]=!0,n.showErrors(o)}r.valid=a,n.stopRequest(i,a)}},s)),\"pending\"}}}),t.format=t.validator.format})(jQuery),function(t){var e={};if(t.ajaxPrefilter)t.ajaxPrefilter(function(t,i,s){var r=t.port;\"abort\"===t.mode&&(e[r]&&e[r].abort(),e[r]=s)});else{var i=t.ajax;t.ajax=function(s){var r=(\"mode\"in s?s:t.ajaxSettings).mode,n=(\"port\"in s?s:t.ajaxSettings).port;return\"abort\"===r?(e[n]&&e[n].abort(),e[n]=i.apply(this,arguments),e[n]):i.apply(this,arguments)}}}(jQuery),function(t){t.extend(t.fn,{validateDelegate:function(e,i,s){return this.bind(i,function(i){var r=t(i.target);return r.is(e)?s.apply(r,arguments):void 0})}})}(jQuery);","/* NUGET: BEGIN LICENSE TEXT\r\n *\r\n * Microsoft grants you the right to use these script files for the sole\r\n * purpose of either: (i) interacting through your browser with the Microsoft\r\n * website or online service, subject to the applicable licensing or use\r\n * terms; or (ii) using the files as included with a Microsoft product subject\r\n * to that product's license terms. Microsoft reserves all other rights to the\r\n * files not expressly granted by Microsoft, whether by implication, estoppel\r\n * or otherwise. Insofar as a script file is dual licensed under GPL,\r\n * Microsoft neither took the code under GPL nor distributes it thereunder but\r\n * under the terms set out in this paragraph. All notices and licenses\r\n * below are for informational purposes only.\r\n *\r\n * NUGET: END LICENSE TEXT */\r\n/*\r\n** Unobtrusive validation support library for jQuery and jQuery Validate\r\n** Copyright (C) Microsoft Corporation. All rights reserved.\r\n*/\r\n(function(a){var d=a.validator,b,e=\"unobtrusiveValidation\";function c(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message}function j(a){return a.replace(/^\\s+|\\s+$/g,\"\").split(/\\s*,\\s*/g)}function f(a){return a.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g,\"\\\\$1\")}function h(a){return a.substr(0,a.lastIndexOf(\".\")+1)}function g(a,b){if(a.indexOf(\"*.\")===0)a=a.replace(\"*.\",b);return a}function m(c,e){var b=a(this).find(\"[data-valmsg-for='\"+f(e[0].name)+\"']\"),d=b.attr(\"data-valmsg-replace\"),g=d?a.parseJSON(d)!==false:null;b.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");c.data(\"unobtrusiveContainer\",b);if(g){b.empty();c.removeClass(\"input-validation-error\").appendTo(b)}else c.hide()}function l(e,d){var c=a(this).find(\"[data-valmsg-summary=true]\"),b=c.find(\"ul\");if(b&&b.length&&d.errorList.length){b.empty();c.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");a.each(d.errorList,function(){a(\"
  • \").html(this.message).appendTo(b)})}}function k(d){var b=d.data(\"unobtrusiveContainer\"),c=b.attr(\"data-valmsg-replace\"),e=c?a.parseJSON(c):null;if(b){b.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");d.removeData(\"unobtrusiveContainer\");e&&b.empty()}}function n(){var b=a(this);b.data(\"validator\").resetForm();b.find(\".validation-summary-errors\").addClass(\"validation-summary-valid\").removeClass(\"validation-summary-errors\");b.find(\".field-validation-error\").addClass(\"field-validation-valid\").removeClass(\"field-validation-error\").removeData(\"unobtrusiveContainer\").find(\">*\").removeData(\"unobtrusiveContainer\")}function i(b){var c=a(b),f=c.data(e),i=a.proxy(n,b),g=d.unobtrusive.options||{},h=function(e,d){var c=g[e];c&&a.isFunction(c)&&c.apply(b,d)};if(!f){f={options:{errorClass:g.errorClass||\"input-validation-error\",errorElement:g.errorElement||\"span\",errorPlacement:function(){m.apply(b,arguments);h(\"errorPlacement\",arguments)},invalidHandler:function(){l.apply(b,arguments);h(\"invalidHandler\",arguments)},messages:{},rules:{},success:function(){k.apply(b,arguments);h(\"success\",arguments)}},attachValidation:function(){c.off(\"reset.\"+e,i).on(\"reset.\"+e,i).validate(this.options)},validate:function(){c.validate();return c.valid()}};c.data(e,f)}return f}d.unobtrusive={adapters:[],parseElement:function(b,h){var d=a(b),f=d.parents(\"form\")[0],c,e,g;if(!f)return;c=i(f);c.options.rules[b.name]=e={};c.options.messages[b.name]=g={};a.each(this.adapters,function(){var c=\"data-val-\"+this.name,i=d.attr(c),h={};if(i!==undefined){c+=\"-\";a.each(this.params,function(){h[this]=d.attr(c+this)});this.adapt({element:b,form:f,message:i,params:h,rules:e,messages:g})}});a.extend(e,{__dummy__:true});!h&&c.attachValidation()},parse:function(c){var b=a(c),e=b.parents().addBack().filter(\"form\").add(b.find(\"form\")).has(\"[data-val=true]\");b.find(\"[data-val=true]\").each(function(){d.unobtrusive.parseElement(this,true)});e.each(function(){var a=i(this);a&&a.attachValidation()})}};b=d.unobtrusive.adapters;b.add=function(c,a,b){if(!b){b=a;a=[]}this.push({name:c,params:a,adapt:b});return this};b.addBool=function(a,b){return this.add(a,function(d){c(d,b||a,true)})};b.addMinMax=function(e,g,f,a,d,b){return this.add(e,[d||\"min\",b||\"max\"],function(b){var e=b.params.min,d=b.params.max;if(e&&d)c(b,a,[e,d]);else if(e)c(b,g,e);else d&&c(b,f,d)})};b.addSingleVal=function(a,b,d){return this.add(a,[b||\"val\"],function(e){c(e,d||a,e.params[b])})};d.addMethod(\"__dummy__\",function(){return true});d.addMethod(\"regex\",function(b,c,d){var a;if(this.optional(c))return true;a=(new RegExp(d)).exec(b);return a&&a.index===0&&a[0].length===b.length});d.addMethod(\"nonalphamin\",function(c,d,b){var a;if(b){a=c.match(/\\W/g);a=a&&a.length>=b}return a});if(d.methods.extension){b.addSingleVal(\"accept\",\"mimtype\");b.addSingleVal(\"extension\",\"extension\")}else b.addSingleVal(\"extension\",\"extension\",\"accept\");b.addSingleVal(\"regex\",\"pattern\");b.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");b.addMinMax(\"length\",\"minlength\",\"maxlength\",\"rangelength\").addMinMax(\"range\",\"min\",\"max\",\"range\");b.addMinMax(\"minlength\",\"minlength\").addMinMax(\"maxlength\",\"minlength\",\"maxlength\");b.add(\"equalto\",[\"other\"],function(b){var i=h(b.element.name),j=b.params.other,d=g(j,i),e=a(b.form).find(\":input\").filter(\"[name='\"+f(d)+\"']\")[0];c(b,\"equalTo\",e)});b.add(\"required\",function(a){(a.element.tagName.toUpperCase()!==\"INPUT\"||a.element.type.toUpperCase()!==\"CHECKBOX\")&&c(a,\"required\",true)});b.add(\"remote\",[\"url\",\"type\",\"additionalfields\"],function(b){var d={url:b.params.url,type:b.params.type||\"GET\",data:{}},e=h(b.element.name);a.each(j(b.params.additionalfields||b.element.name),function(i,h){var c=g(h,e);d.data[c]=function(){return a(b.form).find(\":input\").filter(\"[name='\"+f(c)+\"']\").val()}});c(b,\"remote\",d)});b.add(\"password\",[\"min\",\"nonalphamin\",\"regex\"],function(a){a.params.min&&c(a,\"minlength\",a.params.min);a.params.nonalphamin&&c(a,\"nonalphamin\",a.params.nonalphamin);a.params.regex&&c(a,\"regex\",a.params.regex)});a(function(){d.unobtrusive.parse(document)})})(jQuery);","(function (angular) {\r\n\r\n angular\r\n .module('friburgoeletro',\r\n [\r\n 'ngAnimate',\r\n 'mgcrea.ngStrap',\r\n 'ngRoute',\r\n 'ngResource',\r\n 'creditCardInput',\r\n 'ui.utils.masks',\r\n 'ui.mask',\r\n 'ngMask'\r\n ]);\r\n})(angular);","(function (angular) {\r\n 'use strict';\r\n\r\n angular.module('friburgoeletro')\r\n .constant('alertify', window.alertify)\r\n .constant('$', $)\r\n .config(config);\r\n\r\n /* @ngInject */\r\n function config($httpProvider, $asideProvider, alertify) {\r\n\r\n angular.extend($asideProvider.defaults, {\r\n container: 'body',\r\n html: true\r\n });\r\n\r\n // Busy Indicator Interceptor\r\n $httpProvider.interceptors.push(['$q', '$rootScope',\r\n function ($q, $rootScope) {\r\n var numLoadings = 0;\r\n\r\n return {\r\n request: function (config) {\r\n\r\n numLoadings++;\r\n $rootScope.isBusy = true;\r\n return config || $q.when(config);\r\n\r\n },\r\n response: function (response) {\r\n\r\n if ((--numLoadings) === 0)\r\n $rootScope.isBusy = false;\r\n\r\n return response || $q.when(response);\r\n\r\n },\r\n responseError: function (response) {\r\n\r\n if (!(--numLoadings))\r\n $rootScope.isBusy = false;\r\n\r\n return $q.reject(response);\r\n }\r\n };\r\n }]);\r\n\r\n $httpProvider.interceptors.push([\r\n '$q', function ($q) {\r\n return {\r\n 'responseError': function (response) {\r\n switch (response.status) {\r\n case 401:\r\n console.info('Usuário ou senha inválidos!');\r\n break;\r\n case 403:\r\n alertify.error(\"Você precisa fazer login antes de executar esta ação!\");\r\n break;\r\n case 500:\r\n console.info('Erro interno no servidor: ' + response.data);\r\n break;\r\n default:\r\n console.info('Erro: ' + response.status + ': ' + response.data);\r\n }\r\n\r\n return $q.reject(response);\r\n }\r\n };\r\n }\r\n ]);\r\n }\r\n\r\n})(angular);","/* 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 */\r\n\"function\"!==typeof Object.create&&(Object.create=function(d){function h(){}h.prototype=d;return new h});\r\n(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&&\r\n(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=\r\nc.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('
    '),b.$elem.css(\"position\",\"absolute\"));b.zoomLock=1;b.scrollingLock=!1;b.changeBgSize=!1;b.currentZoomLevel=b.options.zoomLevel;\r\nb.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+\r\n\"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\"==\r\nb.options.zoomType&&(lensHeight=b.nzHeight
    ');d(\"body\").append(b.zoomContainer);b.options.containLensZoom&&\"lens\"==b.options.zoomType&&b.zoomContainer.css(\"overflow\",\r\n\"hidden\");\"inner\"!=b.options.zoomType&&(b.zoomLens=d(\"
     
    \").appendTo(b.zoomContainer).click(function(){b.$elem.trigger(\"click\")}),b.options.tint&&(b.tintContainer=d(\"
    \").addClass(\"tintContainer\"),b.zoomTint=d(\"
    \"),b.zoomLens.wrap(b.tintContainer),b.zoomTintcss=b.zoomLens.after(b.zoomTint),b.zoomTintImage=d('').appendTo(b.zoomLens).click(function(){b.$elem.trigger(\"click\")})));isNaN(b.options.zoomWindowPosition)?b.zoomWindow=d(\"
     
    \").appendTo(\"body\").click(function(){b.$elem.trigger(\"click\")}):b.zoomWindow=d(\"
     
    \").appendTo(b.zoomContainer).click(function(){b.$elem.trigger(\"click\")});b.zoomWindowContainer=d(\"
    \").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+\r\n\"')\"});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\")});\r\nb.$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\")}));\r\nb.$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),\r\nb.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&&\r\nb.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\",\r\nsetTimeout(function(){b.scrollLock=!1},250));var e=a.originalEvent.wheelDelta||-1*a.originalEvent.detail;a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();0=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);\r\nreturn!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\"),\r\nthis.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.nzHeightthis.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.mouseTopthis.nzHeight-\r\nthis.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),\r\nthis.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)),\r\n\"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+\r\n\"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&&\r\nthis.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=\r\n!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(),\r\nthis.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){},\r\nsetWindowPostition: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=\r\n+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>\r\na.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&&\r\n(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=\r\n0;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=\r\na.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()/\r\n2));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\r\na.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\"})),\r\na.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+\r\n\"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/\r\na.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
    '),c.$elem.after(c.spinner));\r\nc.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=\r\n!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\");\r\nf.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||\r\n(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&&\r\n(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&&\r\n(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\"==\r\nc.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\",\r\nc.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();\r\nthis.nzHeight=this.$elem.height();this.currentZoomLevel=this.options.zoomLevel;this.widthRatio=this.largeWidth/this.nzWidth;this.heightRatio=this.largeHeight/this.nzHeight;\"window\"==this.options.zoomType&&(lensHeight=this.nzHeightmaxheightnewvalue&&(newvalue=maxheightnewvalue),newvalue>maxwidthtnewvalue&&(newvalue=maxwidthtnewvalue),maxheightnewvalue<=newvalue?(this.heightRatio=this.largeHeight/\r\nnewvalue/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=\r\nnewvalue,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&&\r\n(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&&\r\n\"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();\r\nself.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,\r\nzoomWindowWidth: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,\r\ngalleryActiveClass:\"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);\n/* NUGET: BEGIN LICENSE TEXT\r\n *\r\n * Microsoft grants you the right to use these script files for the sole\r\n * purpose of either: (i) interacting through your browser with the Microsoft\r\n * website or online service, subject to the applicable licensing or use\r\n * terms; or (ii) using the files as included with a Microsoft product subject\r\n * to that product's license terms. Microsoft reserves all other rights to the\r\n * files not expressly granted by Microsoft, whether by implication, estoppel\r\n * or otherwise. Insofar as a script file is dual licensed under GPL,\r\n * Microsoft neither took the code under GPL nor distributes it thereunder but\r\n * under the terms set out in this paragraph. All notices and licenses\r\n * below are for informational purposes only.\r\n *\r\n * NUGET: END LICENSE TEXT */\r\n/*! jQuery Validation Plugin - v1.11.1 - 3/22/2013\\n* https://github.com/jzaefferer/jquery-validation\r\n* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT */(function(t){t.extend(t.fn,{validate:function(e){if(!this.length)return e&&e.debug&&window.console&&console.warn(\"Nothing selected, can't validate, returning nothing.\"),void 0;var i=t.data(this[0],\"validator\");return i?i:(this.attr(\"novalidate\",\"novalidate\"),i=new t.validator(e,this[0]),t.data(this[0],\"validator\",i),i.settings.onsubmit&&(this.validateDelegate(\":submit\",\"click\",function(e){i.settings.submitHandler&&(i.submitButton=e.target),t(e.target).hasClass(\"cancel\")&&(i.cancelSubmit=!0),void 0!==t(e.target).attr(\"formnovalidate\")&&(i.cancelSubmit=!0)}),this.submit(function(e){function s(){var s;return i.settings.submitHandler?(i.submitButton&&(s=t(\"\").attr(\"name\",i.submitButton.name).val(t(i.submitButton).val()).appendTo(i.currentForm)),i.settings.submitHandler.call(i,i.currentForm,e),i.submitButton&&s.remove(),!1):!0}return i.settings.debug&&e.preventDefault(),i.cancelSubmit?(i.cancelSubmit=!1,s()):i.form()?i.pendingRequest?(i.formSubmitted=!0,!1):s():(i.focusInvalid(),!1)})),i)},valid:function(){if(t(this[0]).is(\"form\"))return this.validate().form();var e=!0,i=t(this[0].form).validate();return this.each(function(){e=e&&i.element(this)}),e},removeAttrs:function(e){var i={},s=this;return t.each(e.split(/\\s/),function(t,e){i[e]=s.attr(e),s.removeAttr(e)}),i},rules:function(e,i){var s=this[0];if(e){var r=t.data(s.form,\"validator\").settings,n=r.rules,a=t.validator.staticRules(s);switch(e){case\"add\":t.extend(a,t.validator.normalizeRule(i)),delete a.messages,n[s.name]=a,i.messages&&(r.messages[s.name]=t.extend(r.messages[s.name],i.messages));break;case\"remove\":if(!i)return delete n[s.name],a;var u={};return t.each(i.split(/\\s/),function(t,e){u[e]=a[e],delete a[e]}),u}}var o=t.validator.normalizeRules(t.extend({},t.validator.classRules(s),t.validator.attributeRules(s),t.validator.dataRules(s),t.validator.staticRules(s)),s);if(o.required){var l=o.required;delete o.required,o=t.extend({required:l},o)}return o}}),t.extend(t.expr[\":\"],{blank:function(e){return!t.trim(\"\"+t(e).val())},filled:function(e){return!!t.trim(\"\"+t(e).val())},unchecked:function(e){return!t(e).prop(\"checked\")}}),t.validator=function(e,i){this.settings=t.extend(!0,{},t.validator.defaults,e),this.currentForm=i,this.init()},t.validator.format=function(e,i){return 1===arguments.length?function(){var i=t.makeArray(arguments);return i.unshift(e),t.validator.format.apply(this,i)}:(arguments.length>2&&i.constructor!==Array&&(i=t.makeArray(arguments).slice(1)),i.constructor!==Array&&(i=[i]),t.each(i,function(t,i){e=e.replace(RegExp(\"\\\\{\"+t+\"\\\\}\",\"g\"),function(){return i})}),e)},t.extend(t.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:\"error\",validClass:\"valid\",errorElement:\"label\",focusInvalid:!0,errorContainer:t([]),errorLabelContainer:t([]),onsubmit:!0,ignore:\":hidden\",ignoreTitle:!1,onfocusin:function(t){this.lastActive=t,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,t,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(t)).hide())},onfocusout:function(t){this.checkable(t)||!(t.name in this.submitted)&&this.optional(t)||this.element(t)},onkeyup:function(t,e){(9!==e.which||\"\"!==this.elementValue(t))&&(t.name in this.submitted||t===this.lastElement)&&this.element(t)},onclick:function(t){t.name in this.submitted?this.element(t):t.parentNode.name in this.submitted&&this.element(t.parentNode)},highlight:function(e,i,s){\"radio\"===e.type?this.findByName(e.name).addClass(i).removeClass(s):t(e).addClass(i).removeClass(s)},unhighlight:function(e,i,s){\"radio\"===e.type?this.findByName(e.name).removeClass(i).addClass(s):t(e).removeClass(i).addClass(s)}},setDefaults:function(e){t.extend(t.validator.defaults,e)},messages:{required:\"This field is required.\",remote:\"Please fix this field.\",email:\"Please enter a valid email address.\",url:\"Please enter a valid URL.\",date:\"Please enter a valid date.\",dateISO:\"Please enter a valid date (ISO).\",number:\"Please enter a valid number.\",digits:\"Please enter only digits.\",creditcard:\"Please enter a valid credit card number.\",equalTo:\"Please enter the same value again.\",maxlength:t.validator.format(\"Please enter no more than {0} characters.\"),minlength:t.validator.format(\"Please enter at least {0} characters.\"),rangelength:t.validator.format(\"Please enter a value between {0} and {1} characters long.\"),range:t.validator.format(\"Please enter a value between {0} and {1}.\"),max:t.validator.format(\"Please enter a value less than or equal to {0}.\"),min:t.validator.format(\"Please enter a value greater than or equal to {0}.\")},autoCreateRanges:!1,prototype:{init:function(){function e(e){var i=t.data(this[0].form,\"validator\"),s=\"on\"+e.type.replace(/^validate/,\"\");i.settings[s]&&i.settings[s].call(i,this[0],e)}this.labelContainer=t(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||t(this.currentForm),this.containers=t(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var i=this.groups={};t.each(this.settings.groups,function(e,s){\"string\"==typeof s&&(s=s.split(/\\s/)),t.each(s,function(t,s){i[s]=e})});var s=this.settings.rules;t.each(s,function(e,i){s[e]=t.validator.normalizeRule(i)}),t(this.currentForm).validateDelegate(\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] \",\"focusin focusout keyup\",e).validateDelegate(\"[type='radio'], [type='checkbox'], select, option\",\"click\",e),this.settings.invalidHandler&&t(this.currentForm).bind(\"invalid-form.validate\",this.settings.invalidHandler)},form:function(){return this.checkForm(),t.extend(this.submitted,this.errorMap),this.invalid=t.extend({},this.errorMap),this.valid()||t(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var t=0,e=this.currentElements=this.elements();e[t];t++)this.check(e[t]);return this.valid()},element:function(e){e=this.validationTargetFor(this.clean(e)),this.lastElement=e,this.prepareElement(e),this.currentElements=t(e);var i=this.check(e)!==!1;return i?delete this.invalid[e.name]:this.invalid[e.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),i},showErrors:function(e){if(e){t.extend(this.errorMap,e),this.errorList=[];for(var i in e)this.errorList.push({message:e[i],element:this.findByName(i)[0]});this.successList=t.grep(this.successList,function(t){return!(t.name in e)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){t.fn.resetForm&&t(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData(\"previousValue\")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(t){var e=0;for(var i in t)e++;return e},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{t(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(\":visible\").focus().trigger(\"focusin\")}catch(e){}},findLastActive:function(){var e=this.lastActive;return e&&1===t.grep(this.errorList,function(t){return t.element.name===e.name}).length&&e},elements:function(){var e=this,i={};return t(this.currentForm).find(\"input, select, textarea\").not(\":submit, :reset, :image, [disabled]\").not(this.settings.ignore).filter(function(){return!this.name&&e.settings.debug&&window.console&&console.error(\"%o has no name assigned\",this),this.name in i||!e.objectLength(t(this).rules())?!1:(i[this.name]=!0,!0)})},clean:function(e){return t(e)[0]},errors:function(){var e=this.settings.errorClass.replace(\" \",\".\");return t(this.settings.errorElement+\".\"+e,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=t([]),this.toHide=t([]),this.currentElements=t([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(t){this.reset(),this.toHide=this.errorsFor(t)},elementValue:function(e){var i=t(e).attr(\"type\"),s=t(e).val();return\"radio\"===i||\"checkbox\"===i?t(\"input[name='\"+t(e).attr(\"name\")+\"']:checked\").val():\"string\"==typeof s?s.replace(/\\r/g,\"\"):s},check:function(e){e=this.validationTargetFor(this.clean(e));var i,s=t(e).rules(),r=!1,n=this.elementValue(e);for(var a in s){var u={method:a,parameters:s[a]};try{if(i=t.validator.methods[a].call(this,n,e,u.parameters),\"dependency-mismatch\"===i){r=!0;continue}if(r=!1,\"pending\"===i)return this.toHide=this.toHide.not(this.errorsFor(e)),void 0;if(!i)return this.formatAndAdd(e,u),!1}catch(o){throw this.settings.debug&&window.console&&console.log(\"Exception occurred when checking element \"+e.id+\", check the '\"+u.method+\"' method.\",o),o}}return r?void 0:(this.objectLength(s)&&this.successList.push(e),!0)},customDataMessage:function(e,i){return t(e).data(\"msg-\"+i.toLowerCase())||e.attributes&&t(e).attr(\"data-msg-\"+i.toLowerCase())},customMessage:function(t,e){var i=this.settings.messages[t];return i&&(i.constructor===String?i:i[e])},findDefined:function(){for(var t=0;arguments.length>t;t++)if(void 0!==arguments[t])return arguments[t];return void 0},defaultMessage:function(e,i){return this.findDefined(this.customMessage(e.name,i),this.customDataMessage(e,i),!this.settings.ignoreTitle&&e.title||void 0,t.validator.messages[i],\"Warning: No message defined for \"+e.name+\"\")},formatAndAdd:function(e,i){var s=this.defaultMessage(e,i.method),r=/\\$?\\{(\\d+)\\}/g;\"function\"==typeof s?s=s.call(this,i.parameters,e):r.test(s)&&(s=t.validator.format(s.replace(r,\"{$1}\"),i.parameters)),this.errorList.push({message:s,element:e}),this.errorMap[e.name]=s,this.submitted[e.name]=s},addWrapper:function(t){return this.settings.wrapper&&(t=t.add(t.parent(this.settings.wrapper))),t},defaultShowErrors:function(){var t,e;for(t=0;this.errorList[t];t++){var i=this.errorList[t];this.settings.highlight&&this.settings.highlight.call(this,i.element,this.settings.errorClass,this.settings.validClass),this.showLabel(i.element,i.message)}if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(t=0;this.successList[t];t++)this.showLabel(this.successList[t]);if(this.settings.unhighlight)for(t=0,e=this.validElements();e[t];t++)this.settings.unhighlight.call(this,e[t],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return t(this.errorList).map(function(){return this.element})},showLabel:function(e,i){var s=this.errorsFor(e);s.length?(s.removeClass(this.settings.validClass).addClass(this.settings.errorClass),s.html(i)):(s=t(\"<\"+this.settings.errorElement+\">\").attr(\"for\",this.idOrName(e)).addClass(this.settings.errorClass).html(i||\"\"),this.settings.wrapper&&(s=s.hide().show().wrap(\"<\"+this.settings.wrapper+\"/>\").parent()),this.labelContainer.append(s).length||(this.settings.errorPlacement?this.settings.errorPlacement(s,t(e)):s.insertAfter(e))),!i&&this.settings.success&&(s.text(\"\"),\"string\"==typeof this.settings.success?s.addClass(this.settings.success):this.settings.success(s,e)),this.toShow=this.toShow.add(s)},errorsFor:function(e){var i=this.idOrName(e);return this.errors().filter(function(){return t(this).attr(\"for\")===i})},idOrName:function(t){return this.groups[t.name]||(this.checkable(t)?t.name:t.id||t.name)},validationTargetFor:function(t){return this.checkable(t)&&(t=this.findByName(t.name).not(this.settings.ignore)[0]),t},checkable:function(t){return/radio|checkbox/i.test(t.type)},findByName:function(e){return t(this.currentForm).find(\"[name='\"+e+\"']\")},getLength:function(e,i){switch(i.nodeName.toLowerCase()){case\"select\":return t(\"option:selected\",i).length;case\"input\":if(this.checkable(i))return this.findByName(i.name).filter(\":checked\").length}return e.length},depend:function(t,e){return this.dependTypes[typeof t]?this.dependTypes[typeof t](t,e):!0},dependTypes:{\"boolean\":function(t){return t},string:function(e,i){return!!t(e,i.form).length},\"function\":function(t,e){return t(e)}},optional:function(e){var i=this.elementValue(e);return!t.validator.methods.required.call(this,i,e)&&\"dependency-mismatch\"},startRequest:function(t){this.pending[t.name]||(this.pendingRequest++,this.pending[t.name]=!0)},stopRequest:function(e,i){this.pendingRequest--,0>this.pendingRequest&&(this.pendingRequest=0),delete this.pending[e.name],i&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(t(this.currentForm).submit(),this.formSubmitted=!1):!i&&0===this.pendingRequest&&this.formSubmitted&&(t(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.formSubmitted=!1)},previousValue:function(e){return t.data(e,\"previousValue\")||t.data(e,\"previousValue\",{old:null,valid:!0,message:this.defaultMessage(e,\"remote\")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(e,i){e.constructor===String?this.classRuleSettings[e]=i:t.extend(this.classRuleSettings,e)},classRules:function(e){var i={},s=t(e).attr(\"class\");return s&&t.each(s.split(\" \"),function(){this in t.validator.classRuleSettings&&t.extend(i,t.validator.classRuleSettings[this])}),i},attributeRules:function(e){var i={},s=t(e),r=s[0].getAttribute(\"type\");for(var n in t.validator.methods){var a;\"required\"===n?(a=s.get(0).getAttribute(n),\"\"===a&&(a=!0),a=!!a):a=s.attr(n),/min|max/.test(n)&&(null===r||/number|range|text/.test(r))&&(a=Number(a)),a?i[n]=a:r===n&&\"range\"!==r&&(i[n]=!0)}return i.maxlength&&/-1|2147483647|524288/.test(i.maxlength)&&delete i.maxlength,i},dataRules:function(e){var i,s,r={},n=t(e);for(i in t.validator.methods)s=n.data(\"rule-\"+i.toLowerCase()),void 0!==s&&(r[i]=s);return r},staticRules:function(e){var i={},s=t.data(e.form,\"validator\");return s.settings.rules&&(i=t.validator.normalizeRule(s.settings.rules[e.name])||{}),i},normalizeRules:function(e,i){return t.each(e,function(s,r){if(r===!1)return delete e[s],void 0;if(r.param||r.depends){var n=!0;switch(typeof r.depends){case\"string\":n=!!t(r.depends,i.form).length;break;case\"function\":n=r.depends.call(i,i)}n?e[s]=void 0!==r.param?r.param:!0:delete e[s]}}),t.each(e,function(s,r){e[s]=t.isFunction(r)?r(i):r}),t.each([\"minlength\",\"maxlength\"],function(){e[this]&&(e[this]=Number(e[this]))}),t.each([\"rangelength\",\"range\"],function(){var i;e[this]&&(t.isArray(e[this])?e[this]=[Number(e[this][0]),Number(e[this][1])]:\"string\"==typeof e[this]&&(i=e[this].split(/[\\s,]+/),e[this]=[Number(i[0]),Number(i[1])]))}),t.validator.autoCreateRanges&&(e.min&&e.max&&(e.range=[e.min,e.max],delete e.min,delete e.max),e.minlength&&e.maxlength&&(e.rangelength=[e.minlength,e.maxlength],delete e.minlength,delete e.maxlength)),e},normalizeRule:function(e){if(\"string\"==typeof e){var i={};t.each(e.split(/\\s/),function(){i[this]=!0}),e=i}return e},addMethod:function(e,i,s){t.validator.methods[e]=i,t.validator.messages[e]=void 0!==s?s:t.validator.messages[e],3>i.length&&t.validator.addClassRules(e,t.validator.normalizeRule(e))},methods:{required:function(e,i,s){if(!this.depend(s,i))return\"dependency-mismatch\";if(\"select\"===i.nodeName.toLowerCase()){var r=t(i).val();return r&&r.length>0}return this.checkable(i)?this.getLength(e,i)>0:t.trim(e).length>0},email:function(t,e){return this.optional(e)||/^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i.test(t)},url:function(t,e){return this.optional(e)||/^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(t)},date:function(t,e){return this.optional(e)||!/Invalid|NaN/.test(\"\"+new Date(t))},dateISO:function(t,e){return this.optional(e)||/^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/.test(t)},number:function(t,e){return this.optional(e)||/^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(t)},digits:function(t,e){return this.optional(e)||/^\\d+$/.test(t)},creditcard:function(t,e){if(this.optional(e))return\"dependency-mismatch\";if(/[^0-9 \\-]+/.test(t))return!1;var i=0,s=0,r=!1;t=t.replace(/\\D/g,\"\");for(var n=t.length-1;n>=0;n--){var a=t.charAt(n);s=parseInt(a,10),r&&(s*=2)>9&&(s-=9),i+=s,r=!r}return 0===i%10},minlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s},maxlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||s>=r},rangelength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s[0]&&s[1]>=r},min:function(t,e,i){return this.optional(e)||t>=i},max:function(t,e,i){return this.optional(e)||i>=t},range:function(t,e,i){return this.optional(e)||t>=i[0]&&i[1]>=t},equalTo:function(e,i,s){var r=t(s);return this.settings.onfocusout&&r.unbind(\".validate-equalTo\").bind(\"blur.validate-equalTo\",function(){t(i).valid()}),e===r.val()},remote:function(e,i,s){if(this.optional(i))return\"dependency-mismatch\";var r=this.previousValue(i);if(this.settings.messages[i.name]||(this.settings.messages[i.name]={}),r.originalMessage=this.settings.messages[i.name].remote,this.settings.messages[i.name].remote=r.message,s=\"string\"==typeof s&&{url:s}||s,r.old===e)return r.valid;r.old=e;var n=this;this.startRequest(i);var a={};return a[i.name]=e,t.ajax(t.extend(!0,{url:s,mode:\"abort\",port:\"validate\"+i.name,dataType:\"json\",data:a,success:function(s){n.settings.messages[i.name].remote=r.originalMessage;var a=s===!0||\"true\"===s;if(a){var u=n.formSubmitted;n.prepareElement(i),n.formSubmitted=u,n.successList.push(i),delete n.invalid[i.name],n.showErrors()}else{var o={},l=s||n.defaultMessage(i,\"remote\");o[i.name]=r.message=t.isFunction(l)?l(e):l,n.invalid[i.name]=!0,n.showErrors(o)}r.valid=a,n.stopRequest(i,a)}},s)),\"pending\"}}}),t.format=t.validator.format})(jQuery),function(t){var e={};if(t.ajaxPrefilter)t.ajaxPrefilter(function(t,i,s){var r=t.port;\"abort\"===t.mode&&(e[r]&&e[r].abort(),e[r]=s)});else{var i=t.ajax;t.ajax=function(s){var r=(\"mode\"in s?s:t.ajaxSettings).mode,n=(\"port\"in s?s:t.ajaxSettings).port;return\"abort\"===r?(e[n]&&e[n].abort(),e[n]=i.apply(this,arguments),e[n]):i.apply(this,arguments)}}}(jQuery),function(t){t.extend(t.fn,{validateDelegate:function(e,i,s){return this.bind(i,function(i){var r=t(i.target);return r.is(e)?s.apply(r,arguments):void 0})}})}(jQuery);\n/* NUGET: BEGIN LICENSE TEXT\r\n *\r\n * Microsoft grants you the right to use these script files for the sole\r\n * purpose of either: (i) interacting through your browser with the Microsoft\r\n * website or online service, subject to the applicable licensing or use\r\n * terms; or (ii) using the files as included with a Microsoft product subject\r\n * to that product's license terms. Microsoft reserves all other rights to the\r\n * files not expressly granted by Microsoft, whether by implication, estoppel\r\n * or otherwise. Insofar as a script file is dual licensed under GPL,\r\n * Microsoft neither took the code under GPL nor distributes it thereunder but\r\n * under the terms set out in this paragraph. All notices and licenses\r\n * below are for informational purposes only.\r\n *\r\n * NUGET: END LICENSE TEXT */\r\n/*\r\n** Unobtrusive validation support library for jQuery and jQuery Validate\r\n** Copyright (C) Microsoft Corporation. All rights reserved.\r\n*/\r\n(function(a){var d=a.validator,b,e=\"unobtrusiveValidation\";function c(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message}function j(a){return a.replace(/^\\s+|\\s+$/g,\"\").split(/\\s*,\\s*/g)}function f(a){return a.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g,\"\\\\$1\")}function h(a){return a.substr(0,a.lastIndexOf(\".\")+1)}function g(a,b){if(a.indexOf(\"*.\")===0)a=a.replace(\"*.\",b);return a}function m(c,e){var b=a(this).find(\"[data-valmsg-for='\"+f(e[0].name)+\"']\"),d=b.attr(\"data-valmsg-replace\"),g=d?a.parseJSON(d)!==false:null;b.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");c.data(\"unobtrusiveContainer\",b);if(g){b.empty();c.removeClass(\"input-validation-error\").appendTo(b)}else c.hide()}function l(e,d){var c=a(this).find(\"[data-valmsg-summary=true]\"),b=c.find(\"ul\");if(b&&b.length&&d.errorList.length){b.empty();c.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");a.each(d.errorList,function(){a(\"
  • \").html(this.message).appendTo(b)})}}function k(d){var b=d.data(\"unobtrusiveContainer\"),c=b.attr(\"data-valmsg-replace\"),e=c?a.parseJSON(c):null;if(b){b.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");d.removeData(\"unobtrusiveContainer\");e&&b.empty()}}function n(){var b=a(this);b.data(\"validator\").resetForm();b.find(\".validation-summary-errors\").addClass(\"validation-summary-valid\").removeClass(\"validation-summary-errors\");b.find(\".field-validation-error\").addClass(\"field-validation-valid\").removeClass(\"field-validation-error\").removeData(\"unobtrusiveContainer\").find(\">*\").removeData(\"unobtrusiveContainer\")}function i(b){var c=a(b),f=c.data(e),i=a.proxy(n,b),g=d.unobtrusive.options||{},h=function(e,d){var c=g[e];c&&a.isFunction(c)&&c.apply(b,d)};if(!f){f={options:{errorClass:g.errorClass||\"input-validation-error\",errorElement:g.errorElement||\"span\",errorPlacement:function(){m.apply(b,arguments);h(\"errorPlacement\",arguments)},invalidHandler:function(){l.apply(b,arguments);h(\"invalidHandler\",arguments)},messages:{},rules:{},success:function(){k.apply(b,arguments);h(\"success\",arguments)}},attachValidation:function(){c.off(\"reset.\"+e,i).on(\"reset.\"+e,i).validate(this.options)},validate:function(){c.validate();return c.valid()}};c.data(e,f)}return f}d.unobtrusive={adapters:[],parseElement:function(b,h){var d=a(b),f=d.parents(\"form\")[0],c,e,g;if(!f)return;c=i(f);c.options.rules[b.name]=e={};c.options.messages[b.name]=g={};a.each(this.adapters,function(){var c=\"data-val-\"+this.name,i=d.attr(c),h={};if(i!==undefined){c+=\"-\";a.each(this.params,function(){h[this]=d.attr(c+this)});this.adapt({element:b,form:f,message:i,params:h,rules:e,messages:g})}});a.extend(e,{__dummy__:true});!h&&c.attachValidation()},parse:function(c){var b=a(c),e=b.parents().addBack().filter(\"form\").add(b.find(\"form\")).has(\"[data-val=true]\");b.find(\"[data-val=true]\").each(function(){d.unobtrusive.parseElement(this,true)});e.each(function(){var a=i(this);a&&a.attachValidation()})}};b=d.unobtrusive.adapters;b.add=function(c,a,b){if(!b){b=a;a=[]}this.push({name:c,params:a,adapt:b});return this};b.addBool=function(a,b){return this.add(a,function(d){c(d,b||a,true)})};b.addMinMax=function(e,g,f,a,d,b){return this.add(e,[d||\"min\",b||\"max\"],function(b){var e=b.params.min,d=b.params.max;if(e&&d)c(b,a,[e,d]);else if(e)c(b,g,e);else d&&c(b,f,d)})};b.addSingleVal=function(a,b,d){return this.add(a,[b||\"val\"],function(e){c(e,d||a,e.params[b])})};d.addMethod(\"__dummy__\",function(){return true});d.addMethod(\"regex\",function(b,c,d){var a;if(this.optional(c))return true;a=(new RegExp(d)).exec(b);return a&&a.index===0&&a[0].length===b.length});d.addMethod(\"nonalphamin\",function(c,d,b){var a;if(b){a=c.match(/\\W/g);a=a&&a.length>=b}return a});if(d.methods.extension){b.addSingleVal(\"accept\",\"mimtype\");b.addSingleVal(\"extension\",\"extension\")}else b.addSingleVal(\"extension\",\"extension\",\"accept\");b.addSingleVal(\"regex\",\"pattern\");b.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");b.addMinMax(\"length\",\"minlength\",\"maxlength\",\"rangelength\").addMinMax(\"range\",\"min\",\"max\",\"range\");b.addMinMax(\"minlength\",\"minlength\").addMinMax(\"maxlength\",\"minlength\",\"maxlength\");b.add(\"equalto\",[\"other\"],function(b){var i=h(b.element.name),j=b.params.other,d=g(j,i),e=a(b.form).find(\":input\").filter(\"[name='\"+f(d)+\"']\")[0];c(b,\"equalTo\",e)});b.add(\"required\",function(a){(a.element.tagName.toUpperCase()!==\"INPUT\"||a.element.type.toUpperCase()!==\"CHECKBOX\")&&c(a,\"required\",true)});b.add(\"remote\",[\"url\",\"type\",\"additionalfields\"],function(b){var d={url:b.params.url,type:b.params.type||\"GET\",data:{}},e=h(b.element.name);a.each(j(b.params.additionalfields||b.element.name),function(i,h){var c=g(h,e);d.data[c]=function(){return a(b.form).find(\":input\").filter(\"[name='\"+f(c)+\"']\").val()}});c(b,\"remote\",d)});b.add(\"password\",[\"min\",\"nonalphamin\",\"regex\"],function(a){a.params.min&&c(a,\"minlength\",a.params.min);a.params.nonalphamin&&c(a,\"nonalphamin\",a.params.nonalphamin);a.params.regex&&c(a,\"regex\",a.params.regex)});a(function(){d.unobtrusive.parse(document)})})(jQuery);\n(function (angular) {\r\n\r\n angular\r\n .module('friburgoeletro',\r\n [\r\n 'ngAnimate',\r\n 'mgcrea.ngStrap',\r\n 'ngRoute',\r\n 'ngResource',\r\n 'creditCardInput',\r\n 'ui.utils.masks',\r\n 'ui.mask',\r\n 'ngMask'\r\n ]);\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n config.$inject = [\"$httpProvider\", \"$asideProvider\", \"alertify\"];\r\n angular.module('friburgoeletro')\r\n .constant('alertify', window.alertify)\r\n .constant('$', $)\r\n .config(config);\r\n\r\n /* @ngInject */\r\n function config($httpProvider, $asideProvider, alertify) {\r\n\r\n angular.extend($asideProvider.defaults, {\r\n container: 'body',\r\n html: true\r\n });\r\n\r\n // Busy Indicator Interceptor\r\n $httpProvider.interceptors.push(['$q', '$rootScope',\r\n function ($q, $rootScope) {\r\n var numLoadings = 0;\r\n\r\n return {\r\n request: function (config) {\r\n\r\n numLoadings++;\r\n $rootScope.isBusy = true;\r\n return config || $q.when(config);\r\n\r\n },\r\n response: function (response) {\r\n\r\n if ((--numLoadings) === 0)\r\n $rootScope.isBusy = false;\r\n\r\n return response || $q.when(response);\r\n\r\n },\r\n responseError: function (response) {\r\n\r\n if (!(--numLoadings))\r\n $rootScope.isBusy = false;\r\n\r\n return $q.reject(response);\r\n }\r\n };\r\n }]);\r\n\r\n $httpProvider.interceptors.push([\r\n '$q', function ($q) {\r\n return {\r\n 'responseError': function (response) {\r\n switch (response.status) {\r\n case 401:\r\n console.info('Usuário ou senha inválidos!');\r\n break;\r\n case 403:\r\n alertify.error(\"Você precisa fazer login antes de executar esta ação!\");\r\n break;\r\n case 500:\r\n console.info('Erro interno no servidor: ' + response.data);\r\n break;\r\n default:\r\n console.info('Erro: ' + response.status + ': ' + response.data);\r\n }\r\n\r\n return $q.reject(response);\r\n }\r\n };\r\n }\r\n ]);\r\n }\r\n\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n cartController.$inject = [\"$scope\", \"$rootScope\", \"$window\", \"Cart\"];\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"CartController\", cartController);\r\n\r\n /* @ngInject */\r\n function cartController($scope, $rootScope, $window, Cart) {\r\n\r\n var vm = this;\r\n\r\n vm.added = false;\r\n vm.cart = Cart;\r\n vm.cart.read();\r\n\r\n $window.onload = function () {\r\n vm.cart.read();\r\n };\r\n\r\n $rootScope.$on(\"Cart.add\", function () {\r\n\r\n vm.added = true;\r\n\r\n setTimeout(function () {\r\n\r\n vm.cart.read();\r\n\r\n $scope.$apply(function () {\r\n vm.added = false;\r\n });\r\n\r\n }, 100);\r\n });\r\n }\r\n})(angular);\r\n\n(function (angular) {\r\n 'use strict';\r\n\r\n catalogController.$inject = [\"$scope\", \"$http\", \"$window\"];\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"CatalogController\", catalogController);\r\n\r\n /* @ngInject */\r\n function catalogController($scope, $http, $window) {\r\n\r\n var vm = this;\r\n\r\n vm.precoModel = {\r\n min: 0,\r\n max: 0\r\n };\r\n\r\n vm.corData = [];\r\n vm.orderData = [\r\n { name: \"Menor Preço\", value: \"preco ASC\" },\r\n { name: \"Maior Preço\", value: \"preco DESC\" },\r\n { name: \"Descrição\", value: \"descricao ASC\" },\r\n ];\r\n vm.orderModel = vm.orderData[0];\r\n\r\n vm.pageSizeData = [\r\n { name: \"09 itens\", value: 9 },\r\n { name: \"12 itens\", value: 12 },\r\n { name: \"15 itens\", value: 15 },\r\n { name: \"30 itens\", value: 30 }\r\n ];\r\n\r\n vm.pageSizeModel = vm.pageSizeData[0];\r\n\r\n vm.filterBy = \"Descricao\";\r\n vm.filter = filter;\r\n\r\n vm.init = init;\r\n\r\n function filter() {\r\n\r\n var reqObj = {\r\n paginate: vm.paginate,\r\n pageSize: vm.pageSizeModel.value,\r\n orderBy: vm.orderModel.value.split(\" \")[0],\r\n orderDirection: vm.orderModel.value.split(\" \")[1],\r\n cores: vm.corData\r\n .filter(function(x) {\r\n return x.isSelected;\r\n })\r\n .map(function(x) {\r\n return x.Id;\r\n }).join()\r\n };\r\n\r\n $window.location.href = $window.location.pathname + \"?\" + $.param(reqObj);\r\n };\r\n\r\n function init(paginate, pageSize, selectedColors, order) {\r\n\r\n vm.paginate = paginate || false;\r\n\r\n if (order && order.length > 0)\r\n vm.orderModel = _.find(vm.orderData, function(x) {\r\n return x.value === order;\r\n });\r\n\r\n if (pageSize)\r\n vm.pageSizeModel = _.find(vm.pageSizeData, function(x) {\r\n return x.value === pageSize;\r\n });\r\n\r\n if (vm.pageSize)\r\n $(vm.pageSizeData).each(function(i, el) {\r\n if (el.value === vm.pageSize)\r\n vm.pageSizeModel = el;\r\n });\r\n\r\n if (vm.order)\r\n $(vm.orderData).each(function(i, el) {\r\n if (el.value === vm.order)\r\n vm.orderModel = el;\r\n });\r\n };\r\n }\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n checkoutController.$inject = [\"$scope\", \"$rootScope\", \"$http\", \"$window\", \"$modal\", \"$\", \"Cart\"];\r\n angular\r\n .module('friburgoeletro')\r\n .controller('CheckoutController', checkoutController);\r\n\r\n /* @ngInject */\r\n function checkoutController($scope, $rootScope, $http, $window, $modal, $, Cart) {\r\n\r\n var vm = this;\r\n\r\n vm.Cart = Cart;\r\n vm.isCompleteContaEnabled = false;\r\n vm.isEnderecoSelected = false;\r\n vm.completeCadastroModel = {};\r\n vm.paymentMethods = {};\r\n vm.paymentMethod = null;\r\n vm.card = null;\r\n vm.cardBrand = null;\r\n vm.cardInstallments = null;\r\n vm.cardInstallment = null;\r\n vm.boletoLink = null;\r\n\r\n $($window.document)\r\n .on('login.success ', checkConta);\r\n\r\n vm.finalizar = finalizar;\r\n vm.getCreditCardToken = getCreditCardToken;\r\n vm.getCreditCardBrand = getCreditCardBrand;\r\n vm.getCreditCardInstallments = getCreditCardInstallments;\r\n vm.setPaymentMethod = setPaymentMethod;\r\n vm.setCardInstallment = setCardInstallment;\r\n vm.checkConta = checkConta;\r\n vm.boletoText = \"\";\r\n\r\n\r\n // Mock\r\n vm.card = {\r\n number: '4111111111111111',\r\n expMonth: '12',\r\n expYear: '2030',\r\n name: 'JOAO DA SILVA',\r\n ccv: '123',\r\n ddd: '22',\r\n cpf: '11111111111',\r\n phone: '999999999',\r\n dataNasc: '17/12/1992'\r\n };\r\n\r\n // Complete Cadastro Modal\r\n var completeCadastroModalVm = $scope;\r\n completeCadastroModalVm.completeCadastro = completeCadastro;\r\n vm.completeContaModal = $modal({\r\n scope: completeCadastroModalVm,\r\n templateUrl: '/Templates/complete-conta',\r\n show: vm.isCompleteContaEnabled\r\n });\r\n\r\n getPaymentMethods();\r\n\r\n $http\r\n .get('/Common/Parametro/?nome=VipCommerce.BoletoProcedimentos')\r\n .then(function (res) {\r\n vm.boletoText = res.data.Valor;\r\n }).catch(function (e) {\r\n console.log(e);\r\n });\r\n\r\n function setPaymentMethod(method) {\r\n\r\n if (vm.card.cpf != \"\") {\r\n vm.paymentMethod = method;\r\n }\r\n }\r\n\r\n function setCardInstallment(model) {\r\n vm.cardInstallment = model;\r\n }\r\n\r\n function getPaymentMethods() {\r\n $rootScope.isBusy = true;\r\n PagSeguroDirectPayment.getPaymentMethods({\r\n amount: Cart.total(),\r\n success: function (res) {\r\n for (var key in res.paymentMethods) {\r\n\r\n if (key !== 'BOLETO' && key !== 'CREDIT_CARD') continue;\r\n\r\n var method = res.paymentMethods[key];\r\n\r\n method.display = method.name === 'BOLETO' ? 'Boleto' : 'Cartão';\r\n\r\n vm.paymentMethods[key] = method;\r\n }\r\n\r\n $rootScope.isBusy = false;\r\n },\r\n error: function (res) {\r\n console.log(res);\r\n $rootScope.isBusy = false;\r\n }\r\n });\r\n }\r\n\r\n function getCreditCardBrand() {\r\n\r\n if (!vm.card || !vm.card.number) {\r\n vm.cardBrand = null;\r\n return;\r\n }\r\n\r\n var bin = vm.card.number.replace(/\\s+/g, '').substr(0, 6);\r\n\r\n $rootScope.isBusy = true;\r\n\r\n PagSeguroDirectPayment.getBrand({\r\n cardBin: bin,\r\n success: function (res) {\r\n vm.cardBrand = res.brand;\r\n vm.getCreditCardToken();\r\n vm.getCreditCardInstallments();\r\n $rootScope.isBusy = false;\r\n },\r\n error: function (res) {\r\n console.log(res);\r\n vm.cardBrand = null;\r\n $rootScope.isBusy = false;\r\n }\r\n });\r\n }\r\n\r\n function getCreditCardToken() {\r\n $rootScope.isBusy = true;\r\n PagSeguroDirectPayment.createCardToken({\r\n cardNumber: vm.card.number,\r\n brand: vm.cardBrand.name,\r\n cvv: vm.card.ccv,\r\n expirationMonth: vm.card.expMonth,\r\n expirationYear: vm.card.expYear,\r\n success: function (resp) {\r\n vm.card.token = resp.card.token;\r\n $rootScope.isBusy = false;\r\n },\r\n error: function (err) {\r\n console.log(err);\r\n $rootScope.isBusy = false;\r\n }\r\n });\r\n\r\n }\r\n\r\n function getCreditCardInstallments() {\r\n $rootScope.isBusy = true;\r\n PagSeguroDirectPayment.getInstallments({\r\n amount: Cart.totalWithFrete(),\r\n brand: vm.cardBrand.name,\r\n maxInstallmentNoInterest: 12,\r\n success: function (response) {\r\n vm.cardInstallments = response.installments[vm.cardBrand.name];\r\n $rootScope.isBusy = false;\r\n },\r\n error: function (response) {\r\n console.log(response);\r\n $rootScope.isBusy = false;\r\n }\r\n });\r\n }\r\n\r\n function finalizar() {\r\n\r\n if ($rootScope.isBusy) return;\r\n\r\n var reqObj = {};\r\n\r\n if (vm.paymentMethod === 'boleto') {\r\n reqObj = {\r\n transactionType: vm.paymentMethod\r\n };\r\n } else {\r\n reqObj = {\r\n transactionType: vm.paymentMethod,\r\n ccToken: vm.card.token,\r\n numParcelas: vm.cardInstallment.quantity,\r\n valorParcela: vm.cardInstallment.installmentAmount,\r\n ccName: vm.card.name,\r\n ccCpf: vm.card.cpf,\r\n ccDdd: vm.card.ddd,\r\n ccPhone: vm.card.phone,\r\n ccDataNasc: vm.card.dataNasc\r\n };\r\n }\r\n\r\n $rootScope.isBusy = true;\r\n\r\n $http({\r\n method: 'POST',\r\n url: '/Pedido/Finalizar',\r\n data: $.param(reqObj),\r\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\r\n }).then(function (res) {\r\n $rootScope.isBusy = false;\r\n\r\n if (res.data.Success === true) {\r\n Cart.reset();\r\n $window.location = '/Pedido/Success' + (vm.paymentMethod === 'boleto' ? '?boletoLink=' + res.data.Data : '');\r\n } else {\r\n if (res.data.ex == \"\") {\r\n alertify.error('Tivemos um problema ao tentar finalizar o pedido, por favor tente novamente mais tarde!');\r\n } else {\r\n alertify.error(res.data.Message);\r\n }\r\n }\r\n });\r\n }\r\n\r\n function checkConta() {\r\n console.log('checkConta');\r\n\r\n $http.get('/Conta/IsUserDataValid').then(function (res) {\r\n if (!res.data) {\r\n console.log(res.data);\r\n vm.isCompleteContaEnabled = true;\r\n vm.completeContaModal.$promise.then(vm.completeContaModal.show);\r\n } else {\r\n window.location.hash = 'entrega';\r\n }\r\n });\r\n }\r\n\r\n function completeCadastro(model) {\r\n $http.post('/Conta/CompleteCadastro', model)\r\n .success(function (resp) {\r\n if (resp.Success === true) {\r\n vm.completeContaModal.$promise.then(vm.completeContaModal.hide);\r\n window.location.hash = 'entrega';\r\n } else {\r\n alertify.error(resp.Message);\r\n }\r\n }).error(function () {\r\n alertify.error('Os dados informados são inválidos!');\r\n });\r\n }\r\n\r\n //checkConta();\r\n }\r\n})(angular);\r\n\n(function (angular) {\r\n 'use strict';\r\n\r\n enderecoController.$inject = [\"$scope\", \"$rootScope\", \"$http\", \"$window\", \"alertify\", \"Cart\"];\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"EnderecoController\", enderecoController);\r\n\r\n /* @ngInject */\r\n function enderecoController($scope, $rootScope, $http, $window, alertify, Cart) {\r\n\r\n $scope.isAddEnabled = false;\r\n $scope.isSearchEnabled = true;\r\n $scope.selectedModelId = null;\r\n $scope.isSelected = false;\r\n $scope.address = \"\";\r\n $scope.model = {\r\n cep: \"\",\r\n numero: 0,\r\n complemento: \"\",\r\n estado: \"\",\r\n cidade: \"\",\r\n bairro: \"\",\r\n endereco: \"\"\r\n };\r\n\r\n $scope.data = [];\r\n $scope.estadoData = [];\r\n $scope.cidadeData = [];\r\n $scope.bairroData = [];\r\n $scope.enderecoData = [];\r\n $scope.clienteEnderecoData = [];\r\n\r\n $scope.isEstadoEnabled = false;\r\n $scope.isCidadeEnabled = false;\r\n $scope.isBairroEnabled = false;\r\n $scope.isEnderecoEnabled = false;\r\n\r\n //#region Enderecos\r\n\r\n $scope.readEnderecos = function(bairroId) {\r\n $rootScope.isLoading = true;\r\n $http.get(\"/Enderecos/Enderecos\", {\r\n params: {\r\n id: bairroId\r\n }\r\n })\r\n .error(function() {\r\n\r\n })\r\n .success(function(data) {\r\n $scope.enderecoData = data;\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n });\r\n };\r\n\r\n $scope.enderecoChanged = function(endereco) {\r\n $scope.model.CEP = $scope.model.endereco.Cep;\r\n $scope.updateAddressText();\r\n console.log($scope.model.endereco.Cep);\r\n console.log($scope.model.endereco.Id);\r\n //$scope.\r\n // $scope.model.endereco = $scope.data.EnderecoModel || null;\r\n //$scope.cepChanged();\r\n };\r\n\r\n //#endregion\r\n\r\n //#region Bairros\r\n\r\n $scope.readBairros = function(cidadeId) {\r\n $rootScope.isLoading = true;\r\n $http.get(\"/Enderecos/Bairros\", {\r\n params: {\r\n id: cidadeId\r\n }\r\n })\r\n .error(function() {\r\n\r\n })\r\n .success(function(data) {\r\n $scope.bairroData = data;\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n });\r\n };\r\n $scope.bairroChanged = function() {\r\n $scope.readEnderecos($scope.model.bairro.Id);\r\n };\r\n\r\n //#endregion\r\n\r\n //#region Cidades\r\n\r\n $scope.readCidades = function(estadoId) {\r\n $rootScope.isLoading = true;\r\n $http.get(\"/Enderecos/Cidades\", {\r\n params: {\r\n id: estadoId\r\n }\r\n })\r\n .error(function() {\r\n\r\n })\r\n .success(function(data) {\r\n $scope.cidadeData = data;\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n });\r\n };\r\n $scope.cidademChanged = function() {\r\n $scope.readBairros($scope.model.cidade.Id);\r\n };\r\n\r\n //#endregion\r\n\r\n //#region Estados\r\n\r\n $scope.readEstados = function() {\r\n $rootScope.isLoading = true;\r\n $http.get(\"/Enderecos/Estados\")\r\n .error(function() {\r\n\r\n })\r\n .success(function(data) {\r\n $scope.estadoData = data;\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n });\r\n };\r\n $scope.readEstados();\r\n $scope.estadoChanged = function() {\r\n $scope.readCidades($scope.model.estado.Id);\r\n };\r\n\r\n //#endregion\r\n\r\n $scope.searchMode = function() {\r\n $scope.isSearchEnabled = !$scope.isSearchEnabled;\r\n $scope.resetModel();\r\n $scope.read();\r\n };\r\n\r\n $scope.closeAdd = function() {\r\n $scope.isAddEnabled = false;\r\n $scope.resetModel();\r\n };\r\n\r\n $scope.cepChanged = function () {\r\n console.log(\"cepc\");\r\n\r\n if (!$scope.model || !$scope.model.cep || $scope.model.cep.length <= 0) return;\r\n\r\n console.log(\"cepcb\");\r\n $rootScope.isLoading = true;\r\n $scope.isCepLoading = true;\r\n $scope.data = [];\r\n $scope.address = null;\r\n \r\n\r\n $http.get(\"/Enderecos/Cep\", {\r\n params: {\r\n id: $scope.model.cep\r\n }\r\n })\r\n .error(function () {\r\n $scope.resetEndereco();\r\n alertify.error(\"CEP não encontrado!\");\r\n })\r\n .success(function(data) {\r\n\r\n if (!data) {\r\n $scope.resetEndereco();\r\n alertify.error(\"CEP não encontrado!\");\r\n return;\r\n }\r\n\r\n $scope.isEnderecoEnabled = data.EnderecoModel.Nome == \"\" ? true : false;\r\n $scope.isEstadoEnabled = data.EstadoModel.Nome == \"\" ? true : false;\r\n $scope.isCidadeEnabled = data.CidadeModel.Nome == \"\" ? true : false;\r\n $scope.isBairroEnabled = data.BairroModel.Nome == \"\" ? true : false;\r\n\r\n $scope.data = data;\r\n\r\n \r\n $scope.model.estado = $scope.data.EstadoModel.Nome || null;\r\n $scope.model.cidade = $scope.data.CidadeModel.Nome || null;\r\n $scope.model.bairro = $scope.data.BairroModel.Nome || null;\r\n $scope.model.endereco = $scope.data.EnderecoModel.Nome || null;\r\n\r\n //$scope.updateAddressText();\r\n\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n $scope.isCepLoading = false;\r\n });\r\n };\r\n\r\n $scope.select = function(id) {\r\n $http.post(\"/Pedido/SelectEndereco/\" + id)\r\n .error(function() {\r\n $scope.selectedModelId = null;\r\n alertify.error(\"Houve um problema ao selecionar o endereço, tente novamente mais tarde!\");\r\n })\r\n .success(function(resp) {\r\n\r\n if (resp.Success === false) {\r\n $scope.isSelected = false;\r\n $scope.selectedModelId = null;\r\n alertify.error(\"Houve um problema ao selecionar o endereço, tente novamente mais tarde!\");\r\n }\r\n\r\n $scope.selectedEnderecoId = id;\r\n $scope.isSelected = true;\r\n $scope.calcFrete();\r\n });\r\n };\r\n\r\n $scope.delete = function(id) {\r\n\r\n if (!confirm(\"Tem certeza que deseja excluir?\")) return;\r\n\r\n $http.post(\"/Pedido/RemoveEndereco\", {\r\n id: id\r\n })\r\n .success(function(resp) {\r\n if (resp.Success === true) {\r\n $scope.read();\r\n $scope.isAddEnabled = false;\r\n alertify.success(resp.Message);\r\n } else {\r\n alertify.error(resp.Message);\r\n }\r\n });\r\n };\r\n $scope.read = function() {\r\n $scope.isEnderecoLoading = true;\r\n\r\n $scope.isEstadoEnabled = false;\r\n $scope.isCidadeEnabled = false;\r\n $scope.isBairroEnabled = false;\r\n $scope.isEnderecoEnabled = false;\r\n\r\n $scope.clienteEnderecoData = [];\r\n $http.get(\"/Pedido/EnderecoData\")\r\n .error(function() {\r\n $scope.clienteEnderecoData = null;\r\n })\r\n .success(function(data) {\r\n $scope.clienteEnderecoData = data;\r\n }).then(function() {\r\n $scope.isEnderecoLoading = false;\r\n });\r\n };\r\n\r\n $scope.updateAddressText = function() {\r\n if ($scope.model.endereco === null) {\r\n $scope.address = \"\";\r\n } else {\r\n\r\n $scope.address = $scope.model.endereco.Nome +\r\n \" , \" + $scope.model.bairro.Nome +\r\n \" - \" + $scope.model.cidade.Nome +\r\n \" - \" + $scope.model.estado.Nome;\r\n }\r\n };\r\n\r\n $scope.resetModel = function() {\r\n $scope.address = \"\";\r\n $scope.cidadeData = [];\r\n $scope.bairroData = [];\r\n $scope.enderecoData = [];\r\n\r\n $scope.model = {\r\n cep: null,\r\n numero: null,\r\n complemento: \"\",\r\n estado: \"\",\r\n cidade: \"\",\r\n bairro: \"\",\r\n endereco: \"\"\r\n };\r\n\r\n $scope.updateAddressText();\r\n };\r\n\r\n $scope.resetEndereco = function () {\r\n $scope.address = \"\";\r\n \r\n $scope.model = {\r\n numero: null,\r\n complemento: \"\",\r\n estado: \"\",\r\n cidade: \"\",\r\n bairro: \"\",\r\n endereco: \"\"\r\n };\r\n \r\n };\r\n\r\n $scope.save = function() {\r\n\r\n $rootScope.isLoading = true;\r\n console.log($scope.data.EnderecoModel);\r\n\r\n $http.post(\"/Pedido/AddEndereco\",\r\n {\r\n enderecoId: $scope.data.EnderecoModel.EnderecoId,\r\n enderecoNum: $scope.model.numero,\r\n enderecoComp: $scope.model.complemento,\r\n endereco: $scope.model.endereco,\r\n bairro: $scope.model.bairro\r\n })\r\n .error(function() {\r\n\r\n })\r\n .success(function(resp) {\r\n if (resp.Success === true) {\r\n $scope.resetModel();\r\n $scope.read();\r\n $scope.isAddEnabled = false;\r\n alertify.success(resp.Message);\r\n } else {\r\n alertify.error(resp.Message);\r\n }\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n });\r\n\r\n };\r\n\r\n $scope.calcFrete = function() {\r\n $scope.isFreteLoading = true;\r\n $scope.freteData = [];\r\n $http.get('/Frete/CalcCorreiosPreco')\r\n .success(function(resp) {\r\n if (resp.length > 0) {\r\n $scope.freteData = resp;\r\n }\r\n })\r\n .then(function() {\r\n $scope.isFreteLoading = false;\r\n });\r\n };\r\n\r\n $scope.setFreteModel = function(model) {\r\n\r\n $scope.freteModel = model;\r\n if (!$scope.freteModel) return;\r\n\r\n $http.post('/Pedido/SelectFrete', $scope.freteModel)\r\n .success(function(resp) {\r\n $scope.isFreteSelected = resp === 'True';\r\n Cart.freteVal = $scope.freteModel.Valor;\r\n setTimeout(function() {\r\n $scope.$apply();\r\n }, 10);\r\n })\r\n .error(function() {\r\n $scope.isFreteSelected = false;\r\n $scope.freteModel = null;\r\n });\r\n };\r\n $($window).bind(\"hashchange\", function() {\r\n\r\n if ($window.location.hash === \"#entrega\") {\r\n $scope.read();\r\n }\r\n\r\n });\r\n\r\n $scope.read();\r\n\r\n }\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n globalController.$inject = [\"$scope\", \"$rootScope\", \"$timeout\", \"$http\"];\r\n angular\r\n .module('friburgoeletro')\r\n .controller('GlobalController', globalController);\r\n\r\n /* @ngInject */\r\n function globalController($scope, $rootScope, $timeout, $http) {\r\n\r\n $scope.searchText = '';\r\n $scope.searchResultData = [];\r\n $scope.isSearchResultOpen = false;\r\n $scope.showSearchResult = showSearchResult;\r\n $scope.hideSearchResult = hideSearchResult;\r\n\r\n var filterTextTimeout;\r\n\r\n $scope.$watch('searchText',\r\n function (val) {\r\n if (filterTextTimeout) $timeout.cancel(filterTextTimeout);\r\n\r\n filterTextTimeout = $timeout(function () {\r\n search(val);\r\n }, 500);\r\n });\r\n\r\n function showSearchResult() {\r\n $scope.isSearchResultOpen = true;\r\n }\r\n\r\n function hideSearchResult() {\r\n $scope.isSearchResultOpen = false;\r\n }\r\n\r\n function search(text) {\r\n\r\n if (text.length < 3) return;\r\n\r\n $http({\r\n url: '/Catalogo/',\r\n params: {\r\n json: true,\r\n filter: text,\r\n pageSize: 5\r\n },\r\n method: 'GET'\r\n }).then(function (res) {\r\n $scope.searchResultData = res.data.Data;\r\n $scope.showSearchResult();\r\n });\r\n }\r\n }\r\n})(angular);\r\n\n(function (angular) {\r\n 'use strict';\r\n\r\n productController.$inject = [\"$scope\", \"$http\", \"$focus\", \"alertify\", \"Cart\"];\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"ProductController\", productController);\r\n\r\n\r\n /* @ngInject */\r\n function productController($scope, $http, $focus, alertify, Cart) {\r\n\r\n $scope.Cart = Cart;\r\n\r\n $scope.IsGrid = false;\r\n\r\n $scope.model = {};\r\n\r\n $scope.selectionModel = {};\r\n\r\n $scope.gridData = [];\r\n\r\n $scope.hasInGrid = function (colorId, valCaractId) {\r\n return _.some($scope.gridData.Produtos, function (x) {\r\n return (!colorId || x.CorId === colorId) && (x.ValorCaracteristicaId === valCaractId);\r\n });\r\n };\r\n\r\n $scope.readGridData = function (id) {\r\n\r\n $http.get(\"/Produto/GetGrade\", {\r\n params: {\r\n id: id\r\n }\r\n }).then(\r\n function (res) {\r\n $scope.IsGrid = true;\r\n $scope.gridData = res.data;\r\n\r\n console.log(res);\r\n if (!$scope.gridData || !$scope.gridData.Produtos || !$scope.gridData.Produtos.length > 0) return;\r\n\r\n var first = $scope.gridData.Produtos[0];\r\n\r\n $scope.selectionModel = {\r\n colorId: first.CorId,\r\n sizeId: first.ValorCaracteristicaId\r\n };\r\n\r\n $scope.setModel();\r\n },\r\n function(err) { console.log(err); }\r\n )};\r\n\r\n $scope.setModel = function () {\r\n\r\n $scope.model = _.find($scope.gridData.Produtos, function (x) {\r\n return x.CorId === $scope.selectionModel.colorId &&\r\n x.ValorCaracteristicaId === $scope.selectionModel.sizeId;\r\n });\r\n\r\n $scope.model.qtd = 1;\r\n\r\n $focus(\"qtd\");\r\n };\r\n\r\n $scope.isQtdFocused = false;\r\n\r\n $scope.sizeFilter = function (colorId) {\r\n return function (size) {\r\n return _.some($scope.gridData.Produtos, function (x) {\r\n return x.CorId === colorId &&\r\n x.ValorCaracteristicaId === size.ValorId;\r\n });\r\n };\r\n };\r\n\r\n $scope.colorFilter = function (color) {\r\n return _.some($scope.gridData.Produtos, function (x) {\r\n return x.CorId === color.Id;\r\n });\r\n };\r\n\r\n $scope.addToCart = function () {\r\n if (!$scope.model) return;\r\n\r\n Cart.add($scope.model.Id, $scope.model.qtd);\r\n $scope.model.qtd = 1;\r\n };\r\n }\r\n})(angular);\r\n\n/**\r\n * Created by mayke on 30/09/15.\r\n */\r\n(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .directive('busyIndicator', busyIndicator);\r\n\r\n function busyIndicator() {\r\n var directive = {\r\n transclude: true,\r\n replace: true,\r\n scope: {\r\n active: '=',\r\n message: '='\r\n },\r\n\r\n template: '
    ' +\r\n '
    ' +\r\n '
    {{message}}
    ' +\r\n '
    ' +\r\n '
    ',\r\n\r\n restrict: 'E',\r\n link: link\r\n };\r\n\r\n function link(scope, element, attrs) {\r\n\r\n $(element).on('click', function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n\r\n $(window).on('resize', refresh);\r\n\r\n refresh();\r\n\r\n function refresh() {\r\n var cont = $(element).find('.busy-indicator-container');\r\n\r\n $(element).css({\r\n width: $(window).width(),\r\n height: $(window).height()\r\n });\r\n\r\n $(cont).css({\r\n left: ($(element).width() / 2) - ($(cont).width() / 2),\r\n top: ($(element).height() / 2) - ($(cont).height() / 2)\r\n });\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n clickOutside.$inject = [\"$document\", \"$parse\", \"$timeout\"];\r\n angular\r\n .module('friburgoeletro')\r\n .directive('clickOutside', clickOutside);\r\n\r\n /* @ngInject */\r\n function clickOutside($document, $parse, $timeout) {\r\n return {\r\n restrict: 'A',\r\n link: function ($scope, elem, attr) {\r\n\r\n // postpone linking to next digest to allow for unique id generation\r\n $timeout(function () {\r\n var classList = (attr.outsideIfNot !== undefined) ? attr.outsideIfNot.replace(', ', ',').split(',') : [],\r\n fn;\r\n\r\n // add the elements id so it is not counted in the click listening\r\n if (attr.id !== undefined) {\r\n classList.push(attr.id);\r\n }\r\n\r\n function eventHandler(e) {\r\n\r\n // check if our element already hidden and abort if so\r\n if (angular.element(elem).hasClass(\"ng-hide\")) {\r\n return;\r\n }\r\n\r\n var i = 0,\r\n element;\r\n\r\n // if there is no click target, no point going on\r\n if (!e || !e.target) {\r\n return;\r\n }\r\n\r\n // loop through the available elements, looking for classes in the class list that might match and so will eat\r\n for (element = e.target; element; element = element.parentNode) {\r\n var id = element.id,\r\n classNames = element.className,\r\n l = classList.length;\r\n\r\n // Unwrap SVGAnimatedString classes\r\n if (classNames && classNames.baseVal !== undefined) {\r\n classNames = classNames.baseVal;\r\n }\r\n\r\n // loop through the elements id's and classnames looking for exceptions\r\n for (i = 0; i < l; i++) {\r\n // check for exact matches on id's or classes, but only if they exist in the first place\r\n if ((id !== undefined && id === classList[i]) || (classNames && classNames === classList[i])) {\r\n // now let's exit out as it is an element that has been defined as being ignored for clicking outside\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // if we have got this far, then we are good to go with processing the command passed in via the click-outside attribute\r\n return $scope.$apply(function () {\r\n fn = $parse(attr['clickOutside']);\r\n return fn($scope);\r\n });\r\n }\r\n\r\n // if the devices has a touchscreen, listen for this event\r\n if (_hasTouch()) {\r\n $document.on('touchstart', eventHandler);\r\n }\r\n\r\n // still listen for the click event even if there is touch to cater for touchscreen laptops\r\n $document.on('click', eventHandler);\r\n\r\n // when the scope is destroyed, clean up the documents event handlers as we don't want it hanging around\r\n $scope.$on('$destroy', function () {\r\n if (_hasTouch()) {\r\n $document.off('touchstart', eventHandler);\r\n }\r\n\r\n $document.off('click', eventHandler);\r\n });\r\n\r\n // private function to attempt to figure out if we are on a touch device\r\n function _hasTouch() {\r\n // works on most browsers, IE10/11 and Surface\r\n return 'ontouchstart' in window || navigator.maxTouchPoints;\r\n };\r\n });\r\n }\r\n };\r\n }\r\n})(angular);\r\n\n(function (angular) {\r\n 'use strict';\r\n\r\n angular.module('friburgoeletro')\r\n .factory(\"$focus\", [\r\n '$timeout', function($timeout) {\r\n return function(id) {\r\n $timeout(function() {\r\n var element = document.getElementById(id);\r\n if (element) {\r\n element.focus();\r\n element.select();\r\n }\r\n });\r\n };\r\n }\r\n ]);\r\n\r\n angular.module('friburgoeletro')\r\n .directive(\"ngFocus\", [\r\n '$timeout', function($timeout) {\r\n return function(scope, elem, attrs) {\r\n scope.$watch(attrs.ngFocus, function(newval) {\r\n if (newval) {\r\n $timeout(function() {\r\n elem[0].focus();\r\n }, 0, false);\r\n }\r\n });\r\n };\r\n }\r\n ]);\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .directive(\"isLoading\", function() {\r\n return {\r\n restrict: \"A\",\r\n replace: true,\r\n scope: {\r\n isLoading: '=isLoading'\r\n },\r\n link: link\r\n };\r\n });\r\n\r\n function link(scope, el, attrs) {\r\n var html = el.html();\r\n\r\n scope.$watch('isLoading', function() {\r\n if (scope.isLoading === true) {\r\n el.addClass('disabled');\r\n el.attr('disabled', 'disabled');\r\n el.prepend('');\r\n } else {\r\n el.removeClass('disabled');\r\n el.removeAttr('disabled');\r\n el.html(html);\r\n }\r\n });\r\n }\r\n})(angular);\n/**\r\n * Created by mayke on 30/09/15.\r\n */\r\n(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .directive('spinner', spinner);\r\n\r\n function spinner() {\r\n var directive = {\r\n template: '' +\r\n '' +\r\n '',\r\n restrict: 'E'\r\n };\r\n return directive;\r\n }\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .filter(\"aspnetJsonDate\", function() {\r\n return function(value) {\r\n\r\n var pattern = /Date\\(([^)]+)\\)/;\r\n var results = pattern.exec(value);\r\n var dt = new Date(parseFloat(results[1]));\r\n return +dt.getDate() + \"/\" + (dt.getMonth() + 1) + \"/\" + dt.getFullYear();\r\n\r\n };\r\n });\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .filter(\"unique\", function() {\r\n return function(collection, keyname) {\r\n var output = [],\r\n keys = [];\r\n\r\n angular.forEach(collection, function(item) {\r\n var key = item[keyname];\r\n if (keys.indexOf(key) === -1) {\r\n keys.push(key);\r\n output.push(item);\r\n }\r\n });\r\n return output;\r\n };\r\n });\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n cart.$inject = [\"$http\", \"$rootScope\", \"alertify\"];\r\n angular\r\n .module('friburgoeletro')\r\n .factory('Cart', cart);\r\n\r\n /* @ngInject */\r\n function cart($http, $rootScope, alertify) {\r\n var service = {};\r\n\r\n service.data = [];\r\n\r\n service.freteVal = 0;\r\n\r\n service.count = 0;\r\n\r\n service.read = function () {\r\n\r\n $http.get(\"/Cart/Read\").error(function (data) {\r\n\r\n }).success(function (data) {\r\n service.data = data;\r\n\r\n _(data.Items).map(function (x) {\r\n x.Thumb = service.getImageUrl(x.Thumb);\r\n });\r\n\r\n service.count = data.Items ? data.Items.length : 0;\r\n }).then(function () {\r\n\r\n });\r\n };\r\n\r\n service.add = function (prodId, qtd) {\r\n\r\n var data = {\r\n id: prodId,\r\n qtd: qtd\r\n };\r\n\r\n $http.post(\"/Cart/AddItem\", data)\r\n .error(function (data, status, headers, config) {\r\n\r\n }).success(function (data) {\r\n\r\n if (data.Success === true) {\r\n\r\n $rootScope.$broadcast('Cart.add');\r\n alertify.success('Item adicionado ao carrinho!');\r\n\r\n service.read();\r\n }\r\n\r\n }).error(function () {\r\n alertify.success('Falha ao adicionar item ao carrinho!');\r\n });\r\n };\r\n\r\n service.remove = function (item) {\r\n\r\n $http.post(\"/Cart/RemoveItem\", {\r\n id: item.Id,\r\n qtd: 0,\r\n removeAll: true\r\n }).error(function (data, status, headers, config) {\r\n\r\n }).success(function (data) {\r\n\r\n if (data === true) {\r\n\r\n alertify.success(\"Item removido com sucesso!\");\r\n\r\n service.read();\r\n\r\n }\r\n\r\n }).error(function () {\r\n alertify.success('Falha ao remover item!');\r\n });\r\n\r\n };\r\n\r\n service.reset = function (cb) {\r\n $http.post(\"/Cart/Reset\")\r\n .error(function (res, status, headers, config) {\r\n\r\n }).success(function (res) {\r\n service.data = [];\r\n service.count = 0;\r\n\r\n if (cb)\r\n cb(res);\r\n });\r\n };\r\n\r\n service.getImageUrl = function (relativeUrl) {\r\n if (relativeUrl && relativeUrl.length > 0) {\r\n return \"/Image/Thumb/?src=\" + encodeURI(relativeUrl) + \"&w=84&h=84\";\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n service.total = function () {\r\n\r\n var total = 0;\r\n\r\n $(service.data.Items).each(function (i, el) {\r\n total += el.Quantidade * el.Preco;\r\n });\r\n\r\n return total;\r\n };\r\n\r\n service.totalWithFrete = function () {\r\n return service.total() + service.freteVal;\r\n };\r\n\r\n return service;\r\n }\r\n})(angular);\r\n\n(function (angular) {\r\n 'use strict';\r\n\r\n catalog.$inject = [\"$resource\"];\r\n angular\r\n .module('friburgoeletro')\r\n .factory('Catalog', catalog);\r\n\r\n /* @ngInject */\r\n function catalog($resource) {\r\n return $resource('/Catalogo/Read');\r\n }\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .factory(\"$scopes\", function() {\r\n var mem = {};\r\n\r\n return {\r\n store: function(key, value) {\r\n mem[key] = value;\r\n },\r\n get: function(key) {\r\n return mem[key];\r\n }\r\n };\r\n });\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n ticket.$inject = [\"$http\", \"$rootScope\", \"alertify\"];\r\n angular\r\n .module('friburgoeletro')\r\n .factory('Ticket', ticket);\r\n\r\n /* @ngInject */\r\n function ticket($http, $rootScope, alertify) {\r\n var service = {};\r\n\r\n service.data = [];\r\n \r\n service.read = function () {\r\n\r\n $http.get(\"/Ticket/Read\").error(function (data) {\r\n\r\n }).success(function (data) {\r\n service.data = data;\r\n\r\n }).then(function () {\r\n\r\n });\r\n };\r\n \r\n return service;\r\n }\r\n})(angular);\r\n\n(function (angular) {\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"ClientesController\", [\r\n '$scope', '$http', function ($scope, $http) {\r\n\r\n $scope.isLoading = false;\r\n\r\n $scope.data = [];\r\n\r\n $(document).on('cadastro.success', function () {\r\n $scope.read();\r\n });\r\n\r\n $scope.read = function () {\r\n $scope.isLoading = true;\r\n $http.get(\"/Admin/ClientesRead\")\r\n .success(function (data, status, headers, config) {\r\n\r\n //pega os dados do response\r\n $scope.data = data.Data;\r\n\r\n //para cada revendedor...\r\n for (var i = 0; i < $scope.data.length; i++) {\r\n \r\n //cria um array chart que vai receber os dados do gráfico\r\n $scope.data[i].chart = [];\r\n\r\n //cria um array para receber os pedidos por mês\r\n $scope.data[i].list = [];\r\n\r\n //cria uma variável para armazenar o valor para se calcular a porcentagem das progress bars\r\n $scope.data[i].baseCalculo = 0;\r\n\r\n //cria uma variável para armazenar o valor total dos pedidos\r\n $scope.data[i].valorTotal = 0;\r\n\r\n //preenche o array chart com um objeto para cada mês, com valor 0\r\n for (var mes = 1; mes <= 12; mes++) {\r\n $scope.data[i].chart.push({\r\n\r\n //mês do ano\r\n label: beautify(mes),\r\n\r\n //valor dos pedidos naquele mês\r\n value: 0,\r\n\r\n //porcentagem em relação ao valor total de pedidos no ano\r\n percentage: 0\r\n });\r\n }\r\n\r\n //pega todos os pedidos do revendedor\r\n var pedidos = $scope.data[i].Pedidos;\r\n\r\n //para cada pedido\r\n for (var j in pedidos) {\r\n\r\n //pega a data do pedido\r\n var dataPedido = toDate(pedidos[j].Data);\r\n\r\n pedidos[j].Data = dataPedido;\r\n\r\n //extrai o mês em que o pedido foi feito\r\n var mes = dataPedido.getMonth();\r\n\r\n //soma o valor do pedido no objeto do chart correspondente ao mês\r\n $scope.data[i].chart[mes - 1].value += pedidos[j].Total;\r\n\r\n //adiciona o pedido na lista de pedidos por mês\r\n addListItem($scope.data[i].list, beautify(mes), pedidos[j]);\r\n\r\n //PARA UTILIZAR A SOMA DE TODOS OS VALORES MENSAIS COMO PARÂMETRO DA PORCENTAGEM, DESCOMENTE ESTA LINHA\r\n //atualiza o valor da base de cálculo da porcentagem\r\n //$scope.data[i].baseCalculo += pedidos[j].Total;\r\n\r\n //atualiza o valor total dos pedidos\r\n $scope.data[i].valorTotal += pedidos[j].Total;\r\n }\r\n\r\n //PARA UTILIZAR O MAIOR VALOR MENSAL COMO PARÂMETRO DA PORCENTAGEM, DESCOMENTE ESTA LINHA\r\n $scope.data[i].baseCalculo = _.max($scope.data[i].chart, function (item) { return item.value; }).value;\r\n\r\n //depois que o valor total foi calculado e o chart foi preenchido...\r\n\r\n //faz a iteração nos objetos do chart, um para cada mês do ano\r\n for (var k in $scope.data[i].chart) {\r\n\r\n //pega o valor do objeto\r\n var current = $scope.data[i].chart[k].value;\r\n\r\n //calcula a porcentagem da progress bar\r\n var percentage = calcPercentage(current, $scope.data[i].baseCalculo);\r\n\r\n //atribui a porcentagem ao objeto do chart\r\n $scope.data[i].chart[k].percentage = percentage;\r\n }\r\n\r\n }\r\n\r\n })\r\n .error(function (data, status, headers, config) {\r\n\r\n }\r\n ).then(function () {\r\n $scope.isLoading = false;\r\n });\r\n };\r\n $scope.read();\r\n\r\n function beautify(mes) {\r\n switch (mes) {\r\n case 1:\r\n return \"JAN\";\r\n case 2:\r\n return \"FEV\";\r\n case 3:\r\n return \"MAR\";\r\n case 4:\r\n return \"ABR\";\r\n case 5:\r\n return \"MAI\";\r\n case 6:\r\n return \"JUN\";\r\n case 7:\r\n return \"JUL\";\r\n case 8:\r\n return \"AGO\";\r\n case 9:\r\n return \"SET\";\r\n case 10:\r\n return \"OUT\";\r\n case 11:\r\n return \"NOV\";\r\n case 12:\r\n return \"DEZ\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n function calcPercentage(current, total) {\r\n return current * 100 / total;\r\n }\r\n\r\n function addListItem(list, mes, pedido) {\r\n var item = _.findWhere(list, { label: mes });\r\n\r\n if (item) {\r\n item.pedidos.push(pedido);\r\n } else {\r\n list.push({\r\n label: mes,\r\n pedidos: [pedido]\r\n });\r\n }\r\n }\r\n\r\n function toDate(str) {\r\n var parts = str.split('/');\r\n var d = parts[0];\r\n var m = parts[1];\r\n var y = parts[2];\r\n\r\n return new Date(y, m, d, 0, 0, 0, 0);\r\n }\r\n }\r\n ]);\r\n})(angular);\n(function (angular) {\r\n angular\r\n .module('friburgoeletro').controller(\"ContaController\", [\r\n '$scope', '$http', function($scope, $http) {\r\n\r\n\r\n }\r\n ]);\r\n})(angular);\n(function (angular) {\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"PedidosController\", [\r\n '$scope', '$http', 'alertify', function ($scope, $http, alertify) {\r\n\r\n $scope.isLoading = false;\r\n\r\n $scope.page = 1;\r\n\r\n $scope.data = [];\r\n\r\n $scope.detailModel = {};\r\n\r\n $scope.read = function () {\r\n $scope.isLoading = true;\r\n $http.get(\"/Admin/PedidosRead/\" + $scope.page)\r\n .success(function (data) {\r\n\r\n var d = data.Data;\r\n\r\n $(d).each(function (i, el) {\r\n\r\n var status = el.Status;\r\n\r\n el.StatusNumber = status;\r\n\r\n switch (status) {\r\n case 0:\r\n el.Status = \"Aprovado\";\r\n break;\r\n case 1:\r\n el.Status = \"Reprovado\";\r\n break;\r\n case 2:\r\n el.Status = \"Pagamento Aprovado\";\r\n break;\r\n case 3:\r\n el.Status = \"Pagamento Reprovado\";\r\n break;\r\n case 4:\r\n el.Status = \"Em Transporte\";\r\n break;\r\n case 5:\r\n el.Status = \"Finalizado\";\r\n break;\r\n case 6:\r\n el.Status = \"Aguardando Pagamento\";\r\n break;\r\n case 7:\r\n el.Status = \"Aguardando Liberação\";\r\n break;\r\n case 8:\r\n el.Status = \"Pré Venda\";\r\n break;\r\n case 9:\r\n el.Status = \"Aguardando Separação\";\r\n break;\r\n case 10:\r\n el.Status = \"Separado\";\r\n break;\r\n }\r\n\r\n });\r\n\r\n $scope.data = $scope.data.concat(d);\r\n\r\n })\r\n .error(function (data, status, headers, config) {\r\n\r\n }\r\n ).then(function () {\r\n $scope.isLoading = false;\r\n });\r\n };\r\n\r\n $scope.loadMore = function () {\r\n $scope.page = $scope.page + 1;\r\n\r\n $scope.read();\r\n };\r\n\r\n $scope.setDetailModel = function (item) {\r\n console.log(item);\r\n $scope.detailModel = item;\r\n };\r\n\r\n $scope.printBoleto = function (item) {\r\n $http.get('/Pedido/PrintBoleto/' + item.Id)\r\n .success(function (data) {\r\n var win = window.open(data.Url, 'Imprimir Boleto', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=yes, width=800, height=600');\r\n\r\n try {\r\n win.focus();\r\n } catch (e) {\r\n alertify.error('Os popups estão bloqueados em seu navegador, por favor permita que esta página exiba popups nas configurações de seu navegador!');\r\n }\r\n });\r\n };\r\n\r\n $scope.getDanfe = function (item) {\r\n $http.get('/Admin/CheckXml/' + item.Id)\r\n .success(function (data) {\r\n if (!data.Success) {\r\n alertify.error('Nota Fiscal não diponível no momento. Tente novamente mais tarde!');\r\n return;\r\n }\r\n\r\n var win = window.open('/Admin/GetDanfe/' + item.Id, 'Imprimir Danfe', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=yes, width=800, height=600');\r\n\r\n try {\r\n win.focus();\r\n\r\n } catch (e) {\r\n alertify.error('Os popups estão bloqueados em seu navegador, por favor permita que esta página exiba popups nas configurações de seu navegador!');\r\n }\r\n\r\n }).error(function () {\r\n alertify.error('Nota Fiscal não diponível no momento. Tente novamente mais tarde!');\r\n });\r\n }\r\n\r\n $scope.getXml = function (item) {\r\n $http.get('/Admin/CheckXml/' + item.Id)\r\n .success(function (data) {\r\n if (!data.Success) {\r\n alertify.error('Nota Fiscal não diponível no momento. Tente novamente mais tarde!');\r\n return;\r\n }\r\n\r\n var win = window.open('/Admin/DownloadXml/' + item.Id, '_blank');\r\n\r\n try {\r\n win.focus();\r\n } catch (e) {\r\n alertify.error('Os popups estão bloqueados em seu navegador, por favor permita que esta página exiba popups nas configurações de seu navegador!');\r\n }\r\n\r\n }).error(function () {\r\n alertify.error('Nota Fiscal não diponível no momento. Tente novamente mais tarde!');\r\n });\r\n }\r\n\r\n $scope.read();\r\n }\r\n ]);\r\n})(angular);\n(function (angular) {\r\n\r\n 'use strict';\r\n\r\n RelatorioController.$inject = [\"$http\", \"alertify\"];\r\n angular\r\n .module('friburgoeletro')\r\n .controller('RelatorioController', RelatorioController);\r\n\r\n /* @ngInject */\r\n function RelatorioController($http, alertify) {\r\n var vm = this;\r\n vm.reportData = [];\r\n\r\n $http.get('/Admin/ClientesRead')\r\n .then(function (res) {\r\n\r\n vm.revendedores = res.data.Data;\r\n\r\n }, function (err) {\r\n console.log(err.data);\r\n });\r\n\r\n vm.gerarRelatorio = function (params) {\r\n\r\n if (params.dataInicial && params.dataFinal) {\r\n $http.post('/Relatorio/RelatorioVendas', params)\r\n .then(function (res) {\r\n\r\n vm.comissao = res.data.comissao;\r\n vm.dataComissao = res.data.dataComissao;\r\n vm.reportData = res.data.reportData;\r\n vm.reportData.forEach(criarResumo);\r\n\r\n }, function (err) {\r\n console.log(err);\r\n alertify.error(err.data);\r\n });\r\n }\r\n\r\n }\r\n\r\n function criarResumo(item) {\r\n item.Pedidos.forEach(calcularComissao);\r\n\r\n var totais = _.pluck(item.Pedidos, 'Total');\r\n item.Total = 0;\r\n for (var i in totais) {\r\n item.Total += totais[i];\r\n }\r\n\r\n var comissoes = _.pluck(item.Pedidos, 'Comissao');\r\n item.Comissao = 0;\r\n for (var i in comissoes) {\r\n item.Comissao += comissoes[i];\r\n }\r\n }\r\n\r\n function calcularComissao(pedido) {\r\n pedido.Comissao = (pedido.Total - pedido.ValorFrete) * vm.comissao / 100;\r\n }\r\n\r\n }\r\n\r\n})(angular);\n(function (angular) {\r\n 'use strict';\r\n\r\n ticketController.$inject = [\"$scope\", \"$http\"];\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"TicketsController\", ticketController);\r\n\r\n /* @ngInject */\r\n function ticketController($scope,$http) {\r\n\r\n \r\n $scope.data = {};\r\n \r\n $scope.read = function () {\r\n\r\n $http.get(\"/Ticket/Read\").error(function (data) {\r\n\r\n }).success(function (data) {\r\n $scope.data = data;\r\n \r\n }).then(function () {\r\n\r\n });\r\n };\r\n\r\n $scope.read();\r\n\r\n }\r\n})(angular);\n\r\nFastClick.notNeeded = function (layer) {\r\n var metaViewport;\r\n var chromeVersion;\r\n var blackberryVersion;\r\n var firefoxVersion;\r\n\r\n // Devices that don't support touch don't need FastClick\r\n if (typeof window.ontouchstart === 'undefined' || layer === null) {\r\n return true;\r\n }\r\n \r\n\r\n // Chrome version - zero for other browsers\r\n chromeVersion = +(/Chrome\\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1];\r\n\r\n if (chromeVersion) {\r\n\r\n if (deviceIsAndroid) {\r\n metaViewport = document.querySelector('meta[name=viewport]');\r\n\r\n if (metaViewport) {\r\n // Chrome on Android with user-scalable=\"no\" doesn't need FastClick (issue #89)\r\n if (metaViewport.content.indexOf('user-scalable=no') !== -1) {\r\n return true;\r\n }\r\n // Chrome 32 and above with width=device-width or less don't need FastClick\r\n if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) {\r\n return true;\r\n }\r\n }\r\n\r\n // Chrome desktop doesn't need FastClick (issue #15)\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n if (deviceIsBlackBerry10) {\r\n blackberryVersion = navigator.userAgent.match(/Version\\/([0-9]*)\\.([0-9]*)/);\r\n\r\n // BlackBerry 10.3+ does not require Fastclick library.\r\n // https://github.com/ftlabs/fastclick/issues/251\r\n if (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) {\r\n metaViewport = document.querySelector('meta[name=viewport]');\r\n\r\n if (metaViewport) {\r\n // user-scalable=no eliminates click delay.\r\n if (metaViewport.content.indexOf('user-scalable=no') !== -1) {\r\n return true;\r\n }\r\n // width=device-width (or less than device-width) eliminates click delay.\r\n if (document.documentElement.scrollWidth <= window.outerWidth) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97)\r\n if (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') {\r\n return true;\r\n }\r\n\r\n // Firefox version - zero for other browsers\r\n firefoxVersion = +(/Firefox\\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1];\r\n\r\n if (firefoxVersion >= 27) {\r\n // Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896\r\n\r\n metaViewport = document.querySelector('meta[name=viewport]');\r\n if (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) {\r\n return true;\r\n }\r\n }\r\n\r\n // IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version\r\n // http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx\r\n if (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') {\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nFastClick.attach(document.body);\r\n\r\n\r\n(function () {\r\n $.fn.center = function () {\r\n this.css(\"top\", ($(window).height() - this.outerHeight()) / 2 + \"px\");\r\n this.css(\"left\", ($(window).width() - this.outerWidth()) / 2 + \"px\");\r\n this.css(\"position\", \"fixed\");\r\n return this;\r\n };\r\n\r\n $(\"input[type=number]\").livequery(function () {\r\n $(this).off(\"keydown.live\");\r\n $(this).on(\"keydown.live\", function (e) {\r\n\r\n if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||\r\n (e.keyCode === 65 && e.ctrlKey === true) ||\r\n (e.keyCode >= 35 && e.keyCode <= 40)) {\r\n\r\n return;\r\n }\r\n\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n\r\n function handleInputFocus(element) {\r\n if ($(element).val() && $(element).val().length > 0)\r\n $(element).parent(\".editor-field\").prev(\".editor-label\").addClass(\"floating\");\r\n\r\n $(element).on(\"change\", function () {\r\n if ($(element).val() && $(element).val().length > 0) {\r\n $(element).parent(\".editor-field\").prev(\".editor-label\").addClass(\"floating\");\r\n } else {\r\n $(element).parent(\".editor-field\").prev(\".editor-label\").removeClass(\"floating\");\r\n }\r\n });\r\n\r\n $(element).on(\"focusin\", function () {\r\n $(element).parent(\".editor-field\").prev(\".editor-label\").addClass(\"floating\");\r\n });\r\n\r\n $(element).on(\"focusout\", function () {\r\n if (!$(element).val() || $(element).val().length <= 0)\r\n $(element).parent(\".editor-field\").prev(\".editor-label\").removeClass(\"floating\");\r\n });\r\n\r\n }\r\n\r\n $(\"input, textarea, select\").each(function (i, el) {\r\n handleInputFocus(el);\r\n });\r\n\r\n $(\"input, textarea, select\").livequery(function () {\r\n handleInputFocus(this);\r\n });\r\n\r\n alertify.defaults = {\r\n // dialogs defaults\r\n modal: true,\r\n basic: false,\r\n frameless: false,\r\n movable: true,\r\n resizable: true,\r\n closable: true,\r\n closableByDimmer: true,\r\n maximizable: true,\r\n startMaximized: false,\r\n pinnable: true,\r\n pinned: true,\r\n padding: true,\r\n overflow: true,\r\n maintainFocus: true,\r\n transition: 'zoom',\r\n autoReset: true,\r\n\r\n // notifier defaults\r\n notifier: {\r\n // auto-dismiss wait time (in seconds)\r\n delay: 50000,\r\n // default position\r\n position: 'top-right'\r\n },\r\n\r\n // language resources\r\n glossary: {\r\n // dialogs default title\r\n title: 'Mensagem',\r\n // ok button text\r\n ok: 'OK',\r\n // cancel button text\r\n cancel: 'Cancelar'\r\n },\r\n\r\n // theme settings\r\n theme: {\r\n // class name attached to prompt dialog input textbox.\r\n input: 'ajs-input',\r\n // class name attached to ok button\r\n ok: 'ajs-ok',\r\n // class name attached to cancel button\r\n cancel: 'ajs-cancel'\r\n }\r\n };\r\n\r\n $(document).ready(function () {\r\n\r\n $(function () {\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n });\r\n\r\n $(window).on(\"load\", function () {\r\n $(\"#wrapper\").animate({\r\n opacity: 1\r\n }, 500);\r\n\r\n var size = $(window).width() > 991 ? $(\".produto .buy-cont\").parent().width() + 30 : 0;\r\n\r\n $(\"#active-photo\")\r\n .elevateZoom({\r\n gallery: 'gallery',\r\n cursor: 'pointer',\r\n galleryActiveClass: 'active',\r\n easing: true,\r\n imageCrossfade: true,\r\n tintColour: \"#d5d5d5\",\r\n responsive: true,\r\n zoomWindowPosition: $(window).width() > 991 ? \"buy-cont\" : null,\r\n zoomWindowWidth: size,\r\n zoomWindowHeight: size,\r\n loadingIcon: '/Images/loader.svg'\r\n });\r\n });\r\n\r\n $(document).mouseup(function (e) {\r\n var container = $(\".close-click-outside\");\r\n\r\n if (!container.is(e.target)\r\n && container.has(e.target).length === 0)\r\n {\r\n container.hide();\r\n }\r\n });\r\n });\r\n \r\n})();","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"CartController\", cartController);\r\n\r\n /* @ngInject */\r\n function cartController($scope, $rootScope, $window, Cart) {\r\n\r\n var vm = this;\r\n\r\n vm.added = false;\r\n vm.cart = Cart;\r\n vm.cart.read();\r\n\r\n $window.onload = function () {\r\n vm.cart.read();\r\n };\r\n\r\n $rootScope.$on(\"Cart.add\", function () {\r\n\r\n vm.added = true;\r\n\r\n setTimeout(function () {\r\n\r\n vm.cart.read();\r\n\r\n $scope.$apply(function () {\r\n vm.added = false;\r\n });\r\n\r\n }, 100);\r\n });\r\n }\r\n})(angular);\r\n","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"CatalogController\", catalogController);\r\n\r\n /* @ngInject */\r\n function catalogController($scope, $http, $window) {\r\n\r\n var vm = this;\r\n\r\n vm.precoModel = {\r\n min: 0,\r\n max: 0\r\n };\r\n\r\n vm.corData = [];\r\n vm.orderData = [\r\n { name: \"Menor Preço\", value: \"preco ASC\" },\r\n { name: \"Maior Preço\", value: \"preco DESC\" },\r\n { name: \"Descrição\", value: \"descricao ASC\" },\r\n ];\r\n vm.orderModel = vm.orderData[0];\r\n\r\n vm.pageSizeData = [\r\n { name: \"09 itens\", value: 9 },\r\n { name: \"12 itens\", value: 12 },\r\n { name: \"15 itens\", value: 15 },\r\n { name: \"30 itens\", value: 30 }\r\n ];\r\n\r\n vm.pageSizeModel = vm.pageSizeData[0];\r\n\r\n vm.filterBy = \"Descricao\";\r\n vm.filter = filter;\r\n\r\n vm.init = init;\r\n\r\n function filter() {\r\n\r\n var reqObj = {\r\n paginate: vm.paginate,\r\n pageSize: vm.pageSizeModel.value,\r\n orderBy: vm.orderModel.value.split(\" \")[0],\r\n orderDirection: vm.orderModel.value.split(\" \")[1],\r\n cores: vm.corData\r\n .filter(function(x) {\r\n return x.isSelected;\r\n })\r\n .map(function(x) {\r\n return x.Id;\r\n }).join()\r\n };\r\n\r\n $window.location.href = $window.location.pathname + \"?\" + $.param(reqObj);\r\n };\r\n\r\n function init(paginate, pageSize, selectedColors, order) {\r\n\r\n vm.paginate = paginate || false;\r\n\r\n if (order && order.length > 0)\r\n vm.orderModel = _.find(vm.orderData, function(x) {\r\n return x.value === order;\r\n });\r\n\r\n if (pageSize)\r\n vm.pageSizeModel = _.find(vm.pageSizeData, function(x) {\r\n return x.value === pageSize;\r\n });\r\n\r\n if (vm.pageSize)\r\n $(vm.pageSizeData).each(function(i, el) {\r\n if (el.value === vm.pageSize)\r\n vm.pageSizeModel = el;\r\n });\r\n\r\n if (vm.order)\r\n $(vm.orderData).each(function(i, el) {\r\n if (el.value === vm.order)\r\n vm.orderModel = el;\r\n });\r\n };\r\n }\r\n})(angular);","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .controller('CheckoutController', checkoutController);\r\n\r\n /* @ngInject */\r\n function checkoutController($scope, $rootScope, $http, $window, $modal, $, Cart) {\r\n\r\n var vm = this;\r\n\r\n vm.Cart = Cart;\r\n vm.isCompleteContaEnabled = false;\r\n vm.isEnderecoSelected = false;\r\n vm.completeCadastroModel = {};\r\n vm.paymentMethods = {};\r\n vm.paymentMethod = null;\r\n vm.card = null;\r\n vm.cardBrand = null;\r\n vm.cardInstallments = null;\r\n vm.cardInstallment = null;\r\n vm.boletoLink = null;\r\n\r\n $($window.document)\r\n .on('login.success ', checkConta);\r\n\r\n vm.finalizar = finalizar;\r\n vm.getCreditCardToken = getCreditCardToken;\r\n vm.getCreditCardBrand = getCreditCardBrand;\r\n vm.getCreditCardInstallments = getCreditCardInstallments;\r\n vm.setPaymentMethod = setPaymentMethod;\r\n vm.setCardInstallment = setCardInstallment;\r\n vm.checkConta = checkConta;\r\n vm.boletoText = \"\";\r\n\r\n\r\n // Mock\r\n vm.card = {\r\n number: '4111111111111111',\r\n expMonth: '12',\r\n expYear: '2030',\r\n name: 'JOAO DA SILVA',\r\n ccv: '123',\r\n ddd: '22',\r\n cpf: '11111111111',\r\n phone: '999999999',\r\n dataNasc: '17/12/1992'\r\n };\r\n\r\n // Complete Cadastro Modal\r\n var completeCadastroModalVm = $scope;\r\n completeCadastroModalVm.completeCadastro = completeCadastro;\r\n vm.completeContaModal = $modal({\r\n scope: completeCadastroModalVm,\r\n templateUrl: '/Templates/complete-conta',\r\n show: vm.isCompleteContaEnabled\r\n });\r\n\r\n getPaymentMethods();\r\n\r\n $http\r\n .get('/Common/Parametro/?nome=VipCommerce.BoletoProcedimentos')\r\n .then(function (res) {\r\n vm.boletoText = res.data.Valor;\r\n }).catch(function (e) {\r\n console.log(e);\r\n });\r\n\r\n function setPaymentMethod(method) {\r\n\r\n if (vm.card.cpf != \"\") {\r\n vm.paymentMethod = method;\r\n }\r\n }\r\n\r\n function setCardInstallment(model) {\r\n vm.cardInstallment = model;\r\n }\r\n\r\n function getPaymentMethods() {\r\n $rootScope.isBusy = true;\r\n PagSeguroDirectPayment.getPaymentMethods({\r\n amount: Cart.total(),\r\n success: function (res) {\r\n for (var key in res.paymentMethods) {\r\n\r\n if (key !== 'BOLETO' && key !== 'CREDIT_CARD') continue;\r\n\r\n var method = res.paymentMethods[key];\r\n\r\n method.display = method.name === 'BOLETO' ? 'Boleto' : 'Cartão';\r\n\r\n vm.paymentMethods[key] = method;\r\n }\r\n\r\n $rootScope.isBusy = false;\r\n },\r\n error: function (res) {\r\n console.log(res);\r\n $rootScope.isBusy = false;\r\n }\r\n });\r\n }\r\n\r\n function getCreditCardBrand() {\r\n\r\n if (!vm.card || !vm.card.number) {\r\n vm.cardBrand = null;\r\n return;\r\n }\r\n\r\n var bin = vm.card.number.replace(/\\s+/g, '').substr(0, 6);\r\n\r\n $rootScope.isBusy = true;\r\n\r\n PagSeguroDirectPayment.getBrand({\r\n cardBin: bin,\r\n success: function (res) {\r\n vm.cardBrand = res.brand;\r\n vm.getCreditCardToken();\r\n vm.getCreditCardInstallments();\r\n $rootScope.isBusy = false;\r\n },\r\n error: function (res) {\r\n console.log(res);\r\n vm.cardBrand = null;\r\n $rootScope.isBusy = false;\r\n }\r\n });\r\n }\r\n\r\n function getCreditCardToken() {\r\n $rootScope.isBusy = true;\r\n PagSeguroDirectPayment.createCardToken({\r\n cardNumber: vm.card.number,\r\n brand: vm.cardBrand.name,\r\n cvv: vm.card.ccv,\r\n expirationMonth: vm.card.expMonth,\r\n expirationYear: vm.card.expYear,\r\n success: function (resp) {\r\n vm.card.token = resp.card.token;\r\n $rootScope.isBusy = false;\r\n },\r\n error: function (err) {\r\n console.log(err);\r\n $rootScope.isBusy = false;\r\n }\r\n });\r\n\r\n }\r\n\r\n function getCreditCardInstallments() {\r\n $rootScope.isBusy = true;\r\n PagSeguroDirectPayment.getInstallments({\r\n amount: Cart.totalWithFrete(),\r\n brand: vm.cardBrand.name,\r\n maxInstallmentNoInterest: 12,\r\n success: function (response) {\r\n vm.cardInstallments = response.installments[vm.cardBrand.name];\r\n $rootScope.isBusy = false;\r\n },\r\n error: function (response) {\r\n console.log(response);\r\n $rootScope.isBusy = false;\r\n }\r\n });\r\n }\r\n\r\n function finalizar() {\r\n\r\n if ($rootScope.isBusy) return;\r\n\r\n var reqObj = {};\r\n\r\n if (vm.paymentMethod === 'boleto') {\r\n reqObj = {\r\n transactionType: vm.paymentMethod\r\n };\r\n } else {\r\n reqObj = {\r\n transactionType: vm.paymentMethod,\r\n ccToken: vm.card.token,\r\n numParcelas: vm.cardInstallment.quantity,\r\n valorParcela: vm.cardInstallment.installmentAmount,\r\n ccName: vm.card.name,\r\n ccCpf: vm.card.cpf,\r\n ccDdd: vm.card.ddd,\r\n ccPhone: vm.card.phone,\r\n ccDataNasc: vm.card.dataNasc\r\n };\r\n }\r\n\r\n $rootScope.isBusy = true;\r\n\r\n $http({\r\n method: 'POST',\r\n url: '/Pedido/Finalizar',\r\n data: $.param(reqObj),\r\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\r\n }).then(function (res) {\r\n $rootScope.isBusy = false;\r\n\r\n if (res.data.Success === true) {\r\n Cart.reset();\r\n $window.location = '/Pedido/Success' + (vm.paymentMethod === 'boleto' ? '?boletoLink=' + res.data.Data : '');\r\n } else {\r\n if (res.data.ex == \"\") {\r\n alertify.error('Tivemos um problema ao tentar finalizar o pedido, por favor tente novamente mais tarde!');\r\n } else {\r\n alertify.error(res.data.Message);\r\n }\r\n }\r\n });\r\n }\r\n\r\n function checkConta() {\r\n console.log('checkConta');\r\n\r\n $http.get('/Conta/IsUserDataValid').then(function (res) {\r\n if (!res.data) {\r\n console.log(res.data);\r\n vm.isCompleteContaEnabled = true;\r\n vm.completeContaModal.$promise.then(vm.completeContaModal.show);\r\n } else {\r\n window.location.hash = 'entrega';\r\n }\r\n });\r\n }\r\n\r\n function completeCadastro(model) {\r\n $http.post('/Conta/CompleteCadastro', model)\r\n .success(function (resp) {\r\n if (resp.Success === true) {\r\n vm.completeContaModal.$promise.then(vm.completeContaModal.hide);\r\n window.location.hash = 'entrega';\r\n } else {\r\n alertify.error(resp.Message);\r\n }\r\n }).error(function () {\r\n alertify.error('Os dados informados são inválidos!');\r\n });\r\n }\r\n\r\n //checkConta();\r\n }\r\n})(angular);\r\n","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"EnderecoController\", enderecoController);\r\n\r\n /* @ngInject */\r\n function enderecoController($scope, $rootScope, $http, $window, alertify, Cart) {\r\n\r\n $scope.isAddEnabled = false;\r\n $scope.isSearchEnabled = true;\r\n $scope.selectedModelId = null;\r\n $scope.isSelected = false;\r\n $scope.address = \"\";\r\n $scope.model = {\r\n cep: \"\",\r\n numero: 0,\r\n complemento: \"\",\r\n estado: \"\",\r\n cidade: \"\",\r\n bairro: \"\",\r\n endereco: \"\"\r\n };\r\n\r\n $scope.data = [];\r\n $scope.estadoData = [];\r\n $scope.cidadeData = [];\r\n $scope.bairroData = [];\r\n $scope.enderecoData = [];\r\n $scope.clienteEnderecoData = [];\r\n\r\n $scope.isEstadoEnabled = false;\r\n $scope.isCidadeEnabled = false;\r\n $scope.isBairroEnabled = false;\r\n $scope.isEnderecoEnabled = false;\r\n\r\n //#region Enderecos\r\n\r\n $scope.readEnderecos = function(bairroId) {\r\n $rootScope.isLoading = true;\r\n $http.get(\"/Enderecos/Enderecos\", {\r\n params: {\r\n id: bairroId\r\n }\r\n })\r\n .error(function() {\r\n\r\n })\r\n .success(function(data) {\r\n $scope.enderecoData = data;\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n });\r\n };\r\n\r\n $scope.enderecoChanged = function(endereco) {\r\n $scope.model.CEP = $scope.model.endereco.Cep;\r\n $scope.updateAddressText();\r\n console.log($scope.model.endereco.Cep);\r\n console.log($scope.model.endereco.Id);\r\n //$scope.\r\n // $scope.model.endereco = $scope.data.EnderecoModel || null;\r\n //$scope.cepChanged();\r\n };\r\n\r\n //#endregion\r\n\r\n //#region Bairros\r\n\r\n $scope.readBairros = function(cidadeId) {\r\n $rootScope.isLoading = true;\r\n $http.get(\"/Enderecos/Bairros\", {\r\n params: {\r\n id: cidadeId\r\n }\r\n })\r\n .error(function() {\r\n\r\n })\r\n .success(function(data) {\r\n $scope.bairroData = data;\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n });\r\n };\r\n $scope.bairroChanged = function() {\r\n $scope.readEnderecos($scope.model.bairro.Id);\r\n };\r\n\r\n //#endregion\r\n\r\n //#region Cidades\r\n\r\n $scope.readCidades = function(estadoId) {\r\n $rootScope.isLoading = true;\r\n $http.get(\"/Enderecos/Cidades\", {\r\n params: {\r\n id: estadoId\r\n }\r\n })\r\n .error(function() {\r\n\r\n })\r\n .success(function(data) {\r\n $scope.cidadeData = data;\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n });\r\n };\r\n $scope.cidademChanged = function() {\r\n $scope.readBairros($scope.model.cidade.Id);\r\n };\r\n\r\n //#endregion\r\n\r\n //#region Estados\r\n\r\n $scope.readEstados = function() {\r\n $rootScope.isLoading = true;\r\n $http.get(\"/Enderecos/Estados\")\r\n .error(function() {\r\n\r\n })\r\n .success(function(data) {\r\n $scope.estadoData = data;\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n });\r\n };\r\n $scope.readEstados();\r\n $scope.estadoChanged = function() {\r\n $scope.readCidades($scope.model.estado.Id);\r\n };\r\n\r\n //#endregion\r\n\r\n $scope.searchMode = function() {\r\n $scope.isSearchEnabled = !$scope.isSearchEnabled;\r\n $scope.resetModel();\r\n $scope.read();\r\n };\r\n\r\n $scope.closeAdd = function() {\r\n $scope.isAddEnabled = false;\r\n $scope.resetModel();\r\n };\r\n\r\n $scope.cepChanged = function () {\r\n console.log(\"cepc\");\r\n\r\n if (!$scope.model || !$scope.model.cep || $scope.model.cep.length <= 0) return;\r\n\r\n console.log(\"cepcb\");\r\n $rootScope.isLoading = true;\r\n $scope.isCepLoading = true;\r\n $scope.data = [];\r\n $scope.address = null;\r\n \r\n\r\n $http.get(\"/Enderecos/Cep\", {\r\n params: {\r\n id: $scope.model.cep\r\n }\r\n })\r\n .error(function () {\r\n $scope.resetEndereco();\r\n alertify.error(\"CEP não encontrado!\");\r\n })\r\n .success(function(data) {\r\n\r\n if (!data) {\r\n $scope.resetEndereco();\r\n alertify.error(\"CEP não encontrado!\");\r\n return;\r\n }\r\n\r\n $scope.isEnderecoEnabled = data.EnderecoModel.Nome == \"\" ? true : false;\r\n $scope.isEstadoEnabled = data.EstadoModel.Nome == \"\" ? true : false;\r\n $scope.isCidadeEnabled = data.CidadeModel.Nome == \"\" ? true : false;\r\n $scope.isBairroEnabled = data.BairroModel.Nome == \"\" ? true : false;\r\n\r\n $scope.data = data;\r\n\r\n \r\n $scope.model.estado = $scope.data.EstadoModel.Nome || null;\r\n $scope.model.cidade = $scope.data.CidadeModel.Nome || null;\r\n $scope.model.bairro = $scope.data.BairroModel.Nome || null;\r\n $scope.model.endereco = $scope.data.EnderecoModel.Nome || null;\r\n\r\n //$scope.updateAddressText();\r\n\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n $scope.isCepLoading = false;\r\n });\r\n };\r\n\r\n $scope.select = function(id) {\r\n $http.post(\"/Pedido/SelectEndereco/\" + id)\r\n .error(function() {\r\n $scope.selectedModelId = null;\r\n alertify.error(\"Houve um problema ao selecionar o endereço, tente novamente mais tarde!\");\r\n })\r\n .success(function(resp) {\r\n\r\n if (resp.Success === false) {\r\n $scope.isSelected = false;\r\n $scope.selectedModelId = null;\r\n alertify.error(\"Houve um problema ao selecionar o endereço, tente novamente mais tarde!\");\r\n }\r\n\r\n $scope.selectedEnderecoId = id;\r\n $scope.isSelected = true;\r\n $scope.calcFrete();\r\n });\r\n };\r\n\r\n $scope.delete = function(id) {\r\n\r\n if (!confirm(\"Tem certeza que deseja excluir?\")) return;\r\n\r\n $http.post(\"/Pedido/RemoveEndereco\", {\r\n id: id\r\n })\r\n .success(function(resp) {\r\n if (resp.Success === true) {\r\n $scope.read();\r\n $scope.isAddEnabled = false;\r\n alertify.success(resp.Message);\r\n } else {\r\n alertify.error(resp.Message);\r\n }\r\n });\r\n };\r\n $scope.read = function() {\r\n $scope.isEnderecoLoading = true;\r\n\r\n $scope.isEstadoEnabled = false;\r\n $scope.isCidadeEnabled = false;\r\n $scope.isBairroEnabled = false;\r\n $scope.isEnderecoEnabled = false;\r\n\r\n $scope.clienteEnderecoData = [];\r\n $http.get(\"/Pedido/EnderecoData\")\r\n .error(function() {\r\n $scope.clienteEnderecoData = null;\r\n })\r\n .success(function(data) {\r\n $scope.clienteEnderecoData = data;\r\n }).then(function() {\r\n $scope.isEnderecoLoading = false;\r\n });\r\n };\r\n\r\n $scope.updateAddressText = function() {\r\n if ($scope.model.endereco === null) {\r\n $scope.address = \"\";\r\n } else {\r\n\r\n $scope.address = $scope.model.endereco.Nome +\r\n \" , \" + $scope.model.bairro.Nome +\r\n \" - \" + $scope.model.cidade.Nome +\r\n \" - \" + $scope.model.estado.Nome;\r\n }\r\n };\r\n\r\n $scope.resetModel = function() {\r\n $scope.address = \"\";\r\n $scope.cidadeData = [];\r\n $scope.bairroData = [];\r\n $scope.enderecoData = [];\r\n\r\n $scope.model = {\r\n cep: null,\r\n numero: null,\r\n complemento: \"\",\r\n estado: \"\",\r\n cidade: \"\",\r\n bairro: \"\",\r\n endereco: \"\"\r\n };\r\n\r\n $scope.updateAddressText();\r\n };\r\n\r\n $scope.resetEndereco = function () {\r\n $scope.address = \"\";\r\n \r\n $scope.model = {\r\n numero: null,\r\n complemento: \"\",\r\n estado: \"\",\r\n cidade: \"\",\r\n bairro: \"\",\r\n endereco: \"\"\r\n };\r\n \r\n };\r\n\r\n $scope.save = function() {\r\n\r\n $rootScope.isLoading = true;\r\n console.log($scope.data.EnderecoModel);\r\n\r\n $http.post(\"/Pedido/AddEndereco\",\r\n {\r\n enderecoId: $scope.data.EnderecoModel.EnderecoId,\r\n enderecoNum: $scope.model.numero,\r\n enderecoComp: $scope.model.complemento,\r\n endereco: $scope.model.endereco,\r\n bairro: $scope.model.bairro\r\n })\r\n .error(function() {\r\n\r\n })\r\n .success(function(resp) {\r\n if (resp.Success === true) {\r\n $scope.resetModel();\r\n $scope.read();\r\n $scope.isAddEnabled = false;\r\n alertify.success(resp.Message);\r\n } else {\r\n alertify.error(resp.Message);\r\n }\r\n }).then(function() {\r\n $rootScope.isLoading = false;\r\n });\r\n\r\n };\r\n\r\n $scope.calcFrete = function() {\r\n $scope.isFreteLoading = true;\r\n $scope.freteData = [];\r\n $http.get('/Frete/CalcCorreiosPreco')\r\n .success(function(resp) {\r\n if (resp.length > 0) {\r\n $scope.freteData = resp;\r\n }\r\n })\r\n .then(function() {\r\n $scope.isFreteLoading = false;\r\n });\r\n };\r\n\r\n $scope.setFreteModel = function(model) {\r\n\r\n $scope.freteModel = model;\r\n if (!$scope.freteModel) return;\r\n\r\n $http.post('/Pedido/SelectFrete', $scope.freteModel)\r\n .success(function(resp) {\r\n $scope.isFreteSelected = resp === 'True';\r\n Cart.freteVal = $scope.freteModel.Valor;\r\n setTimeout(function() {\r\n $scope.$apply();\r\n }, 10);\r\n })\r\n .error(function() {\r\n $scope.isFreteSelected = false;\r\n $scope.freteModel = null;\r\n });\r\n };\r\n $($window).bind(\"hashchange\", function() {\r\n\r\n if ($window.location.hash === \"#entrega\") {\r\n $scope.read();\r\n }\r\n\r\n });\r\n\r\n $scope.read();\r\n\r\n }\r\n})(angular);","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .controller('GlobalController', globalController);\r\n\r\n /* @ngInject */\r\n function globalController($scope, $rootScope, $timeout, $http) {\r\n\r\n $scope.searchText = '';\r\n $scope.searchResultData = [];\r\n $scope.isSearchResultOpen = false;\r\n $scope.showSearchResult = showSearchResult;\r\n $scope.hideSearchResult = hideSearchResult;\r\n\r\n var filterTextTimeout;\r\n\r\n $scope.$watch('searchText',\r\n function (val) {\r\n if (filterTextTimeout) $timeout.cancel(filterTextTimeout);\r\n\r\n filterTextTimeout = $timeout(function () {\r\n search(val);\r\n }, 500);\r\n });\r\n\r\n function showSearchResult() {\r\n $scope.isSearchResultOpen = true;\r\n }\r\n\r\n function hideSearchResult() {\r\n $scope.isSearchResultOpen = false;\r\n }\r\n\r\n function search(text) {\r\n\r\n if (text.length < 3) return;\r\n\r\n $http({\r\n url: '/Catalogo/',\r\n params: {\r\n json: true,\r\n filter: text,\r\n pageSize: 5\r\n },\r\n method: 'GET'\r\n }).then(function (res) {\r\n $scope.searchResultData = res.data.Data;\r\n $scope.showSearchResult();\r\n });\r\n }\r\n }\r\n})(angular);\r\n","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"ProductController\", productController);\r\n\r\n\r\n /* @ngInject */\r\n function productController($scope, $http, $focus, alertify, Cart) {\r\n\r\n $scope.Cart = Cart;\r\n\r\n $scope.IsGrid = false;\r\n\r\n $scope.model = {};\r\n\r\n $scope.selectionModel = {};\r\n\r\n $scope.gridData = [];\r\n\r\n $scope.hasInGrid = function (colorId, valCaractId) {\r\n return _.some($scope.gridData.Produtos, function (x) {\r\n return (!colorId || x.CorId === colorId) && (x.ValorCaracteristicaId === valCaractId);\r\n });\r\n };\r\n\r\n $scope.readGridData = function (id) {\r\n\r\n $http.get(\"/Produto/GetGrade\", {\r\n params: {\r\n id: id\r\n }\r\n }).then(\r\n function (res) {\r\n $scope.IsGrid = true;\r\n $scope.gridData = res.data;\r\n\r\n console.log(res);\r\n if (!$scope.gridData || !$scope.gridData.Produtos || !$scope.gridData.Produtos.length > 0) return;\r\n\r\n var first = $scope.gridData.Produtos[0];\r\n\r\n $scope.selectionModel = {\r\n colorId: first.CorId,\r\n sizeId: first.ValorCaracteristicaId\r\n };\r\n\r\n $scope.setModel();\r\n },\r\n function(err) { console.log(err); }\r\n )};\r\n\r\n $scope.setModel = function () {\r\n\r\n $scope.model = _.find($scope.gridData.Produtos, function (x) {\r\n return x.CorId === $scope.selectionModel.colorId &&\r\n x.ValorCaracteristicaId === $scope.selectionModel.sizeId;\r\n });\r\n\r\n $scope.model.qtd = 1;\r\n\r\n $focus(\"qtd\");\r\n };\r\n\r\n $scope.isQtdFocused = false;\r\n\r\n $scope.sizeFilter = function (colorId) {\r\n return function (size) {\r\n return _.some($scope.gridData.Produtos, function (x) {\r\n return x.CorId === colorId &&\r\n x.ValorCaracteristicaId === size.ValorId;\r\n });\r\n };\r\n };\r\n\r\n $scope.colorFilter = function (color) {\r\n return _.some($scope.gridData.Produtos, function (x) {\r\n return x.CorId === color.Id;\r\n });\r\n };\r\n\r\n $scope.addToCart = function () {\r\n if (!$scope.model) return;\r\n\r\n Cart.add($scope.model.Id, $scope.model.qtd);\r\n $scope.model.qtd = 1;\r\n };\r\n }\r\n})(angular);\r\n","/**\r\n * Created by mayke on 30/09/15.\r\n */\r\n(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .directive('busyIndicator', busyIndicator);\r\n\r\n function busyIndicator() {\r\n var directive = {\r\n transclude: true,\r\n replace: true,\r\n scope: {\r\n active: '=',\r\n message: '='\r\n },\r\n\r\n template: '
    ' +\r\n '
    ' +\r\n '
    {{message}}
    ' +\r\n '
    ' +\r\n '
    ',\r\n\r\n restrict: 'E',\r\n link: link\r\n };\r\n\r\n function link(scope, element, attrs) {\r\n\r\n $(element).on('click', function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n\r\n $(window).on('resize', refresh);\r\n\r\n refresh();\r\n\r\n function refresh() {\r\n var cont = $(element).find('.busy-indicator-container');\r\n\r\n $(element).css({\r\n width: $(window).width(),\r\n height: $(window).height()\r\n });\r\n\r\n $(cont).css({\r\n left: ($(element).width() / 2) - ($(cont).width() / 2),\r\n top: ($(element).height() / 2) - ($(cont).height() / 2)\r\n });\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(angular);","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .directive('clickOutside', clickOutside);\r\n\r\n /* @ngInject */\r\n function clickOutside($document, $parse, $timeout) {\r\n return {\r\n restrict: 'A',\r\n link: function ($scope, elem, attr) {\r\n\r\n // postpone linking to next digest to allow for unique id generation\r\n $timeout(function () {\r\n var classList = (attr.outsideIfNot !== undefined) ? attr.outsideIfNot.replace(', ', ',').split(',') : [],\r\n fn;\r\n\r\n // add the elements id so it is not counted in the click listening\r\n if (attr.id !== undefined) {\r\n classList.push(attr.id);\r\n }\r\n\r\n function eventHandler(e) {\r\n\r\n // check if our element already hidden and abort if so\r\n if (angular.element(elem).hasClass(\"ng-hide\")) {\r\n return;\r\n }\r\n\r\n var i = 0,\r\n element;\r\n\r\n // if there is no click target, no point going on\r\n if (!e || !e.target) {\r\n return;\r\n }\r\n\r\n // loop through the available elements, looking for classes in the class list that might match and so will eat\r\n for (element = e.target; element; element = element.parentNode) {\r\n var id = element.id,\r\n classNames = element.className,\r\n l = classList.length;\r\n\r\n // Unwrap SVGAnimatedString classes\r\n if (classNames && classNames.baseVal !== undefined) {\r\n classNames = classNames.baseVal;\r\n }\r\n\r\n // loop through the elements id's and classnames looking for exceptions\r\n for (i = 0; i < l; i++) {\r\n // check for exact matches on id's or classes, but only if they exist in the first place\r\n if ((id !== undefined && id === classList[i]) || (classNames && classNames === classList[i])) {\r\n // now let's exit out as it is an element that has been defined as being ignored for clicking outside\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // if we have got this far, then we are good to go with processing the command passed in via the click-outside attribute\r\n return $scope.$apply(function () {\r\n fn = $parse(attr['clickOutside']);\r\n return fn($scope);\r\n });\r\n }\r\n\r\n // if the devices has a touchscreen, listen for this event\r\n if (_hasTouch()) {\r\n $document.on('touchstart', eventHandler);\r\n }\r\n\r\n // still listen for the click event even if there is touch to cater for touchscreen laptops\r\n $document.on('click', eventHandler);\r\n\r\n // when the scope is destroyed, clean up the documents event handlers as we don't want it hanging around\r\n $scope.$on('$destroy', function () {\r\n if (_hasTouch()) {\r\n $document.off('touchstart', eventHandler);\r\n }\r\n\r\n $document.off('click', eventHandler);\r\n });\r\n\r\n // private function to attempt to figure out if we are on a touch device\r\n function _hasTouch() {\r\n // works on most browsers, IE10/11 and Surface\r\n return 'ontouchstart' in window || navigator.maxTouchPoints;\r\n };\r\n });\r\n }\r\n };\r\n }\r\n})(angular);\r\n","(function (angular) {\r\n 'use strict';\r\n\r\n angular.module('friburgoeletro')\r\n .factory(\"$focus\", [\r\n '$timeout', function($timeout) {\r\n return function(id) {\r\n $timeout(function() {\r\n var element = document.getElementById(id);\r\n if (element) {\r\n element.focus();\r\n element.select();\r\n }\r\n });\r\n };\r\n }\r\n ]);\r\n\r\n angular.module('friburgoeletro')\r\n .directive(\"ngFocus\", [\r\n '$timeout', function($timeout) {\r\n return function(scope, elem, attrs) {\r\n scope.$watch(attrs.ngFocus, function(newval) {\r\n if (newval) {\r\n $timeout(function() {\r\n elem[0].focus();\r\n }, 0, false);\r\n }\r\n });\r\n };\r\n }\r\n ]);\r\n})(angular);","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .directive(\"isLoading\", function() {\r\n return {\r\n restrict: \"A\",\r\n replace: true,\r\n scope: {\r\n isLoading: '=isLoading'\r\n },\r\n link: link\r\n };\r\n });\r\n\r\n function link(scope, el, attrs) {\r\n var html = el.html();\r\n\r\n scope.$watch('isLoading', function() {\r\n if (scope.isLoading === true) {\r\n el.addClass('disabled');\r\n el.attr('disabled', 'disabled');\r\n el.prepend('');\r\n } else {\r\n el.removeClass('disabled');\r\n el.removeAttr('disabled');\r\n el.html(html);\r\n }\r\n });\r\n }\r\n})(angular);","/**\r\n * Created by mayke on 30/09/15.\r\n */\r\n(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .directive('spinner', spinner);\r\n\r\n function spinner() {\r\n var directive = {\r\n template: '' +\r\n '' +\r\n '',\r\n restrict: 'E'\r\n };\r\n return directive;\r\n }\r\n})(angular);","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .filter(\"aspnetJsonDate\", function() {\r\n return function(value) {\r\n\r\n var pattern = /Date\\(([^)]+)\\)/;\r\n var results = pattern.exec(value);\r\n var dt = new Date(parseFloat(results[1]));\r\n return +dt.getDate() + \"/\" + (dt.getMonth() + 1) + \"/\" + dt.getFullYear();\r\n\r\n };\r\n });\r\n})(angular);","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .filter(\"unique\", function() {\r\n return function(collection, keyname) {\r\n var output = [],\r\n keys = [];\r\n\r\n angular.forEach(collection, function(item) {\r\n var key = item[keyname];\r\n if (keys.indexOf(key) === -1) {\r\n keys.push(key);\r\n output.push(item);\r\n }\r\n });\r\n return output;\r\n };\r\n });\r\n})(angular);","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .factory('Cart', cart);\r\n\r\n /* @ngInject */\r\n function cart($http, $rootScope, alertify) {\r\n var service = {};\r\n\r\n service.data = [];\r\n\r\n service.freteVal = 0;\r\n\r\n service.count = 0;\r\n\r\n service.read = function () {\r\n\r\n $http.get(\"/Cart/Read\").error(function (data) {\r\n\r\n }).success(function (data) {\r\n service.data = data;\r\n\r\n _(data.Items).map(function (x) {\r\n x.Thumb = service.getImageUrl(x.Thumb);\r\n });\r\n\r\n service.count = data.Items ? data.Items.length : 0;\r\n }).then(function () {\r\n\r\n });\r\n };\r\n\r\n service.add = function (prodId, qtd) {\r\n\r\n var data = {\r\n id: prodId,\r\n qtd: qtd\r\n };\r\n\r\n $http.post(\"/Cart/AddItem\", data)\r\n .error(function (data, status, headers, config) {\r\n\r\n }).success(function (data) {\r\n\r\n if (data.Success === true) {\r\n\r\n $rootScope.$broadcast('Cart.add');\r\n alertify.success('Item adicionado ao carrinho!');\r\n\r\n service.read();\r\n }\r\n\r\n }).error(function () {\r\n alertify.success('Falha ao adicionar item ao carrinho!');\r\n });\r\n };\r\n\r\n service.remove = function (item) {\r\n\r\n $http.post(\"/Cart/RemoveItem\", {\r\n id: item.Id,\r\n qtd: 0,\r\n removeAll: true\r\n }).error(function (data, status, headers, config) {\r\n\r\n }).success(function (data) {\r\n\r\n if (data === true) {\r\n\r\n alertify.success(\"Item removido com sucesso!\");\r\n\r\n service.read();\r\n\r\n }\r\n\r\n }).error(function () {\r\n alertify.success('Falha ao remover item!');\r\n });\r\n\r\n };\r\n\r\n service.reset = function (cb) {\r\n $http.post(\"/Cart/Reset\")\r\n .error(function (res, status, headers, config) {\r\n\r\n }).success(function (res) {\r\n service.data = [];\r\n service.count = 0;\r\n\r\n if (cb)\r\n cb(res);\r\n });\r\n };\r\n\r\n service.getImageUrl = function (relativeUrl) {\r\n if (relativeUrl && relativeUrl.length > 0) {\r\n return \"/Image/Thumb/?src=\" + encodeURI(relativeUrl) + \"&w=84&h=84\";\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n service.total = function () {\r\n\r\n var total = 0;\r\n\r\n $(service.data.Items).each(function (i, el) {\r\n total += el.Quantidade * el.Preco;\r\n });\r\n\r\n return total;\r\n };\r\n\r\n service.totalWithFrete = function () {\r\n return service.total() + service.freteVal;\r\n };\r\n\r\n return service;\r\n }\r\n})(angular);\r\n","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .factory('Catalog', catalog);\r\n\r\n /* @ngInject */\r\n function catalog($resource) {\r\n return $resource('/Catalogo/Read');\r\n }\r\n})(angular);","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .factory(\"$scopes\", function() {\r\n var mem = {};\r\n\r\n return {\r\n store: function(key, value) {\r\n mem[key] = value;\r\n },\r\n get: function(key) {\r\n return mem[key];\r\n }\r\n };\r\n });\r\n})(angular);","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .factory('Ticket', ticket);\r\n\r\n /* @ngInject */\r\n function ticket($http, $rootScope, alertify) {\r\n var service = {};\r\n\r\n service.data = [];\r\n \r\n service.read = function () {\r\n\r\n $http.get(\"/Ticket/Read\").error(function (data) {\r\n\r\n }).success(function (data) {\r\n service.data = data;\r\n\r\n }).then(function () {\r\n\r\n });\r\n };\r\n \r\n return service;\r\n }\r\n})(angular);\r\n","(function (angular) {\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"ClientesController\", [\r\n '$scope', '$http', function ($scope, $http) {\r\n\r\n $scope.isLoading = false;\r\n\r\n $scope.data = [];\r\n\r\n $(document).on('cadastro.success', function () {\r\n $scope.read();\r\n });\r\n\r\n $scope.read = function () {\r\n $scope.isLoading = true;\r\n $http.get(\"/Admin/ClientesRead\")\r\n .success(function (data, status, headers, config) {\r\n\r\n //pega os dados do response\r\n $scope.data = data.Data;\r\n\r\n //para cada revendedor...\r\n for (var i = 0; i < $scope.data.length; i++) {\r\n \r\n //cria um array chart que vai receber os dados do gráfico\r\n $scope.data[i].chart = [];\r\n\r\n //cria um array para receber os pedidos por mês\r\n $scope.data[i].list = [];\r\n\r\n //cria uma variável para armazenar o valor para se calcular a porcentagem das progress bars\r\n $scope.data[i].baseCalculo = 0;\r\n\r\n //cria uma variável para armazenar o valor total dos pedidos\r\n $scope.data[i].valorTotal = 0;\r\n\r\n //preenche o array chart com um objeto para cada mês, com valor 0\r\n for (var mes = 1; mes <= 12; mes++) {\r\n $scope.data[i].chart.push({\r\n\r\n //mês do ano\r\n label: beautify(mes),\r\n\r\n //valor dos pedidos naquele mês\r\n value: 0,\r\n\r\n //porcentagem em relação ao valor total de pedidos no ano\r\n percentage: 0\r\n });\r\n }\r\n\r\n //pega todos os pedidos do revendedor\r\n var pedidos = $scope.data[i].Pedidos;\r\n\r\n //para cada pedido\r\n for (var j in pedidos) {\r\n\r\n //pega a data do pedido\r\n var dataPedido = toDate(pedidos[j].Data);\r\n\r\n pedidos[j].Data = dataPedido;\r\n\r\n //extrai o mês em que o pedido foi feito\r\n var mes = dataPedido.getMonth();\r\n\r\n //soma o valor do pedido no objeto do chart correspondente ao mês\r\n $scope.data[i].chart[mes - 1].value += pedidos[j].Total;\r\n\r\n //adiciona o pedido na lista de pedidos por mês\r\n addListItem($scope.data[i].list, beautify(mes), pedidos[j]);\r\n\r\n //PARA UTILIZAR A SOMA DE TODOS OS VALORES MENSAIS COMO PARÂMETRO DA PORCENTAGEM, DESCOMENTE ESTA LINHA\r\n //atualiza o valor da base de cálculo da porcentagem\r\n //$scope.data[i].baseCalculo += pedidos[j].Total;\r\n\r\n //atualiza o valor total dos pedidos\r\n $scope.data[i].valorTotal += pedidos[j].Total;\r\n }\r\n\r\n //PARA UTILIZAR O MAIOR VALOR MENSAL COMO PARÂMETRO DA PORCENTAGEM, DESCOMENTE ESTA LINHA\r\n $scope.data[i].baseCalculo = _.max($scope.data[i].chart, function (item) { return item.value; }).value;\r\n\r\n //depois que o valor total foi calculado e o chart foi preenchido...\r\n\r\n //faz a iteração nos objetos do chart, um para cada mês do ano\r\n for (var k in $scope.data[i].chart) {\r\n\r\n //pega o valor do objeto\r\n var current = $scope.data[i].chart[k].value;\r\n\r\n //calcula a porcentagem da progress bar\r\n var percentage = calcPercentage(current, $scope.data[i].baseCalculo);\r\n\r\n //atribui a porcentagem ao objeto do chart\r\n $scope.data[i].chart[k].percentage = percentage;\r\n }\r\n\r\n }\r\n\r\n })\r\n .error(function (data, status, headers, config) {\r\n\r\n }\r\n ).then(function () {\r\n $scope.isLoading = false;\r\n });\r\n };\r\n $scope.read();\r\n\r\n function beautify(mes) {\r\n switch (mes) {\r\n case 1:\r\n return \"JAN\";\r\n case 2:\r\n return \"FEV\";\r\n case 3:\r\n return \"MAR\";\r\n case 4:\r\n return \"ABR\";\r\n case 5:\r\n return \"MAI\";\r\n case 6:\r\n return \"JUN\";\r\n case 7:\r\n return \"JUL\";\r\n case 8:\r\n return \"AGO\";\r\n case 9:\r\n return \"SET\";\r\n case 10:\r\n return \"OUT\";\r\n case 11:\r\n return \"NOV\";\r\n case 12:\r\n return \"DEZ\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n function calcPercentage(current, total) {\r\n return current * 100 / total;\r\n }\r\n\r\n function addListItem(list, mes, pedido) {\r\n var item = _.findWhere(list, { label: mes });\r\n\r\n if (item) {\r\n item.pedidos.push(pedido);\r\n } else {\r\n list.push({\r\n label: mes,\r\n pedidos: [pedido]\r\n });\r\n }\r\n }\r\n\r\n function toDate(str) {\r\n var parts = str.split('/');\r\n var d = parts[0];\r\n var m = parts[1];\r\n var y = parts[2];\r\n\r\n return new Date(y, m, d, 0, 0, 0, 0);\r\n }\r\n }\r\n ]);\r\n})(angular);","(function (angular) {\r\n angular\r\n .module('friburgoeletro').controller(\"ContaController\", [\r\n '$scope', '$http', function($scope, $http) {\r\n\r\n\r\n }\r\n ]);\r\n})(angular);","(function (angular) {\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"PedidosController\", [\r\n '$scope', '$http', 'alertify', function ($scope, $http, alertify) {\r\n\r\n $scope.isLoading = false;\r\n\r\n $scope.page = 1;\r\n\r\n $scope.data = [];\r\n\r\n $scope.detailModel = {};\r\n\r\n $scope.read = function () {\r\n $scope.isLoading = true;\r\n $http.get(\"/Admin/PedidosRead/\" + $scope.page)\r\n .success(function (data) {\r\n\r\n var d = data.Data;\r\n\r\n $(d).each(function (i, el) {\r\n\r\n var status = el.Status;\r\n\r\n el.StatusNumber = status;\r\n\r\n switch (status) {\r\n case 0:\r\n el.Status = \"Aprovado\";\r\n break;\r\n case 1:\r\n el.Status = \"Reprovado\";\r\n break;\r\n case 2:\r\n el.Status = \"Pagamento Aprovado\";\r\n break;\r\n case 3:\r\n el.Status = \"Pagamento Reprovado\";\r\n break;\r\n case 4:\r\n el.Status = \"Em Transporte\";\r\n break;\r\n case 5:\r\n el.Status = \"Finalizado\";\r\n break;\r\n case 6:\r\n el.Status = \"Aguardando Pagamento\";\r\n break;\r\n case 7:\r\n el.Status = \"Aguardando Liberação\";\r\n break;\r\n case 8:\r\n el.Status = \"Pré Venda\";\r\n break;\r\n case 9:\r\n el.Status = \"Aguardando Separação\";\r\n break;\r\n case 10:\r\n el.Status = \"Separado\";\r\n break;\r\n }\r\n\r\n });\r\n\r\n $scope.data = $scope.data.concat(d);\r\n\r\n })\r\n .error(function (data, status, headers, config) {\r\n\r\n }\r\n ).then(function () {\r\n $scope.isLoading = false;\r\n });\r\n };\r\n\r\n $scope.loadMore = function () {\r\n $scope.page = $scope.page + 1;\r\n\r\n $scope.read();\r\n };\r\n\r\n $scope.setDetailModel = function (item) {\r\n console.log(item);\r\n $scope.detailModel = item;\r\n };\r\n\r\n $scope.printBoleto = function (item) {\r\n $http.get('/Pedido/PrintBoleto/' + item.Id)\r\n .success(function (data) {\r\n var win = window.open(data.Url, 'Imprimir Boleto', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=yes, width=800, height=600');\r\n\r\n try {\r\n win.focus();\r\n } catch (e) {\r\n alertify.error('Os popups estão bloqueados em seu navegador, por favor permita que esta página exiba popups nas configurações de seu navegador!');\r\n }\r\n });\r\n };\r\n\r\n $scope.getDanfe = function (item) {\r\n $http.get('/Admin/CheckXml/' + item.Id)\r\n .success(function (data) {\r\n if (!data.Success) {\r\n alertify.error('Nota Fiscal não diponível no momento. Tente novamente mais tarde!');\r\n return;\r\n }\r\n\r\n var win = window.open('/Admin/GetDanfe/' + item.Id, 'Imprimir Danfe', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=yes, width=800, height=600');\r\n\r\n try {\r\n win.focus();\r\n\r\n } catch (e) {\r\n alertify.error('Os popups estão bloqueados em seu navegador, por favor permita que esta página exiba popups nas configurações de seu navegador!');\r\n }\r\n\r\n }).error(function () {\r\n alertify.error('Nota Fiscal não diponível no momento. Tente novamente mais tarde!');\r\n });\r\n }\r\n\r\n $scope.getXml = function (item) {\r\n $http.get('/Admin/CheckXml/' + item.Id)\r\n .success(function (data) {\r\n if (!data.Success) {\r\n alertify.error('Nota Fiscal não diponível no momento. Tente novamente mais tarde!');\r\n return;\r\n }\r\n\r\n var win = window.open('/Admin/DownloadXml/' + item.Id, '_blank');\r\n\r\n try {\r\n win.focus();\r\n } catch (e) {\r\n alertify.error('Os popups estão bloqueados em seu navegador, por favor permita que esta página exiba popups nas configurações de seu navegador!');\r\n }\r\n\r\n }).error(function () {\r\n alertify.error('Nota Fiscal não diponível no momento. Tente novamente mais tarde!');\r\n });\r\n }\r\n\r\n $scope.read();\r\n }\r\n ]);\r\n})(angular);","(function (angular) {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .controller('RelatorioController', RelatorioController);\r\n\r\n /* @ngInject */\r\n function RelatorioController($http, alertify) {\r\n var vm = this;\r\n vm.reportData = [];\r\n\r\n $http.get('/Admin/ClientesRead')\r\n .then(function (res) {\r\n\r\n vm.revendedores = res.data.Data;\r\n\r\n }, function (err) {\r\n console.log(err.data);\r\n });\r\n\r\n vm.gerarRelatorio = function (params) {\r\n\r\n if (params.dataInicial && params.dataFinal) {\r\n $http.post('/Relatorio/RelatorioVendas', params)\r\n .then(function (res) {\r\n\r\n vm.comissao = res.data.comissao;\r\n vm.dataComissao = res.data.dataComissao;\r\n vm.reportData = res.data.reportData;\r\n vm.reportData.forEach(criarResumo);\r\n\r\n }, function (err) {\r\n console.log(err);\r\n alertify.error(err.data);\r\n });\r\n }\r\n\r\n }\r\n\r\n function criarResumo(item) {\r\n item.Pedidos.forEach(calcularComissao);\r\n\r\n var totais = _.pluck(item.Pedidos, 'Total');\r\n item.Total = 0;\r\n for (var i in totais) {\r\n item.Total += totais[i];\r\n }\r\n\r\n var comissoes = _.pluck(item.Pedidos, 'Comissao');\r\n item.Comissao = 0;\r\n for (var i in comissoes) {\r\n item.Comissao += comissoes[i];\r\n }\r\n }\r\n\r\n function calcularComissao(pedido) {\r\n pedido.Comissao = (pedido.Total - pedido.ValorFrete) * vm.comissao / 100;\r\n }\r\n\r\n }\r\n\r\n})(angular);","(function (angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('friburgoeletro')\r\n .controller(\"TicketsController\", ticketController);\r\n\r\n /* @ngInject */\r\n function ticketController($scope,$http) {\r\n\r\n \r\n $scope.data = {};\r\n \r\n $scope.read = function () {\r\n\r\n $http.get(\"/Ticket/Read\").error(function (data) {\r\n\r\n }).success(function (data) {\r\n $scope.data = data;\r\n \r\n }).then(function () {\r\n\r\n });\r\n };\r\n\r\n $scope.read();\r\n\r\n }\r\n})(angular);","\r\nFastClick.notNeeded = function (layer) {\r\n var metaViewport;\r\n var chromeVersion;\r\n var blackberryVersion;\r\n var firefoxVersion;\r\n\r\n // Devices that don't support touch don't need FastClick\r\n if (typeof window.ontouchstart === 'undefined' || layer === null) {\r\n return true;\r\n }\r\n \r\n\r\n // Chrome version - zero for other browsers\r\n chromeVersion = +(/Chrome\\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1];\r\n\r\n if (chromeVersion) {\r\n\r\n if (deviceIsAndroid) {\r\n metaViewport = document.querySelector('meta[name=viewport]');\r\n\r\n if (metaViewport) {\r\n // Chrome on Android with user-scalable=\"no\" doesn't need FastClick (issue #89)\r\n if (metaViewport.content.indexOf('user-scalable=no') !== -1) {\r\n return true;\r\n }\r\n // Chrome 32 and above with width=device-width or less don't need FastClick\r\n if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) {\r\n return true;\r\n }\r\n }\r\n\r\n // Chrome desktop doesn't need FastClick (issue #15)\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n if (deviceIsBlackBerry10) {\r\n blackberryVersion = navigator.userAgent.match(/Version\\/([0-9]*)\\.([0-9]*)/);\r\n\r\n // BlackBerry 10.3+ does not require Fastclick library.\r\n // https://github.com/ftlabs/fastclick/issues/251\r\n if (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) {\r\n metaViewport = document.querySelector('meta[name=viewport]');\r\n\r\n if (metaViewport) {\r\n // user-scalable=no eliminates click delay.\r\n if (metaViewport.content.indexOf('user-scalable=no') !== -1) {\r\n return true;\r\n }\r\n // width=device-width (or less than device-width) eliminates click delay.\r\n if (document.documentElement.scrollWidth <= window.outerWidth) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97)\r\n if (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') {\r\n return true;\r\n }\r\n\r\n // Firefox version - zero for other browsers\r\n firefoxVersion = +(/Firefox\\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1];\r\n\r\n if (firefoxVersion >= 27) {\r\n // Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896\r\n\r\n metaViewport = document.querySelector('meta[name=viewport]');\r\n if (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) {\r\n return true;\r\n }\r\n }\r\n\r\n // IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version\r\n // http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx\r\n if (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') {\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nFastClick.attach(document.body);\r\n\r\n\r\n(function () {\r\n $.fn.center = function () {\r\n this.css(\"top\", ($(window).height() - this.outerHeight()) / 2 + \"px\");\r\n this.css(\"left\", ($(window).width() - this.outerWidth()) / 2 + \"px\");\r\n this.css(\"position\", \"fixed\");\r\n return this;\r\n };\r\n\r\n $(\"input[type=number]\").livequery(function () {\r\n $(this).off(\"keydown.live\");\r\n $(this).on(\"keydown.live\", function (e) {\r\n\r\n if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||\r\n (e.keyCode === 65 && e.ctrlKey === true) ||\r\n (e.keyCode >= 35 && e.keyCode <= 40)) {\r\n\r\n return;\r\n }\r\n\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n\r\n function handleInputFocus(element) {\r\n if ($(element).val() && $(element).val().length > 0)\r\n $(element).parent(\".editor-field\").prev(\".editor-label\").addClass(\"floating\");\r\n\r\n $(element).on(\"change\", function () {\r\n if ($(element).val() && $(element).val().length > 0) {\r\n $(element).parent(\".editor-field\").prev(\".editor-label\").addClass(\"floating\");\r\n } else {\r\n $(element).parent(\".editor-field\").prev(\".editor-label\").removeClass(\"floating\");\r\n }\r\n });\r\n\r\n $(element).on(\"focusin\", function () {\r\n $(element).parent(\".editor-field\").prev(\".editor-label\").addClass(\"floating\");\r\n });\r\n\r\n $(element).on(\"focusout\", function () {\r\n if (!$(element).val() || $(element).val().length <= 0)\r\n $(element).parent(\".editor-field\").prev(\".editor-label\").removeClass(\"floating\");\r\n });\r\n\r\n }\r\n\r\n $(\"input, textarea, select\").each(function (i, el) {\r\n handleInputFocus(el);\r\n });\r\n\r\n $(\"input, textarea, select\").livequery(function () {\r\n handleInputFocus(this);\r\n });\r\n\r\n alertify.defaults = {\r\n // dialogs defaults\r\n modal: true,\r\n basic: false,\r\n frameless: false,\r\n movable: true,\r\n resizable: true,\r\n closable: true,\r\n closableByDimmer: true,\r\n maximizable: true,\r\n startMaximized: false,\r\n pinnable: true,\r\n pinned: true,\r\n padding: true,\r\n overflow: true,\r\n maintainFocus: true,\r\n transition: 'zoom',\r\n autoReset: true,\r\n\r\n // notifier defaults\r\n notifier: {\r\n // auto-dismiss wait time (in seconds)\r\n delay: 50000,\r\n // default position\r\n position: 'top-right'\r\n },\r\n\r\n // language resources\r\n glossary: {\r\n // dialogs default title\r\n title: 'Mensagem',\r\n // ok button text\r\n ok: 'OK',\r\n // cancel button text\r\n cancel: 'Cancelar'\r\n },\r\n\r\n // theme settings\r\n theme: {\r\n // class name attached to prompt dialog input textbox.\r\n input: 'ajs-input',\r\n // class name attached to ok button\r\n ok: 'ajs-ok',\r\n // class name attached to cancel button\r\n cancel: 'ajs-cancel'\r\n }\r\n };\r\n\r\n $(document).ready(function () {\r\n\r\n $(function () {\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n });\r\n\r\n $(window).on(\"load\", function () {\r\n $(\"#wrapper\").animate({\r\n opacity: 1\r\n }, 500);\r\n\r\n var size = $(window).width() > 991 ? $(\".produto .buy-cont\").parent().width() + 30 : 0;\r\n\r\n $(\"#active-photo\")\r\n .elevateZoom({\r\n gallery: 'gallery',\r\n cursor: 'pointer',\r\n galleryActiveClass: 'active',\r\n easing: true,\r\n imageCrossfade: true,\r\n tintColour: \"#d5d5d5\",\r\n responsive: true,\r\n zoomWindowPosition: $(window).width() > 991 ? \"buy-cont\" : null,\r\n zoomWindowWidth: size,\r\n zoomWindowHeight: size,\r\n loadingIcon: '/Images/loader.svg'\r\n });\r\n });\r\n\r\n $(document).mouseup(function (e) {\r\n var container = $(\".close-click-outside\");\r\n\r\n if (!container.is(e.target)\r\n && container.has(e.target).length === 0)\r\n {\r\n container.hide();\r\n }\r\n });\r\n });\r\n \r\n})();"]}