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) { $('#order_table tbody tr').each(function() { id = $(this).attr('id'); if(!(id in data.cart)) $(this).remove(); } ); 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) { var cart_mess = ''; // устанавливаем цену каждого товара и вычисляем сумму за товар $.each(data.cart, function(i, good) { line = $('#'+good.id); // строка с товаром line.find('td.price').text(number_format(good.price, 2, ',', ' ')); // цена товара line.find('input.input-count').attr('value',good.num); // количество товара line.find('td.sum').text(number_format(parseInt(good.num)*parseFloat(good.price), 2, ',', ' ')); //сумма товара } ); // обновляем итого, общее количество товаров, общую сумму и вес (если есть) $('#total_price').text(number_format(data.cart_total.cart_sum, 2, ',', ' ')); if($('#total_weight').size()!=0) $('#total_weight').text(number_format(data.cart_total.cart_weight, 2, ',', ' ')); if(data.cart_total.cart_num) { cart_mess = Count(data.cart)+' '+count_word(Count(data.cart), good_word_forms); if(is_show_price) cart_mess = ' на '+number_format(parseFloat(data.cart_total.cart_sum), 2, ',', ' ')+' руб.'; } else cart_mess = 'нет товаров'; UpdateCart(cart_mess); } 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 = {}; var cart_mess = ''; list['g'] = id; list['q'] = typeof(obj)=='undefined'?1:$('#quantity_'+id).val(); list['get_type'] = 'additem'; $.getJSON('/include/get_content.php', list, function(data) { if(data.cart_total.cart_num) { cart_mess = Count(data.cart)+' '+count_word(Count(data.cart), good_word_forms); if(is_show_price) cart_mess += ' на '+number_format(parseFloat(data.cart_total.cart_sum), 2, ',', ' ')+' руб.'; } else cart_mess = 'нет товаров'; UpdateCart(cart_mess); if(id in data.cart) { $('a.in_basket_'+id).css('display','inline'); $('#good_'+id+'_count').text(data.cart[id].num); } else { $('a.in_basket_'+id).css('display','none'); } } ); } 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(); // привязываем событие - закрытие окна по Escape $("body").bind('keydown', CloseCountOnEsc); } function AddDynamicItem(obj, count_id) { id = $(obj).parent().find('input').attr('id').replace(/quantity_/,''); count = $('#quantity_'+id).val(); if(count!='' && count!=0) AddItem(id, true); $('#'+count_id).css('visibility','hidden'); // удаляем событие - закрытие окна по Escape $("body").unbind('keydown', CloseCountOnEsc); } function PreAddOneItem(id, obj) { objInput = $(obj); objDynamicBuy = $('#count_to_buy_one_item'); new_top = (objInput.offset().top-7); new_left = (objInput.offset().left-9); objDynamicBuy.find('input').attr('id', 'quantity_'+id).val(''); objDynamicBuy.offset({top: new_top, left: new_left}).css('visibility','visible'); objDynamicBuy.find('input').focus(); // привязываем событие - закрытие окна по Escape $("body").bind('keydown', CloseCountOnEsc); } function CloseCountOnEsc(event) { if(event.keyCode==27) { $('#count_to_buy,#count_to_buy_one_item').css('visibility','hidden'); // удаляем событие - закрытие окна по Escape $("body").unbind('keydown', CloseCountOnEsc); return false; } } function UpdateCart(text) { UpdateCartLine(text, document); //обновление корзины в родительском окне try { if(window.opener != null) UpdateCartLine(text, window.opener.document); } catch(e) {} } function UpdateCartLine(text, doc) { objDoc = $(doc); objDoc.find('.cart_image').remove(); if(text) { objDoc.find('span.cart_cont').before(''); if(objDoc.find('span.cart_cont a').size() == 0) { objDoc.find('span.cart-empty').remove(); objDoc.find('span.cart_cont').html('В корзине '+text+'         Оформить заказ'); } objDoc.find('span.cart_total').text(text); } else { objDoc.find('span.cart_cont').before(''); objDoc.find('span.cart_cont').empty().html('В корзине нет товаров.'); } }