$j(function(){ bW = new bigView({}); bW.init(); }); function bigView( options ){ // Init vars of bigView var o = this; var $ = jQuery; this.defaultOpt = { 'clickItem' : '.seeMoreLink', 'searchItem' : '[name="bigViewSearchText"]', 'scrollItem' : '.bigviewBox', 'load' : false } o.options = $.extend( o.defaultOpt, options ); // Init of bigView this.init = function( ){ delete o['defaultOpt']; o.searchListener(); o.openListener(); } // This listener listen clicks on bigViewOpener this.openListener = function(){ $(document).on('click', o.options.clickItem, function(e){ e.stopPropagation(); o.clickedItem = $(this); o.clickEvent(o.clickedItem); }); } // This listener listen change input on bigView Search this.searchListener = function(){ $(document).on('keyup', o.options.searchItem, function(){ o.searchForm = $(this).parents('form').serializeArray(); o.search('search'); }); } // This listener start data load when the scroll is in 80% position of div this.scrollListener = function(){ $(o.options.scrollItem).on('scroll' , function(){ o.scroll ($(this) ); }); } // This is the clickEvent of bigViewOpener this.clickEvent = function( item ){ o.func = item.attr("ds-seeMore-func"); o.ids = item.attr("ds-seeMore-ids"); o.title = item.attr("ds-seeMore-title"); o.where = item.attr("ds-seeMore-where"); o.dataSetAjax(); } // It returns the dataset of request this.dataSetAjax = function(){ $.ajax({ url: root_url+"ajax/bigview/"+o.func, type: "post", data: { 'ids' : o.ids, 'title' : o.title, 'where' : o.where }, dataType: "json", success: function(resp) { if(typeof resp.err != "undefined"){ createOverlay(lng.bigViewHiba, resp.err,false,false,0); } else{ o.loadView(resp); o.ajaxAfter(); } } }); } // Todo after ajax this.ajaxAfter = function(){ if( !ieVersion( 7 ) ) { //$j(".bigviewBox").perfectScrollbar('destroy'); // Destroy $j(".bigviewBox").perfectScrollbar({ wheelPropagation: true, suppressScrollX: true, wheelPropagation: false, swipePropagation: false }); } o.scrollListener(); } // It shows the dataset html in zingaOverlay this.loadView = function( resp ){ createOverlay(resp.title, resp.success,true,true,7); o.overlay = $('.overlay'); } // Search and load more items ajax this.search = function(mode){ $.ajax({ async: false, url: root_url+"ajax/bigview/"+o.searchForm[1].value, type: "post", data: { 'ids' : o.searchForm[0].value, 'search' : o.searchForm[2].value, 'mode' : mode, 'page': $( o.options.scrollItem ).attr("page") }, dataType: "json", success: function(resp) { if(mode == 'load'){ $( o.options.scrollItem ).attr("page", resp.page); $( o.options.scrollItem ).attr("moreitems", resp.moreitems); o.overlay.find('.bigview-data ').last().after(resp.success); o.options.load = false; } else{ o.overlay.find('.bigviewBox').replaceWith(resp.success); } overlayRecalc(); o.ajaxAfter(); } }); } // Scroll event this.scroll = function(scroll){ if( $( o.options.scrollItem ).attr('moreitems') == "true" ){ var scrollTopMax = $j( o.options.scrollItem ).scrollTopMax(); pos=(scroll.scrollTop() / scrollTopMax) * 100; if(pos>80 && !o.options.load) { o.options.load = true; o.searchForm = $(o.options.searchItem).parents('form').serializeArray(); this.search('load'); } } } }