PageSourceSearch

https://www.bestvibe.co.uk/asset/js/car.js?v=4

js bestvibe.co.uk collected 2026-10-04 11:57:47 UTC 14,921 bytes, 557 lines download raw bytes

1//amounts=parseFloat(amounts);
2var cache_act_id=0;
3var cache_goods_id=0;
4
5var isClick = false;
6function jiesuan() {
7    var len = $("#goods_on").find(".car_on").length;
8    if (len > 0){
9		window.location.href = "buy_cart.php?spm=p.car.j";
10    } else {
11        showToast(lang[0],1);
12    }
13}
14
15$("#ckall").click(function (event) {
16    if(isClick){
17        return false;
18    }
19    isClick =true;
20    var that = $(this).find('.ck_btn')
21    var a = that.hasClass("ck_btnon");
22    var is_all = 1;
23    if (a) {
24        is_all = 0;
25    }
26    $.ajax({
27        type: 'POST',
28        url: "cart.php?act=checks",
29        data: {is_all: is_all},
30        success: function (res) {
31            if (res.error == 1) {
32                showToast("Error",1);
33            } else {
34                if (is_all == 1) {
35                    $("#goods_on").find(".car").addClass("car_on");
36                    that.addClass("ck_btnon");
37					updateCkGoods(1);
38                    changeAmount(res);
39                    ck_status();
40                } else {
41					updateCkGoods(0);
42                    $("#goods_on").find(".car").removeClass("car_on");
43                    that.removeClass("ck_btnon");
44                    changeAmount(res);
45					ck_status();
46                }
47            }
48        },
49        dataType: 'json'
50    });
51    setTimeout(function(){isClick =false;},700);
52    event.preventDefault();
53});
54
55function addFavCar(){}
56
57$("#goods_on").delegate(".ck_btn", "click", function (event) {
58    if(isClick){
59        return false;
60    }
61    isClick =true;
62    var a = $(this).parent().parent();
63    var id = $(this).attr("data-id");
64	cache_goods_id=a.attr("data-id");
65	cache_act_id=a.attr("data-a");
66	
67    var is_on = 0;
68    var b = a.hasClass("car_on");
69    if (b) {
70        a.removeClass("car_on");
71        is_on = 1;
72    } else {
73        a.addClass("car_on");
74    }
75    $.ajax({
76        type: 'POST',
77        url: "cart.php?act=checks",
78        data: {id: id, is_all: 3, is_on: is_on},
79        success: function (res) {
80            if (res.error == 1) {
81                showToast("Error",1);
82            } else {
83                ck_status();
84				var isc = (is_on === 1) ? 0 : 1;
85				cart_json[cache_act_id]['goods_list'][cache_goods_id]['is_on']=isc;
86                changeAmount(res);
87            }
88        },
89        dataType: 'json'
90    });
91    setTimeout(function(){isClick =false;},700);
92    event.preventDefault();
93});
94
95function ck_status() {
96    var len = $("#goods_on").find(".car_on").length;
97    var len2 = $("#goods_on").find(".car").length;
98	$("#car_nums2").text(len);
99    $("#car_nums1").text(len);
100    if (len == 0 || len < len2) {
101        $("#ckall").find(".ck_btn").removeClass("ck_btnon");
102        return;
103    }
104    if (len == len2) {
105        $("#ckall").find(".ck_btn").addClass("ck_btnon");
106    }
107}
108
109$("#goods_on").delegate(".gnum", "change", function () {
110    var that = $(this);
111    var id = that.attr("data-id");
112    var v = that.val();
113	var pa=that.parent().parent().parent();
114	cache_goods_id=pa.attr("data-id");
115	cache_act_id=pa.attr("data-a");
116    if (v<1||v>50) {
117		//cart_json[cache_act_id]['goods_list'][cache_goods_id]['goods_number']=1;
118        v = 1;
119    }
120    $.ajax({
121        type: 'POST',
122        url: "cart.php?act=change_num",
123        data: {id: id, v: v},
124        success: function (res) {
125            if (res.error == 1) {
126                showToast("Error",1);
127            } else {
128                that.val(v);
129				cart_json[cache_act_id]['goods_list'][cache_goods_id]['goods_number']=v;
130				if(cart_json[cache_act_id]['goods_list'][cache_goods_id]['is_on']==1){
131                changeAmount(res);
132				}
133                //$("#count").text("£" + res.total);
134            }
135        },
136        dataType: 'json'
137    });
138}).delegate(".cc_sub", "click", function (event) {
139    if(isClick){
140        return false;
141    }
142    isClick =true;
143    var a = $(this).parent().find(".gnum");
144    var id = $(this).attr("data-id");
145	
146	var pa=$(this).parent().parent().parent();
147	cache_goods_id=pa.attr("data-id");
148	cache_act_id=pa.attr("data-a");
149    var v = parseInt(a.val());
150    if (v > 1) {
151        v = v - 1;
152        changeNums(id,v,a);
153    }
154    setTimeout(function(){isClick =false;},500);
155    event.preventDefault();
156}).delegate(".cc_add", "click", function (event) {
157    if(isClick){
158        return false;
159    }
160    isClick =true;
161    var a = $(this).parent().find(".gnum");
162    var id = $(this).attr("data-id");
163	var pa=$(this).parent().parent().parent();
164	cache_goods_id=pa.attr("data-id");
165	cache_act_id=pa.attr("data-a");
166    var v = parseInt(a.val());
167    if (v < 50) {
168        v = v + 1;
169        changeNums(id,v,a);
170    }
171    setTimeout(function(){isClick =false;},500);
172    event.preventDefault();
173});
174
175function changeNums(id,v,obj){
176    $.ajax({
177        type: 'POST',
178        dataType: 'json',
179        url: "cart.php?act=change_num",
180        data: {id: id, v: v},
181        success: function (res) {
182            if (res.error == 1) {
183                showToast("Error",1);
184            } else {
185                obj.val(v);
186				cart_json[cache_act_id]['goods_list'][cache_goods_id]['goods_number']=v;
187				if(cart_json[cache_act_id]['goods_list'][cache_goods_id]['is_on']==1){
188                changeAmount(res);
189				}
190            }
191        }
192    });
193}
194
195$("#goods_on").delegate(".ca_del","click",function(){
196	var id=$(this).attr("data-id");
197	var pa=$(this).parent().parent();
198	cache_goods_id=pa.attr("data-id");
199	cache_act_id=pa.attr("data-a");
200	delGoods(id,$(this));
201});
202
203$("#out_goods").delegate(".ca_del","click",function(){
204	var id=$(this).attr("data-id");
205	delOuter(id,$(this),1);
206});
207$("#clear_all_ot").click(function(){
208	delOuter('',$(this),1);
209});
210function delOuter(id,obj){
211	$.ajax({
212            type:'POST',
213            url:'cart.php',
214            data:{act:'delOut',id:id},
215            dataType: 'json',
216            success: function (res){
217                if(res.error == 0){
218                if(id==''){
219					$("#out_goodsv").remove();
220				}else{
221					obj.parent().parent().remove();
222					if($("#out_goods").children().length<1){
223						$("#out_goodsv").remove();
224					}
225				}
226                } else {
227                    showToast("Fail",1);
228                }
229            }
230        });
231}
232
233function delGoods(id,obj){
234    if(!confirm(lang[1])){
235	return;
236	}
237	var that=obj.parent().parent();
238        $.ajax({
239            type:'POST',
240            url:'cart.php',
241            data:{act:'del',id:id},
242            dataType: 'json',
243            success: function (res){
244                if(res.error == 0){
245				var ison=cart_json[cache_act_id]['goods_list'][cache_goods_id]['is_on'];
246				delete cart_json[cache_act_id]['goods_list'][cache_goods_id];
247				if(ison){
248					changeAmount(res);
249					ck_status();
250				}
251                var zu=that.parent().find(".car").length;
252                 if(zu<2){
253                    that.parent().remove();
254                 }
255					that.remove();
256                } else {
257                    showToast("Fail",1);
258                }
259            }
260        });
261 }
262
263function DelCa(){
264	var ccx=$("#goods_on").find(".car_on");
265	if(ccx.length<1){
266		return;
267	}
268	if(!confirm(lang[2])){
269	return;
270	}
271	var dl=[];
272	ccx.each(function(){
273		var i=$(this).find(".ck_btn").attr("data-id");
274		dl.push(i);
275	});
276	var id=dl.join(",");
277	     $.ajax({
278            type:'POST',
279            url:'cart.php',
280            data:{act:'delMult',id:id},
281            dataType: 'json',
282            success: function (res){
283                if(res.error == 0){
284				ccx.remove();
285                var zu=$("#goods_on").children().length;
286				if(zu<1){
287				window.location.reload();
288				}else{
289                changeAmount(res);
290				ck_status();
291				}
292                } else {
293                    showToast("Fail",1);
294                }
295            }
296        });
297}
298
299
300
301/****important*****/
302function changeAmount(res){
303	if(res.error==1){
304		return;
305	}
306	goods_total=0;
307	act_jian=0;
308	loot_jian=0;
309	$.each(cart_json,function(a,b){
310		var gd=b['goods_list'];
311		$.each(gd,function(k,m){
312			if(m['is_on']==1){
313				if(m['pid']>0){
314					var th=$("#rec"+m['rec_id']);
315					var pon=$("#rec"+m['pid']).hasClass("car_on");
316					if(pon){
317						m['goods_price']=m['pk_price'];
318						$("#rec"+m['rec_id']).removeClass("car_pk");
319						th.find(".ca_jg").html('<b class="red">'+cur+''+m['pk_price']+'</b><del>'+m['mk_price']+'</del>');
320					}else{
321						m['goods_price']=m['mk_price'];
322						$("#rec"+m['rec_id']).addClass("car_pk");
323						th.find(".ca_jg").html(cur+''+m['mk_price']);
324					}
325					cart_json[a]['goods_list'][k]['goods_price']=m['goods_price'];
326				}
327				var jax=parseFloat(m['mk_price'])-parseFloat(m['goods_price']);
328				if(jax>0){
329				   loot_jian+=fmNub(jax*parseFloat(m['goods_number']));
330				 }
331				goods_total+=parseFloat(m['goods_price'])*parseFloat(m['goods_number']);
332			}
333		});
334		
335		if(is_act>0){
336		//act in
337		if(b['act_id']>0){
338			if(b['act_style']==1){
339			var nm=calSumGoods(b['goods_list']);
340			var hj=calGradfloor(b['grade'],nm['amount']);
341			cart_json[a]['jian']=hj['val'];
342			act_jian+=parseFloat(hj['val']);
343			doActShowt(a,hj['k'],hj['val']);
344			doActTone(a,hj['k']);
345			}else if(b['act_style']==2){
346			//NJ
347			var hj=calGradfloorNum(b['grade'],b['goods_list']);
348			cart_json[a]['jian']=hj['val'];
349			act_jian+=parseFloat(hj['val']);
350			doActShowt(a,hj['k'],hj['val']);
351			doActTone(a,hj['k']);
352			}else if(b['act_style']==3){
353				//NY
354				var hj=calGradfloorNy(b['grade'],b['goods_list']);
355				cart_json[a]['jian']=hj['val'];
356				act_jian+=parseFloat(hj['val']);
357				doActShowt(a,hj['k'],hj['val']);
358				doActTone(a,hj['k']);
359			}
360		}
361	}
362	});
363	showTotal();
364}
365
366//N dis
367function calGradfloorNum(act,goods){
368	var nb=0;
369	var amt=0;
370	for(var i in goods){
371		if(goods[i]['is_on'] === 1) {
372			goods[i].goods_number=parseInt(goods[i].goods_number);
373			goods[i].goods_price=parseFloat(goods[i].goods_price);
374            amt += parseFloat((goods[i].goods_price * goods[i].goods_number).toFixed(2));
375            nb += goods[i].goods_number;
376        }
377	}
378	var jian=0;
379	var k=-1;//找到对应层级的key
380	for(var i in act){
381		if(nb>=act[i]['item_limit']){
382			k=i;
383		}else{
384			break;
385		}
386	}
387	if(k>=0){
388		if(act[k]['item_maxnum']>0){
389			var goodsArray = Object.values(goods);
390			var sortedGoods = {};
391			var glen=goodsArray.length;
392			if(glen>1){
393			goodsArray.sort(function (a, b) {
394				return parseInt(a.goods_price) - parseInt(b.goods_price);
395			});
396			}
397			goodsArray.forEach(function (item, index) {
398				sortedGoods[index] = item;
399			});
400			
401			var bi=Math.floor(nb/act[k]['item_limit']);//倍率
402			//满2减1
403			for(var i=0;i<act[k]['item_maxnum'];i++){
404				var lf=1-act[k]['amount_discount'];
405				var jb=act[k]['amount_discount']>0?Math.round(sortedGoods[i]['goods_price']*lf,2):sortedGoods[i]['goods_price'];
406				jian+=Math.round(jb*bi,2);
407			}
408		}else{
409			//正常折扣[全部商品打折]
410			jian=Math.round(amt*(1-act[k]['amount_discount']),2);
411		}
412	}
413	return {k:k,val:Math.floor(jian)};
414}
415//N doll
416function calGradfloorNy(act,goods){
417var acts=act[0];
418var item_limit=parseInt(acts['item_limit']);
419var min_amount=parseFloat(acts['min_amount']);
420var amount_jian=parseFloat(acts['amount_jian']);
421	var nb=0;
422	var amt=0;
423	var avg_amount=0;
424	for(var i in goods){
425		if(goods[i]['is_on'] === 1){
426			goods[i].goods_number=parseInt(goods[i].goods_number);
427			goods[i].goods_price=parseFloat(goods[i].goods_price);
428            amt += parseFloat((goods[i].goods_price * goods[i].goods_number).toFixed(2));
429            nb += goods[i].goods_number;
430        }
431	}
432	var jian=0;
433	var k=-1;
434	if(nb>=item_limit&&amt>=min_amount){
435	k=0;
436	}else{
437		return {k:-1,val:0};
438	}
439var avg_amount=Math.floor(amt/nb*100)/100;
440var bi=Math.floor(nb/item_limit);
441var discountLevels = Math.min(bi,Math.floor(amt/min_amount));
442var cy_amount=avg_amount*item_limit*bi;
443jian = cy_amount-amount_jian*discountLevels;
444return {k:0,val:Math.floor(jian)};
445}
446function doActShowt(a,k,va){
447			if(k>=0){
448				$("#act_"+a).find(".svs").removeClass("hid");
449				$("#act_"+a).find(".au_j").text(fmNub(va));
450				$("#act_"+a).find(".i_hdi").text(cart_json[a]['grade'][k]['short_tag']);
451				$("#act_"+a).removeClass("gift_off");
452			}else{
453				$("#act_"+a).find(".svs").addClass("hid");
454				$("#act_"+a).find(".i_hdi").text(cart_json[a]['short_tag']);
455				$("#act_"+a).addClass("gift_off");
456			}
457}
458function doActTone(a,k){
459	var that=$("#act_"+a);
460	var old_gift=that.find(".gift_gl");
461	var old_len=old_gift.length;
462	
463	var has_gift=k>=0?cart_json[a]['grade'][k]['has_gift']:0;
464	if(has_gift<1){
465		if(old_len>0){
466			old_gift.remove();
467		}
468		return;
469	}
470	
471	if(k>=0){
472		if(old_len>0){
473			old_gift.html(buildGfthtml(cart_json[a]['grade'][k]['gift']));
474		}else{
475			that.append('<div class="gift_gl">'+buildGfthtml(cart_json[a]['grade'][k]['gift'])+'</div>');
476		}
477	}else{
478		if(old_len>0){
479			old_gift.remove();
480		}
481	}
482}
483function showTotal(){
484	var total_jian=fmNub(act_jian+loot_jian);
485	goods_total=fmNub(goods_total);
486	var tot=fmNub(goods_total-act_jian);
487	$("#c_gprice").text(goods_total);
488	
489	if(total_jian>0){
490		$("#savej").removeClass("hid");
491		$("#t_jian").text(total_jian);
492	}else{
493		$("#savej").addClass("hid");
494		$("#t_jian").text(0);
495	}
496	if(free_ship>tot){
497	$("#c_jian").text(shipping_fee);
498	$("#savef").removeClass('hid');
499	$("#more_sp").text(Math.round((free_ship-tot)*100)/100);
500	$("#count1").text(fmNub(tot+shipping_fee));
501}else{
502	$("#c_jian").text('0');
503	$("#ship_tip").addClass('hid');
504	$("#count1").text(tot);
505}
506	
507}
508function calSumGoods(goods) {
509    let number = 0;
510    let amount = 0;
511	var i;
512	//var len=Object.keys(goods).length
513	for(i in goods){
514		if(goods[i]['is_on'] === 1) {
515			goods[i].goods_number=parseInt(goods[i].goods_number);
516			goods[i].goods_price=parseFloat(goods[i].goods_price);
517            amount += parseFloat((goods[i].goods_price * goods[i].goods_number).toFixed(2));
518            number += goods[i].goods_number;
519        }
520	}
521    return { number: number, amount: amount };
522}
523function calGradfloor(act,val){
524	var res=0;
525	var k=-1;
526	var i;
527	val=parseFloat(val);
528	for(i in act) {
529		if(val>=parseFloat(act[i]['min_amount'])){
530			res=act[i]['amount_jian'];
531			k=i;
532		}else{
533			break;
534		}
535	}
536	return {k:k,val:Math.floor(res)};
537}	
538function buildGfthtml(gf){
539	var ht='<dl class="car_f">'+
540                '<dt><a href="goods-'+gf['goods_id']+'.html"><img src="'+gf['goods_img']+'" class="ca_pic"></a></dt>'+
541               '<dd><a href="goods-'+gf['goods_id']+'.html" class="gk_a"><em class="i_gift">Free</em>'+gf['goods_name']+'</a>'+
542               '<p class="ca_atr">
542'+gf['goods_attr']+'</p>'+
543                '<em class="">Quantity:'+gf['goods_number']+'</em>'+
544                '<div class="ca_jg"><p class="red fB">'+cur+'0.00</p><del>'+cur+''+gf['shop_price']+'</del></div>'+
545                '</dd></dl>';
546	return ht;
547}
548function updateCkGoods(is_all){
549	for(var i in cart_json){
550		for(var j in cart_json[i]['goods_list']){
551			cart_json[i]['goods_list'][j]['is_on']=is_all;
552		}
553	}
554}
555function fmNub(v){
556	return Math.round(v*100)/100;
557}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.