(function($){ $.fn.basket = function(callerSettings) { var basket_id = this; var find_products = function(){ $("a[rel~='product']").each(function (i) { $(this).bind('click',function(){ var rel = $(this).attr('rel'); var id = $('#product_id').val(); var count = $('#count').val(); $("#pic_notvisible").css('top','200px').css('left','110px'); $('#pic_notvisible').show(); var div2Pos = $(basket_id).position(); $("#pic_notvisible").animate({left:div2Pos.left, top:div2Pos.top, opacity: 0.25, height: 'toggle'}, 1000); go_product({mod_id : id,count:count}); return false; }) }); }; var go_product = function(data){ var product_id = data.product_id; $.post("/basket/add/", data , function(data){ //alert_msg("Товар добавлен
в корзину",product_id); start_basket(); }); }; var start_basket = function(){ $.post("/basket/info/", function(data){ $(basket_id).html(data); }); }; var alert_msg = function(msg,product_id){ winW = document.body.offsetWidth; winH = document.body.offsetHeight $('.modal_box').remove(); $('#data_box').remove(); $('body').append(''); $('body').append('
'); $('#data_box').append('
'); $('#data_box').css( "left", ((winW-400)/2)+'px' ); var scrollTop = document.documentElement.scrollTop if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1 || navigator.userAgent.toLowerCase().indexOf('safari') > -1) { scrollTop = document.body.scrollTop; } $('#data_box').css( "top", (scrollTop+150)+'px' ); app = '
'; app +='

'+msg+'

'; app += '
 '; app += ''; app += '
'; $('#data_box .data_wrp').append(app); $(".modal_box, #modal_close, #p_close").click(function() { $('.modal_box').remove(); $('#data_box').remove(); }); }; find_products(); start_basket(); // frontend calculator var Model = { init : function() { this.data = []; this.setModel(); }, setModel : function() { Model.data = []; $(".basket_item").each(function(index, el) { var objItem = {}; objItem.cost = parseFloat( $(el).find("[name $= '[cost]']").val() ); objItem.count = parseInt( $(el).find("[name $= '[count]']").val() ); Model.data.push(objItem); }); }, getData : function() { return this.data; } }; var Controll = { init : function() { Model.init(); View.init(); }, getData : function() { return Model.getData(); }, setData : function() { Model.setModel(); }, countSumCost : function(elementIndex) { var obj = this.getData()[elementIndex]; var sumCost = obj.cost * obj.count; if ( isNaN(sumCost) ){ return 0; } return parseFloat(sumCost.toFixed(2)); }, countTotalCost : function() { var totalCost = 0; this.getData().forEach(function(obj, index) { totalCost += Controll.countSumCost(index); }); return parseFloat(totalCost.toFixed(2)); } }; var View = { init : function() { this.xhr = null; $(document).on( "keyup", "[name $= '[count]']", function(e) { var form = $(this).parents("form"); Controll.setData(); // console.log(Controll.getData()); $("[name $= '[sum_cost]']").each(function(index, el) { var sumCost = Controll.countSumCost(index); $(el).val(sumCost); $($(".t_sum_cost")[index]).text(sumCost); }); var total_cost = Controll.countTotalCost(); $("#order-total").val(total_cost); $(".t_total_cost").text(total_cost); // console.log(total_cost); if (View.xhr !== null){ View.xhr.abort(); } View.xhr = $.ajax( "/basket/update", { 'data' : form.serializeArray(), 'method' : "POST" } ) .done(function(data) { // console.log("done"); $(basket_id).html(data); }) .fail(function() { // console.error("ERROR"); }) .always(function() { // console.log("xhr to null"); View.xhr = null; }); } ); } }; Controll.init(); // frontend calculator } })(jQuery);