(function ($) { $.fn.egFlick = function (options) { return $.egFlick(this, options); }; $.egFlick = function (container, options) { var settings = { contain : container.selector, duration :300, circular:true, infinite: false, lastIndex: Infinity, threshold:50, thresholdAngle: 45, bounce: 10, adaptive:false, autoResize:true, bound: false, overflow: false, hanger: "50%", anchor: "50%", gap: 0, moveType: "snap", useOffset: true, isEqualSize: false, isConstantSize: false, renderOnlyVisible: false, renderExternal: false, deceleration: 0.0006, dotPagerIdTxt:'', txtPagerIdTxt:'', defaultIndex:0, collectStatistics:false, onrotate: function (idx,e) { }, // rotate 발생시 이벤트 onresize: function (idx,e) { }, // resize 발생시 이벤트 onInit: function (idx) { }, onholdend: function (obj,idx,e) { }, onholdstart: function (obj,idx,e) { }, onmove: function (obj,idx,e) { }, onmoveend: function (obj,idx,e) { }, onmovestart: function (obj,idx,e) { }, onneedpanel: function (obj,idx) { } }; if (options) { $.extend(settings, options); }; // 1. Initialize eg.Axes var djFlick = new eg.Flicking(settings.contain, { duration :settings.duration, circular:settings.circular, infinite:settings.infinite, lastIndex:settings.lastIndex, threshold:settings.threshold, thresholdAngle:settings.thresholdAngle, bounce:settings.bounce, adaptive:settings.adaptive, autoResize:settings.autoResize, bound: settings.bound, overflow: settings.overflow, hanger: settings.hanger, anchor: settings.anchor, gap: settings.gap, moveType: settings.moveType, useOffset: settings.useOffset, isEqualSize: settings.isEqualSize, isConstantSize: settings.isConstantSize, renderOnlyVisible: settings.renderOnlyVisible, renderExternal: settings.renderExternal, deceleration: settings.deceleration, defaultIndex: settings.defaultIndex, collectStatistics: settings.collectStatistics }); if ( (settings.txtPagerIdTxt != '') && (settings.dotPagerIdTxt == '') ) { flicker.setTxtPager(settings.txtPagerIdTxt,djFlick.getPanelCount()); //page flicker.setTxtStatus(settings.txtPagerIdTxt,settings.defaultIndex); //page } else if ( (settings.txtPagerIdTxt == '') && (settings.dotPagerIdTxt != '') ) { flicker.setPager(settings.dotPagerIdTxt,djFlick.getPanelCount()); //page flicker.setStatus(settings.dotPagerIdTxt,settings.defaultIndex); //page } else if ( (settings.txtPagerIdTxt != '') && (settings.dotPagerIdTxt != '') ) { flicker.setTxtPager(settings.txtPagerIdTxt,djFlick.getPanelCount()); //page flicker.setTxtStatus(settings.txtPagerIdTxt,settings.defaultIndex); //page flicker.setPager(settings.dotPagerIdTxt,djFlick.getPanelCount()); //page flicker.setStatus(settings.dotPagerIdTxt,settings.defaultIndex); //page } // 2. attach event handler djFlick.on({ "holdEnd" : function(e) { var index = e.index; fireHoldEndEvent(this, index, e); }, "holdStart" : function(e) { var index = e.index; fireHoldStartEvent(this, index, e); //웰컴 판플리킹을 위해 웰컴 js에만 있음 if (typeof(wPanFlick)!= "undefined") { wPanFlick.disableInput(); } }, "move" : function(e) { var index = e.index; fireMoveEvent(this, index, e); }, "moveEnd" : function(e) { var index = e.index; //페이징 표시 if ( (settings.txtPagerIdTxt != '') && (settings.dotPagerIdTxt == '') ) { flicker.setTxtStatus(settings.txtPagerIdTxt,index); //page } else if ( (settings.txtPagerIdTxt == '') && (settings.dotPagerIdTxt != '') ) { flicker.setStatus(settings.dotPagerIdTxt,index); //page } else if ( (settings.txtPagerIdTxt != '') && (settings.dotPagerIdTxt != '') ) { flicker.setTxtStatus(settings.txtPagerIdTxt,index); //page flicker.setStatus(settings.dotPagerIdTxt,index); //page } fireMoveEndEvent(this, index, e); //웰컴 판플리킹을 위해 웰컴 js에만 있음 if (typeof(wPanFlick)!= "undefined") { wPanFlick.enableInput(); } }, "moveStart" : function(e) { var index = e.index; fireMoveStartEvent(this, index, e); }, "needPanel" : function(e) { fireNeedPanelEvent(this, e); } }); fireInitEvent();// djFlick 실행후 init발생 시키기 //최소 설정 후 init 함수 function fireInitEvent() { settings.onInit(settings.defaultIndex); } $(window).bind('orientationchange resize', function(event){ if ( $(settings.contain).length > 0) { console.log("START resize EVE"); console.log("djFlick " + djFlick ); djFlick.resize(); fireResizeEvent(); console.log("END resize EVE"); /* try { djFlick.resize(); } catch (e) { } */ } }); $(window).bind('orientationchange', function(event){ /* setTimeout(function(){ if ( ($(settings.contain).length > 0) && ( djFlick.wrapper != null ) ) { try { } catch (e) { } } }, 256); djFlick.resize(); fireRotateEvent(); */ }); // 리사이즈 시 발생 이벤트 function fireResizeEvent() { try { settings.onresize(djFlick.getIndex(),djFlick); } catch (e) { } } // 회전 시 발생 이벤트 function fireRotateEvent() { try { settings.onrotate(djFlick.getIndex(),djFlick); } catch (e) { } } //사용자가 드래그를 중단했을 때 발생하는 이벤트 function fireHoldEndEvent(obj, index, e) { settings.onholdend(obj, index, e); } //사용자가 드래그를 시작했을 떄 발생하는 이벤트 function fireHoldStartEvent(obj, index, e) { settings.onholdstart(obj, index, e); } //이동중 발생 이벤트 function fireMoveEvent(obj, index, e) { settings.onmove(obj, index, e); } //infini 발생 이벤트 function fireMoveEndEvent(obj, index, e) { settings.onmoveend(obj, index, e); } //infini 발생 이벤트 function fireMoveStartEvent(obj, index, e) { settings.onmovestart(obj, index, e); } //판필요 발생 이벤트 function fireNeedPanelEvent(obj,e) { settings.onneedpanel(obj,e); } return { // Parallax 플러그인 addPlugParallax: function (tar,opt) { djFlick.addPlugins( new eg.Flicking.plugins.Parallax(tar, opt) ) }, // Fade 플러그인 addPlugFade: function () { djFlick.addPlugins( new eg.Flicking.plugins.Fade() ); }, // Auto 플러그인 addPlugAuto: function (t,d) { djFlick.addPlugins( new eg.Flicking.plugins.AutoPlay(t,d) ); }, getId:function(){ return settings.contain; }, next:function(){ djFlick.next() }, prev:function(){ djFlick.prev() }, moveTo:function(idx,dur){ djFlick.moveTo(idx,dur) }, append:function(ele){ djFlick.append(ele) }, prepend:function(ele){ djFlick.prepend(ele) }, destroy:function(){ try { djFlick.destroy() } catch (e) { } }, resize:function(){ djFlick.resize() }, remove:function(idx,cnt){ djFlick.remove(idx,cnt) }, replace:function(idx,ele){ djFlick.replace(idx,ele) }, enableInput:function(){ djFlick.enableInput() }, disableInput:function(){ djFlick.disableInput() }, getLastIndex:function(){ return djFlick.getLastIndex() }, getAllPanels:function(tf){ return djFlick.getAllPanels(tf) }, getCurrentPanel:function(){ return djFlick.getCurrentPanel() }, setLastIndex:function(idx){ djFlick.setLastIndex(idx) } }; }; })(jQuery);