define(['jquery','jquery-ui-modules/widget'],function($){'use strict';$.widget('mage.addToWishlist',{options:{bundleInfo:'div.control [name^=bundle_option]',configurableInfo:'.super-attribute-select',groupedInfo:'#super-product-table input',downloadableInfo:'#downloadable-links-list input',customOptionsInfo:'.product-custom-option',qtyInfo:'#qty',actionElement:'[data-action="add-to-wishlist"]',productListWrapper:'.product-item-info',productPageWrapper:'.product-info-main'},_create:function(){this._bind();},_bind:function(){var options=this.options,dataUpdateFunc='_updateWishlistData',validateProductQty='_validateWishlistQty',changeCustomOption='change '+options.customOptionsInfo,changeQty='change '+options.qtyInfo,updateWishlist='click '+options.actionElement,events={},key;if('productType'in options){if(typeof options.productType==='string'){options.productType=[options.productType];}}else{options.productType=[];} events[changeCustomOption]=dataUpdateFunc;events[changeQty]=dataUpdateFunc;events[updateWishlist]=validateProductQty;for(key in options.productType){if(options.productType.hasOwnProperty(key)&&options.productType[key]+'Info'in options){events['change '+options[options.productType[key]+'Info']]=dataUpdateFunc;}} this._on(events);},_updateWishlistData:function(event){var dataToAdd={},isFileUploaded=false,handleObjSelector=null,self=this;if(event.handleObj.selector==this.options.qtyInfo){this._updateAddToWishlistButton({},event);event.stopPropagation();return;} handleObjSelector=$(event.currentTarget).closest('form').find(event.handleObj.selector);handleObjSelector.each(function(index,element){if($(element).is('input[type=text]')||$(element).is('input[type=email]')||$(element).is('input[type=number]')||$(element).is('input[type=hidden]')||$(element).is('input[type=checkbox]:checked')||$(element).is('input[type=radio]:checked')||$(element).is('textarea')||$('#'+element.id+' option:selected').length){if($(element).data('selector')||$(element).attr('name')){dataToAdd=$.extend({},dataToAdd,self._getElementData(element));} return;} if($(element).is('input[type=file]')&&$(element).val()){isFileUploaded=true;}});if(isFileUploaded){this.bindFormSubmit();} this._updateAddToWishlistButton(dataToAdd,event);event.stopPropagation();},_updateAddToWishlistButton:function(dataToAdd,event){var self=this,buttons=this._getAddToWishlistButton(event);buttons.each(function(index,element){var params=$(element).data('post'),currentTarget=event.currentTarget,targetElement,targetValue;if(!params){params={'data':{}};}else if($(currentTarget).data('selector')||$(currentTarget).attr('name')){targetElement=self._getElementData(currentTarget);targetValue=Object.keys(targetElement)[0];if(params.data.hasOwnProperty(targetValue)&&!dataToAdd.hasOwnProperty(targetValue)){delete params.data[targetValue];}} params.data=$.extend({},params.data,dataToAdd,{'qty':$(self.options.qtyInfo).val()});$(element).data('post',params);});},_getAddToWishlistButton:function(event){var productListWrapper=$(event.currentTarget).closest(this.options.productListWrapper);if(productListWrapper.length){return productListWrapper.find(this.options.actionElement);} return $(this.options.actionElement);},_arrayDiffByKeys:function(array1,array2){var result={};$.each(array1,function(key,value){if(key.indexOf('option')===-1){return;} if(!array2[key]){result[key]=value;}});return result;},_getElementData:function(element){var data,elementName,elementValue;element=$(element);data={};elementName=element.data('selector')?element.data('selector'):element.attr('name');elementValue=element.val();if(element.is('select[multiple]')&&elementValue!==null){if(elementName.substr(elementName.length-2)=='[]'){elementName=elementName.substring(0,elementName.length-2);} $.each(elementValue,function(key,option){data[elementName+'['+option+']']=option;});}else if(elementName.substr(elementName.length-2)=='[]'){elementName=elementName.substring(0,elementName.length-2);data[elementName+'['+elementValue+']']=elementValue;}else{data[elementName]=elementValue;} return data;},_removeExcessiveData:function(params,dataToAdd){var dataToRemove=this._arrayDiffByKeys(params.data,dataToAdd);$.each(dataToRemove,function(key){delete params.data[key];});},bindFormSubmit:function(){var self=this;$('[data-action="add-to-wishlist"]').on('click',function(event){var element,params,form,action;event.stopPropagation();event.preventDefault();element=$('input[type=file]'+self.options.customOptionsInfo);params=$(event.currentTarget).data('post');form=$(element).closest('form');action=params.action;if(params.data.id){$('',{type:'hidden',name:'id',value:params.data.id}).appendTo(form);} if(params.data.uenc){action+='uenc/'+params.data.uenc;} $(form).attr('action',action).trigger('submit');});},_validateWishlistQty:function(event){var element=$(this.options.qtyInfo);if(!(element.validation()&&element.validation('isValid'))){event.preventDefault();event.stopPropagation();return;}}});return $.mage.addToWishlist;});