///////////////////////////////////////////////////////////
// модуль "Интернет-магазин"
///////////////////////////////////////////////////////////
/*
функции для управления корзиной
*/
alltrades_shop = {
basket: new Array(), // массив товаров в корзине
compare: new Array(), // массив товаров для сравнинея
main_prices: new Array(),
price_mods: new Array(),
pricelist_fields: '',
pricelist_vals: new Array(),
pricelist_store: new Array(),
renew_timer: null,
step: -1,
show_prev: true,
loading: false,
basket_renew_no_items: false,
price_recount: function (id){
/* пересчет цены в зависимости от значения полей */
var price=alltrades_shop.main_prices[id];
if(alltrades_shop.pricelist_fields!=''){
var fields=alltrades_shop.pricelist_fields.split(',');
var pl_key=0;
for(i in fields){
val=$('select[name="basket_opt['+fields[i]+']"], input:radio[name="basket_opt['+fields[i]+']"]:checked, input:checkbox[name="basket_opt['+fields[i]+']"]:checked, input:text[name="basket_opt['+fields[i]+']"]').val();
if(val!=undefined){
pl_key+=parseInt('0x'+hex_md5(val).substr(0, 6));
}
}
if(alltrades_shop.pricelist_vals[id]!=undefined && alltrades_shop.pricelist_vals[id][pl_key]>0){
price=alltrades_shop.pricelist_vals[id][pl_key];
}
}
$('.add2basket_options select').each(function(){
var tmp=this.id.split('_');
var key=$(this).val().replace(/[\'"]/g, '-');
if(alltrades_shop.price_mods[id]!=undefined && alltrades_shop.price_mods[id][tmp[3]]!=undefined){
price+=+alltrades_shop.price_mods[id][tmp[3]][key];
}
});
$('.add2basket_options input[type=checkbox]').each(function(){
if(this.checked){
var tmp=this.id.split('_');
var key=$(this).val().replace(/[\'"]/g, '-');
if(alltrades_shop.price_mods[id][tmp[3]]!=undefined){
price+=+alltrades_shop.price_mods[id][tmp[3]][key];
}
}
});
$('.add2basket_options input[type=radio]').each(function(){
if(this.checked){
var tmp=this.id.split('_');
var key=$(this).val().replace(/[\'"]/g, '-');
if(alltrades_shop.price_mods[id][tmp[3]]!=undefined){
price+=+alltrades_shop.price_mods[id][tmp[3]][key];
}
}
});
$('.add2basket_options input[type=text]').each(function(){
var tmp=this.id.split('_');
if(alltrades_shop.price_mods[id][tmp[3]]!=undefined){
price+=+alltrades_shop.price_mods[id][tmp[3]]*this.value;
}
});
if(Math.round(price)!=price){
price=price.toFixed(2);
}
$('#main_price_'+id).html(price);
},
add_to_basket: function(obj, id, pricelist_pos){
/* добавление товара в корзину */
var url='/?show=basket&mode=ajax&act=add&id='+id;
if(pricelist_pos!=undefined){
url=url+'&pricelist_pos='+pricelist_pos;
}
var postdata=$('#add2basket_form_'+id+(alltrades_shop.step==0?'_tmp':'')).formSerialize()
alltrades_shop.start_loading();
$.post(url, postdata, function (html){
var arr = html.split('|||'); eval(arr[1]); html=arr[0];
if(alltrades_shop.step>0){
$(obj).children('img').attr('src', '/images/in_basket.png').attr('title', 'Уже есть в корзине');
}
switch(alltrades_shop.step){
case 0:
// не указаны необходимые параметры
if(alltrades_shop.show_prev){
alltrades_shop.show_dialog(html);
}
break;
case 1:
// добавление с переходом в корзину
location.href=alltrades_shop.basket['uri'];
break;
case 2:
// всплывающая корзина
if(alltrades_shop.show_prev){
alltrades_shop.show_dialog(html);
}
alltrades_shop.update_basket_html();
break;
case 3:
// с перелетом в корзину
alltrades_shop.close_dialog();
var m_ph=$('#main_photo_'+id);
$('body').prepend('');
$('#main_img_shadow').animate({top:$('#basket_total').offset().top, left:$('#basket_total').offset().left, width:'100px', height:'100px', opacity:0}, 600, function(){
$(this).remove();
alltrades_shop.update_basket_html();
}
);
break;
}
});
},
remove_from_basket: function(k){
$.get('/?show=basket&act=delete&mode=ajax&id='+k, function(html){
var arr = html.split('|||'); eval(arr[1]); html=arr[0];
if(alltrades_shop.show_prev){
alltrades_shop.show_dialog(html);
}
alltrades_shop.renew_basket(true);
});
},
one_click_buy: function(id){
/* покупка товара в один клик */
var url='/?show=basket&mode=ajax&act=one_click_buy&id='+id;
alltrades_shop.start_loading();
$.post(url, $('#add2basket_form_'+id).formSerialize(), function (html){
var arr = html.split('|||'); eval(arr[1]); html=arr[0];
if(alltrades_shop.show_prev){
alltrades_shop.show_dialog(html);
}
});
},
start_loading: function (){
$('#message_box').html('


');
$('.basket .basket_discount span').html('
');
$('.basket .basket_weight_str span').html('
');
}
$('#basket_items_amount span').html('
');
$('#basket_discount span').html('
');
$('#basket_discount_amount span').html('
');
$('#basket_full_amount span').html('
');
$('#basket_weight span').html('
');
$('#basket_amount').html('
');
$('#basket_total').html('
');
alltrades_shop.renew_timer=setTimeout(function(){alltrades_shop.renew_basket_serv();}, 2000);
alltrades_shop.loading=true;
}
},
renew_basket_serv: function (){
if(!alltrades_shop.check_renew_possible()){
alltrades_shop.loading=false;
return false;
}
$.post('/?show=basket&act=edit_json&mode=ajax'+(alltrades_shop.basket_renew_no_items?'':'&clean_add_fields=1'), $('#order_form').formSerialize(), function(html){
alltrades_shop.basket = eval('('+html+')');
if(!alltrades_shop.basket_renew_no_items){
// обновляем строчки с товарами, устанавливаем скидки и стоимость со скидками
for (i in alltrades_shop.basket['items']){
$('.basket #item_'+i+' .discount_amount span').html(alltrades_shop.basket['items'][i]['discount_amount']);
$('.basket #item_'+i+' .basket_weight_str span').html(alltrades_shop.basket['items'][i]['weight_str']);
$('.basket #item_'+i+' .basket_discount span').html(alltrades_shop.basket['basket_discount']);
}
}
// обновляем общие значения
$('#basket_items_amount span').html(alltrades_shop.basket['basket_amount']);
if(alltrades_shop.basket['basket_discount']>0){
$('#basket_discount_amount').show();
$('#basket_discount').show();
}else{
$('#basket_discount_amount').hide();
$('#basket_discount').hide();
}
$('#basket_discount_amount span').html(alltrades_shop.basket['basket_discount_amount']);
$('#basket_discount span').html(alltrades_shop.basket['basket_discount']);
$('#basket_weight span').html(alltrades_shop.basket['basket_weight']);
$('#basket_full_amount span').html(alltrades_shop.basket['basket_full_amount']);
// обновляем корзину в шаблоне
$('#basket_amount').html(alltrades_shop.basket['basket_amount']);
$('#basket_total').html(alltrades_shop.basket['basket_total']);
if(!alltrades_shop.basket_renew_no_items){
for(i in alltrades_shop.basket['fields_func']){
if(typeof alltrades_shop.basket['fields_func'][i]['options'] !=="undefined"){
// перебираем значения селектора, влияющего на стоимость
for(j in alltrades_shop.basket['fields_func'][i]['options']){
$('#order_field_'+i+' option').each(function(){
if($.trim($(this).text())==alltrades_shop.basket['fields_func'][i]['options'][j]['value']){
$(this).attr('func', alltrades_shop.basket['fields_func'][i]['options'][j]['func']);
if($(this).attr('func')=='delivery'){
$('#add_func_field_'+i).remove();
}
$('#order_field_price_'+i).hide();
}
});
}
}
alltrades_shop.change_order_field(i);
}
}
// проверяем, возможно ли оформление заказа:
if(alltrades_shop.basket['enable_order']=='1'){
$('#order_button').attr('disabled', false).bind('click', function(){$('#order_form').attr('action', '/?show=order').submit()});
$('#basket_minimum_order_amount').hide();
}else{
$('#order_button').attr('disabled', true).unbind('click');
$('#basket_minimum_order_amount').show();
}
alltrades_shop.loading=false;
});
},
renew_basket_serv_no_addfields: function (){
if(!alltrades_shop.check_renew_possible()){
alltrades_shop.loading=false;
return false;
}
$.post('/?show=basket&act=edit_json&mode=ajax', $('#order_form').formSerialize(), function(html){
alltrades_shop.basket = eval('('+html+')');
// обновляем общие значения
$('#basket_items_amount span').html(alltrades_shop.basket['basket_amount']);
if(alltrades_shop.basket['basket_discount']>0){
$('#basket_discount_amount').show();
$('#basket_discount').show();
}else{
$('#basket_discount_amount').hide();
$('#basket_discount').hide();
}
$('#basket_discount_amount span').html(alltrades_shop.basket['basket_discount_amount']);
$('#basket_discount span').html(alltrades_shop.basket['basket_discount']);
$('#basket_full_amount span').html(alltrades_shop.basket['basket_discount_amount']);
// обновляем корзину в шаблоне
$('#basket_amount').html(alltrades_shop.basket['basket_amount']);
$('#basket_total').html(alltrades_shop.basket['basket_total']);
for(i in alltrades_shop.basket['fields_func']){
if(typeof alltrades_shop.basket['fields_func'][i]['options'] !=="undefined"){
// перебираем значения селектора, влияющего на стоимость
for(j in alltrades_shop.basket['fields_func'][i]['options']){
$('#order_field_'+i+' option').each(function(){
if($.trim($(this).text())==alltrades_shop.basket['fields_func'][i]['options'][j]['value']){
$(this).attr('func', alltrades_shop.basket['fields_func'][i]['options'][j]['func']);
if($(this).attr('func')=='delivery'){
$('#add_func_field_'+i).remove();
}
$('#order_field_price_'+i).hide();
}
});
}
}
alltrades_shop.change_order_field(i);
}
alltrades_shop.loading=false;
// проверяем, возможно ли оформление заказа:
if(alltrades_shop.basket['enable_order']=='1'){
$('#order_button').attr('disabled', false).bind('click', function(){$('#order_form').attr('action', '/?show=order').submit()});
$('#basket_minimum_order_amount').hide();
}else{
$('#order_button').attr('disabled', true).unbind('click');
$('#basket_minimum_order_amount').show();
}
alltrades_shop.loading=false;
});
},
check_renew_possible: function(){
var flag=true;
$('.basket .basket_item .num').each(function(){if($.trim(this.value)==''){flag=false;}});
return flag;
},
add_to_compare: function(id){
/* добавление товара к сравнению */
var url='/?show=basket&mode=ajax&act=compare&id='+id;
alltrades_shop.start_loading();
$.get(url, function (html){
var arr = html.split('|||'); eval(arr[1]); html=arr[0];
if(alltrades_shop.show_prev){
alltrades_shop.show_dialog(html);
}
}
);
},
remove_from_compare: function(id){
/* добавление товара к сравнению */
var url='/?show=basket&mode=ajax&act=remove_from_compare&id='+id;
alltrades_shop.start_loading();
$.get(url, function (html){
var arr = html.split('|||'); eval(arr[1]); html=arr[0];
if(alltrades_shop.show_prev){
alltrades_shop.show_dialog(html);
}
}
);
},
update_compare_html: function(){
// обновляет элемент compare_prev на странице
var el;
for(k in alltrades_shop.compare){
el=$('#'+k).get(0);
if(el!=undefined){
if(el.tagName=='INPUT'){
el.value=alltrades_shop.compare[k];
}else if($('#'+k+' span').length>0){
el=$('#'+k+' span').html(alltrades_shop.compare[k]);
}else{
el=$('#'+k+'').html(alltrades_shop.compare[k]);
}
}
}
}
}