(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);