define(["mk7/modals","css!cmpts/picker/picker.css"],function(){var e=Dom7,a=function(a){function t(){var a=!1;return p.params.convertToPopover||p.params.onlyInPopover?(!p.inline&&p.params.input&&(p.params.onlyInPopover?a=!0:app.device.ios?a=!!app.device.ipad:e(window).width()>=768&&(a=!0)),a):a}function i(){return!!(p.opened&&p.container&&p.container.length>0&&p.container.parents(".popover").length>0)}function n(){if(p.opened)for(var e=0;eo){var c=a.scrollTop()+l-o;c+o>s&&(i=c+o-s+r,o===s&&(i=p.container.height()),a.css({"padding-bottom":i+"px"})),a.scrollTop(c,300)}}}function o(a){i()||(p.input&&p.input.length>0?a.target!==p.input[0]&&0===e(a.target).parents(".picker-modal").length&&p.close():0===e(a.target).parents(".picker-modal").length&&p.close())}function s(){p.opened=!1,p.input&&p.input.length>0&&p.input.parents(".page-content").css({"padding-bottom":""}),p.params.onClose&&p.params.onClose(p),p.container.find(".picker-items-col").each(function(){p.destroyPickerCol(this)})}var p=this,l={updateValuesOnMomentum:!1,updateValuesOnTouchmove:!0,rotateEffect:!1,momentumRatio:7,freeMode:!1,closeByOutsideClick:!0,scrollToInput:!0,inputReadOnly:!0,convertToPopover:!0,onlyInPopover:!1,toolbar:!0,toolbarCloseText:"Done",toolbarTemplate:'
'};a=a||{};for(var c in l)"undefined"==typeof a[c]&&(a[c]=l[c]);p.params=a,p.cols=[],p.initialized=!1,p.inline=!!p.params.container;var u=app.device.ios||navigator.userAgent.toLowerCase().indexOf("safari")>=0&&navigator.userAgent.toLowerCase().indexOf("chrome")<0&&!app.device.android;return p.setValue=function(e,a){var t=0;if(0===p.cols.length)return p.value=e,void p.updateValue(e);for(var i=0;i=0||(p.value=t,p.displayValue=i,p.params.onChange&&p.params.onChange(p,p.value,p.displayValue),p.input&&p.input.length>0&&(e(p.input).val(p.params.formatValue?p.params.formatValue(p,p.value,p.displayValue):p.value.join(" ")),e(p.input).trigger("change")))},p.initPickerCol=function(a,t){function i(){k=e.requestAnimationFrame(function(){d.updateItems(void 0,void 0,0),i()})}function n(a){y||w||(a.preventDefault(),w=!0,x=T="touchstart"===a.type?a.targetTouches[0].pageY:a.pageY,V=(new Date).getTime(),D=!0,M=E=e.getTranslate(d.wrapper[0],"y"))}function r(a){if(w){a.preventDefault(),D=!1,T="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY,y||(e.cancelAnimationFrame(k),y=!0,M=E=e.getTranslate(d.wrapper[0],"y"),d.wrapper.transition(0)),a.preventDefault();var t=T-x;E=M+t,I=void 0,Eg&&(E=g+Math.pow(E-g,.8),I="max"),d.wrapper.transform("translate3d(0,"+E+"px,0)"),d.updateItems(void 0,E,0,p.params.updateValuesOnTouchmove),b=E-O||E,H=(new Date).getTime(),O=E}}function o(a){if(!w||!y)return void(w=y=!1);w=y=!1,d.wrapper.transition(""),I&&("min"===I?d.wrapper.transform("translate3d(0,"+h+"px,0)"):d.wrapper.transform("translate3d(0,"+g+"px,0)")),C=(new Date).getTime();var t,n;C-V>300?n=E:(t=Math.abs(b/(C-H)),n=E+b*p.params.momentumRatio),n=Math.max(Math.min(n,g),h);var r=-Math.floor((n-g)/m);p.params.freeMode||(n=-r*m+g),d.wrapper.transform("translate3d(0,"+parseInt(n,10)+"px,0)"),d.updateItems(r,n,"",!0),p.params.updateValuesOnMomentum&&(i(),d.wrapper.transitionEnd(function(){e.cancelAnimationFrame(k)})),setTimeout(function(){D=!0},100)}function s(a){if(D){e.cancelAnimationFrame(k);var t=e(this).attr("data-picker-value");d.setValue(t)}}var l=e(a),c=l.index(),d=p.cols[c];if(!d.divider){d.container=l,d.wrapper=d.container.find(".picker-items-col-wrapper"),d.items=d.wrapper.find(".picker-item");var v,m,f,h,g;d.replaceValues=function(e,a){d.destroyEvents(),d.values=e,d.displayValues=a;var t=p.columnHTML(d,!0);d.wrapper.html(t),d.items=d.wrapper.find(".picker-item"),d.calcSize(),d.setValue(d.values[0],0,!0),d.initEvents()},d.calcSize=function(){p.params.rotateEffect&&(d.container.removeClass("picker-items-col-absolute"),d.width||d.container.css({width:""}));var a,t;a=0,t=d.container[0].offsetHeight,v=d.wrapper[0].offsetHeight,m=d.items[0].offsetHeight,f=m*d.items.length,h=t/2-f+m/2,g=t/2-m/2,d.width&&(a=d.width,parseInt(a,10)===a&&(a+="px"),d.container.css({width:a})),p.params.rotateEffect&&(d.width||(d.items.each(function(){var t=e(this);t.css({width:"auto"}),a=Math.max(a,t[0].offsetWidth),t.css({width:""})}),d.container.css({width:a+2+"px"})),d.container.addClass("picker-items-col-absolute"))},d.calcSize(),d.wrapper.transform("translate3d(0,"+g+"px,0)").transition(0);var k;d.setValue=function(a,t,n){"undefined"==typeof t&&(t="");var r=d.wrapper.find('.picker-item[data-picker-value="'+a+'"]').index();if("undefined"!=typeof r&&r!==-1){var o=-r*m+g;d.wrapper.transition(t),d.wrapper.transform("translate3d(0,"+o+"px,0)"),p.params.updateValuesOnMomentum&&d.activeIndex&&d.activeIndex!==r&&(e.cancelAnimationFrame(k),d.wrapper.transitionEnd(function(){e.cancelAnimationFrame(k)}),i()),d.updateItems(r,o,t,n)}},d.updateItems=function(a,t,i,n){"undefined"==typeof t&&(t=e.getTranslate(d.wrapper[0],"y")),"undefined"==typeof a&&(a=-Math.round((t-g)/m)),a<0&&(a=0),a>=d.items.length&&(a=d.items.length-1);var r=d.activeIndex;d.activeIndex=a,d.wrapper.find(".picker-selected").removeClass("picker-selected"),d.items.transition(i);var o=d.items.eq(a).addClass("picker-selected").transform("");if(p.params.rotateEffect){(t-(Math.floor((t-g)/m)*m+g))/m;d.items.each(function(){var a=e(this),i=a.index()*m,n=g-t,r=i-n,o=r/m,s=Math.ceil(d.height/m/2)+1,p=-18*o;p>180&&(p=180),p<-180&&(p=-180),Math.abs(o)>s?a.addClass("picker-item-far"):a.removeClass("picker-item-far"),a.transform("translate3d(0, "+(-t+g)+"px, "+(u?-110:0)+"px) rotateX("+p+"deg)")})}(n||"undefined"==typeof n)&&(d.value=o.attr("data-picker-value"),d.displayValue=d.displayValues?d.displayValues[a]:d.value,r!==a&&(d.onChange&&d.onChange(p,d.value,d.displayValue),p.updateValue()))},t&&d.updateItems(0,g,0);var w,y,x,T,V,C,M,I,E,O,b,H,D=!0;d.initEvents=function(e){var a=e?"off":"on";d.container[a](app.touchEvents.start,n),d.container[a](app.touchEvents.move,r),d.container[a](app.touchEvents.end,o),d.items[a]("click",s)},d.destroyEvents=function(){d.initEvents(!0)},d.container[0].f7DestroyPickerCol=function(){d.destroyEvents()},d.initEvents()}},p.destroyPickerCol=function(a){a=e(a),"f7DestroyPickerCol"in a[0]&&a[0].f7DestroyPickerCol()},e(window).on("resize",n),p.columnHTML=function(e,a){var t="",i="";if(e.divider)i+='
'+e.content+"
";else{for(var n=0;n'+(e.displayValues?e.displayValues[n]:e.values[n])+"";i+='
'+t+"
"}return a?t:i},p.layout=function(){var e,a="",t="";p.cols=[];var i="";for(e=0;e'+(p.params.toolbar?p.params.toolbarTemplate.replace(/{{closeText}}/g,p.params.toolbarCloseText):"")+'
'+i+'
',p.pickerHTML=a},p.params.input&&(p.input=e(p.params.input),p.input.length>0&&(p.params.inputReadOnly&&p.input.prop("readOnly",!0),p.inline||p.input.on("click",r),p.params.inputReadOnly&&p.input.on("focus mousedown",function(e){e.preventDefault()}))),!p.inline&&p.params.closeByOutsideClick&&e("html").on("click",o),p.opened=!1,p.open=function(){var a=t();p.opened||(p.layout(),a?(p.pickerHTML='
'+p.pickerHTML+"
",p.popover=app.popover(p.pickerHTML,p.params.input,!0),p.container=e(p.popover).find(".picker-modal"),e(p.popover).on("close",function(){s()})):p.inline?(p.container=e(p.pickerHTML),p.container.addClass("picker-modal-inline"),e(p.params.container).append(p.container)):(p.container=e(app.pickerModal(p.pickerHTML)),e(p.container).on("close",function(){s()})),p.container[0].f7Picker=p,p.container.find(".picker-items-col").each(function(){var e=!0;(!p.initialized&&p.params.value||p.initialized&&p.value)&&(e=!1),p.initPickerCol(this,e)}),p.initialized?p.value&&p.setValue(p.value,0):p.value?p.setValue(p.value,0):p.params.value&&p.setValue(p.params.value,0),p.input&&p.input.length>0,1),p.opened=!0,p.initialized=!0,p.params.onOpen&&p.params.onOpen(p)},p.close=function(){if(p.opened&&!p.inline)return i()?void app.closeModal(p.popover):void app.closeModal(p.container)},p.destroy=function(){p.close(),p.params.input&&p.input.length>0&&p.input.off("click focus",r),e("html").off("click",o),e(window).off("resize",n)},p.inline?p.open():!p.initialized&&p.params.value&&p.setValue(p.params.value),p};app.picker=function(e){return new a(e)}});