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('В корзине нет товаров.');
}
}