var good_word_forms = ['товаров','товар','товара','товаров']; var ruble_word_forms = ['рублей','рубль','рубля','рублей']; Object.size = function(obj) { var size = 0, key; for (key in obj) { if (obj.hasOwnProperty(key)) size++; } return size; }; function number_format(number, decimals, dec_point, thousands_sep ) { // Format a number with grouped thousands // // + original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com) // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfix by: Michael White (http://crestidg.com) var i, j, kw, kd, km; // input sanitation & defaults if( isNaN(decimals = Math.abs(decimals)) ){ decimals = 2; } if( dec_point == undefined ){ dec_point = ","; } if( thousands_sep == undefined ){ thousands_sep = "."; } i = parseInt(number = (+number || 0).toFixed(decimals)) + ""; if( (j = i.length) > 3 ){ j = j % 3; } else{ j = 0; } km = (j ? i.substr(0, j) + thousands_sep : ""); kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep); //kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).slice(2) : ""); kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : ""); return km + kw + kd; } function count_word(number, word_forms) { // return correct form of word // // by: Maxim Kovtun (emotionless@yandex.ru) // word forms example: good_word_forms = ['товаров','товар','товара','товаров']; number = number.toString(); if(number.length>1 && number.substr(number.length-2,2)>=11 && number.substr(number.length-2,2)<=14) return word_forms[0]; else if(number.substr(number.length-1,1)==1) return word_forms[1]; else if(number.substr(number.length-1,1)>=2 && number.substr(number.length-1,1)<=4) return word_forms[2]; else return word_forms[3]; } function RecountOrder(href) { var list = {}; $('#order_table tbody tr').each(function() { id = $(this).attr('id'); list['g['+id+']'] = $(this).find('input.input-count').attr('value'); } ); list['get_type'] = 'recount'; $.getJSON('/include/get_content.php', list, function(data) { UpdateOrder(data); if(href) location.href = href; } ); } function DeleteItems(objJQcheckbox) { var list = {}; var rows_to_del = []; i=0; objJQcheckbox.each(function() { list['g['+i+']'] = $(this).attr('name').replace('del_item_',''); // id товаров для удаления rows_to_del.push($(this).parents('tr')); // объекты-строки для удаления i++; } ); if(Object.size(list)) { list['get_type'] = 'delitems'; $.getJSON('/include/get_content.php', list, function(data) { // удаляем строки if(rows_to_del.length) { for(i=0; iВ корзине нет ни одного товара

'); UpdateCart(false); } } ); } } function UpdateOrder(data) { // устанавливаем цену каждого товара и вычисляем сумму за товар $.each(data.cart, function(i, good) { line = $('#'+good.id); // строка с товаром line.find('td.price').text(number_format(good.price, 2, ',', ' ')); // цена товара quantity = line.find('input.input-count').attr('value'); // количество товара line.find('td.sum').text(number_format(parseInt(quantity)*parseFloat(good.price), 2, ',', ' ')); //сумма товара } ); // обновляем итого, общее количество товаров и общую сумму $('#total_price').text(number_format(data.cart_total.cart_sum, 2, ',', ' ')); UpdateCart(data.cart_total.cart_num?data.cart_total.cart_num+' '+count_word(data.cart_total.cart_num, good_word_forms)+' на '+number_format(parseFloat(data.cart_total.cart_sum), 2, ',', ' ')+' руб.':'нет товаров'); } function DeleteSelected() { DeleteItems($('#order_table tbody input.del_checkbox:checked')); } function DeleteAll() { if(confirm('Удалить все товары?')) DeleteItems($('#order_table tbody input.del_checkbox')); } function AddItem(id, obj) { var list = {}; list['g'] = id; list['q'] = typeof(obj)=='undefined'?1:$('#quantity_'+id).val(); list['get_type'] = 'additem'; $.getJSON('/include/get_content.php', list, function(data) { UpdateCart(data.cart_total.cart_num?data.cart_total.cart_num+' '+count_word(data.cart_total.cart_num, good_word_forms)+' на '+number_format(parseFloat(data.cart_total.cart_sum), 2, ',', ' ')+' руб.':'нет товаров'); $('a.in_basket_'+id).css('display','inline'); $('#good_'+id+'_count').text(data.cart[id].num); } ); } function PreAddItem(id, obj) { objInput = $(obj); objDynamicBuy = $('#count_to_buy'); new_top = (objInput.offset().top - 9); new_left = (objInput.offset().left - 46); objDynamicBuy.find('input').attr('id', 'quantity_'+id).val(''); objDynamicBuy.offset({top: new_top, left: new_left}).css('visibility','visible'); objDynamicBuy.find('input').focus(); } function AddDynamicItem(obj) { id = $(obj).parent().find('input').attr('id').replace(/quantity_/,''); count = $('#quantity_'+id).val(); if(count!='' && count>0) AddItem(id, true); $('#count_to_buy').css('visibility','hidden'); } function UpdateCart(text) { if(text) { if($('div.cart-block a').size() == 0) { $('span.cart-empty').remove(); $('div.cart-block').html('В корзине '+text+' Оформить заказ'); } $('span.cart_total').text(text); } else { $('div.cart-block').empty().html('В корзине нет товаров.'); } }