///////////////////////////////////////////////////////////
// модуль "Интернет-магазин"
///////////////////////////////////////////////////////////
/*
функции для управления корзиной
*/
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){
pl_key+=parseInt('0x'+hex_md5($('#basket_opt_'+id+'_'+fields[i]).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).php(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').php('

');
},
show_dialog: function (html){
// всплывающее окно с html-формой
$('#message_box').php(html);
$('#message_box select[id^=order_field_]').each(function(){
alltrades_shop.change_order_field($(this).attr('id').substr(12));
});
$('#curtain').show().click(alltrades_shop.close_dialog);
$('#message_box').css('left', '50%');
$('#message_box').css('top', $(window).scrollTop()+$(window).height()*0.1).show();
var width=$('#message_box').css('width');
if(parseInt(width)<640){ width="640px" ;="" }="" $('#message_box').css('margin-left',="" -1*parseint(width)/2+'px');="" $('#message_box').css('width',="" width);="" },="" update_basket_html:="" function(){="" обновляет="" элементы="" на="" странице="" из="" массива="" alltrades_shop.basket="" var="" el;="" for(k="" in="" alltrades_shop.basket){="" el="$('#'+k).get(0);" if(el!="undefined){" if(el.tagname="='INPUT'){" el.value="alltrades_shop.basket[k];" }else="" if($('#'+k+'="" span').length="">0){
el=$('#'+k+' span').php(alltrades_shop.basket[k]);
}else{
el=$('#'+k+'').php(alltrades_shop.basket[k]);
}
}
}
},
close_dialog: function (){
$('#message_box').hide('normal', function(){$('#curtain').fadeOut();});
},
check_store: function (obj, id, check_store) {
if(/[^0-9.]/.test(obj.value)){
obj.value=obj.value.replace(/[^0-9.]/, '');
}
if(check_store==''){
return;
}
if(+obj.value>+$('#store'+id+' span').php()){obj.style.color='red';obj.value=$('#store'+id+' span').php();$('#store'+id).css('color', 'red');}
},
change_order_field: function(id, options){
obj=$('#order_field_'+id);
switch(obj.children(':selected').attr('func')){
case 'delivery':
if($('#add_func_field_'+id).length){
$('#add_func_field_'+id).show();
}else{
obj.after('
');
$('#add_func_field_'+id).load('/?show=delivery&mode=ajax&field_id='+id+'&weight='+alltrades_shop.basket['weight'], function(html){
if($('#delivery_to_zip').val()>0){
$.get('/?show=delivery&field_id='+id+'&act=calculate&mode=ajax&delivery_to_zip='+$('#delivery_to_zip').val()+'&weight='+alltrades_shop.basket['weight']+'&r='+Math.random(),
function(html){
$('#delivery_variants_'+id).php(html);
});}});}
break;
default:
$('#add_func_field_'+id).hide();
$('#order_field_price_'+id).show();
$('#order_field_price_'+id+' span').php(obj.children(':selected').attr('func'));
}
alltrades_shop.renew_basket(true);
},
renew_basket: function (no_items){
if (typeof(no_items)=='undefined'){
alltrades_shop.basket_renew_no_items=false;
}else{
alltrades_shop.basket_renew_no_items=no_items;
}
if(!alltrades_shop.loading && alltrades_shop.check_renew_possible()){
/* если в этот момент можно обновить корзину, ставим ромашки на места полей и через секунду запускаем обновление значений */
clearTimeout(alltrades_shop.renew_timer);
if(!alltrades_shop.basket_renew_no_items){
$('.basket .discount_amount span').php('
');
$('.basket .basket_discount span').php('
');
$('.basket .basket_weight_str span').php('
');
}
$('#basket_items_amount span').php('
');
$('#basket_discount span').php('
');
$('#basket_discount_amount span').php('
');
$('#basket_full_amount span').php('
');
$('#basket_weight span').php('
');
$('#basket_amount').php('
');
$('#basket_total').php('
');
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').php(alltrades_shop.basket['items'][i]['discount_amount']);
$('.basket #item_'+i+' .basket_weight_str span').php(alltrades_shop.basket['items'][i]['weight_str']);
$('.basket #item_'+i+' .basket_discount span').php(alltrades_shop.basket['basket_discount']);
}
}
// обновляем общие значения
$('#basket_items_amount span').php(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').php(alltrades_shop.basket['basket_discount_amount']);
$('#basket_discount span').php(alltrades_shop.basket['basket_discount']);
$('#basket_weight span').php(alltrades_shop.basket['basket_weight']);
$('#basket_full_amount span').php(alltrades_shop.basket['basket_full_amount']);
// обновляем корзину в шаблоне
$('#basket_amount').php(alltrades_shop.basket['basket_amount']);
$('#basket_total').php(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').php(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').php(alltrades_shop.basket['basket_discount_amount']);
$('#basket_discount span').php(alltrades_shop.basket['basket_discount']);
$('#basket_full_amount span').php(alltrades_shop.basket['basket_discount_amount']);
// обновляем корзину в шаблоне
$('#basket_amount').php(alltrades_shop.basket['basket_amount']);
$('#basket_total').php(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').php(alltrades_shop.compare[k]);
}else{
el=$('#'+k+'').php(alltrades_shop.compare[k]);
}
}
}
}
}
640){>