PageSourceSearch

https://www.ltpvcfactory.com/template/en/js/hwaq.js

js ltpvcfactory.com collected 2026-10-04 13:30:15 UTC 39,095 bytes, 598 lines download raw bytes

1$(document).ready(function () {
2    $.plugin = {
3        NUMBER_plus: function (obj, set_num, speed) {
4            if (!speed)
5                speed = 60;
6            if (!set_num)
7                set_num = 50;
8            var scroll_lock = true;
9            $(window).scroll(function () {
10                if ($(document).scrollTop() + $(window).height() > obj.offset().top && obj.offset().top + obj.innerHeight() > $(document).scrollTop() && scroll_lock) {
11                    scroll_lock = false;
12                    var time_lock = 0,
13                        This = obj.find('li'), // 获取对象
14                        num = [];  // 数据容器
15                    This.each(function () {
16                        //数据缓存
17                        num.push($(this).find('em').attr('data-num') * 1);
18                    });
19                    var set_plus_num = function (index) {
20                            // 数字相加
21                            if (This.eq(index).find('em').text() * 1 > num[index] - num[index] / set_num) {
22                                This.eq(index).find('em').text(parseInt(num[index]));
23                            } else {
24                                This.eq(index).find('em').text(parseInt(num[index] / set_num + This.eq(index).find('em').text() * 1));
25                            }
26                            //较小数字处理
27                            if (num[index] < set_num) {
28                                This.eq(index).find('em').text(parseInt(num[index]));
29                            }
30                        },
31                        set_plus = setInterval(function () {
32                            // 动画执行
33                            for (var i = 0; i <= This.length; i++) {
34                                if (num[i - 1] > This.eq(i - 1).find('em').text() * 1) {
35                                    set_plus_num(i - 1);
36                                    if (num[i - 1] === This.eq(i - 1).find('em').text() * 1) {
37                                        time_lock++;
38                                    }
39                                }
40                            }
41                            if (time_lock >= num.length) {
42                                // 清理多余执行
43                                clearInterval(set_plus);
44                            }
45                        }, speed);
46                }
47            })
48        },
49		NUMBER_plus2: function (obj, set_num, speed) {
50		    if (!speed)
51		        speed = 60;
52		    if (!set_num)
53		        set_num = 50;
54				
55			// 清除之前的定时器(如果存在)
56			if (obj.data('numberPlusInterval')) {
57				clearInterval(obj.data('numberPlusInterval'));
58			}
59				
60		    var This = obj.find('li'), // 获取对象
61		        num = [];  // 数据容器
62		    This.each(function () {
63		        //数据缓存
64		        num.push($(this).find('em').attr('data-num') * 1);
65		    });
66			
67			var time_lock = 0;
68			
69		    var set_plus_num = function (index) {
70				var current = This.eq(index).find('em').text() * 1;
71				var target = num[index];
72				var increment = target / set_num;
73		
74				if (current >= target - increment) {
75					This.eq(index).find('em').text(target);
76				} else {
77					This.eq(index).find('em').text(Math.floor(current + increment));
78				}
79		
80				// 处理较小的数字
81				if (target < set_num) {
82					This.eq(index).find('em').text(target);
83				}
84			};
85			
86			// 存储新的定时器
87			var interval = setInterval(function () {
88				for (var i = 0; i < This.length; i++) {
89					if (num[i] > This.eq(i).find('em').text() * 1) {
90						set_plus_num(i);
91						if (num[i] === This.eq(i).find('em').text() * 1) {
92							time_lock++;
93						}
94					}
95				}
96		
97				if (time_lock >= num.length) {
98					clearInterval(interval);
99				}
100			}, speed);
101		
102			// 将定时器存储在jQuery对象上,方便后续清除
103			obj.data('numberPlusInterval', interval);
104		},
105        BG_parallax: function (obj, speed) {
106            if (!speed)
107                speed = .5;
108            $(window).scroll(function () {
109                obj.css({
110                    'background-position-y': (((obj.offset().top + obj.innerHeight() / 2) - ($(document).scrollTop() + $(window).height() / 2)) * speed)
111                })
112            })
113        },
114        Interval_Fun: function (obj, means, cycle, position) {
115            if (!position)
116                position = 2;
117            if (!cycle)
118                var cycle_num = 0;
119            $(window).scroll(function () {
120                if (obj.offset().top + obj.innerHeight() / position < $(document).scrollTop() + $(window).height() && obj.offset().top + obj.innerHeight() / position > $(document).scrollTop()) {
121                    cycle_num++;
122                    if (!cycle && cycle_num <= 1)
123                        means();
124                    else if (cycle)
125                        means()
126                }
127            })
128        },
129        Video_open: function (obj) {
130            var src, btn, img, tag, method = obj.attr('data-mode');
131            if (obj.attr('data-src'))
132                src = obj.attr('data-src');
133            else
134                return;
135            if (obj.attr('data-img'))
136                img = obj.attr('data-img');
137            btn = obj.attr('data-btn') ? obj.attr('data-btn') : '#000';
138            if (!method)
139                tag = '<video controls poster=' + img + ' src=' + src + '></video>';
140            else
141                tag = '<iframe width="1000" height="540" src="' + src + '" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
142            var video = "<div class='video_box active'>" + tag + "<i class='video_close fa fa-close'></i></div><i class='video_mask active'></i>",
143                css = "<style type='text/css' id='video_css'>.video_box {position: fixed;display: inline-block;top: 50%;left: 50%;-webkit-transform: translate(-50%, -50%) scale(1, 1);-moz-transform: translate(-50%, -50%) scale(1, 1);-ms-transform: translate(-50%, -50%) scale(1, 1);-o-transform: translate(-50%, -50%) scale(1, 1);transform: translate(-50%, -50%) scale(1, 1);z-index: 1000;max-width: 90%; max-height: 90%;-webkit-transition: .5s;-moz-transition: .5s;-ms-transition: .5s;-o-transition: .5s;transition: .5s;-webkit-transform-origin: center center;-moz-transform-origin: center center;-ms-transform-origin: center center;-o-transform-origin: center center;transform-origin: center center;zoom: 1;}.video_box video,.video_box iframe {max-width: 100%;max-height: 100%;-webkit-transition: .5s;-moz-transition: .5s;-ms-transition: .5s;-o-transition: .5s;transition: .5s;}.video_box i.video_close {position: absolute;height: 40px;width: 40px;border-radius: 100%;background: " + btn + ";display: block;right: -20px;top: -20px;cursor: pointer;cursor: hand;text-align: center;line-height: 40px;color: white;font-size: 18px;opacity: 0;-webkit-transition: .5s;-moz-transition: .5s;-ms-transition: .5s;-o-transition: .5s;transition: .5s;}.video_box:hover i.video_close {opacity: 1;}.video_box.active {-webkit-transform: translate(-50%, -50%) scale(0.3, 0.3);-moz-transform: translate(-50%, -50%) scale(0.3, 0.3);-ms-transform: translate(-50%, -50%) scale(0.3, 0.3);-o-transform: translate(-50%, -50%) scale(0.3, 0.3);transform: translate(-50%, -50%) scale(0.3, 0.3);zoom: .3;}i.video_mask {position: fixed;top: 0;left: 0;z-index: 900;background: rgba(0, 0, 0, 0.5);height: 100%;width: 100%;-webkit-transition: .5s .2s;-moz-transition: .5s .2s;-ms-transition: .5s .2s;-o-transition: .5s .2s;transition: .5s .2s;opacity: 1;}i.video_mask.active {opacity: 0;-webkit-transition: .5s;-moz-transition: .5s;-ms-transition: .5s;-o-transition: .5s;transition: .5s;}.video_box video, .video_box iframe {min-width: 900px;}@media screen and (max-width: 1000px) { .video_box video, .video_box iframe {min-width: 600px;display: block;max-height: 340px !important;}}@media screen and (max-width: 700px) {.video_box video, .video_box iframe { min-width: 400px; display: block;max-height: 240px !important;}}@media screen and (max-width: 500px) {.video_box video, .video_box iframe {min-width: 300px;display: block; max-height: 170px !important;}}</style>"
144            obj.click(function () {
145                $("body").append(video).append(css).animate(200, function () {
146                    $(".video_box").add($(".video_mask")).removeClass('active');
147                });
148                $("i.video_mask").add($("i.video_close")).one('click', function () {
149                    $(".video_box").add($("i.video_mask")).add($("#video_css")).remove();
150                })
151            });
152        },
153        Pop_Ups: function(obj,model,btn_,lang){
154            lang = {
155                lang:window.location.hostname.split('.')[0],
156                title:'Submit feedback',
157                name:'Name',
158                mail:'Email',
159                phone:'Phone',
160                message:'Message',
161                send:'Send'
162            }
163            switch (lang.lang) {
164                case 'cn':
165                    lang['title'] = '留言反馈';lang['name'] = '姓名';lang['mail'] = '邮箱';lang['phone'] = '电话';lang['message'] = '留言内容';lang['send'] = '立即提交';
166                    break;
167                case 'ru':
168                    lang['title'] = 'Обратная связь';lang['name'] = 'Имя';lang['mail'] = 'Почта';lang['phone'] = 'телефон';lang['message'] = 'Содержание сообщения';lang['send'] = 'Отправить сейчас';
169                    break;
170                case 'es':
171                    lang['title'] = 'Realimentación';lang['name'] = 'Nombre';lang['mail'] = 'Correo';lang['phone'] = 'Teléfono';lang['message'] = 'Contenido del mensaje';lang['send'] = 'Aplique ahora';
172                    break;
173                case 'sa':
174                    lang['title'] = 'ردود الفعل';lang['name'] = 'اسم';lang['mail'] = 'بريد';lang['phone'] = 'هاتف';lang['message'] = 'محتوى الرسالة';lang['send'] = 'أرسل الآن';
175                    break;
176                case 'de':
177                    lang['title'] = 'Feedback';lang['name'] = 'Name';lang['mail'] = 'Email';lang['phone'] = 'Telefon';lang['message'] = 'Nachrichteninhalt';lang['send'] = 'Jetzt Absenden';
178                    break;
179                case 'jp':
180                    lang['title'] = 'フィードバック';lang['name'] = '名前';lang['mail'] = 'Eメール';lang['phone'] = '電話';lang['message'] = 'メッセージの内容';lang['send'] = '今提出';
181                    break;
182                case 'kr':
183                    lang['title'] = '피드백';lang['name'] = '이름';lang['mail'] = '우편';lang['phone'] = '전화';lang['message'] = '메시지 내용';lang['send'] = '지금 제출';
184                    break;
185                case 'fr':
186                    lang['title'] = 'Retour d\'information';lang['name'] = 'Nom';lang['mail'] = 'Courrier';lang['phone'] = 'Téléphone';lang['message'] = 'Contenu du message';lang['send'] = 'Soumettre maintenant';
187                    break;
188            }
189            var css = '<style type=\'text/css\' id=\'Pop_Ups_css\'>#pups_from{position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);max-height:80%;width:500px;max-width:90%;
189-o-box-shadow:0 0 10px rgba(0,0,0,0.1);-webkit-box-shadow:0 0 10px rgba(0,0,0,0.1);box-shadow:0 0 10px rgba(0,0,0,0.1);z-index:22;background:white;padding:30px;overflow:auto}#pups_from h4{font-size:18px;color:#222;text-transform:capitalize;line-height:1;font-weight:bold;position: absolute;left: 0;width: 100%;top: 0;padding: 15px 20px;background: #f5f5f5;-moz-box-shadow: 0 0 5px rgba(0,0,0,.1);-o-box-shadow: 0 0 5px rgba(0,0,0,.1);box-shadow: 0 0 5px rgba(0,0,0,.1);}#pups_from form {margin-top: 40px;}#pups_from i.close{width:30px;height:30px;position:absolute;top:10px;right:10px;background:#eee;cursor:pointer;cursor:hand;-webkit-transition: .5s;-moz-transition: .5s;-ms-transition: .5s;-o-transition: .5s;transition: .5s;}#pups_from i.close:after,#pups_from i.close:before{content:\'\';-webkit-transition: .5s;-moz-transition: .5s;-ms-transition: .5s;-o-transition: .5s;transition: .5s;width:70%;height:2px;margin-top:-1px;background:black;position:absolute;top:50%;left:15%;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#pups_from i.close:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}#pups_from i.close:hover{background: #6076f1;}#pups_from i.close:hover:after,#pups_from i.close:hover:before{background: white;}#pups_from form ul li{margin-bottom:10px;position:relative}#pups_from form ul li label{font-size:14px;margin-bottom: 10px;display: block;}#pups_from form ul li label em{color:red;margin-right:2px}#pups_from form ul li input,#pups_from form ul li textarea{width:100%;line-height:24px;padding:6px 15px;border:1px solid #eee;-webkit-transition:.5s;-moz-transition:.5s;transition:.5s;font-size:16px}#pups_from form ul li input:focus,#pups_from form ul li textarea:focus{border-color:#6076f1}#pups_from form ul li textarea{height:80px}#pups_from form ul li input[type="submit"]{width:auto;padding:6px 40px;display:inline-block;background:#6076f1;color:white;-webkit-transition: .5s;-moz-transition: .5s;-ms-transition: .5s;-o-transition: .5s;transition: .5s;}#pups_from form ul li input[type="submit"]:hover{opacity: .7}#pups_from form ul li:last-child{margin-bottom:0}#Pop_UpsBtn{width: 60px;height: 60px;line-height: 60px;text-align: center;position: fixed;border-radius: 100%;background: #6076f1;color:white;right: 2%;bottom: 5%;font-size: 24px;-moz-box-shadow: 0 2px 7px rgba(0,0,0,.3);-o-box-shadow: 0 2px 7px rgba(0,0,0,.3);box-shadow: 0 2px 7px rgba(0,0,0,.3);cursor: pointer;cursor: hand;-webkit-transition: .5s;-moz-transition: .5s;-ms-transition: .5s;-o-transition: .5s;transition: .5s;}#Pop_UpsBtn:hover{background: #889aff;}</style>',
190                html = '<div id="pups_from" hidden>\n' +
191                    '        <h4>'+lang.title+'<i class="close"></i></h4>\n' +
192                    '        <form onsubmit="return false;"><input type="hidden" name="your-message" value=""><input type="hidden" name="your-email" value="">\n' +
193                    '            <ul>\n' +
194                    '                <li>\n' +
195                    '                    <label><em>*</em>'+lang.name+':</label>\n' +
196                    '                    <input type="text" autocomplete="off" name="name" placeholder="">\n' +
197                    '                </li>\n' +
198                    '                <li>\n' +
199                    '                    <label><em>*</em>'+lang.mail+':</label>\n' +
200                    '                    <input type="text" autocomplete="off" name="mail" placeholder="">\n' +
201                    '                </li>\n' +
202                    '                <li>\n' +
203                    '                    <label><em>*</em>'+lang.phone+':</label>\n' +
204                    '                    <input type="text" autocomplete="off" name="phone" placeholder="">\n' +
205                    '                </li>\n' +
206                    '                <li>\n' +
207                    '                    <label><em>*</em>'+lang.message+':</label>\n' +
208                    '                    <textarea autocomplete="off" name="content" placeholder=""></textarea>\n' +
209                    '                </li>\n' +
210                    '                <li>\n' +
211                    '                    <input type="submit" value="'+lang.send+'">\n' +
212                    '                </li>\n' +
213                    '            </ul>\n' +
214                    '        </form>\n' +
215                    '    </div>',
216                btn = '<div id="Pop_UpsBtn"><i class="fa fa-comments-o"></i></div>',
217                lock = true,
218                model_form = false,
219                model_url = '';
220            $("body").append(css).append(html);
221            $.getScript('/static/js/layer/layer.js',function (response,status) {
222                if (status==='success') {
223                    lock = false;
224                }
225            });
226            if (btn_) {
227                $("body").append(btn);
228            }
229            (obj?obj:$("#Pop_UpsBtn")).on('click',function (e) {
230                if (model && !model_form) {
231                    e.preventDefault();
232                    e.stopPropagation();
233                    model_url = $(this).attr('href')?$(this).attr('href'):$(this).find('a').attr('href');
234                }
235                if (!model_form)
236                    $("#pups_from").stop().fadeToggle(200);
237            });
238            $("#pups_from i.close").on('click',function () {
239                $("#pups_from").stop().fadeToggle(200);
240            });
241            $("#pups_from form input[type=submit]").on('click',function () {
242                var sUrl6 = window.location.search;
243        if (sUrl6.indexOf('gad_source=5') !== -1) {
244            return false;
245        }
246                layer.load(0,{shade:0.1,shadeClose:false});
247                $.ajax({
248                    type: 'post',
249                    url: '/Api/contact/submit/uid/1.html',
250                    data: $("#pups_from form").serialize(),
251                    dataType: 'json',
252                    success: function (data) {
253                        layer.closeAll();
254                        if (data.status == 200) {
255                            layer.msg(data.result,{icon:1,time:4000});
256                            if (model && !model_form) {
257                                model_form = true;
258                                $("#pups_from").stop().fadeToggle(200);
259                                var a = document.createElement('a');
260                                a.setAttribute('href',model_url);
261                                a.setAttribute('download','');
262                                document.body.appendChild(a);
263                                a.click();
264                                a.remove();
265                            }
266                        } else {
267                            layer.msg(data.result,{icon:2,time:4000})
268                        }
269                    }
270                })
271            });
272        },
273        Line_curve: function (obj, origin, coordinate, color,img, speed) {
274            if (!speed)
275                speed = 0.01;
276            if (!color)
277                color = '#000';
278            var con = document.getElementById(obj).appendChild(document.createElement('canvas'));
279            var ctx = con.getContext('2d');
280            con.width = document.getElementById(obj).offsetWidth ? document.getElementById(obj).offsetWidth : window.innerWidth;
281            con.height = document.getElementById(obj).offsetHeight ? document.getElementById(obj).offsetHeight : window.innerHeight;
282            var percent = 0;
283            ctx.lineWidth = 2;
284            origin = [origin[0] * (con.width / 100), origin[1] * (con.height / 100)];
285
286            function animate() {
287                ctx.clearRect(0, 0, con.width, con.height);
288                ctx.drawImage(img,0,0,con.width,con.height);
289                for (var i = 0; i < coordinate.length; i++) {
290                    var x0 = coordinate[i][0][0] * (con.width / 100);
291                    var y0 = coordinate[i][0][1] * (con.height / 100);
292                    var x1 = coordinate[i][1][0] * (con.width / 100);
293                    var y1 = coordinate[i][1][1] * (con.height / 100);
294                    ctx.strokeStyle = color;
295                    ctx.beginPath();
296                    formula(ctx, origin, [x0, y0], [x1, y1], percent);
297                    ctx.stroke();
298                }
299                if (percent < 1)
300                    percent += speed;
301                else {
302                    return;
303                }
304                requestAnimationFrame(animate);
305            }
306
307            function formula(ctx, start, end, control, percent) {
308//            二次贝塞尔曲线坐标计算公式
309                var v01 = [control[0] - start[0], control[1] - start[1]];     // 向量<p0, p1>
310                var v12 = [end[0] - control[0], end[1] - control[1]];     // 向量<p1, p2>
311                var q0 = [start[0] + v01[0] * percent, start[1] + v01[1] * percent];
312                var q1 = [control[0] + v12[0] * percent, control[1] + v12[1] * percent];
313                var v = [q1[0] - q0[0], q1[1] - q0[1]];       // 向量<q0, q1>
314                var b = [q0[0] + v[0] * percent, q0[1] + v[1] * percent];
315                ctx.moveTo(start[0], start[1]);
316                ctx.quadraticCurveTo(
317                    q0[0], q0[1],
318                    b[0], b[1]
319                );
320            }
321
322            animate();
323        },
324        shopping_cart: function (text_, element, cart_page = false) {
325            // 对象数据汇总
326            if (!element) {
327                element = {
328                    shopping_cart: '.shopping_cart',
329                    shopping_form: '.shopping_form',
330                    shopping_list: '.shopping_list',
331                    product_box: '.product_box', //多增加一个data-id 属性
332                    product_name: '.product_name',
333                    product_link: '.product_link',
334                    product_det: '.product_det',
335                    product_img: '.product_img',
336                    product_tag: '.product_tag',
337                    product_add: '.product_add'
338                };
339            }
340            if (!text_) {
341                text_ = {
342                    close: 'Close All',
343                    title: 'Feedback',
344                    submit: 'Send',
345                    number: 'Number:',
346                    cart: 'There are no products, just add them!',
347                    required: 'Can not be empty!'
348                }
349            }
350            var css = '<style type=\'text/css\' id=\'\'>#cart{position:fixed;max-width:100%;width:1000px;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%);max-height:80%;overflow:auto;padding: 15px;z-index:100;background:white;-moz-box-shadow:0 0 10px rgba(0,0,0,.2);-o-box-shadow:0 0 10px rgba(0,0,0,.2);box-shadow:0 0 10px rgba(0,0,0,.2);}#cart.active{position:static;width:auto;top:0;left:0;-webkit-transform:translate(0);-moz-transform:translate(0);-ms-transform:translate(0);-o-transform:translate(0);transform:translate(0);max-height:none;overflow:unset}#cart .left{padding-right:15px;color:black}#cart .left ul{max-height:560px;overflow:auto}#cart .left ul li{margin-bottom:15px;padding:15px;background:#f9f9f9}#cart .left ul li .box2{position:relative}#cart .left ul li .img{width:25%;overflow:hidden;vertical-align:middle;max-height:140px}#cart .left ul li .img img{min-height:140px;width:auto;min-width:100%}#cart .left ul li .text{width:75%;padding-left:3%;vertical-align:middle}#cart .left ul li .text h4{font-size:18px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}#cart .left ul li .text p{display:inline-block;max-width:50%;padding-right:15px}#cart .left ul li .text input{width:50%;max-width:80px;color:black;padding:5px;display:inline-block;border:1px solid #eee}#cart .left ul li .text textarea{width:100%;padding:10px;color:black;margin-top:10px;border:1px solid #eee}#cart .left ul li i.del{position:absolute;top:-8px;right:-5px;font-size:16px;cursor:pointer;cursor:hand}#cart .left span.close_all{display:inline-block;line-height:40px;height:40px;padding:0 25px;background:#111;color:white;font-size:15px;cursor:pointer;cursor:hand;margin-top:10px}#cart .right{padding-left:15px}#cart .right .shopping_form{background:#f9f9f9;color:black;padding:15px}#cart .right h4{font-size:24px}#cart .right ul li label{display:block;font-size:14px;margin:10px 0 5px}#cart .right ul li input,#cart .right ul li textarea{width:100%;padding:5px 15px;border:1px solid #eee;font-size:14px}#cart .right ul li textarea{height:160px}#cart .right ul li input[type="submit"]{max-width:200px;background:#111;border:0;font-size:18px;margin-top:20px;padding:10px;color:white}#cart i.fa-close{position:absolute;right:15px;top:15px;font-size:16px;width:30px;height:30px;line-height:30px;text-align:center;background:#000;color:white;cursor:pointer;cursor:hand}@media screen and (max-width:1000px){#cart .left{width:100%;padding-right:0}#cart .right{width:100%;padding-left:0;padding-top:20px}#cart .left ul{overflow:unset;max-height:none}}</style>',
351                html = '<div id="cart" hidden><div class="box grid-box two"><div class="left column"><ul class="shopping_list"></ul><span class="close_all">' + text_.close + '</span></div><div class="right column"><div class="shopping_form"><h4>' + text_.title + '</h4><form onsubmit="return false;"><ul><li><label for="company">The company:</label><input type="text" id="company" name="name" placeholder=""></li><li><label for="phone">Phone:</label><input type="text" id="phone" name="phone" placeholder=""></li><li><label for="mail">E-mail:</label><input type="text" id="mail" name="mail" placeholder=""></li><li><label for="content">Detailed message:</label><textarea id="content" name="content" placeholder=""></textarea></li><li><input type="submit" value="' + text_.submit + '"></li></ul></form></div></div></div><i class="close fa fa-close"></i></div>';
352
353
354            // 初始化
355            var data = [], lock = true;
356            if ($.cookie !== undefined) {
357                if ($.cookie('the_product_info') !== undefined && $.cookie('the_product_info') !== '') {
358                    data = $.cookie('the_product_info').split('?');
359                }
360            } else {
361                alert('需要cookie插件支持!');
362                return;
363            }
364            $(element.shopping_cart).find('em').html(data.length);
365
366
367            // 列表
368            function click_car(T) {
369                lock = true;
370                var name = T.parents(element.product_box).find(element.product_name).length ? T.parents(element.product_box).find(element.product_name).text() : '',
371                    url = T.parents(element.product_box).find(element.product_link).length ? T.parents(element.product_box).find(element.product_link).attr('href') : '',
372                    det = T.parents(element.product_box).find(element.product_det).length ? T.parents(element.product_box).find(element.product_det).text() : '',
373                    img = T.parents(element.product_box).find(element.product_img).length ? T.parents(element.product_box).find(element.product_img).attr('src') : '',
374                    tag = T.parents(element.product_box).find(element.product_tag).length ? T.parents(element.product_box).find(element.product_tag).children('*') : '';
375                if ($.isArray(data)) {
376                    data.map(function (value, index) {
377                        var key = Object.keys(JSON.parse(value))[0];
378                        if (key === T.parents(element.product_box).attr('data-id')) {
379                            lock = false;
380                            data.splice(index, 1);
381                        }
382                    });
383                }
384
385                var tag_arr = [];
386                if (tag !== '') {
387                    tag.filter(function () {
388                        tag_arr.push($(this).text())
389                    });
390                }
391
392                var text = '{"' + T.parents(element.product_box).attr('data-id') + '":{"name":"' + name.replace(/\s/g, " ") + '","url":"' + url + '","det":"' + det + '","img":"' + img + '","tag":"' + tag_arr.join('/') + '"}}';
393                if (lock) {
394                    data.push(text);
395                }
396                $(element.shopping_cart).find('em').html(data.length);
397                $.cookie('the_product_info', data.join('?'), {path: '/'});
398            }
399
400            $(document).on('click', element.product_add, function (e) {
401                click_car($(this));
402                $(this).toggleClass('active');
403            });
404
405            function cart_detect() {
406                data.map(function (value, index) {
407                    var detect = JSON.parse(value);
408                    $(element.product_box).filter(function () {
409                        if (detect[Object.keys(detect)[0]] === $(this).attr('data-id')) {
410                            $(this).find(element.product_add).addClass('active')
411                        }
412                    })
413                });
414            }
415
416            //购物车
417            function Structure_injection() {
418                $(element.shopping_list).html('');
419                var data_ = [];
420                data.map(function (value, index) {
421                    data_ = JSON.parse(value);
422                    $(element.shopping_list).append('<li>\n' +
423                        '               <div class="box2 grid-box">\n' +
424                        '                   <div class="img column"><a href="' + data_[Object.keys(data_)[0]].url + '"><img src="' + data_[Object.keys(data_)[0]].img + '?imageView2/2/w/400/h/400/format/jpg/q/80" alt=""></a></div>\n' +
425                        '                   <div class="text column">\n' +
426                        '                       <h4><a href="' + data_[Object.keys(data_)[0]].url + '">' + data_[Object.keys(data_)[0]].name + '</a></h4><p>' + text_.number + '</p>\n' +
427                        '                       <input class="num" type="number" value="1"/><div class="Item" hidden>' + data_[Object.keys(data_)[0]].tag + '</div>\n' +
428                        '                       <textarea class="msg" placeholder=""></textarea>\n' +
429                        '                       <i class="del fa fa-trash"></i>\n' +
430                        '                   </div>\n' +
431                        '               </div>\n' +
432                        '           </li>')
433                });
434                if (cart_page) {
435                    return data_;
436                }
437            }
438            function cart() {
439                if (!cart_page) {
440                    $('body').append(html,css);
441                    $.getScript('/static/js/layer/layer.js');
442                    Structure_injection();
443                    $(document).on('click','#cart i.del', function (e) {
444                        var info_ = $(this).parents('li');
445                        if (data.length) {
446                            data.splice(info_.index(), 1);
447                            $(element.shopping_cart).find('em').html(data.length);
448                            $.cookie('the_product_info', data.join('?'), {path: '/'});
449                            info_.remove();
450                            if (!data.length) {
451                                $(element.shopping_list).html(text_.cart);
452                            }
453                        }
454                    });
455                    $(document).on('blur','#cart input', function (e) {
456                        if ($(this).val() === '') {
457                            layer.msg(text_.required, {icon: 2, time: 4000});
458                        }
459                    })
460                    $(document).on('click','#cart input[type=\'submit\']', function (e) {
461                        e.preventDefault();
462                        var content = '';
463                        $(element.shopping_list).find('li').filter(function () {
464                            content += '\n' + $(this).find('h4').text() + '\n' +
465                                'Qty:' + $(this).find('input').val() + '\n' +
466                                'Message:' + $(this).find('textarea').val() + '\n' +
467                                'Url:' + $(this).find('a').attr('href') + '\n' +
468                                '-------------------------------------------\n'
469                        });
470                        var textarea = $(element.shopping_form).find("textarea").val();
471                        $(element.shopping_form).find("textarea").val(textarea + content);
472                        layer.load(0, {shade: 0.1, shadeClose: false});
473                        $.ajax({
474                            type: 'post',
475                            url: '/Api/contact/submit/uid/1.html',
476                            data: $(element.shopping_form).find('form').serialize(),
477                            dataType: 'json',
478                            success: function (ret) {
479                                layer.closeAll();
480                                $(element.shopping_form).find("textarea").val(textarea);
481                                if (ret.status == 200) {
482                                    layer.msg(ret.result, {icon: 1, time: 4000});
483                                    $(element.shopping_cart).find('em').html(0);
484                                    $.cookie('the_product_info', '', {path: '/'});
485                                } else {
486                                    layer.msg(ret.result, {icon: 2, time: 4000})
487                                }
488                            }
489                        })
490                    });
491                    $(document).on('click','#cart span.close_all', function (e) {
492                        $(element.shopping_list).find('li').remove();
493                        $(element.shopping_cart).find('em').html(0);
494                        $.cookie('the_product_info', '', {path: '/'});
495                    });
496                    $(document).on('click',element.shopping_cart, function (e) {
497                        $("#cart").fadeIn(300);
498                        Structure_injection();
499                    })
500                    $(document).on('click','#cart i.fa-close', function (e) {
501                        $("#cart").fadeOut(300)
502                    })
503                }else {
504                    data_(Structure_injection())
505                }
506            }
507
508            cart_detect();
509            cart();
510        }
511    };
512	
513	
514	let lang = {'en' : 'English', 'ru' : 'русский', 'fr' : 'Français', 'la' : 'Latine', 'jp' : '日本語', 'kr' : '한국어', 'vi' : 'Tiếng Việt', 'th' : 'ไทย', 'af' : 'Boer (Afrikaans)', 'sq' : 'Shqiptare', 'am' : 'አማርኛ', 'sa' : 'عربى', 'hy' : 'հայերեն', 'az' : 'Azərbaycan dili', 'eu' : 'Euskara', 'be' : 'Беларуская', 'bn' : 'বাংলা', 'bs' : 'Bosanski', 'bg' : 'български', 'ca' : 'Català', 'ceb' : 'Sugbuanon', 'ny' : 'Chichewa', 'cn' : '中文简体', 'tw' : '中文繁体', 'co' : 'Corsu','hr' : 'Hrvatski','cs' : 'čeština','da' : 'dansk','nl' : 'Nederlands','eo' : 'Esperanto','et' : 'Eestlane','tl' : 'Pilipino','fi' : 'Suomalainen','fy' : 'Frysk','gl' : 'Galego','ka' : 'ქართველი','de' : 'Deutsche','el' : 'Ελληνικά','gu' : 'ગુજરાતી','ht' : 'Kreyòl ayisyen','ha' : 'Hausa','haw' : 'Ōlelo Hawaiʻi','iw' : 'עִברִית','hi' : 'हिंदी','hmn' : 'Hmong','hu' : 'Magyar','is' : 'Íslenska','ig' : 'Igbo','id' : 'bahasa Indonesia','ga' : 'Gaeilge','it' : 'italiano','jw' : 'Wong jawa','kn' : 'ಕನ್ನಡ','kk' : 'Қазақ','km' : 'ជនជាតិខ្មែរ','ku' : 'Kurdî','ky' : 'Кыргызча','lo' : 'ລາວ','lv' : 'Latvietis','lt' : 'Lietuvis','lb' : 'Lëtzebuergesch','mk' : 'Македонски','mg' : 'Malagasy','ms' : 'Bahasa Melayu','ml' : 'മലയാളം','mt' : 'Malti','mi' : 'Maori','mr' : 'मराठी','mn' : 'Монгол','my' : 'ဗမာ','ne' : 'नेपाली','no' : 'norsk','ps' : 'پښتو','fa' : 'فارسی','pl' : 'Polskie','pt' : 'Português','pa' : 'ਪੰਜਾਬੀ','ro' : 'Română','sm' : 'Faasamoa','gd' : 'Gàidhlig na h-Alba','sr' : 'Српски','st' : 'Sesotho','sn' : 'Shona','sd' : 'سنڌي','si' : 'සිංහල','sk' : 'Slovák','sl' : 'Slovenščina','so' : 'Soomaali','es' : 'Español','su' : 'Bahasa Indonesia Bahasa Indonesia','sw' : 'Kiswahil
514i','sv' : 'svenska','tg' : 'Тоҷикӣ','ta' : 'தமிழ்','te' : 'తెలుగు','tr' : 'Türk','uk' : 'Український','ur' : 'اردو','uz' : 'O\'zbek','cy' : 'Cymraeg','xh' : 'UmXhosa wesiXhosa','yi' : 'יידיש','yo' : 'Yoruba','zu' : 'Zulu waseNingizimu Afrika','fil' : 'Pilipino'};
515	$("ul.lang em").filter(function () {
516		$(this).text(lang[$(this).attr('data-name')])
517	})
518
519    /**
520     * 全局效果说明
521     * ---------------------Dividing line--------------------
522     * @num_plus 数字相加
523     * 参数 (obj,set_num,speed = 60)
524     * 详解 obj
525     *      获取容器对象
526     *     set_num
527     *      设置相加比例 公式: 数字 / set_num = 每次相加数字(整数)
528     *     speed
529     *      动画速度 默认 60ms
530     * html 结构
531     *      <ul>
532     *          <li>*<em data-num="Number">0</em>*</li>
533     *      </ul>
534     *
535     * ---------------------Dividing line--------------------
536     * @BG_parallax 背景视差
537     * 参数 (obj,speed = 0.5)
538     * 详解 obj
539     *      获取容器对象
540     *     speed
541     *      动画速度 默认 0.5
542     *
543     * ---------------------Dividing line--------------------
544     * @Interval_Fun 区间判断
545     * 参数 (obj,means,cycle,position)
546     * 详解 obj
547     *      获取容器对象
548     *     means
549     *      执行方法
550     *     cycle
551     *      是否多次执行  boolean值
552     *     position
553     *      当容器自身多少出现在屏幕中时执行 公式:容器高度 / position
554     *
555     * ---------------------Dividing line--------------------
556     * @Video_open 视频弹窗
557     * 参数 (obj,url,btn,img)
558     * 详解 obj
559     *       获取点击对象 ( html标签 data-src="视频地址" data-img="video第一帧" data-btn="关闭按钮颜色")
560     *      method
561     *       切换模式 (video / iframe) false / true
562     *
563     * ---------------------Dividing line--------------------
564     * @Line_curve 画曲线
565     * 参数 (obj,origin,coordinate,color,speed)
566     * 详解 obj
567     *       获取ID属性
568     *     origin
569     *       中心点 (数组) 百分比
570     *     coordinate
571     *       其它点 (控制点+终点)
572     *       [
573     *          [[终点],[控制点]] 百分比
574     *       ]
575     *     color
576     *       线条颜色
577     *     img
578     *       图片
579     *     speed
580     *       速度
581     * @shopping_cart 伪购物车
582     * 参数 (text_, element, cart_page = false)
583     * 详解 text_ = {
584                    close: 'Close All',
585                    title: 'Feedback',
586                    submit: 'Send',
587                    number: 'Number:',
588                    cart: 'There are no products, just add them!',
589                    required: 'Can not be empty!'
590                }
591     cart_page 是否启用自定义购物弹窗
592     data_ 不启用时 返回数据
593     注意 若提交失败 检查是否存在对应字段
594     *
595     */
596
597
598})

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.